專(zhuān)利名稱(chēng):一種磁盤(pán)陣列重構(gòu)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及存儲(chǔ)介質(zhì)領(lǐng)域,尤其涉及一種磁盤(pán)陣列重構(gòu)方法。
背景技術(shù):
隨著科技的飛速發(fā)展與計(jì)算機(jī)技術(shù)的普遍應(yīng)用,人們對(duì)存儲(chǔ)設(shè)備的性能要求越來(lái)越高,RAID技術(shù)已作為一項(xiàng)成熟的技術(shù)廣泛的應(yīng)用于磁盤(pán)陣列中。RAID是通過(guò)磁盤(pán)陣列與數(shù)據(jù)條塊化方法相結(jié)合,以提高數(shù)據(jù)可用率的一種結(jié)構(gòu)。從功能上區(qū)別,RAID可分為RAID級(jí)別1到RAID級(jí)別6,通常稱(chēng)為RAID 0,RAID 1,RAID 2,RAID 3,RAID 4,RAID 5。其中,每一個(gè)RAID級(jí)別都有自己的強(qiáng)項(xiàng)和弱項(xiàng)。"奇偶校驗(yàn)"定義為用戶(hù)數(shù)據(jù)的冗余信息,當(dāng)硬盤(pán)失效時(shí),可以重新產(chǎn)生數(shù)據(jù)。在RAID中當(dāng)某磁盤(pán)出現(xiàn)一個(gè)壞扇區(qū)或該磁盤(pán)接口損壞即將該磁盤(pán)定義為失敗磁盤(pán)。本發(fā)明主要涉及到其中的RAID 5,因此主要介紹RAID 5。
RAID 5沒(méi)有單獨(dú)指定的奇偶盤(pán),而是交叉地存取數(shù)據(jù)及奇偶校驗(yàn)信息于所有磁盤(pán)上。在RAID5上,讀/寫(xiě)指針可同時(shí)對(duì)陣列設(shè)備進(jìn)行操作,提供了更高的數(shù)據(jù)流量。RAID 5更適合于小數(shù)據(jù)塊,隨機(jī)讀寫(xiě)的數(shù)據(jù)。RAID 3每進(jìn)行一次數(shù)據(jù)傳輸,需涉及到所有的陣列盤(pán)。而對(duì)于RAID 5來(lái)說(shuō),大部分?jǐn)?shù)據(jù)傳輸只對(duì)一塊磁盤(pán)操作,可進(jìn)行并行操作。在RAID 5中有“寫(xiě)損失”,即每一次寫(xiě)操作,將產(chǎn)生四個(gè)實(shí)際的讀/寫(xiě)操作,其中兩次讀舊的數(shù)據(jù)及奇偶信息,兩次寫(xiě)新的數(shù)據(jù)及奇偶信息。RAID5的每一個(gè)分條均包含一個(gè)校驗(yàn)單元,用來(lái)在出現(xiàn)失敗時(shí)恢復(fù)數(shù)據(jù)。在讀寫(xiě)過(guò)程中出現(xiàn)失敗時(shí),將包含失敗分條單元的磁盤(pán)標(biāo)志為不可用,并根據(jù)用戶(hù)設(shè)置啟動(dòng)重構(gòu)進(jìn)程,對(duì)失敗磁盤(pán)進(jìn)行在線磁盤(pán)重構(gòu),重構(gòu)的原理圖1所示,從該圖中可以看出,該方法使用校驗(yàn)恢復(fù)在置換磁盤(pán)上重建數(shù)據(jù)。
該重構(gòu)采用基于磁盤(pán)的重構(gòu)方法,該方法是目前主流的重構(gòu)方法,原理如下
構(gòu)造N個(gè)進(jìn)程,N-1個(gè)進(jìn)程對(duì)應(yīng)N-1個(gè)仍然正常工作的磁盤(pán),一個(gè)進(jìn)程對(duì)應(yīng)于熱備份盤(pán)。
與正常工作的磁盤(pán)相連的進(jìn)程進(jìn)行如下的處理Repeat找到該磁盤(pán)上地址最低的分條單元;若緩沖區(qū)有足夠的空間接收數(shù)據(jù),則對(duì)該分條單元發(fā)出一個(gè)低優(yōu)先級(jí)的讀請(qǐng)求,讀至緩沖區(qū)內(nèi)(跳過(guò)已重構(gòu)完畢的分條);等待讀操作完成;如果緩沖區(qū)管理器中有緩沖區(qū)能接受該數(shù)據(jù),將該數(shù)據(jù)送至緩沖區(qū)管理器中的緩沖區(qū)中進(jìn)行異或,否則等待;Until所有的分條單元都被讀完;與熱備份盤(pán)相連的進(jìn)程進(jìn)行如下處理Repeat若緩沖區(qū)管理器中有已進(jìn)行完所有條文單元異或的緩沖區(qū),取出,否則等待;對(duì)熱備份盤(pán)發(fā)出一個(gè)低優(yōu)先級(jí)的寫(xiě)請(qǐng)求,將取來(lái)的緩沖區(qū)中的數(shù)據(jù)寫(xiě)至熱備份盤(pán)上;等待寫(xiě)完成;Until失敗磁盤(pán)所有數(shù)據(jù)都得到重構(gòu);上述方法對(duì)該磁盤(pán)上的數(shù)據(jù)恢復(fù)完全采用異或的方法實(shí)現(xiàn),即是指通過(guò)異或同一RAID中未失敗磁盤(pán)上相應(yīng)數(shù)據(jù)來(lái)恢復(fù)失敗磁盤(pán)上數(shù)據(jù)的重構(gòu),使用這種方法,即使磁盤(pán)僅有一個(gè)扇區(qū)出現(xiàn)一個(gè)錯(cuò)誤,也把它視為最壞的情況,即全盤(pán)不可用。而在實(shí)際上,多數(shù)情況下,該磁盤(pán)上其他部分的數(shù)據(jù)仍然可以響應(yīng)正常讀,且數(shù)據(jù)是真實(shí)可靠的。由于異或重構(gòu)需要對(duì)RAID中除失敗磁盤(pán)外的所有磁盤(pán)進(jìn)行全盤(pán)讀,此外還需進(jìn)行大量的異或操作,存儲(chǔ)系統(tǒng)的性能會(huì)因此受到很大的影響,而且重構(gòu)的時(shí)間也會(huì)變得很漫長(zhǎng)。
發(fā)明內(nèi)容
本發(fā)明的目的就是利用磁盤(pán)拷貝重構(gòu)和異或重構(gòu)相結(jié)合的方法,盡可能減少重構(gòu)所需的時(shí)間,減少重構(gòu)過(guò)程給系統(tǒng)帶來(lái)的性能降低。
本發(fā)明采用如下方案一種磁盤(pán)陣列重構(gòu)方法,其特征在于包括以下步驟a、設(shè)定一個(gè)失敗比例門(mén)限值N,對(duì)失敗磁盤(pán)進(jìn)行抽測(cè),如果該失敗比例大于所設(shè)定的門(mén)限值N,則進(jìn)行全盤(pán)異或重構(gòu),如果小于或等于所設(shè)定的門(mén)限值N,則進(jìn)入步驟b;b、進(jìn)行拷貝重構(gòu);c、判斷重構(gòu)是否完成,如果是,結(jié)束重構(gòu),如果否,則進(jìn)入步驟d;d、從失敗磁盤(pán)未重構(gòu)的地址最低的分條單元開(kāi)始向熱備份盤(pán)拷貝數(shù)據(jù);e、判斷讀數(shù)據(jù)是否成功,如果是,返回步驟c,如果否,進(jìn)入步驟f;f、進(jìn)行異或重構(gòu)并啟動(dòng)計(jì)數(shù)器,對(duì)連續(xù)讀失敗的分條單元進(jìn)行累加計(jì)數(shù);g、判斷累加結(jié)果是否大于設(shè)定的門(mén)限值X,如果大于所述的門(mén)限值X,則進(jìn)入步驟h,如果小于或等于所述的門(mén)限值X,則返回步驟c;h、對(duì)后續(xù)的Y個(gè)分條單元進(jìn)行異或重構(gòu),返回步驟c,所述數(shù)值Y是與門(mén)限值X及門(mén)限值M相關(guān)的一個(gè)數(shù)值。
所述的步驟a中,所述的抽測(cè)可以取磁盤(pán)分條單元總數(shù)的10%-40%。
所述的步驟a中門(mén)限值N為30%。
所述的步驟g中,所述的門(mén)限值X為1。
在整個(gè)重構(gòu)過(guò)程中,對(duì)于已重構(gòu)完的分條,主機(jī)按照正常訪問(wèn)模式對(duì)其進(jìn)行訪問(wèn)。
在整個(gè)重構(gòu)過(guò)程中,對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的寫(xiě)操作,采用重定向訪問(wèn)模式。
在整個(gè)重構(gòu)過(guò)程中,對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的讀操作,采用降級(jí)訪問(wèn)模式。
由于采用了本發(fā)明拷貝重構(gòu)和異或重構(gòu)相結(jié)合的重構(gòu)方法,加快了重構(gòu)的進(jìn)度,減少了對(duì)RAID其他成員磁盤(pán)的訪問(wèn),從而改善了重構(gòu)過(guò)程中系統(tǒng)的整體性能。
圖1是現(xiàn)有技術(shù)中磁盤(pán)重構(gòu)的原理示意圖;圖2是本發(fā)明的磁盤(pán)陣列重構(gòu)流程圖。
具體實(shí)施例方式
下面結(jié)合說(shuō)明書(shū)附圖來(lái)說(shuō)明本發(fā)明的具體實(shí)施方式
。
在磁盤(pán)重構(gòu)領(lǐng)域中,拷貝重構(gòu)是僅對(duì)失敗磁盤(pán)上的失敗部分進(jìn)行異或重構(gòu),而對(duì)其余部分進(jìn)行直接拷貝的重構(gòu)方法。異或重構(gòu)是指通過(guò)異或同一RAID中未失敗磁盤(pán)上相應(yīng)數(shù)據(jù)來(lái)恢復(fù)失敗磁盤(pán)上數(shù)據(jù)的重構(gòu)方法;兩者的區(qū)別在于磁盤(pán)拷貝部分與整個(gè)磁盤(pán)的關(guān)系。
在磁盤(pán)重構(gòu)領(lǐng)域中,任何一次RAID分解產(chǎn)生的針對(duì)某單個(gè)磁盤(pán)的讀操作如果返回失敗,則主機(jī)的讀請(qǐng)求需重新按降級(jí)模式再次執(zhí)行;如果針對(duì)某單個(gè)磁盤(pán)的寫(xiě)操作返回失敗,主機(jī)認(rèn)為此次寫(xiě)操作成功,同時(shí)把返回失敗的磁盤(pán)標(biāo)記為故障磁盤(pán)。不論是讀操作還是寫(xiě)操作,只要有某個(gè)磁盤(pán)失敗,則系統(tǒng)根據(jù)用戶(hù)的設(shè)置啟動(dòng)重構(gòu)(“根據(jù)用戶(hù)設(shè)置”是指如果用戶(hù)設(shè)置磁盤(pán)失敗后自動(dòng)啟動(dòng)重構(gòu)則此時(shí)啟動(dòng)重構(gòu),如果用戶(hù)設(shè)置磁盤(pán)失敗后由用戶(hù)啟動(dòng)重構(gòu)則此時(shí)不啟動(dòng)重構(gòu))。
本發(fā)明一種磁盤(pán)陣列重構(gòu)方法,包括以下步驟a、設(shè)定一個(gè)失敗比例門(mén)限值N,對(duì)失敗磁盤(pán)進(jìn)行抽測(cè),如果該失敗比例大于所設(shè)定的門(mén)限值N,則進(jìn)行全盤(pán)異或重構(gòu),如果小于或等于所設(shè)定的門(mén)限值N,則進(jìn)入步驟b;其中,對(duì)失敗磁盤(pán)進(jìn)行抽測(cè)一般采用的是被抽測(cè)分條單元號(hào)為n倍的分條單元總數(shù)×抽測(cè)比率(n取值為1、2、3...;且n的取值保證被抽測(cè)分條單元號(hào)不大于分條單元的最大編號(hào))。
該步驟是為了初步判定磁盤(pán)的損壞程度,以決定是進(jìn)行全盤(pán)異或重構(gòu)還是拷貝結(jié)合異或重構(gòu),該隨機(jī)抽值測(cè)越大,越能反應(yīng)磁盤(pán)的真實(shí)情況,但抽測(cè)過(guò)程會(huì)占用較多的時(shí)間,在實(shí)際應(yīng)用中,可以取磁盤(pán)分條單元總數(shù)的10%-40%,本發(fā)明中,該門(mén)限值N可以設(shè)定為30%。
b、進(jìn)行拷貝重構(gòu);這是本發(fā)明的一個(gè)創(chuàng)新思想所在,在磁盤(pán)恢復(fù)中,僅對(duì)失敗磁盤(pán)上的失敗部分進(jìn)行異或重構(gòu),而對(duì)其余部分進(jìn)行直接拷貝,這樣,可以節(jié)省資源,減少工作量。
c、判斷重構(gòu)是否完成,如果是,結(jié)束重構(gòu),如果否,則進(jìn)入下面的步驟d;d、從失敗磁盤(pán)未重構(gòu)的地址最低的分條單元開(kāi)始向熱備份盤(pán)拷貝數(shù)據(jù);從失敗磁盤(pán)未重構(gòu)的地址最低的分條單元開(kāi)始向熱備份盤(pán)拷貝數(shù)據(jù),這樣能保證對(duì)失敗磁盤(pán)的完全恢復(fù),不會(huì)有遺漏。
e、判斷讀數(shù)據(jù)是否成功,如果是,返回步驟c,如果否,進(jìn)入步驟f;步驟e實(shí)際上是統(tǒng)計(jì)在拷貝重構(gòu)中遇見(jiàn)的壞扇區(qū),如果連續(xù)遇見(jiàn)的壞扇區(qū)數(shù)超過(guò)指定的數(shù)值(X),則在拷貝重構(gòu)中啟動(dòng)異或重構(gòu)。
在本步驟中,該判斷的方法可以有多種,比如若磁盤(pán)表面損壞或讀請(qǐng)求超過(guò)規(guī)定的時(shí)間未得到響應(yīng),即認(rèn)為此次讀數(shù)據(jù)失敗,此外,利用磁盤(pán)的CRC校驗(yàn)也可判定讀出的數(shù)據(jù)是否存在錯(cuò)誤。該步驟是由主機(jī)一般的讀請(qǐng)求來(lái)完成的。
f、進(jìn)行異或重構(gòu)并啟動(dòng)計(jì)數(shù)器,對(duì)連續(xù)讀失敗的分條單元進(jìn)行累加計(jì)數(shù);本步驟中,是對(duì)連續(xù)失敗的分條單元進(jìn)行累加計(jì)數(shù),否則此處的計(jì)數(shù)器置“1”。
g、判斷累加結(jié)果是否大于所設(shè)定的門(mén)限值X,如果該結(jié)果大于所述的門(mén)限值X,則進(jìn)入步驟h,如果該結(jié)果小于或等于所述的門(mén)限值X,則返回步驟c;
上述的門(mén)限值X不易取得太大,否則在磁盤(pán)損壞較為嚴(yán)重的部分,重構(gòu)過(guò)程可能變得十分緩慢;一般情況下X不大于2,一般取值為1,本實(shí)施例中,可以給X選值為1。
h、對(duì)后續(xù)的Y個(gè)分條單元進(jìn)行異或重構(gòu),返回步驟b,所述數(shù)值Y是與門(mén)限值X及門(mén)限值N相關(guān)的一個(gè)數(shù)值。
由于磁盤(pán)的損壞具有局部性,因此在拷貝過(guò)程中若出現(xiàn)分條單元連續(xù)讀失敗的情況,則認(rèn)為后續(xù)Y個(gè)分條單元損壞程度較嚴(yán)重,對(duì)這Y個(gè)分條單元采用異或重構(gòu)。
上述數(shù)值Y是與門(mén)限值X及門(mén)限值M相關(guān)的一個(gè)數(shù)值,其取值原則為若抽測(cè)結(jié)果<5%,則Y=10*X,若5%<=抽測(cè)結(jié)果<10%,則Y=50*X,若10%<=抽測(cè)結(jié)果<20%,則Y=200*X;若20%<=抽測(cè)結(jié)果<=30%,則Y=500*X。
從重構(gòu)開(kāi)始到重構(gòu)結(jié)束的整個(gè)過(guò)程中,主機(jī)訪問(wèn)RAID的狀態(tài)可以分為四種正常訪問(wèn)、重定向訪問(wèn)、降級(jí)訪問(wèn)和不允許訪問(wèn)。對(duì)于已重構(gòu)完的分條,主機(jī)按照正常訪問(wèn)模式對(duì)其進(jìn)行訪問(wèn);對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的寫(xiě)操作,采用重定向訪問(wèn)模式;對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的讀操作,采用降級(jí)訪問(wèn)模式;對(duì)于正在重構(gòu)的分條,主機(jī)不能對(duì)其進(jìn)行訪問(wèn)。
關(guān)于重定向訪問(wèn)的說(shuō)明當(dāng)主機(jī)發(fā)來(lái)的寫(xiě)請(qǐng)求通過(guò)地址映射要更新失敗磁盤(pán)上的數(shù)據(jù)時(shí),實(shí)際上是將這些數(shù)據(jù)直接寫(xiě)到熱備份盤(pán)上,并將相應(yīng)的分條單元提前重構(gòu),同時(shí)標(biāo)記這些分條單元為已重構(gòu)單元。
本發(fā)明通過(guò)以上這種方案,利用拷貝和異或相結(jié)合的重構(gòu)方法,加快了重構(gòu)的進(jìn)度,減少了對(duì)RAID其他成員磁盤(pán)的訪問(wèn),從而改善了重構(gòu)過(guò)程中系統(tǒng)的整體性能。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書(shū)的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種磁盤(pán)陣列重構(gòu)方法,其特征在于包括以下步驟a、設(shè)定一個(gè)失敗比例門(mén)限值N,對(duì)失敗磁盤(pán)進(jìn)行抽測(cè),如果該失敗比例大于所設(shè)定的門(mén)限值N,則進(jìn)行全盤(pán)異或重構(gòu),如果小于或等于所設(shè)定的門(mén)限值N,則進(jìn)入步驟b;b、進(jìn)行拷貝重構(gòu);c、判斷重構(gòu)是否完成,如果是,結(jié)束重構(gòu),如果否,則進(jìn)入步驟d;d、從失敗磁盤(pán)未重構(gòu)的地址最低的分條單元開(kāi)始向熱備份盤(pán)拷貝數(shù)據(jù);e、判斷讀數(shù)據(jù)是否成功,如果是,返回步驟c,如果否,進(jìn)入步驟f;f、進(jìn)行異或重構(gòu)并啟動(dòng)計(jì)數(shù)器,對(duì)連續(xù)讀失敗的分條單元進(jìn)行累加計(jì)數(shù);g、判斷累加結(jié)果是否大于設(shè)定的門(mén)限值X,如果大于所述的門(mén)限值X,則進(jìn)入步驟h,如果小于或等于所述的門(mén)限值X,則返回步驟c;h、對(duì)后續(xù)的Y個(gè)分條單元進(jìn)行異或重構(gòu),返回步驟c,所述數(shù)值Y是與門(mén)限值X及門(mén)限值N相關(guān)的一個(gè)數(shù)值。
2.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于所述的步驟a中,所述的抽測(cè)可以取磁盤(pán)分條單元總數(shù)的10%-40%。
3.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于所述的步驟a中門(mén)限值N為30%。
4.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于所述的步驟g中,所述的門(mén)限值X為1。
5.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于在整個(gè)重構(gòu)過(guò)程中,對(duì)于已重構(gòu)完的分條,主機(jī)按照正常訪問(wèn)模式對(duì)其進(jìn)行訪問(wèn)。
6.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于在整個(gè)重構(gòu)過(guò)程中,對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的寫(xiě)操作,采用重定向訪問(wèn)模式。
7.如權(quán)利要求1所述的磁盤(pán)陣列重構(gòu)方法,其特征在于在整個(gè)重構(gòu)過(guò)程中,對(duì)于主機(jī)向失敗磁盤(pán)尚未重構(gòu)分條的讀操作,采用降級(jí)訪問(wèn)模式。
全文摘要
本發(fā)明涉及一種磁盤(pán)陣列重構(gòu)方法,包括a、設(shè)定失敗比例門(mén)限值M,對(duì)失敗磁盤(pán)進(jìn)行抽測(cè),若大于N,則進(jìn)行全盤(pán)異或重構(gòu),如果小于或等于N,則進(jìn)入步驟b;b、進(jìn)行拷貝重構(gòu);c、判斷重構(gòu)是否完成,如果是,結(jié)束重構(gòu),如果否,進(jìn)入步驟d;d、從失敗磁盤(pán)未重構(gòu)的地址最低的分條單元開(kāi)始向熱備份盤(pán)拷貝數(shù)據(jù);e、判斷讀數(shù)據(jù)是否成功,如果是,返回步驟c,如果否,進(jìn)入步驟f;f、進(jìn)行異或重構(gòu)并啟動(dòng)計(jì)數(shù)器;g、判斷累加結(jié)果是否大于設(shè)定的門(mén)限值X,如果大于或等于X,進(jìn)入步驟g,如果小于X,返回步驟b;g、對(duì)后續(xù)分條單元進(jìn)行異或重構(gòu),返回步驟b??截惡彤惢蛳嘟Y(jié)合的重構(gòu)方法,加快了重構(gòu)的進(jìn)度,改善了重構(gòu)過(guò)程中系統(tǒng)的整體性能。
文檔編號(hào)G11B20/18GK1499486SQ02146450
公開(kāi)日2004年5月26日 申請(qǐng)日期2002年11月7日 優(yōu)先權(quán)日2002年11月7日
發(fā)明者任雷鳴, 張巍, 張國(guó)彬, 鄭珉, 胡鵬, 陳紹元 申請(qǐng)人:華為技術(shù)有限公司