專利名稱:一種改進的磁盤陣列重建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機存儲技術(shù)領(lǐng)域,特別涉及獨立冗余磁盤陣列(RedundantArray oflndependentDisks,RAID)技術(shù),尤其涉及一種改進的磁盤陣列重建方法。
背景技術(shù):
RAID是一種把多塊獨立的磁盤按不同的方式組合起來形成一個磁盤組(邏輯磁 盤),從而提供比單個磁盤更高的存儲性能和提供數(shù)據(jù)冗余保護的技術(shù)。RAID技術(shù)的原 理,就是把數(shù)據(jù)和相對應(yīng)的奇偶校驗信息存儲到組成RAID系統(tǒng)的各個磁盤上,并且奇偶 校驗信息和相對應(yīng)的數(shù)據(jù)分別存儲于不同的磁盤上。當(dāng)RAID系統(tǒng)的一個磁盤數(shù)據(jù)發(fā)生 損壞后,利用剩下的數(shù)據(jù)和相應(yīng)的奇偶校驗信息去恢復(fù)被損壞的數(shù)據(jù)。作為網(wǎng)絡(luò)存儲系 統(tǒng)的基礎(chǔ)和關(guān)鍵部件,RAID以其快速、海量和高可靠性的特點而著稱。RAID技術(shù)出現(xiàn) 后,在工業(yè)、軍事、教育等各個領(lǐng)域的應(yīng)用需求十分廣泛,對RAID技術(shù)的研究也一直是 行業(yè)熱點。組成磁盤陣列的不同方式稱為RAID級別(RAID Levels)。比如常見的RAID級 別有RAIDO,RAIDl, RAID5, RAID6等。不同的RAID級別提供不同的數(shù)據(jù)保護方案。以4塊磁盤組成的RAID5為例,只允許有一塊硬盤出現(xiàn)故障,一塊磁盤出現(xiàn)故 障時,RAID5就不具備數(shù)據(jù)冗余保護功能了,所以出現(xiàn)故障盤時需要盡快更換。當(dāng)更換 故障硬盤后,磁盤控制器會利用正常磁盤上的數(shù)據(jù)及奇偶校驗進行計算,將計算的結(jié)果 寫入更換后的磁盤上,這個過程叫做RAID的重建。重建的目的是為了讓RAID重新具有數(shù)據(jù)冗余保護功能。在出現(xiàn)RAID的磁盤 故障時,磁盤陣列廠商普遍使用熱備盤技術(shù)來實現(xiàn)RAID的自動重建。熱備盤技術(shù),簡 單來說,就是在創(chuàng)建RAID系統(tǒng)時,為該RAID指定一塊磁盤作為熱備盤,當(dāng)RAID系統(tǒng) 的某塊成員磁盤發(fā)生故障時,熱備盤能夠自動替換故障磁盤,觸發(fā)RAID重建。顧名思 義,“熱”備盤在替換故障磁盤時,不需要中斷RAID系統(tǒng)上的讀寫業(yè)務(wù),即RAID系統(tǒng) 重建時,仍然可以進行對該RAID系統(tǒng)進行讀寫操作。當(dāng)前大部分廠家的這種利用熱備盤進行RAID自動重建的技術(shù)有如下的技術(shù)缺
點·在一塊磁盤徹底發(fā)生故障時,才用熱備盤進行重建,在重建的過程中,raid再有 一塊磁盤發(fā)生故障時,raid上的數(shù)據(jù)將有可能丟失;以4塊盤的raid5為例,disk4發(fā)生 故障后,需要利用diskl,disk2和disk3上數(shù)據(jù)和奇偶校驗進行重建,將重建的數(shù)據(jù)寫入 disk5,如果重建過程中,diskl-disk3中任一塊磁盤發(fā)生故障,那么將重建失敗,造成數(shù) 據(jù)丟失;此外,重建的過程比較慢,raid在重建的過程中,讀寫性能將受到較大影響。
發(fā)明內(nèi)容
本發(fā)明提供了一種改進的磁盤陣列重建方法,可以有效降低重建過程中數(shù)據(jù)丟失的風(fēng)險,并加快重建的過程。本發(fā)明實施例提出的一種改進的磁盤陣列重建方法,包括如下步驟A、統(tǒng)計獨立冗余磁盤陣列RAID系統(tǒng)中磁盤上的錯誤計數(shù);B、判斷RAID系統(tǒng)中一塊磁盤上的錯誤計數(shù)是否超過預(yù)設(shè)的閾值,若是,執(zhí)行 步驟C,否則返回步驟A ;C、將所述磁盤設(shè)置為告警盤,激活預(yù)先設(shè)置的熱備盤,將告警盤上已有的數(shù)據(jù) 復(fù)制到熱備盤上;D、復(fù)制完成后,將告警盤從RAID系統(tǒng)中清除,將熱備盤代替出錯磁盤作為 RAID系統(tǒng)的組成磁盤。較佳地,所述統(tǒng)計RAID系統(tǒng)中磁盤上的錯誤計數(shù)為統(tǒng)計RAID系統(tǒng)中磁盤上 特定錯誤類型的總數(shù)及一段時間內(nèi)特定錯誤類型累計的計數(shù)。較佳地,所述特定錯誤類型為命令超時,介質(zhì)錯誤,磁盤非正?;蛲ǖ厘e誤。較佳地,所述步驟C進一步包括將需要寫入出錯磁盤的數(shù)據(jù)寫入到所述熱備
ο較佳地,所述步驟C包括Cl、將所述磁盤設(shè)置為告警盤,激活預(yù)先設(shè)置的熱備盤,創(chuàng)建每一位初始值為 0的位圖表,所述位圖表的每一位,對應(yīng)于告警盤的一個條帶;C2、將告警盤上的所有數(shù)據(jù)復(fù)制到所述熱備盤;如果復(fù)制過程中,發(fā)現(xiàn)告警盤 上的部分數(shù)據(jù)已損壞,則將已損壞數(shù)據(jù)所在的條帶對應(yīng)的位圖表上的位設(shè)置為1 ;所述步驟D進一步包括復(fù)制完成后,根據(jù)RAID系統(tǒng)中正常盤以及奇偶校 驗,計算出位圖表值為1的位對應(yīng)的告警盤的條帶的數(shù)據(jù),并將所計算的數(shù)據(jù)寫入熱備 盤中。較佳地,所述步驟C2進一步包括如果復(fù)制過程中需要寫告警盤,則將寫數(shù)據(jù) 需要改寫的條帶所對應(yīng)的位圖表上的位設(shè)置為1。從以上技術(shù)方案可以看出,通過對磁盤陣列中磁盤的錯誤進行計數(shù),在磁盤徹 底損壞之前,觸發(fā)對磁盤的重建過程;由于磁盤重建時磁盤尚能工作,因此可以用磁盤 拷貝的方式將數(shù)據(jù)從告警盤復(fù)制到熱備盤,極大縮短了重建所需的時間,從而有效降低 重建過程中數(shù)據(jù)丟失的風(fēng)險。
圖1為本發(fā)明實施例一提出的磁盤陣列重建流程示意圖;圖2為本發(fā)明實施例二提出的磁盤陣列重建流程示意圖。
具體實施例方式磁盤是機電設(shè)備,磁盤讀寫過程中,會出現(xiàn)一些錯誤,這些錯誤包括介質(zhì)錯 誤,機械錯誤,電子錯誤以及各種軟件錯誤,比如SCSI命令超時等,這些錯誤在系統(tǒng)的 重試等機制下,能夠得到及時的修正,對數(shù)據(jù)不會造成破壞。但是一旦磁盤上大量出現(xiàn) 錯誤,那么很有可能磁盤在不久的將來會徹底出現(xiàn)故障。本發(fā)明方案通過統(tǒng)計和監(jiān)控RAID系統(tǒng)中各種類型的磁盤錯誤數(shù)統(tǒng)計,用來預(yù)判磁盤的健康狀態(tài),當(dāng)預(yù)判磁盤可能徹底故障時,將該磁盤設(shè)置為告警盤,觸發(fā)RAID系統(tǒng) 的重建。由于此時磁盤并未徹底損壞,其上存儲的大部分數(shù)據(jù)還是完好的,因此本發(fā)明 方案所述的重建過程可以與現(xiàn)有技術(shù)不同,采用磁盤拷貝的方式將告警盤的數(shù)據(jù)拷貝到 熱備盤。較佳地,如果拷貝過程中遇到已損壞或被更改的數(shù)據(jù),再用現(xiàn)有的重建方式, 根據(jù)RAID系統(tǒng)中的其他盤的數(shù)據(jù)和奇偶校驗來對已損壞或更改的數(shù)據(jù)進行恢復(fù)。本發(fā)明所述磁盤錯誤類型包括但不限于命令超時,介質(zhì)錯誤,磁盤非正常, 通道錯誤及其他錯誤類型。以下所述RAID系統(tǒng)具有數(shù)據(jù)冗余保護功能,且指定了熱備盤。本發(fā)明實施例一提出的磁盤陣列重建流程如圖1所示,包括如下步驟步驟101:統(tǒng)計RAID系統(tǒng)中磁盤上的各種錯誤計數(shù),包括但不限于某種錯誤類 型的總數(shù)及一段時間內(nèi)某種錯誤類型累計的計數(shù)。步驟102 判斷一塊磁盤上某種錯誤類型的總計數(shù)或者一段時間內(nèi)某種錯誤累 計數(shù)是否超過了預(yù)設(shè)的閾值,若是,則執(zhí)行步驟103,否則,返回步驟101。舉個例子,如果一塊磁盤的介質(zhì)錯誤統(tǒng)計總數(shù)查過了 500個,或者24小時內(nèi)超 過200個,則這塊磁盤將被系統(tǒng)設(shè)置為警告狀態(tài)。步驟103 激活預(yù)先設(shè)置的熱備盤。步驟104:將告警盤上已有的數(shù)據(jù)復(fù)制到熱備盤上。如果在拷貝過程中,要向告警盤上寫新的數(shù)據(jù),將需要寫入告警盤的數(shù)據(jù)寫入 到所述熱備盤。步驟105:復(fù)制完成后,將告警盤從RAID系統(tǒng)中清除,將熱備盤代替出錯磁盤 作為RAID系統(tǒng)的組成磁盤。實施例一的技術(shù)方案僅提出了本發(fā)明的基本框架,但對于出錯磁盤上的部分數(shù) 據(jù)已經(jīng)損壞的情況,則沒有相應(yīng)的解決方案。有鑒于此,本發(fā)明實施例二提出了較為完 善的技術(shù)方案,可以解決上述技術(shù)問題。本發(fā)明實施例二提出的磁盤陣列重建流程如圖2所示,包括如下步驟步驟201:統(tǒng)計RAID系統(tǒng)中磁盤上的各種錯誤計數(shù),包括但不限于某種錯誤類 型的總數(shù)及一段時間內(nèi)某種錯誤類型累計的計數(shù)。步驟202 判斷一塊磁盤上某種錯誤類型的總計數(shù)或者一段時間內(nèi)某種錯誤累 計數(shù)是否超過了預(yù)設(shè)的閾值,若是,則執(zhí)行步驟203,否則,返回步驟201。步驟203:將出錯磁盤設(shè)置為告警狀態(tài),激活熱備盤,并創(chuàng)建位圖表(bitmap), 所述位圖表的每一位,對應(yīng)于告警盤的一個條帶。初始時,位圖表的每一位的值均為0。步驟204 將告警狀態(tài)的磁盤上的所有數(shù)據(jù)拷貝到被激活的熱備盤。如果拷貝過程中,發(fā)現(xiàn)告警盤上的部分數(shù)據(jù)已損壞導(dǎo)致數(shù)據(jù)無法拷貝,則將已 損壞數(shù)據(jù)所在的條帶對應(yīng)的位圖表上的位設(shè)置為1。如果拷貝過程中,需要寫告警盤,則將寫數(shù)據(jù)需要改寫的條帶所對應(yīng)的位圖表 上的位設(shè)置為1。如果拷貝過程中,需要讀取告警盤上的數(shù)據(jù),則通過RAID系統(tǒng)中其他正常盤計 算出所要讀取的數(shù)據(jù)并返回。
步驟205:拷貝完成后,根據(jù)正常盤以及奇偶校驗,計算出位圖表值為1的位對 應(yīng)的告警盤的條帶的數(shù)據(jù),并將所計算的數(shù)據(jù)寫入熱備盤中。步驟206 將告警盤從RAID系統(tǒng)中清除,將熱備盤取代告警盤作為RAID系統(tǒng) 的組成磁盤,完成重建過程。實施例二的技術(shù)方案中將磁盤拷貝與傳統(tǒng)的重建技術(shù)相結(jié)合,對于告警盤的絕 大部分數(shù)據(jù)采用磁盤拷貝的方式轉(zhuǎn)移到熱備盤,以節(jié)約系統(tǒng)重建時間;對于已損壞的數(shù) 據(jù),則采用傳統(tǒng)的重建方式恢復(fù)數(shù)據(jù)。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的 精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍 之內(nèi)。
權(quán)利要求
1.一種改進的磁盤陣列重建方法,其特征在于,包括如下步驟A、統(tǒng)計獨立冗余磁盤陣列RAID系統(tǒng)中磁盤上的錯誤計數(shù);B、判斷RAID系統(tǒng)中一塊磁盤上的錯誤計數(shù)是否超過預(yù)設(shè)的閾值,若是,執(zhí)行步驟 C,否則返回步驟A ;C、將所述磁盤設(shè)置為告警盤,激活預(yù)先設(shè)置的熱備盤,將告警盤上已有的數(shù)據(jù)復(fù)制 到熱備盤上;D、復(fù)制完成后,將告警盤從RAID系統(tǒng)中清除,將熱備盤代替出錯磁盤作為RAID 系統(tǒng)的組成磁盤。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述統(tǒng)計RAID系統(tǒng)中磁盤上的錯誤計 數(shù)為統(tǒng)計RAID系統(tǒng)中磁盤上特定錯誤類型的總數(shù)及一段時間內(nèi)特定錯誤類型累計的 計數(shù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述特定錯誤類型為命令超時,介質(zhì)錯 誤,磁盤非正?;蛲ǖ厘e誤。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C進一步包括將需要寫入 出錯磁盤的數(shù)據(jù)寫入到所述熱備盤。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟C包括Cl、將所述磁盤設(shè)置為告警盤,激活預(yù)先設(shè)置的熱備盤,創(chuàng)建每一位初始值為0的 位圖表,所述位圖表的每一位,對應(yīng)于告警盤的一個條帶;C2、將告警盤上的所有數(shù)據(jù)復(fù)制到所述熱備盤;如果復(fù)制過程中,發(fā)現(xiàn)告警盤上的 部分數(shù)據(jù)已損壞,則將已損壞數(shù)據(jù)所在的條帶對應(yīng)的位圖表上的位設(shè)置為1 ;所述步驟D進一步包括復(fù)制完成后,根據(jù)RAID系統(tǒng)中正常盤以及奇偶校驗,計 算出位圖表值為1的位對應(yīng)的告警盤的條帶的數(shù)據(jù),并將所計算的數(shù)據(jù)寫入熱備盤中。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟C2進一步包括如果復(fù)制過 程中需要寫告警盤,則將寫數(shù)據(jù)需要改寫的條帶所對應(yīng)的位圖表上的位設(shè)置為1。
全文摘要
本發(fā)明提供了一種改進的磁盤陣列重建方法,包括如下步驟A、統(tǒng)計獨立冗余磁盤陣列RAID系統(tǒng)中磁盤上的錯誤計數(shù);B、判斷RAID系統(tǒng)中一塊磁盤上的錯誤計數(shù)是否超過預(yù)設(shè)的閾值,若是,執(zhí)行步驟C,否則返回步驟A;C、將所述磁盤設(shè)置為告警盤,激活預(yù)先設(shè)置的熱備盤,將告警盤上已有的數(shù)據(jù)復(fù)制到熱備盤上;D、復(fù)制完成后,將告警盤從RAID系統(tǒng)中清除,將熱備盤代替出錯磁盤作為RAID系統(tǒng)的組成磁盤。本發(fā)明方案可以有效降低重建過程中數(shù)據(jù)丟失的風(fēng)險,并加快重建的過程。
文檔編號G06F3/06GK102012847SQ20101058187
公開日2011年4月13日 申請日期2010年12月6日 優(yōu)先權(quán)日2010年12月6日
發(fā)明者卿翊軒 申請人:創(chuàng)新科存儲技術(shù)(深圳)有限公司, 創(chuàng)新科存儲技術(shù)有限公司