專利名稱:一種raid6級別混合磁盤陣列及其性能加速和可靠性提高方法
技術(shù)領(lǐng)域:
本發(fā)明屬于磁盤陣列性能優(yōu)化技術(shù)領(lǐng)域,具體涉及ー種RAID6級別磁盤陣列及其性能優(yōu)化方法。
背景技術(shù):
隨著計算機(jī)技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,信息化程度越來越高,人們對數(shù)據(jù)可靠性的要求也越來越高。磁盤陣列RAID (Redundant Array of Independent Disks)是可靠 存儲系統(tǒng)領(lǐng)域中的ー個典型裝置,磁盤陣列的工作原理與特征=RAID的基本結(jié)構(gòu)特征是組合(Striping),捆綁2個或多個物理磁盤成組,形成ー個單獨的邏輯盤。RAID結(jié)構(gòu)有以下幾個典型標(biāo)準(zhǔn)。RAIDO級無冗余無校驗的磁盤陣列。數(shù)據(jù)同時分布在各個磁盤驅(qū)動器上,沒有容錯能力,讀寫速度在RAID中最快,但安全系數(shù)最低。RAIDl級鏡象磁盤陣列。每ー個磁盤驅(qū)動器都有ー個鏡像磁盤驅(qū)動器,鏡像磁盤驅(qū)動器隨時保持與原磁盤驅(qū)動器的內(nèi)容一致。RAIDl具有最高的安全性,但磁盤利用率最低,僅50%。RAID5級無獨立校驗盤的奇偶校驗磁盤陣列。采用奇偶校驗來檢查錯誤,但沒有獨立的校驗盤,校驗信息分布在各個磁盤驅(qū)動器上。RAID6級和RAID5級很相似,但是RAID6級可以恢復(fù)任意雙盤出錯。RAID6級結(jié)構(gòu)在存儲系統(tǒng)中扮演著越來越重要的角色。目前的RAID6級陣列由于毎次寫操作都要計算校驗并且寫校驗,影響了 RAID6的寫性能和可靠性,影響了磁盤的使用壽命,也不利于降低系統(tǒng)能耗。
發(fā)明內(nèi)容
本發(fā)明的目的之ー在于提出ー種RAID6級別混合磁盤陣列,解決目前的RAID6級陣列寫性能和可靠性不佳,壽命和系統(tǒng)能耗不理想的問題。實現(xiàn)本發(fā)明該目的所采用的技術(shù)方案如下ー種RAID6級別混合磁盤陣列,包括數(shù)個固態(tài)盤,作為數(shù)據(jù)盤,用于存儲數(shù)據(jù);兩個磁盤,各磁盤中的部分空間用作校驗盤,剰余空間用作鏡像日志區(qū),用來暫時緩存寫數(shù)據(jù),且所述鏡像日志區(qū)中數(shù)據(jù)塊的位置索引信息記錄在一個塊日志鏈表中;和管理控制單元,其用于控制上層應(yīng)用程序?qū)υ撽嚵械脑L問,并管理RAID6混合磁盤陣列,具體包括其中,所述管理控制單元包括監(jiān)控模塊、數(shù)據(jù)分發(fā)模塊和數(shù)據(jù)回收模塊,其中,監(jiān)控模塊用于監(jiān)控應(yīng)用程序的I/O訪問,并識別出其中的寫數(shù)據(jù),同時計算I/O訪問強(qiáng)度。數(shù)據(jù)分發(fā)模塊用于將監(jiān)控模塊識別到的寫數(shù)據(jù)分發(fā)到固態(tài)盤或鏡像日志區(qū)中。數(shù)據(jù)回收模塊用于在I/O訪問強(qiáng)度低于預(yù)設(shè)閾值時,將寫數(shù)據(jù)從鏡像日志區(qū)回收至固態(tài)盤。所述管理控制單元還包括管理模塊和數(shù)據(jù)恢復(fù)模塊,該預(yù)設(shè)閾值通過管理模塊進(jìn)行設(shè)定,該數(shù)據(jù)恢復(fù)模塊用于在出現(xiàn)導(dǎo)致固態(tài)盤和磁盤數(shù)據(jù)丟失或者損壞時進(jìn)行恢復(fù)處理。所述塊日志鏈表保存在RAID6混合磁盤陣列中的非易失性內(nèi)存(NVRAM)中。系統(tǒng)運行過程中,當(dāng)監(jiān)控模塊識別到寫數(shù)據(jù)后 ,由數(shù)據(jù)分發(fā)模塊將該寫數(shù)據(jù)寫入鏡像日志區(qū),當(dāng)監(jiān)控模塊監(jiān)控到系統(tǒng)負(fù)載低或處于空閑狀態(tài)時(即I/o訪問強(qiáng)度低于預(yù)設(shè)閾值),再由數(shù)據(jù)回收模塊將寫數(shù)據(jù)回寫至固態(tài)盤中,并同步校驗,恢復(fù)正常RAID6數(shù)據(jù)流程。其中,預(yù)設(shè)閾值根據(jù)I/O負(fù)載的不同而不同,具體可以根據(jù)實際情況進(jìn)行設(shè)定。對鏡像日志區(qū)的寫操作以及數(shù)據(jù)的改寫和更新均采取順序方式。鏡像日志區(qū)還用來在校驗盤發(fā)生故障時利用數(shù)據(jù)恢復(fù)模塊進(jìn)行數(shù)據(jù)恢復(fù)。本發(fā)明還公開了ー種上述RAID6級別混合磁盤陣列的性能加速和可靠性提高方法,以解決現(xiàn)有的磁盤陣列RAID6級別在負(fù)載較大時寫性能不好的問題,該方法具體包括如下步驟(I)數(shù)據(jù)讀寫處理步驟(I. I)寫請求處理接收到寫請求時,首先檢查該請求是否與之前的請求是順序的。如果是,將該請求與其前面的請求合井,由數(shù)據(jù)分發(fā)模塊將數(shù)據(jù)寫入鏡像日志區(qū),同時,ー個新的針對該請求的塊日志條目被創(chuàng)建并加入到塊日志鏈表中;若請求是隨機(jī)的,數(shù)據(jù)同樣被寫入鏡像日志區(qū),ー個新的針對該請求的塊日志條目被創(chuàng)建并加入到塊日志鏈表中。(I. 2)讀請求處理方法當(dāng)接收到讀請求時,首先檢查塊日志鏈表中是否有對應(yīng)該請求的條目。若有,則將數(shù)據(jù)從鏡像日志區(qū)中讀取;否則,到固態(tài)盤中讀取所請求的數(shù)據(jù)。(2)校驗重新同步處理步驟,具體包括(2. I) I/O負(fù)載低于預(yù)設(shè)閾值時的校驗重新同步處理當(dāng)I/O負(fù)載低于預(yù)設(shè)閾值時,順序遍歷所述塊日志鏈表,對于鏈表中的每ー個條目,找到該條目對應(yīng)的數(shù)據(jù)塊所在的校驗條帯,讀取出校驗條帶上所有的數(shù)據(jù)塊,通過數(shù)據(jù)塊計算出新的校驗塊,再將新的校驗塊寫入校驗盤。然后,在塊日志鏈表中刪除所有該校驗條帶上的數(shù)據(jù)塊所對應(yīng)的條目。當(dāng)塊日志鏈表中的所有數(shù)據(jù)條目都被刪除時,即完成校驗同步。(2.2) —塊固態(tài)盤和ー塊校驗盤失效后的校驗重新同步處理當(dāng)ー塊固態(tài)盤和ー塊校驗盤失效時,首先將固態(tài)盤上失效的數(shù)據(jù)塊恢復(fù),然后根據(jù)該恢復(fù)的數(shù)據(jù)塊計算出新的校驗塊,將該新的校驗塊寫入校驗盤,即完成校驗重新同歩,RAID6陣列恢復(fù)到一致狀態(tài)。(2. 3)鏡像日志區(qū)寫滿后的校驗重新同步處理如果鏡像日志區(qū)被寫滿,則不能再向其中添加新的日志記錄,此時直接將寫數(shù)據(jù)回收到固態(tài)盤中,并進(jìn)行校驗同歩。(3)元數(shù)據(jù)更新和一致性檢驗處理步驟
(3. I)元數(shù)據(jù)更新采用異步方式對元數(shù)據(jù)進(jìn)行更新,可以是周期性更新或在系統(tǒng)處于空閑狀態(tài)時進(jìn)行更新。(3. 2) 一致性檢驗確定塊日志校驗和,若校驗和為零,表示元數(shù)據(jù)無誤;若校驗和不為零,則表明元數(shù)據(jù)有誤。(4)固態(tài)盤或磁盤失效后的數(shù)據(jù)恢復(fù)步驟,包括(4. I) 一個校驗盤失效的數(shù)據(jù)恢復(fù)如果ー個校驗盤失效,根據(jù)塊日志鏈表將寫數(shù)據(jù)回收至固態(tài)盤,同時校驗數(shù)據(jù)通 過RAID6恢復(fù)算法得以恢復(fù);數(shù)據(jù)回收過程完成后,新添加校驗盤的部分空間和未失效校驗盤的日志空間重新組合成鏡像日志區(qū)。(4.2) —個固態(tài)盤和ー個校驗盤失效的數(shù)據(jù)恢復(fù)ー個固態(tài)盤和ー個校驗盤失效,意味著每個校驗條帶丟失ー個數(shù)據(jù)塊和ー個校驗塊。如果丟失的數(shù)據(jù)塊在塊日志鏈表中有對應(yīng)的條目,那么它可以直接從鏡像日志區(qū)中讀取;否則它可以通過RAID6恢復(fù)算法來得到恢復(fù)。丟失的數(shù)據(jù)塊復(fù)原后,通過校驗條帶上所有的數(shù)據(jù)塊計算并更新校驗塊,將該更新的校驗塊寫入校驗盤,完成校驗同步操作,使RAID6陣列恢復(fù)到一致狀態(tài)。(4. 3)兩個固態(tài)盤失效的數(shù)據(jù)恢復(fù)在兩個固態(tài)盤失效的情況下,RAID6陣列中每個校驗條帶丟失了兩個數(shù)據(jù)塊。首先,查詢丟失的數(shù)據(jù)塊在塊日志鏈表中的對應(yīng)條目,如果條目存在,則直接從鏡像日志區(qū)中讀出數(shù)據(jù)即可恢復(fù)該數(shù)據(jù)塊;如果丟失的數(shù)據(jù)塊在塊日志鏈表中不存在對應(yīng)條目,說明該數(shù)據(jù)塊未被更新過。針對校驗條帶上每個未丟失的數(shù)據(jù)塊,其初始數(shù)據(jù)可以從固態(tài)盤中讀出。讀出校驗條帶上每個未丟失的數(shù)據(jù)塊的初始數(shù)據(jù)后,結(jié)合校驗塊的初始數(shù)據(jù),利用RAID6算法便可以計算出丟失的數(shù)據(jù)塊的初始數(shù)據(jù)。由于該數(shù)據(jù)塊未被更新過,其初始數(shù)據(jù)便是恢復(fù)數(shù)據(jù)。本發(fā)明構(gòu)建了一種新的結(jié)合鏡像日志的混合磁盤陣列架構(gòu),并通過數(shù)據(jù)讀寫、元數(shù)據(jù)更新和一致性檢驗、校驗重新同步以及硬盤失效后數(shù)據(jù)恢復(fù)對陣列進(jìn)行優(yōu)化,利用固態(tài)盤快速的讀性能和低能耗的優(yōu)點,以及磁盤持久、可靠、順序?qū)懰俣瓤斓膶懶阅軆?yōu)點,結(jié)合鏡像日志,從而大大提高了該RAID6混合陣列的寫性能和可靠性,并延長了固態(tài)盤的使用壽命,降低了系統(tǒng)能耗。
圖I為本發(fā)明系統(tǒng)架構(gòu)示意圖;圖2為本發(fā)明的塊日志鏈表結(jié)構(gòu)示意圖;圖3為本發(fā)明的寫請求處理示意圖;圖4為本發(fā)明的讀請求處理示意具體實施例方式下面結(jié)合附圖對本發(fā)明進(jìn)一歩詳細(xì)說明。
如圖I所示,RAID6混合磁盤陣列210由固態(tài)盤210. 1,210. 2. · · 210. η和兩塊磁盤的部分空間 210. n+U210. η+2 組成,210. I、210. 2. · · 210. η 用作數(shù)據(jù)盤,210. η+1、210.η+2用作校驗盤,磁盤的剩余部分220. 1、220. 2組成了鏡像日志區(qū)220,用來吸收寫數(shù)據(jù),鏡像日志區(qū)220中數(shù)據(jù)塊的位置索引信息記錄在塊日志鏈表230中,該鏈表保存在RAID6混合磁盤陣列210中的非易失性內(nèi)存(NVRAM)中。RAID6混合磁盤陣列210還包括管理控制單元。該管理控制單元包括管理模塊110、監(jiān)控模塊120、數(shù)據(jù)分發(fā)模塊130、數(shù)據(jù)回收模塊140和數(shù)據(jù)恢復(fù)模塊150。管理模塊110為系統(tǒng)管理員提供一個配置參數(shù)的界面,以進(jìn)行I/O訪問預(yù)設(shè)閾值的設(shè)定。監(jiān)控模塊120負(fù)責(zé)監(jiān)控應(yīng)用程序的I/O訪問,識別隨機(jī)的寫訪問并計算I/O強(qiáng)度。 數(shù)據(jù)分發(fā)模塊130負(fù)責(zé)將I/O請求分發(fā)到陣列或鏡像日志區(qū)中。數(shù)據(jù)回收模塊140負(fù)責(zé)將寫數(shù)據(jù)從鏡像日志區(qū)回收至陣列。數(shù)據(jù)恢復(fù)模塊150在出現(xiàn)導(dǎo)致硬盤數(shù)據(jù)丟失或者損壞的中斷時進(jìn)行恢復(fù)處理。監(jiān)控模塊120負(fù)責(zé)監(jiān)控應(yīng)用程序的I/O訪問,當(dāng)識別到寫數(shù)據(jù)后,由數(shù)據(jù)分發(fā)模塊130將該寫數(shù)據(jù)寫入鏡像日志區(qū)220。當(dāng)監(jiān)控模塊120監(jiān)控到系統(tǒng)負(fù)載低或處于空閑狀態(tài)時,再由數(shù)據(jù)回收模塊140將寫數(shù)據(jù)回寫至固態(tài)盤210. 1,210. 2...或210. η中,并同步校驗,恢復(fù)正常RAID6數(shù)據(jù)流程。對鏡像日志區(qū)220的寫操作以及數(shù)據(jù)的改寫和更新均采取順序方式。鏡像日志區(qū)220還用來在校驗盤210. η+1或210. η+2發(fā)生故障時利用數(shù)據(jù)恢復(fù)模塊150進(jìn)行數(shù)據(jù)恢復(fù)。圖2顯示了本發(fā)明的塊日志鏈表結(jié)構(gòu)示意圖。塊日志鏈表230由若干個條目230. 1,230. 2,230. 3. · · 230. η組成,每個條目包含若干項,以條目230. 3為例LBA 230. 31表示數(shù)據(jù)塊在RAID6陣列210中的偏移量;buf_log_LBA 230. 32表示數(shù)據(jù)塊在鏡像日志區(qū)220中的偏移量;reClaim_flg 230. 33代表ー個標(biāo)識,該變量的值在回收操作完成后進(jìn)行設(shè)置;length 230. 34 表不數(shù)據(jù)塊的長度;hash_pre 230. 35 和 hash_next 230. 36 是用來連接鏈表的指針。上述的RAID6混合磁盤陣列210的性能加速和可靠性提高方法,具體如下(I)數(shù)據(jù)讀寫處理步驟(I. I)寫請求處理圖3是本發(fā)明的寫請求處理示意圖。系統(tǒng)接收到寫請求時,監(jiān)控模塊120首先檢查該請求是否與之前的請求是順序的。如果是,則監(jiān)控模塊120將該請求與其前面的請求合井,由數(shù)據(jù)分發(fā)器130將數(shù)據(jù)寫入鏡像日志區(qū)220,同時,ー個新的針對該請求的塊日志條目230.m被加入到塊日志鏈表230中;若請求是隨機(jī)的,數(shù)據(jù)同樣被寫入鏡像日志區(qū)220,ー個新的針對該請求的塊日志條目230. η被創(chuàng)建并加入到塊日志鏈表230中。(1.2)讀請求處理本發(fā)明的讀請求處理示意圖如圖4所示。當(dāng)接收到讀請求時,監(jiān)控模塊120首先檢查塊日志鏈表230中是否有對應(yīng)該請求的條目。若有,則將數(shù)據(jù)從鏡像日志區(qū)220中讀取;否則,所請求的數(shù)據(jù)要到RAID6陣列210中的固態(tài)盤210. U210. 2...或210. η中去讀取。(2)校驗重新同步處理步驟在系統(tǒng)中,校驗的重新同步操作可能發(fā)生在以下3種情況應(yīng)用負(fù)載從聚發(fā)變?yōu)榭臻e、ー塊數(shù)據(jù)盤210. 1,210. 2...或210. η和ー塊校驗盤210. η+1或210. η+2失效、鏡像日志區(qū)220寫滿。(2. I)應(yīng)用負(fù)載從聚發(fā)變?yōu)榭臻e時的校驗重新同步當(dāng)系統(tǒng)檢測到應(yīng)用負(fù)載從聚發(fā)變?yōu)榭臻e時,系統(tǒng)順序遍歷塊日志鏈表230,對于鏈表230中的每ー個條目230. 1、230. 2...或230. η,系統(tǒng)找到該條目對應(yīng)的數(shù)據(jù)塊所在的校驗條帶,讀取出校驗條帶上所有的數(shù)據(jù)塊,通過數(shù)據(jù)塊計算出新的校驗塊,再將新的校驗塊寫入校驗磁盤210. η+1或210. η+2。然后,系統(tǒng)在塊日志鏈表230中刪除所有該校驗條帶上的數(shù)據(jù)塊所對應(yīng)的條目。當(dāng)塊日志鏈表230中的所有數(shù)據(jù)條目都被刪除時,系統(tǒng)的校驗同步操作就完成了。(2.2) —塊數(shù)據(jù)盤和ー塊校驗盤失效后的校驗重新同步當(dāng)數(shù)據(jù)盤230. I和校驗盤230. η+1失效時,系統(tǒng)需要立即進(jìn)行校驗同步操作,首先將失效的數(shù)據(jù)塊恢復(fù),然后啟動校驗重新同步操作,使RAID6陣列210恢復(fù)到一致狀態(tài)。(2. 3)鏡像日志區(qū)寫滿后的校驗重新同步如果鏡像日志區(qū)220被寫滿,則不能再向其中添加新的日志記錄。此時寫數(shù)據(jù)要回收到RAID6陣列210中,系統(tǒng)在此時要進(jìn)行校驗同步。(3)元數(shù)據(jù)更新和一致性檢驗處理步驟(3. I)元數(shù)據(jù)更新采用異步方式更新包括塊日志鏈表230在內(nèi)的HRAID6ML元數(shù)據(jù),其策略是對元數(shù)據(jù)進(jìn)行周期性更新或當(dāng)系統(tǒng)處于空閑狀態(tài)時進(jìn)行更新;使用時鐘來判斷系統(tǒng)是否處于空閑狀態(tài);當(dāng)系統(tǒng)調(diào)用I/o函數(shù)時時鐘復(fù)位,當(dāng)時鐘時間出現(xiàn)超時(比如超過5秒)喚醒異步更新線程。(3. 2) 一致性檢驗
使用校驗和算法來保證元數(shù)據(jù)的低出錯率。檢驗和計算方式為+1),ん表
示第i條塊日志,若校驗和為零,表示元數(shù)據(jù)無誤;若校驗和不為零,則表明元數(shù)據(jù)有誤。(4)硬盤失效后的數(shù)據(jù)恢復(fù)處理步驟硬盤失效一般是固態(tài)盤失效或者磁盤失效,具體情況有以下三種(4. I) ー個校驗磁盤失效如果校驗磁盤210. η+1失效,系統(tǒng)根據(jù)塊日志鏈表230將寫數(shù)據(jù)回收至RAID6陣列210,同時校驗部分利用RAID6恢復(fù)算法得以恢復(fù);數(shù)據(jù)回收過程完成后,新添加校驗磁盤的部分空間和未失效校驗磁盤的日志空間重新組合成鏡像日志區(qū)220。(4. 2) ー個固態(tài)盤和ー個校驗磁盤失效固態(tài)盤210. I和校驗磁盤210. η+1失效,意味著每個校驗條帶丟失ー個數(shù)據(jù)塊和ー個校驗塊。如果丟失的數(shù)據(jù)塊在塊日志鏈表230中有對應(yīng)的條目,那么它可以直接從鏡像日志區(qū)220中讀??;否則它可以通過RAID6恢復(fù)算法來得到恢復(fù)。丟失的數(shù)據(jù)塊復(fù)原后,通過校驗條帶上所有的數(shù)據(jù)塊計算并更新校驗塊,完成校驗同步操作,使RAID6陣列210恢復(fù)到一致狀態(tài)。
(4. 3)兩個固態(tài)盤失效在兩個固態(tài)盤210. I和210. 2同時失效的情況下,RAID6陣列210中每個校驗條帶丟失了兩個數(shù)據(jù)塊。首先,查詢丟失的數(shù)據(jù)塊在塊日志鏈表230中的對應(yīng)條目,如果條目存在,則直接從鏡像日志區(qū)220中讀出數(shù)據(jù)即可恢復(fù)該數(shù)據(jù)塊;如果丟失的數(shù)據(jù)塊在塊日志鏈表230中不存在對應(yīng)條目,說明該數(shù)據(jù)塊未被更新過。針對校驗條帶上每個未丟失的數(shù)據(jù)塊,其初始數(shù)據(jù)可以從RAID6陣列210中讀出。讀出校驗條帶上每個未丟失的數(shù)據(jù)塊 的初始數(shù)據(jù)后,結(jié)合校驗塊的初始數(shù)據(jù),利用RAID6算法便可以計算出丟失的數(shù)據(jù)塊的初始數(shù)據(jù)。由于該數(shù)據(jù)塊未被更新過,其初始數(shù)據(jù)便是恢復(fù)數(shù)據(jù)。
權(quán)利要求
1.一種RAID6級別混合磁盤陣列,包括 數(shù)個固態(tài)盤,其作為數(shù)據(jù)盤,用于存儲數(shù)據(jù); 兩個磁盤,各磁盤中的部分空間作為校驗盤空間,剩余空間作為鏡像日志區(qū),用來暫時緩存寫數(shù)據(jù),且所述鏡像日志區(qū)中數(shù)據(jù)塊的位置索引信息記錄在一個塊日志鏈表中;和 管理控制單元,其用于控制上層應(yīng)用程序?qū)υ撽嚵械脑L問,具體包括監(jiān)控模塊、數(shù)據(jù)分發(fā)模塊和數(shù)據(jù)回收模塊,其中,所述監(jiān)控模塊用于監(jiān)控應(yīng)用程序的I/O訪問,并識別出其中的寫數(shù)據(jù),同時計算I/O訪問強(qiáng)度,所述數(shù)據(jù)分發(fā)模塊用于將監(jiān)控模塊識別到的寫數(shù)據(jù)分發(fā)到固態(tài)盤或鏡像日志區(qū)中,所述數(shù)據(jù)回收模塊用于在所述I/O訪問強(qiáng)度低于預(yù)設(shè)閾值時將寫數(shù)據(jù)從鏡像日志區(qū)回收至固態(tài)盤。
2.根據(jù)權(quán)利要求I所述的一種RAID6級別混合磁盤陣列,其特征在于,所述的管理控制單元還包括管理模塊和數(shù)據(jù)恢復(fù)模塊,所述預(yù)設(shè)閾值通過該管理模塊進(jìn)行設(shè)定,所述數(shù)據(jù)恢復(fù)模塊用于在出現(xiàn)導(dǎo)致固態(tài)盤和磁盤數(shù)據(jù)丟失或者損壞時進(jìn)行數(shù)據(jù)恢復(fù)。
3.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述塊日志鏈表保存在非易失性內(nèi)存(NVRAM)中。
4.權(quán)利要求1-3之一所述的RAID6級別混合磁盤陣列的性能加速和可靠性提高方法,其特征在于,該方法具體包括 (1)數(shù)據(jù)讀寫處理步驟,其包括寫請求的處理和讀請求的處理 對于寫請求,由所述數(shù)據(jù)分發(fā)模塊將寫數(shù)據(jù)寫入鏡像日志區(qū),同時創(chuàng)建針對該請求的塊日志條目并加入到所述塊日志鏈表中;對于讀請求,若所述日志鏈表中有對應(yīng)該請求的條目,則將數(shù)據(jù)從鏡像日志區(qū)中讀??;否則,到固態(tài)盤中讀取所請求的數(shù)據(jù); (2)校驗重新同步處理步驟; (3)采用異步方式對元數(shù)據(jù)進(jìn)行更新步驟; (4)固態(tài)盤或磁盤失效后的數(shù)據(jù)恢復(fù)步驟。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟(4)中固態(tài)盤或磁盤失效后的數(shù)據(jù)恢復(fù)步驟具體包括 (4. I) 一個校驗盤失效的數(shù)據(jù)恢復(fù)根據(jù)所述塊日志鏈表將寫數(shù)據(jù)回收至固態(tài)盤,同時恢復(fù)校驗數(shù)據(jù),并在數(shù)據(jù)回收過程完成后,新添加校驗盤的部分空間和未失效校驗盤的日志空間重新組合,作為鏡像日志區(qū); (4. 2) 一個固態(tài)盤和一個校驗盤失效的數(shù)據(jù)恢復(fù)首先,若丟失的數(shù)據(jù)塊在塊日志鏈表中有對應(yīng)的條目,從鏡像日志區(qū)中讀取恢復(fù),否則進(jìn)行直接恢復(fù);丟失的數(shù)據(jù)塊恢復(fù)后,通過校驗條帶上所有的數(shù)據(jù)塊計算并更新校驗塊,將該更新的校驗塊寫入校驗盤,即完成校驗同步操作; (4. 3)兩個固態(tài)盤失效的數(shù)據(jù)恢復(fù)首先,查詢丟失的數(shù)據(jù)塊在塊日志鏈表中的對應(yīng)條目,如果條目存在,則直接從鏡像日志區(qū)中讀出數(shù)據(jù)即可恢復(fù)該數(shù)據(jù)塊;如果丟失的數(shù)據(jù)塊在塊日志鏈表中不存在對應(yīng)條目,則首先讀出校驗條帶上每個未丟失的數(shù)據(jù)塊的初始數(shù)據(jù),再結(jié)合校驗塊的初始數(shù)據(jù),計算出丟失的數(shù)據(jù)塊的初始數(shù)據(jù),該初始數(shù)據(jù)便是待恢復(fù)數(shù)據(jù)。
6.根據(jù)權(quán)利要求4或5所述的方法,其特征在于,所述步驟(2)中的校驗重新同步具體包括(2. I) I/O負(fù)載低于預(yù)設(shè)閾值時的校驗重新同步處理 首先,順序遍歷所述塊日志鏈表,對于鏈表中的每一個條目,找到該條目對應(yīng)的數(shù)據(jù)塊所在的校驗條帶,讀取出校驗條帶上所有的數(shù)據(jù)塊,通過數(shù)據(jù)塊計算出新的校驗塊,再將新的校驗塊寫入校驗盤;然后,在所述塊日志鏈表中刪除所有該校驗條帶上的數(shù)據(jù)塊所對應(yīng)的條目,當(dāng)塊日志鏈表中的所有數(shù)據(jù)條目都被刪除時,即完成校驗同步; (2. 2) 一塊固態(tài)盤和一塊校驗盤失效后的校驗重新同步處理 首先,將固態(tài)盤上失效的數(shù)據(jù)塊恢復(fù),然后根據(jù)該恢復(fù)的數(shù)據(jù)塊計算出新的校驗塊,將該新的校驗塊寫入校驗盤,即完成校驗重新同步; (2. 3)鏡像日志區(qū)寫滿后的校驗重新同步處理直接將寫數(shù)據(jù)回收到固態(tài)盤中,并進(jìn) 行校驗同步。
7.根據(jù)權(quán)利要求4-6之一所述的方法,其特征在于,所述步驟(3)中,對元數(shù)據(jù)進(jìn)行更新后還包括進(jìn)行一致性檢驗的步驟,具體為首先確定塊日志校驗和,若校驗和為零,表示元數(shù)據(jù)無誤;若校驗和不為零,則表明元數(shù)據(jù)有誤。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟(3)中對元數(shù)據(jù)的更新可以是周期性更新或在空閑狀態(tài)時進(jìn)行更新。
9.根據(jù)權(quán)利要求3-8之一所述的方法,其特征在于,所述步驟(I)對寫請求處理過程中,還包括對接收到的寫請求進(jìn)行檢查的過程,即確定該請求是否與之前的請求是順序的,如果是,將先將該請求與其前面的寫請求合并,再由數(shù)據(jù)分發(fā)模塊將數(shù)據(jù)寫入鏡像日志區(qū)。
全文摘要
本發(fā)明公開了一種RAID6級別混合磁盤陣列,包括數(shù)個固態(tài)盤,用于存儲數(shù)據(jù);兩個磁盤,各磁盤中的部分空間作為校驗盤空間,剩余空間作為鏡像日志區(qū),且鏡像日志區(qū)中數(shù)據(jù)塊的位置索引信息記錄在一塊日志鏈表中;和管理控制單元,用于控制上層應(yīng)用程序?qū)υ撽嚵械脑L問,具體包括監(jiān)控模塊、數(shù)據(jù)分發(fā)模塊和數(shù)據(jù)回收模塊,監(jiān)控模塊用于監(jiān)控應(yīng)用程序的I/O訪問并識別出其中的寫數(shù)據(jù),數(shù)據(jù)分發(fā)模塊用于將監(jiān)控模塊識別到的寫數(shù)據(jù)分發(fā)到固態(tài)盤或鏡像日志區(qū)中,數(shù)據(jù)回收模塊用于將寫數(shù)據(jù)從鏡像日志區(qū)回收至固態(tài)盤。本發(fā)明還公開了一種上述陣列的性能加速和可靠性提高方法。本發(fā)明可用于各種負(fù)載突發(fā)的存儲環(huán)境,適用于構(gòu)建具有高性能、高可靠性的存儲系統(tǒng)。
文檔編號G06F3/06GK102662607SQ20121008752
公開日2012年9月12日 申請日期2012年3月29日 優(yōu)先權(quán)日2012年3月29日
發(fā)明者馮丹, 劉文國, 曾令仿, 陳儉喜 申請人:華中科技大學(xué)