一種固態(tài)盤陣列的垃圾回收方法
【專利摘要】一種固態(tài)盤陣列的垃圾回收方法,涉及計算機數(shù)據(jù)存儲方法。在固態(tài)盤陣列上設(shè)置重定向數(shù)據(jù)映射表和四個功能模塊:主控、垃圾回收控制、請求重定向和數(shù)據(jù)回收,包括初始化步驟、垃圾回收階段、數(shù)據(jù)回收階段和結(jié)束步驟等。當某一個正在處理垃圾回收操作的固態(tài)盤接收到用戶讀寫請求時,本發(fā)明將讀請求重定向到固態(tài)盤陣列中其他成員固態(tài)盤上并通過重構(gòu)讀機制獲取讀數(shù)據(jù);將寫請求重定向到熱備盤也就是將數(shù)據(jù)寫入到熱備盤中,同時更新相應的校驗信息;垃圾回收操作完成后,將被重定向到熱備盤的寫數(shù)據(jù)回收到固態(tài)盤陣列上正確的位置。減輕垃圾回收操作對固態(tài)盤陣列系統(tǒng)性能波動的影響,提高固態(tài)盤陣列的性能。
【專利說明】—種固態(tài)盤陣列的垃圾回收方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機數(shù)據(jù)存儲方法,尤其是涉及一種固態(tài)盤陣列的垃圾回收方法?!颈尘凹夹g(shù)】
[0002]作為一種主流的存儲介質(zhì),磁盤已經(jīng)廣泛應用于個人電腦和企業(yè)級數(shù)據(jù)存儲等領(lǐng)域,但是其機械特性限制了其讀寫性能的快速提升,基于磁盤的存儲設(shè)備漸漸成為存儲系統(tǒng)的性能“墻”。目前,基于閃存的固態(tài)盤已成為磁盤的有力替代品,并且得到了學術(shù)界和工業(yè)界的廣泛關(guān)注。和磁盤相比,基于閃存的固態(tài)盤是一種半導體存儲介質(zhì),沒有機械部件,具有經(jīng)久耐用、防震抗摔、無噪音、功耗低、工作溫度范圍大、隨機小讀性能高等優(yōu)點;但是固態(tài)盤的容量價格比低,而且具有隨機小寫性能低、寫前必須擦除和介質(zhì)擦除次數(shù)有限等缺點。
[0003]基于閃存的固態(tài)盤包含3種基本操作:讀、寫和擦除。讀和寫都以頁為單位進行操作;擦除以塊為單位進行操作。一個塊(塊大小通常是128?256KB) —般包含64個頁(頁大小通常是2?4KB)。擦除操作的處理時間比讀寫操作處理時間大若干個數(shù)量級。若某個頁已經(jīng)存儲有效數(shù)據(jù)就無法對該頁直接進行覆蓋寫操作,因此固態(tài)盤處理寫請求時不支持原地更新,而是采用異地更新的方法,也就是將原數(shù)據(jù)頁的數(shù)據(jù)置為無效,將新數(shù)據(jù)寫入到其他空閑頁中。
[0004]由于基于閃存的固態(tài)盤采用異地更新的機制,隨著系統(tǒng)的運行,固態(tài)盤中的空閑塊會越來越少,無效數(shù)據(jù)頁則越來越多,因此需要擦除這些包含無效數(shù)據(jù)頁的塊以獲得新的空閑塊,該操作稱為“垃圾回收”。固態(tài)盤的垃圾回收過程是:首先選取待回收的塊,將其上的有效數(shù)據(jù)頁復制到空閑塊中,并更新地址映射信息,然后擦除待回收塊并將它們加入空閑塊列表中。由此可見,垃圾回收操作需要消耗較多的時間。另外,當固態(tài)盤中的某個芯片正在處理垃圾回收操作時,無法同時處理來自用戶的讀寫請求,此時該芯片接收到的讀寫請求都將被掛起,直到垃圾回收操作完成才能被處理。因此,垃圾回收操作的效率直接影響了固態(tài)盤存儲系統(tǒng)的性能,這個問題已成為存儲研究的熱點之一。
[0005]另一方面,固態(tài)盤除了應用于桌面機外,也漸漸應用于服務器和企業(yè)級數(shù)據(jù)存儲系統(tǒng)中。在企業(yè)級數(shù)據(jù)存儲系統(tǒng)中,單個固態(tài)盤顯然無法滿足服務對存儲系統(tǒng)容量、性能和可靠性的要求。因此,將磁盤陣列(Redundant Array of Independent Disks,簡稱為RAID)算法應用到固態(tài)盤存儲系統(tǒng)中,構(gòu)建大容量、高性能和高可靠的存儲系統(tǒng)非常有必要。
[0006]類似于磁盤陣列,固態(tài)盤陣列系統(tǒng)的性能也會受到陣列中性能最差的成員盤的影響。因此,單個固態(tài)盤的垃圾回收操作所引起的性能降低將使得固態(tài)盤陣列表現(xiàn)出嚴重的性能波動。若固態(tài)盤陣列的成員盤采用本地非協(xié)作的垃圾回收策略,固態(tài)盤陣列的性能將會出現(xiàn)嚴重的性能波動。若采用全局垃圾回收策略,垃圾回收操作引起的固態(tài)盤陣列性能波動可以得到一定程度的減輕。這是因為,當某個固態(tài)盤進行垃圾回收時,全局垃圾回收策略強制固態(tài)盤陣列中其他所有成員盤同時觸發(fā)垃圾回收操作,從而降低了性能降級。但是采用全局垃圾回收策略后,固態(tài)盤陣列在垃圾回收過程中停止響應用戶讀寫請求,整個固態(tài)盤陣列存儲系統(tǒng)無法對外服務,這對于需要7 X 24h穩(wěn)定提供服務的應用來說是無法接受的。另外,全局垃圾回收策略需要固態(tài)盤能夠感知固態(tài)盤陣列的信息,并且只考慮了低可靠性的RAISO系統(tǒng),而沒有考慮可靠性高且應用更加廣泛的RAIS5系統(tǒng)及其冗余性,因此具有一定的局限性。
【發(fā)明內(nèi)容】
[0007]本發(fā)明的目的在于針對RAIS5等冗余固態(tài)盤陣列,提供用于減輕垃圾回收操作對固態(tài)盤陣列系統(tǒng)性能波動負面影響的一種固態(tài)盤陣列的垃圾回收方法。
[0008]本發(fā)明包括以下步驟:
[0009]( I)初始化步驟,具體方法如下:
[0010](1.1)根據(jù)用戶指令,打開已有固態(tài)盤陣列或創(chuàng)建新固態(tài)盤陣列;
[0011](1.2)主控模塊讀取保存在固態(tài)盤陣列成員盤超級塊中的重定向數(shù)據(jù)映射表或創(chuàng)建該固態(tài)盤陣列的重定向數(shù)據(jù)映射表并初始化為空;進行步驟(2);
[0012](2)垃圾回收步驟,具體方法如下:
[0013](2.1)垃圾回收控制模塊主動收集固態(tài)盤陣列中每塊成員固態(tài)盤的空閑空間比例,并與預設(shè)的閾值(如90%)比較,判斷固態(tài)盤是否需要進行垃圾回收操作,若某個固態(tài)盤需要進行垃圾回收操作,則轉(zhuǎn)過程(2.2),否則重復過程(2.1);
[0014](2.2)主控模塊判斷固態(tài)盤陣列中是否有其他固態(tài)盤正在進行垃圾回收操作,若有,則轉(zhuǎn)過程(2.4);
[0015](2.3)主控模塊主動觸發(fā)垃圾回收控制模塊進行該固態(tài)盤的垃圾回收操作,并將此信息通知給請求重定向模塊,完成垃圾回收操作后,轉(zhuǎn)步驟(4);
[0016](2.4)暫停處理該固態(tài)盤的垃圾回收操作,轉(zhuǎn)過程(2.1);
[0017](3)垃圾回收階段請求處理步驟,具體方法如下:
[0018](3.1)等待上層用戶讀寫請求,判斷該請求是否需要由正在處理垃圾回收操作的固態(tài)盤響應,若是,則轉(zhuǎn)過程(3.2),否則,查找映射表,判斷所請求的數(shù)據(jù)是否已經(jīng)被回收,若是,則轉(zhuǎn)過程(3.7),否則轉(zhuǎn)步驟(5 );
[0019](3.2)判斷該請求是否是寫請求,若是,則轉(zhuǎn)過程(3.3),否則轉(zhuǎn)過程(3.4);
[0020](3.3)將本應寫入正在處理垃圾回收操作的固態(tài)盤中的數(shù)據(jù),寫入固態(tài)盤陣列的熱備盤中,同時更新相應的校驗信息,并將數(shù)據(jù)映射信息記錄在重定向數(shù)據(jù)映射表中,轉(zhuǎn)過程(3.1);
[0021](3.4)根據(jù)重定向數(shù)據(jù)映射表判斷讀請求要讀取的數(shù)據(jù)是否在熱備盤中,若是,則轉(zhuǎn)過程(3.5),否則轉(zhuǎn)過程(3.6);
[0022](3.5)請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(3.1);
[0023](3.6)請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,讀取其他未處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),利用RAIS5自身的冗余特性動態(tài)重構(gòu)出正在處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),并返回給用戶;轉(zhuǎn)過程(3.1);
[0024](3.7)按固態(tài)盤陣列的正常算法響應讀寫請求;轉(zhuǎn)過程(3.1);
[0025](4)數(shù)據(jù)回收步驟,當對應固態(tài)盤的垃圾回收操作完成后,數(shù)據(jù)回收模塊掃描重定向數(shù)據(jù)映射表,具體方法如下:
[0026](4.1)數(shù)據(jù)回收模塊判斷重定向數(shù)據(jù)映射表是否為空,若是,則數(shù)據(jù)回收結(jié)束,轉(zhuǎn)步驟(2),否則轉(zhuǎn)過程(4.2);
[0027](4.2)數(shù)據(jù)回收模塊從重定向數(shù)據(jù)映射表中取出一條映射信息,從熱備盤中讀取該映射信息對應的數(shù)據(jù)并寫回到固態(tài)盤陣列的正確位置中;
[0028](4.3)數(shù)據(jù)回收模塊將該映射信息從重定向數(shù)據(jù)映射表中刪除,轉(zhuǎn)過程(4.1);
[0029](5)數(shù)據(jù)回收階段請求處理步驟,具體方法如下:
[0030](5.1)數(shù)據(jù)回收模塊判斷數(shù)據(jù)回收是否結(jié)束,若是,則本步驟結(jié)束,轉(zhuǎn)步驟(3),否則等待上層用戶讀寫請求,判斷其類型,讀請求轉(zhuǎn)過程(5.2),寫請求轉(zhuǎn)過程(5.5);
[0031](5.2)請求重定向模塊根據(jù)重定向數(shù)據(jù)映射表判斷該讀請求所需要的數(shù)據(jù)是否在熱備盤中,若是,則轉(zhuǎn)過程(5.3),否則轉(zhuǎn)過程(5.4);
[0032](5.3)請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(5.1);
[0033](5.4)請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,從固態(tài)盤陣列讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(5.1);
[0034](5.5)請求重定向模塊判斷該寫請求是否命中重定向數(shù)據(jù)映射表,若是,則轉(zhuǎn)過程(5.6),否則轉(zhuǎn)過程(5.7);
[0035](5.6)請求重定向模塊將該寫請求所命中的映射信息從重定向數(shù)據(jù)映射表中刪除,繼續(xù)過程(5.7);
[0036](5.7)請求重定向模塊將該寫請求中的數(shù)據(jù)寫入到固態(tài)盤陣列,同時更新相應的校驗信息,轉(zhuǎn)過程(5.1);
[0037](6)當用戶發(fā)出指令關(guān)閉固態(tài)盤陣列時,進行結(jié)束步驟,具體方法如下:
[0038](6.1)關(guān)閉固態(tài)盤陣列之前,主控模塊將重定向數(shù)據(jù)映射表保存到固態(tài)盤陣列各成員盤的超級塊中;
[0039](6.2)關(guān)閉固態(tài)盤陣列設(shè)備,釋放相關(guān)的資源。
[0040]本發(fā)明由初始化步驟、垃圾回收階段、數(shù)據(jù)回收階段和結(jié)束步驟等順序組成,固態(tài)盤陣列上設(shè)置四個功能模塊:主控模塊、垃圾回收控制模塊、請求重定向模塊、數(shù)據(jù)回收模塊和重定向數(shù)據(jù)映射表。所述垃圾回收階段包括并行的垃圾回收步驟和垃圾回收階段請求處理步驟,數(shù)據(jù)回收階段包括并行的數(shù)據(jù)回收步驟和數(shù)據(jù)回收階段請求處理步驟。
[0041]所述重定向數(shù)據(jù)映射表包括M條映射信息,每條映射信息由3個數(shù)據(jù)項構(gòu)成:各數(shù)據(jù)項依次為被重定向數(shù)據(jù)在固態(tài)盤陣列的塊偏移地址、被重定向數(shù)據(jù)在熱備盤上的塊偏移地址、被重定向數(shù)據(jù)的長度;M為大于等于O的自然數(shù)。
[0042]本發(fā)明基于充分利用固態(tài)盤的高隨機讀性能特性和固態(tài)盤陣列中的熱備盤(通常備用于數(shù)據(jù)重建等后臺任務),保證任意時刻只有一個固態(tài)盤在處理垃圾回收操作,從而降低垃圾回收操作對固態(tài)盤陣列系統(tǒng)性能的負面影響。當某一個正在處理垃圾回收操作的固態(tài)盤接收到用戶讀寫請求時,本發(fā)明的一種固態(tài)盤陣列的垃圾回收方法將讀請求重定向到固態(tài)盤陣列中其他成員固態(tài)盤上并通過重構(gòu)讀機制獲取讀數(shù)據(jù);將寫請求重定向到熱備盤也就是將數(shù)據(jù)寫入到熱備盤中,同時更新相應的校驗信息;垃圾回收操作完成后,將被重定向到熱備盤的寫數(shù)據(jù)回收到固態(tài)盤陣列上正確的位置。本發(fā)明通過挖掘固態(tài)盤的高隨機讀性能特性和固態(tài)盤陣列系統(tǒng)中的熱備盤來減輕垃圾回收操作對固態(tài)盤陣列系統(tǒng)性能波動的影響,提高固態(tài)盤陣列的性能。
[0043]另外,本發(fā)明能夠和固態(tài)盤陣列功能模塊協(xié)同工作,并且可以被嵌入到現(xiàn)有的固態(tài)盤陣列系統(tǒng)中,包括硬件和軟件固態(tài)盤陣列系統(tǒng)。適用于構(gòu)造具有高性能、高可用性和高可靠性的固態(tài)盤存儲系統(tǒng)。
【具體實施方式】
[0044]下面以固態(tài)盤陣列級別5為例,對本發(fā)明作進一步的說明。
[0045]本發(fā)明各步驟關(guān)系如下:初始化步驟完成后進入循環(huán)的垃圾回收階段(即并行的垃圾回收步驟和垃圾回收階段的請求處理步驟)和數(shù)據(jù)回收階段(即并行的數(shù)據(jù)回收步驟和數(shù)據(jù)回收階段的請求處理步驟),當用戶發(fā)出關(guān)閉指令時,進入結(jié)束步驟。
[0046]在重定向數(shù)據(jù)映射表中,每條映射信息由3個數(shù)據(jù)項構(gòu)成;各數(shù)據(jù)項依次為被重定向數(shù)據(jù)在固態(tài)盤陣列的塊偏移地址D、被重定向數(shù)據(jù)在熱備盤上的塊偏移地址S、被重定向數(shù)據(jù)的長度L。
[0047]初始化步驟的具體操作如下:
[0048]根據(jù)用戶指令,打開已有固態(tài)盤陣列或創(chuàng)建新固態(tài)盤陣列,主控模塊判斷該固態(tài)盤陣列是否為創(chuàng)建的新固態(tài)盤陣列,若是,則創(chuàng)建該固態(tài)盤陣列的重定向數(shù)據(jù)映射表并初始化為空,否則讀取保存在固態(tài)盤陣列成員盤超級塊中的重定向數(shù)據(jù)映射表的映射信息到內(nèi)存中。
[0049]垃圾回收步驟的具體操作如下:
[0050]垃圾回收控制模塊主動收集固態(tài)盤陣列中每塊成員固態(tài)盤的空閑空間比例,并與預設(shè)的閾值(如90%)比較,判斷固態(tài)盤是否需要進行垃圾回收操作,若沒有固態(tài)盤需要進行垃圾回收操作,則重新收集固態(tài)盤的空閑空間比例并判斷固態(tài)盤是否需要進行垃圾回收操作;否則,主控模塊繼續(xù)判斷固態(tài)盤陣列中是否有其他固態(tài)盤正在進行垃圾回收操作,若有,則暫停處理該固態(tài)盤的垃圾回收操作,重新收集固態(tài)盤的空閑空間比例并判斷固態(tài)盤是否需要進行垃圾回收操作;否則主控模塊主動觸發(fā)垃圾回收控制模塊進行該固態(tài)盤的垃圾回收操作,并將此信息通知給請求重定向模塊,完成垃圾回收操作。
[0051]垃圾回收階段的請求處理步驟的具體操作如下:
[0052]請求重定向模塊等待上層用戶讀寫請求,判斷該請求是否需要由正在處理垃圾回收操作的固態(tài)盤響應,若請求不需要由正在處理垃圾回收操作的固態(tài)盤響應,則按固態(tài)盤陣列的正常算法響應讀寫請求;否則判斷該請求是否是寫請求,若是,則將本應寫入正在處理垃圾回收操作的固態(tài)盤中的數(shù)據(jù),寫入固態(tài)盤陣列的熱備盤中,同時更新相應的校驗信息,并將數(shù)據(jù)映射信息記錄在重定向數(shù)據(jù)映射表中;否則根據(jù)重定向數(shù)據(jù)映射表判斷讀請求要讀取的數(shù)據(jù)是否在熱備盤中,若是,則請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶;否則請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,讀取其他未處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),利用RAIS5自身的冗余特性動態(tài)重構(gòu)出正在處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),并返回給用戶。
[0053]數(shù)據(jù)回收步驟的具體操作如下:
[0054]數(shù)據(jù)回收模塊掃描重定向數(shù)據(jù)映射表,判斷重定向數(shù)據(jù)映射表是否為空,若是,則數(shù)據(jù)回收結(jié)束;否則數(shù)據(jù)回收模塊從重定向數(shù)據(jù)映射表中取出一條映射信息,從熱備盤中讀取該映射信息對應的數(shù)據(jù)并寫回到固態(tài)盤陣列的正確位置中,數(shù)據(jù)回收模塊將該映射信息從重定向數(shù)據(jù)映射表中刪除,繼續(xù)判斷重定向數(shù)據(jù)映射表是否為空。
[0055]數(shù)據(jù)回收階段的請求處理步驟的具體操作如下:
[0056]請求重定向模塊等待上層用戶讀寫請求,判斷其類型,若該請求是讀請求,則請求重定向模塊根據(jù)重定向數(shù)據(jù)映射表判斷該讀請求所需要的數(shù)據(jù)是否在熱備盤中,若是,則請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶;否則請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,從固態(tài)盤陣列讀取數(shù)據(jù),返回給用戶;若該請求是寫請求,則請求重定向模塊判斷該寫請求是否命中重定向數(shù)據(jù)映射表,若是,則請求重定向模塊將該寫請求所命中的映射信息從重定向數(shù)據(jù)映射表中刪除,并將該寫請求中的數(shù)據(jù)寫入到固態(tài)盤陣列,同時更新相應的校驗信息;否則請求重定向模塊將該寫請求中的數(shù)據(jù)寫入到固態(tài)盤陣列,同時更新相應的校驗信息。
[0057]結(jié)束步驟的具體操作如下:主控模塊將重定向數(shù)據(jù)映射表保存到固態(tài)盤陣列各成員固態(tài)盤的超級塊中,然后關(guān)閉該固態(tài)盤陣列設(shè)備,釋放相關(guān)的資源。
[0058]本發(fā)明中,將固態(tài)盤陣列簡稱為RAIS (Redundant Array of Independent SSDs);由于不同級別的磁盤陣列簡稱為RAIDO、RAID5等,因此本發(fā)明將不同級別的固態(tài)盤陣列對應地簡稱為RAISO、RAIS5等。
【權(quán)利要求】
1.一種固態(tài)盤陣列的垃圾回收方法,其特征在于包括以下步驟:(1)初始化步驟,具體方法如下:(1.1)根據(jù)用戶指令,打開已有固態(tài)盤陣列或創(chuàng)建新固態(tài)盤陣列;(1.2)主控模塊讀取保存在固態(tài)盤陣列成員盤超級塊中的重定向數(shù)據(jù)映射表或創(chuàng)建該固態(tài)盤陣列的重定向數(shù)據(jù)映射表并初始化為空;進行步驟(2);(2)垃圾回收步驟,具體方法如下:(2.1)垃圾回收控制模塊主動收集固態(tài)盤陣列中每塊成員固態(tài)盤的空閑空間比例,并與預設(shè)的閾值比較,判斷固態(tài)盤是否需要進行垃圾回收操作,若某個固態(tài)盤需要進行垃圾回收操作,則轉(zhuǎn)過程(2.2),否則重復過程(2.1);(2.2)主控模塊判斷固態(tài)盤陣列中是否有其他固態(tài)盤正在進行垃圾回收操作,若有,則轉(zhuǎn)過程(2.4); (2.3)主控模塊主動觸發(fā)垃圾回收控制模塊進行該固態(tài)盤的垃圾回收操作,并將此信息通知給請求重定向模塊,完成垃圾回收操作后,轉(zhuǎn)步驟(4);(2.4)暫停處理該固態(tài)盤的垃圾回收操作,轉(zhuǎn)過程(2.1);(3)垃圾回收階段請求處理步驟,具體方法如下:(3.1)等待上層用戶讀寫請求,判斷該請求是否需要由正在處理垃圾回收操作的固態(tài)盤響應,若是,則轉(zhuǎn)過程(3.2),否則,查找映射表,判斷所請求的數(shù)據(jù)是否已經(jīng)被回收,若是,則轉(zhuǎn)過程(3.7),否則轉(zhuǎn)步驟(5 );(3.2)判斷該請求是否是寫請求,若是,則轉(zhuǎn)過程(3.3),否則轉(zhuǎn)過程(3.4);(3.3)將本應寫入正在處理垃圾回收操作的固態(tài)盤中的數(shù)據(jù),寫入固態(tài)盤陣列的熱備盤中,同時更新相應的校驗信息,并將數(shù)據(jù)映射信息記錄在重定向數(shù)據(jù)映射表中,轉(zhuǎn)過程(3.1);(3.4)根據(jù)重定向數(shù)據(jù)映射表判斷讀請求要讀取的數(shù)據(jù)是否在熱備盤中,若是,則轉(zhuǎn)過程(3.5),否則轉(zhuǎn)過程(3.6);(3.5)請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(3.1);(3.6)請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,讀取其他未處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),利用RAIS5自身的冗余特性動態(tài)重構(gòu)出正在處理垃圾回收操作的固態(tài)盤上的數(shù)據(jù),并返回給用戶;轉(zhuǎn)過程(3.1);(3.7)按固態(tài)盤陣列的正常算法響應讀寫請求;轉(zhuǎn)過程(3.1);(4)數(shù)據(jù)回收步驟,當對應固態(tài)盤的垃圾回收操作完成后,數(shù)據(jù)回收模塊掃描重定向數(shù)據(jù)映射表,具體方法如下:(4.1)數(shù)據(jù)回收模塊判斷重定向數(shù)據(jù)映射表是否為空,若是,則數(shù)據(jù)回收結(jié)束,轉(zhuǎn)步驟(2),否則轉(zhuǎn)過程(4.2);(4.2)數(shù)據(jù)回收模塊從重定向數(shù)據(jù)映射表中取出一條映射信息,從熱備盤中讀取該映射信息對應的數(shù)據(jù)并寫回到固態(tài)盤陣列的正確位置中;(4.3)數(shù)據(jù)回收模塊將該映射信息從重定向數(shù)據(jù)映射表中刪除,轉(zhuǎn)過程(4.1);(5)數(shù)據(jù)回收階段請求處理步驟,具體方法如下:(5.1)數(shù)據(jù)回收模塊判斷數(shù)據(jù)回收是否結(jié)束,若是,則本步驟結(jié)束,轉(zhuǎn)步驟(3),否則等待上層用戶讀寫請求,判斷其類型,讀請求轉(zhuǎn)過程(5.2),寫請求轉(zhuǎn)過程(5.5);(5.2)請求重定向模塊根據(jù)重定向數(shù)據(jù)映射表判斷該讀請求所需要的數(shù)據(jù)是否在熱備盤中,若是,則轉(zhuǎn)過程(5.3),否則轉(zhuǎn)過程(5.4);(5.3)請求重定向模塊將讀請求發(fā)向熱備盤,從熱備盤讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(5.1);(5.4)請求重定向模塊將讀請求發(fā)向固態(tài)盤陣列,從固態(tài)盤陣列讀取數(shù)據(jù),返回給用戶,轉(zhuǎn)過程(5.1);(5.5)請求重定向模塊判斷該寫請求是否命中重定向數(shù)據(jù)映射表,若是,則轉(zhuǎn)過程(5.6),否則轉(zhuǎn)過程(5.7);(5.6)請求重定向模塊將該寫請求所命中的映射信息從重定向數(shù)據(jù)映射表中刪除,繼續(xù)過程(5.7);(5.7)請求重定向模塊將該寫請求中的數(shù)據(jù)寫入到固態(tài)盤陣列,同時更新相應的校驗信息,轉(zhuǎn)過程(5.1);(6)當用戶發(fā)出指令關(guān)閉固態(tài)盤陣列時,進行結(jié)束步驟,具體方法如下:(6.1)關(guān)閉固態(tài)盤陣列之前,主控模塊將重定向數(shù)據(jù)映射表保存到固態(tài)盤陣列各成員盤的超級塊中;(6.2)關(guān)閉固態(tài)盤陣列設(shè)備,釋放相關(guān)的資源。
2.如權(quán)利要求1所述一種固態(tài)盤陣列的垃圾回收方法,其特征在于所述重定向數(shù)據(jù)映射表包括M條映射信息,每條映射信息由3個數(shù)據(jù)項構(gòu)成:各數(shù)據(jù)項依次為被重定向數(shù)據(jù)在固態(tài)盤陣列的塊偏移地址、被重定向數(shù)據(jù)在熱備盤上的塊偏移地址、被重定向數(shù)據(jù)的長度;M為≥O的自然數(shù)。
【文檔編號】G06F3/06GK103530237SQ201310528584
【公開日】2014年1月22日 申請日期:2013年10月31日 優(yōu)先權(quán)日:2013年10月31日
【發(fā)明者】吳素貞, 毛波, 陳曉熹, 陳曉蘭, 席在發(fā) 申請人:廈門大學