一種固態(tài)盤陣列的緩存管理方法
【技術領域】
[0001]本發(fā)明涉及計算機存儲領域,尤其是涉及一種固態(tài)盤陣列的緩存管理方法。
【背景技術】
[0002]作為一種主流的存儲介質(zhì),磁盤已經(jīng)廣泛應用于個人電腦和企業(yè)級數(shù)據(jù)存儲等領域,但是其機械特性限制了其讀寫性能的快速提升,基于磁盤的存儲設備漸漸成為存儲系統(tǒng)的性能“墻”。目前,基于閃存的固態(tài)盤已成為磁盤的有力替代品,并且得到了學術界和工業(yè)界的廣泛關注。和磁盤相比,基于閃存的固態(tài)盤是一種半導體存儲介質(zhì),沒有機械部件,具有經(jīng)久耐用、防震抗摔、無噪音、功耗低、工作溫度范圍大、隨機小讀性能高等優(yōu)點;但是固態(tài)盤的容量價格比低,而且具有隨機小寫性能低、寫前必須擦除和介質(zhì)擦除次數(shù)有限等缺點。
[0003]基于閃存的固態(tài)盤包含3種基本操作:讀、寫和擦除。讀和寫都以頁為單位進行操作;擦除以塊為單位進行操作。一個塊(塊大小通常是128KB-256KB) —般包含64個頁(頁大小通常是2KB-4KB)。擦除操作的處理時間比讀寫操作處理時間大若干個數(shù)量級。如果某個頁已經(jīng)存儲有效數(shù)據(jù)就無法對該頁直接進行覆蓋寫操作,而是將原數(shù)據(jù)頁的數(shù)據(jù)置為無效,將新數(shù)據(jù)寫入到其他空閑頁中。隨著系統(tǒng)的運行,固態(tài)盤中的空閑塊會越來越少,無效數(shù)據(jù)頁則越來越多,因此需要擦除這些包含無效數(shù)據(jù)頁的塊以獲得新的空閑塊,該操作稱為“垃圾回收”。固態(tài)盤的垃圾回收過程是:首先選取待回收的塊,將其上的有效數(shù)據(jù)頁復制到空閑塊中,并更新地址映射信息,然后擦除待回收塊并將它們加入空閑塊列表中。這個垃圾回收的過程將會消耗較多的時間。而且,當固態(tài)盤中的某個芯片正在處理垃圾回收操作時無法同時處理來自用戶的讀寫請求,此時該芯片接收到的讀寫請求都將被掛起,直到垃圾回收操作完成才能被處理。因此,垃圾回收操作的效率直接影響了固態(tài)盤存儲系統(tǒng)的性能,這個問題已成為存儲研究的熱點之一。
[0004]另一方面,固態(tài)盤除了應用于桌面機外,也漸漸應用于服務器和企業(yè)級數(shù)據(jù)存儲系統(tǒng)中。在企業(yè)級數(shù)據(jù)存儲系統(tǒng)中,單個固態(tài)盤顯然無法滿足服務對存儲系統(tǒng)容量、性能和可靠性的要求。因此,將磁盤陣列算法應用到固態(tài)盤存儲系統(tǒng)中,構建大容量、高性能和高可靠的存儲系統(tǒng)非常有必要。
[0005]類似于磁盤陣列,固態(tài)盤陣列的性能也會受到陣列中性能最差的成員盤的影響。因此,單個固態(tài)盤的垃圾回收操作所引起的性能降低將使得固態(tài)盤陣列表現(xiàn)出嚴重的性能波動?,F(xiàn)有的緩存管理算法都是針對磁盤特點進行設計的,由于固態(tài)盤的物理組成和磁盤有很大的差別,具有許多磁盤所不具備的特點,如寫放大、垃圾回收等。其中垃圾回收操作對固態(tài)盤的性能延遲有很大的影響,當固態(tài)盤做垃圾回收時,很多發(fā)向該盤的請求將無法得到響應,直到垃圾回收操作完成才能被處理,從而降低了性能。目前使用最廣泛的緩存替換算法是最近最少使用算法(Least Recently Used,簡稱LRU),即將最近最少使用的數(shù)據(jù)從緩存中刪除從而為新數(shù)據(jù)提供空間,但是這樣做也會將進行垃圾回收操作的固態(tài)盤的數(shù)據(jù)從緩存中刪除,增加了對該固態(tài)盤的負擔,造成更大的延遲。因此現(xiàn)有的LRU替換算法在固態(tài)盤陣列上存在著有一定的局限性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提供一種可有效減輕固態(tài)盤的垃圾回收操作對固態(tài)盤陣列性能波動的負面影響,提升固態(tài)盤陣列性能的緩存管理方法。
[0007]為實現(xiàn)上述目的,本發(fā)明采用如下技術方案:
[0008]一種固態(tài)盤陣列的緩存管理方法,在固態(tài)盤陣列上設置有主控模塊、垃圾回收控制模塊、緩存管理模塊和優(yōu)先緩存記錄表;所述緩存管理方法包括以下步驟:
[0009]I)初始化步驟
[0010]進行下列過程:
[0011](1.1)主控模塊打開已有的固態(tài)盤陣列或創(chuàng)建新的固態(tài)盤陣列,判斷該固態(tài)盤陣列是否為創(chuàng)建的新固態(tài)盤陣列,若是,則轉(zhuǎn)入過程(1.2),否則轉(zhuǎn)入過程(1.3);
[0012](1.2)主控模塊清空緩存中的數(shù)據(jù)內(nèi)容,創(chuàng)建優(yōu)先緩存記錄表并初始化為空,進行步驟2);
[0013](1.3)主控模塊讀取保存在各個成員固態(tài)盤中的優(yōu)先緩存記錄表,進行步驟(2);
[0014]2)垃圾回收感知步驟
[0015]垃圾回收控制模塊設定一個空閑空間的閾值,同時將固態(tài)盤的狀態(tài)分為正常狀態(tài)、垃圾回收預警狀態(tài)和垃圾回收狀態(tài),所述正常狀態(tài)即固態(tài)盤的空閑空間大于設定的閾值,所述垃圾回收預警狀態(tài)即固態(tài)盤的空閑空間小于閾值但還沒有進行垃圾回收操作,所述垃圾回收狀態(tài)即固態(tài)盤正在進行垃圾回收操作;
[0016]進行下列過程:
[0017](2.1)垃圾回收控制模塊逐個檢查固態(tài)盤的狀態(tài),判斷固態(tài)盤是否處于垃圾回收狀態(tài),若是,則轉(zhuǎn)入過程(2.3),否則轉(zhuǎn)入過程(2.2);
[0018](2.2)垃圾回收控制模塊收集固態(tài)盤陣列中每塊成員固態(tài)盤的空閑空間的信息,并與設定的閾值進行比較,判斷固態(tài)盤是否處于垃圾回收預警狀態(tài),若是,則轉(zhuǎn)入過程(2.3),否則判斷固態(tài)盤的信息是否保存在優(yōu)先緩存記錄表中,若是,則轉(zhuǎn)入過程(2.4),否則轉(zhuǎn)入過程(2.1);
[0019](2.3)主控模塊將固態(tài)盤的盤號記錄在優(yōu)先緩存記錄表中,轉(zhuǎn)入過程(2.1);
[0020](2.4)主控模塊將固態(tài)盤的盤號從優(yōu)先緩存記錄表中刪除,轉(zhuǎn)入過程(2.1);
[0021]3)緩存管理步驟
[0022]進行下列過程:
[0023](3.1)當有新數(shù)據(jù)要寫入緩存時,緩存管理模塊檢查緩存空間是否已滿,若是,則轉(zhuǎn)入過程(3.2),否則轉(zhuǎn)入過程(3.8);
[0024](3.2)緩存管理模塊從緩存LRU鏈表中取出尾節(jié)點,轉(zhuǎn)入過程(3.3);
[0025](3.3)查看該節(jié)點數(shù)據(jù)所屬的固態(tài)盤的盤號,掃描優(yōu)先緩存記錄表,判斷該盤號是否在優(yōu)先緩存記錄表中,若是,則轉(zhuǎn)入過程(3.4),否則轉(zhuǎn)入過程(3.5);
[0026](3.4)緩存管理模塊從LRU鏈表上取出當前節(jié)點的前一個節(jié)點數(shù)據(jù),轉(zhuǎn)入過程(3.3);
[0027](3.5)查看該節(jié)點數(shù)據(jù)是否為臟數(shù)據(jù),若是,則轉(zhuǎn)入過程(3.6),否則轉(zhuǎn)入過程(3.7);
[0028](3.6)將該節(jié)點數(shù)據(jù)寫回固態(tài)盤,轉(zhuǎn)入過程(3.7);
[0029](3.7)將該節(jié)點數(shù)據(jù)從緩存上刪除,轉(zhuǎn)入過程(3.8);
[0030](3.8)將新數(shù)據(jù)寫入緩存并插入到LRU鏈表的表頭,轉(zhuǎn)入過程(3.1);
[0031]4)結束步驟
[0032]當用戶發(fā)出指令關閉固態(tài)盤陣列時,進行下列過程:
[0033]將優(yōu)先緩存記錄表保存到固態(tài)盤陣列各成員固態(tài)盤的超級塊中,關閉固態(tài)盤陣列設備,釋放相關的資源。
[0034]與現(xiàn)有技術比較,本發(fā)明的有益效果如下:
[0035]本發(fā)明充分利用存儲系統(tǒng)中數(shù)據(jù)訪問的時間局部性和空間局部性以及固態(tài)盤陣列的緩存存儲特性,通過在緩存上提前優(yōu)先存儲將要進行垃圾回收操作的固態(tài)盤的熱點數(shù)據(jù)的緩存管理方法來減輕垃圾回收操作對固態(tài)盤陣列性能波動的負面影響。當某個固體盤的空閑空間少于一定數(shù)量也就是即將進行垃圾回收操作時,緩存對該固態(tài)