專利名稱:獨(dú)立磁盤冗余陣列構(gòu)建方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及獨(dú)立》茲盤冗余陣列(RAID , Redundant Array of Independent Disks)技術(shù)領(lǐng)域,具體涉及RAID構(gòu)建方法及裝置。
背景技術(shù):
RAID簡稱為"磁盤陣列",RAID技術(shù)已廣泛應(yīng)用于數(shù)據(jù)存儲的各種 場合,它的原理是利用多個(gè)硬盤的組合連成一個(gè)陣列,實(shí)現(xiàn)以快速、準(zhǔn)確和 安全的方式來讀寫磁盤數(shù)據(jù),從而達(dá)到提高數(shù)據(jù)讀寫速度和安全性的 一種手 段;當(dāng)一塊或多塊磁盤出現(xiàn)故障時(shí),數(shù)據(jù)能夠依靠其它的磁盤計(jì)算出來,從 而不會造成數(shù)據(jù)的丟失。
以下對RAID中常用的幾個(gè)概念進(jìn)行說明
條帶又稱為Stripe;是陣列的不同分區(qū)上的位置相關(guān)的分塊的集合, 是組織不同分區(qū)上條塊的單位。
分區(qū)又稱為Extent;是一個(gè)》茲盤上的地址連續(xù)的存儲塊。 一個(gè)^f茲盤可 以劃分為多個(gè)分區(qū),每個(gè)分區(qū)可以大小不等,有時(shí)也稱為邏輯磁盤。
分塊又稱為Strip;將一個(gè)分區(qū)分成多個(gè)大小相等的、地址相鄰的塊, 這些塊稱為分塊。分塊通常被認(rèn)為是條帶的元素。虛擬磁盤以分塊為單位將 虛擬;茲盤的地址映射到成員》茲盤的地址。
XOR運(yùn)算即異或運(yùn)算,用于奇偶校驗(yàn),通常用符號"④"表示,其運(yùn)算 規(guī)則為
0 0=0, 0同0異或,結(jié)果為0 0 1=1, 0同1異或,結(jié)果為1 1 0=1, 1同0異或,結(jié)果為11 1=0, 1同1異或,結(jié)果為0
另A @ B=C <=> A C=B <=〉 B C=A
比較常用的RAID有RAID0、 RAID1、 RAID5、 RAID6、 RAID10等。 其中RAID0不具有冗余能力,RAID1只是對磁盤做了鏡像。其它3種陣列 分別由多個(gè)磁盤組成,它們以條帶的方式向陣列中的磁盤寫數(shù)據(jù),奇偶校驗(yàn) 數(shù)據(jù)存放在陣列中的各個(gè)磁盤上。RAID5的每個(gè)條帶含有1個(gè)校驗(yàn)塊,支持 任意損壞其中一個(gè)磁盤、通過其它磁盤上的奇偶校驗(yàn)塊來重建數(shù)據(jù);RAID6 的每個(gè)條帶含有2個(gè)校驗(yàn)塊,支持任意損壞其中兩個(gè)磁盤、通過其它磁盤上 的奇偶校驗(yàn)塊來恢復(fù)數(shù)據(jù);RAID10是先對磁盤組進(jìn)行鏡像,再對磁盤進(jìn)行 條帶化,所以其不含奇偶校驗(yàn)塊,當(dāng)一個(gè)磁盤損壞后通過其對應(yīng)的鏡像盤恢 復(fù)數(shù)據(jù),理想狀態(tài)下最多允許不同位置下50%的磁盤損壞,最糟糕的情況是 同 一對鏡像磁盤同時(shí)損壞。
奇偶校驗(yàn)數(shù)據(jù)是對每個(gè)條帶中的數(shù)據(jù)塊使用XOR運(yùn)算得出,這樣在一 個(gè)磁盤發(fā)生損壞時(shí),可以通過條帶中的數(shù)據(jù)塊+奇偶校驗(yàn)塊使用XOR運(yùn)算來 還原丟失的那部分?jǐn)?shù)據(jù)。
圖1給出了 RAID5存儲數(shù)據(jù)過程,如圖5所示,RAID5由3個(gè)磁盤組 成,有6塊數(shù)據(jù)需要寫入RAID5,將所有數(shù)據(jù)塊分成3個(gè)條帶寫入磁盤中, 其中數(shù)據(jù)塊P即為奇偶校驗(yàn)數(shù)據(jù),每個(gè)數(shù)據(jù)塊P分別由每個(gè)條帶中的數(shù)據(jù)使 用XOR運(yùn)算得到,如P1=A@B, P2=C@D, P3-E@F,這樣假設(shè)磁盤1損 壞,那么條帶1中的數(shù)據(jù)A,可以由B④P1運(yùn)算得到。
目前,允許多個(gè)磁盤損壞的技術(shù)主要有RAID6、 RAID10等。
從功能上講,能實(shí)現(xiàn)兩個(gè)磁盤掉線容錯(cuò)的,都叫RAID6。實(shí)現(xiàn)這一功能 的關(guān)鍵技術(shù)是在RAID5奇偶校驗(yàn)塊的基礎(chǔ)上,再加入一個(gè)校驗(yàn)塊,通過兩 個(gè)校驗(yàn)塊和數(shù)據(jù)塊的運(yùn)算來恢復(fù)損壞磁盤上的數(shù)據(jù)。
以下介紹一下狹義上的RAID6——基于P+Q的RAID6:
基于P+Q的RAID6其每個(gè)條帶中的P和RAID5中的P意義完全一樣, 即,對同一條帶中除Q以外的數(shù)據(jù)使用XOR運(yùn)算可得到P。而Q指的是,對同一條帶中各數(shù)據(jù)對應(yīng)的伽羅瓦域(GF, Galois Field)進(jìn)行XOR運(yùn)算的結(jié)果。
圖2給出了基于P+Q的RAID6的數(shù)據(jù)存儲形式,如圖2所示,如果一 個(gè)磁盤掉線,則只需要使用P進(jìn)行XOR運(yùn)算就能恢復(fù)數(shù)據(jù)。如果兩個(gè)磁盤 同時(shí)掉線則可以分為兩種情況
一、 損壞數(shù)據(jù)包含Q,此時(shí),使用P進(jìn)行XOR運(yùn)算就可以恢復(fù)損壞數(shù)據(jù)。
二、 損壞數(shù)據(jù)不包含Q,此時(shí),需要使用P和Q的XOR運(yùn)算組成一個(gè) 2元一次方程組,來恢復(fù)損壞的數(shù)據(jù)。
如圖2所示,如果磁盤5和磁盤6掉線,則條帶1和條帶2就屬于第一 種情況,條帶3、 4、 5、 6就屬于第二種情況。
可以看出RAID6最多只能支持兩個(gè)磁盤同時(shí)掉線,當(dāng)有3塊以上磁盤 同時(shí)掉線時(shí)數(shù)據(jù)將無法恢復(fù)。
RAID10是RAID1和RAID0的結(jié)合,也稱為RAID ( 0+1 ) , RAID10 對磁盤先作鏡像處理然后作條帶化,既提高了系統(tǒng)的讀寫性能,又提供了數(shù) 據(jù)冗余保護(hù),RAID10的磁盤空間利用率和RAID1相同,為50%。圖3給 出了 RAID10的數(shù)據(jù)存儲形式,RAID10中只要不是鏡像組的一對^f茲盤同時(shí) 損壞,就可以支持多個(gè)磁盤同時(shí)掉線。如圖3所示,如果磁盤l、 4、 5同時(shí) 掉線,則磁盤2、 3、 .6仍然可以保證數(shù)據(jù)不丟失。但是如果磁盤1、 2同時(shí) 損壞,則損壞的數(shù)據(jù)就無法恢復(fù)了。
可見對于RAIDIO,若一對鏡像磁盤同時(shí)掉線,則數(shù)據(jù)無法恢復(fù);另 外,RAID10需要消耗50%的磁盤進(jìn)行數(shù)據(jù)冗余,磁盤利用率不高,且大大 增加了成本。
發(fā)明內(nèi)容
本發(fā)明提供RAID構(gòu)建方法及裝置,以提高RAID的冗余度。 本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種RAID構(gòu)建方法,應(yīng)用于磁盤陣列包含nxm個(gè)磁盤的場景中,其中, n>3, m>3,將n x m個(gè)磁盤構(gòu)造成一個(gè)n行x m列的磁盤矩陣,對每一行磁 盤進(jìn)行條帶劃分,對于每一行》茲盤中的所有條帶,按照相同的規(guī)則對各條帶編 號,該方法包括
在每行磁盤的每個(gè)條帶中設(shè)置一個(gè)橫向校驗(yàn)塊,在每列磁盤中所屬條帶 的編號相同的每n個(gè)分塊中設(shè)置一個(gè)縱向校驗(yàn)塊;
所述橫向校驗(yàn)塊由該橫向校驗(yàn)塊所在條帶中的m - 1個(gè)數(shù)據(jù)塊通過異或
運(yùn)算得出;
所述縱向校驗(yàn)塊由所屬條帶編號與該縱向校驗(yàn)塊所屬條帶編號相同的n -1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得到。 所述方法進(jìn)一步包括
預(yù)先設(shè)定不同行磁盤所屬條帶編號相同的橫向校驗(yàn)塊位于同一列磁盤上。
所述方法進(jìn)一步包括
預(yù)先設(shè)定不同列磁盤所屬條帶編號相同的縱向校驗(yàn)塊位于同 一行磁盤上。
所述方法進(jìn)一步包括當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的 橫向校驗(yàn)塊和/或縱向校驗(yàn)塊,恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊。
所述當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或 縱向校驗(yàn)塊恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊包括
當(dāng)有一個(gè)磁盤損壞時(shí),對于該磁盤的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的 橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)
塊;
或者,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與 該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號 相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
所述當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或縱向校驗(yàn)塊恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊包括
當(dāng)發(fā)現(xiàn)同一行的兩磁盤同時(shí)損壞時(shí),對于其中一磁盤,對該磁盤上的每 個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的其它磁 盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算, 來恢復(fù)該數(shù)據(jù)塊;對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向 校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
或者,同時(shí)使用如下步驟同時(shí)恢復(fù)該兩磁盤上的數(shù)據(jù)塊
對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向 校驗(yàn)塊、與該磁盤位于同 一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
所述當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或 縱向校驗(yàn)塊恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊包括
當(dāng)有第一、第二、第三磁盤同時(shí)損壞,且第一、二磁盤位于同一行,第 一、三石茲盤位于同一列時(shí),貝寸
對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該
磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
或者
對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
ii對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)
據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊; 或者
對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相
同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
一種RAID構(gòu)建裝置,應(yīng)用于磁盤陣列包含nxm個(gè)磁盤的場景中,其
中,n>3, m>3,該裝置包括
磁盤矩陣構(gòu)建模塊,將n x m個(gè)磁盤構(gòu)造成一個(gè)n行x m列的磁盤矩陣, 對每一行磁盤進(jìn)行條帶劃分,對于每一行磁盤中的所有條帶,按照相同的規(guī)則 對各條帶編號;
橫向校驗(yàn)?zāi)K,對于每行磁盤的每個(gè)條帶,對該條帶中的m-l個(gè)數(shù)據(jù) 塊進(jìn)行異或運(yùn)算,得到該條帶的橫向校驗(yàn)塊;
縱向校驗(yàn)?zāi)K,對每列磁盤中所屬條帶的編號相同的n- 1數(shù)據(jù)塊進(jìn)行 異或運(yùn)算,得到該列磁盤中所屬條帶的編號相同的n個(gè)分塊的縱向校驗(yàn)塊。
該裝置進(jìn)一步包括
數(shù)據(jù)恢復(fù)模塊,當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校 驗(yàn)塊和/或縱向校驗(yàn)塊,恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊。 所述數(shù)據(jù)恢復(fù)模塊包括
損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)有一個(gè)磁盤損壞,將該磁盤標(biāo)識發(fā)送給恢復(fù)模塊; 恢復(fù)模塊,接收損壞的磁盤標(biāo)識,對于該磁盤的每個(gè)數(shù)據(jù)塊,使用該數(shù) 據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者,
對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤 位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的 數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
所述數(shù)據(jù)恢復(fù)模塊包括
損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)同一行的兩磁盤同時(shí)損壞,將該兩磁盤標(biāo)識發(fā)送給 恢復(fù)模塊;
恢復(fù)模塊,接收同時(shí)損壞的兩磁盤標(biāo)識,對于其中一磁盤,對該磁盤上 的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的其
運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù) 據(jù)塊;或者,
對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向 校驗(yàn)塊、與該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
所述數(shù)據(jù)恢復(fù)模塊包括
損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)第一、第二、第三磁盤同時(shí)損壞,且第一、二磁盤 位于同一行,第一、三磁盤位于同一列,將該三磁盤標(biāo)識發(fā)送給恢復(fù)模塊;
恢復(fù)模塊,接收同時(shí)損壞的三磁盤標(biāo)識,對于第三磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同 一 列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁 盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的 其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者,
對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤
上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的 其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異
或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對 應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該 數(shù)據(jù)塊;或者,
對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同 一 列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
與現(xiàn)有技術(shù)相比,本發(fā)明對于包含nxm (n>3, m>3)個(gè)i茲盤的i茲盤 陣列,將n x m個(gè)石茲盤構(gòu)造成一個(gè)n行x m列的f茲盤矩陣,對每一行i茲盤進(jìn) 行條帶劃分,對于每一行磁盤中的所有條帶,按照相同的規(guī)則對各條帶編號, 其中,每行磁盤的每個(gè)條帶中包含一個(gè)橫向校驗(yàn)塊,每列磁盤中所屬條帶的 編號相同的每n個(gè)分塊中包含一個(gè)縱向校驗(yàn)塊;所述橫向校驗(yàn)塊由該橫向校 驗(yàn)塊所在條帶中的m- 1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得出;所述縱向校驗(yàn)塊由所 屬條帶編號與該縱向校驗(yàn)塊所屬條帶編號相同的n- 1個(gè)數(shù)據(jù)塊通過異或運(yùn) 算得到。由于本發(fā)明構(gòu)建的RAID中,每個(gè)數(shù)據(jù)塊都對應(yīng)兩個(gè)校驗(yàn)塊,因此, 本發(fā)明可以達(dá)到任意3個(gè)磁盤同時(shí)損壞時(shí),數(shù)據(jù)都能恢復(fù),提高了RAID 的冗余度;且,與RAID6相比,本發(fā)明構(gòu)建的RAID的校驗(yàn)、恢復(fù)算法更 簡單,在同樣數(shù)量磁盤損壞時(shí),本發(fā)明構(gòu)建的RAID的數(shù)據(jù)恢復(fù)速度更快, 讀寫性能也更好;在n》4、 m》4時(shí),本發(fā)明比RAID10具有更高的磁盤利 用率,降低了成本,且隨著n、 m值的增大磁盤利用率會進(jìn)一步提高;本發(fā) 明最多可允許n+m-l個(gè)磁盤同時(shí)損壞時(shí),數(shù)據(jù)能夠得到恢復(fù)。
圖1為RAID5存儲數(shù)據(jù)過程示意圖2為基于P+Q的RAID6的數(shù)據(jù)存儲形式示意圖3為RAID10的數(shù)據(jù)存儲形式示意圖4為本發(fā)明實(shí)施例提供的構(gòu)建RAID的流程圖5為應(yīng)用本發(fā)明構(gòu)建的RAID的數(shù)據(jù)存儲形式示意圖6為圖5中構(gòu)建的RAID的一個(gè)磁盤損壞時(shí)的示意圖7為圖5中構(gòu)建的RAID有兩磁盤同時(shí)損壞時(shí)的示意圖8為圖5中構(gòu)建的RAID有三》茲盤同時(shí)損壞時(shí)的示意圖9為本發(fā)明實(shí)施例提供的構(gòu)建RAID的裝置的組成圖。
具體實(shí)施例方式
下面結(jié)合附圖及具體實(shí)施例對本發(fā)明再作進(jìn) 一 步詳細(xì)的說明。 圖4為本發(fā)明實(shí)施例提供的構(gòu)建RAID的流程圖,如圖4所示,其具體 步驟如下:
步驟401:設(shè)磁盤陣列中包含nxm ( n23, mS3 )個(gè)石茲盤,將n x m個(gè)磁 盤構(gòu)造成一個(gè)n行x m列的磁盤矩陣,對每一行磁盤進(jìn)行條帶劃分,對每一
行中的條帶依次編號為1、 2、 3、 4.......。其中,每行磁盤的每個(gè)條帶中
包含一個(gè)橫向校驗(yàn)塊,每列磁盤中所屬條帶的編號相同的每n個(gè)分塊中包含 一個(gè)縱向校驗(yàn)塊。
對每一行磁盤進(jìn)行條帶劃分的方法與現(xiàn)有的對RAID5等陣列進(jìn)行條帶 劃分的方法相同。例如對第nl (lSnl^n)行的m個(gè)》茲盤,將第1 m個(gè) 磁盤中的第1 ~ a ( a>l )個(gè)磁道劃分為條帶1 ,將第1 ~ m個(gè)磁盤中的第a + 1 ~ 2a個(gè)磁道劃分為條帶2,將第1-m個(gè)磁盤中的第2a + 1 3a個(gè)磁道劃分 為條帶3,.......,依次類推,直到將每個(gè)磁盤的所有磁道劃分完畢。
步驟402:對于每行磁盤的每個(gè)條帶,對該條帶中的m-1個(gè)數(shù)據(jù)塊進(jìn) 行XOR運(yùn)算,得到該條帶的橫向校驗(yàn)塊??梢?,若每個(gè)磁盤中有k個(gè)條帶,則整個(gè)磁盤陣列共有kxn個(gè)橫向校 驗(yàn)塊。
步驟403:對同一列磁盤中所屬條帶編號相同的每n- 1個(gè)數(shù)據(jù)塊進(jìn)行 XOR運(yùn)算,得到該列磁盤的該n- 1個(gè)數(shù)據(jù)塊的縱向校驗(yàn)塊。
可見,若每個(gè)磁盤中有k個(gè)條帶,則整個(gè)磁盤陣列共有kxm個(gè)縱向校 驗(yàn)塊。
同時(shí)可見,對于每一個(gè)數(shù)據(jù)塊,該數(shù)據(jù)塊都同時(shí)對應(yīng)兩個(gè)校驗(yàn)塊橫向 校驗(yàn)塊和縱向校驗(yàn)塊。
步驟404:若發(fā)現(xiàn)一磁盤損壞,則對該磁盤上的數(shù)據(jù)塊,使用該數(shù)據(jù)塊 對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶中的其它數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來 恢復(fù)該數(shù)據(jù)塊。
或者,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與 該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號 相同的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
步驟405:若發(fā)現(xiàn)同一行的兩磁盤同時(shí)損壞,則對于其中一磁盤,對該 磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一 列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn) 行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;然后,對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使 用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行XOR 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
或者,可同時(shí)使用如下方法同時(shí)恢復(fù)該兩》茲盤上的數(shù)據(jù)塊
對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向 校驗(yàn)塊、與該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
步驟406:若發(fā)現(xiàn)有三石茲盤x、 y、 z同時(shí)損壞,且/f茲盤x、 y位于同一 行,》茲盤x、 z4立于同一列,貝'J:
對于磁盤z上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于磁盤y上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁
盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同
的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于磁盤x上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)
塊所在條帶的其它數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。 或者
對于磁盤z上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù) 塊所在條帶的其它數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于磁盤x上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁 盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同 的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于磁盤y上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù) 塊所在條帶的其它數(shù)據(jù)塊進(jìn)行X OR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
或者
對于磁盤y上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁 盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同 的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;
對于磁盤x上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù) 塊所在條帶的其它數(shù)據(jù)塊進(jìn)行XOR運(yùn)算;
對于磁盤z上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁 盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同 的數(shù)據(jù)塊進(jìn)行XOR運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
需要指出的是,理論上每個(gè)條帶都會有兩個(gè)校驗(yàn)塊 一個(gè)橫向校驗(yàn)塊, 一個(gè)縱向校驗(yàn)塊,則整個(gè)磁盤陣列的磁盤利用率為1 -丄-丄(m^3, n^3 )。
附 W為了提高磁盤利用率,可以將不同行磁盤中所屬條帶編號相同的橫向校
驗(yàn)塊放在同一列磁盤上,例如對于第1 ~n行的n個(gè)條帶1,將該n個(gè)條 帶1的n個(gè)橫向校驗(yàn)塊都放在每行的第ml ( KmKm)個(gè)即第ml列磁盤 上;或者,也可以將不同列磁盤中所屬條帶編號相同的縱向校驗(yàn)塊放在同一 行磁盤上,例如對于第1 ~ m列磁盤中,對應(yīng)于條帶1的m個(gè)縱向校驗(yàn)塊, 可將該m個(gè)縱向校驗(yàn)塊都放在第nl ( lSnlSn)行》茲盤上,這樣就可以減少 一個(gè)縱向校驗(yàn)塊或減少一個(gè)橫向校驗(yàn)塊,從而可以提高整個(gè)磁盤陣列的利用
率,優(yōu)化后的磁盤利用率為i-丄-丄+ l (n^3, m^3)。同時(shí),可以
n 附 ox w
看出隨著n, m數(shù)值的增大,磁盤陣列的磁盤利用率也隨之增大。 以下給出應(yīng)用本發(fā)明的實(shí)例
如圖5所示,設(shè)磁盤陣列中共有16個(gè)磁盤,所有磁盤構(gòu)成一個(gè)4 x 4的 磁盤矩陣,每行磁盤的每個(gè)條帶具有一個(gè)橫向校驗(yàn)塊,同一列磁盤中所屬條 帶編號相同的n個(gè)分塊中具有一個(gè)縱向校驗(yàn)塊,如P1=A B, P2 == C D E, P3 = F G, P4 = H I; AP1=C F@H, AP2 = A D G, AP4 =B E I。其中,為了提高磁盤利用率,每行磁盤的條帶1的橫向校驗(yàn)塊 都位于第3列》茲盤上。
如圖6所示,當(dāng)一個(gè)磁盤如磁盤2損壞時(shí),則塊A可通過P1@B 來恢復(fù),也可通過AP2 D G來恢復(fù)。
如圖7所示,當(dāng)兩個(gè)》茲盤如》茲盤2、 4同時(shí)損壞時(shí),則可通過如下方 式之一恢復(fù)磁盤2、 4上數(shù)據(jù)
一、 先通過AP2@D G來恢復(fù)磁盤2上的塊A,然后通過P1 A 恢復(fù)》茲盤4上的塊B。
二、 通過AP2 D G來恢復(fù)》茲盤2上的塊A,同時(shí)通過AP4@E I 來恢復(fù)磁盤4上的塊B。
如圖8所示,當(dāng)三個(gè)磁盤如磁盤2、 4、 6同時(shí)損壞時(shí),則可通過如下 方式之一恢復(fù)石茲盤2、 4、 6上數(shù)據(jù)一、 通過P2 C E恢復(fù)》茲盤6上的塊D,同時(shí)通過AP40Eei恢 復(fù)》茲盤4上的塊B,然后通過PI B恢復(fù)石茲盤2上的塊A。
二、 通過P2 C@E恢復(fù)磁盤6上的塊D,然后通過AP2eD^G恢 復(fù)石茲盤2上的塊A,然后通過P19A恢復(fù)》茲盤4上的塊B。
三、 通過AP4④Eei恢復(fù)》茲盤4上的塊B,然后通過PleB恢復(fù)i茲 盤2上的塊A,然后通過AP2 A G恢復(fù)石茲盤6上的塊D。
圖9為本發(fā)明實(shí)施例提供的RAID構(gòu)建裝置的組成圖,該裝置應(yīng)用于磁 盤陣列包含nxm (n>3, m》3)個(gè)磁盤的場景中,如圖9所示,該裝置主 要包括磁盤矩陣構(gòu)建模塊91、橫向校驗(yàn)?zāi)K92、縱向校驗(yàn)?zāi)K93和數(shù)據(jù) 恢復(fù)模塊94,其中
磁盤矩陣構(gòu)建模塊91:將n x m個(gè)磁盤構(gòu)造成一個(gè)n行x m列的磁盤矩 陣,對每一行磁盤進(jìn)行條帶劃分,對于每一行磁盤中的所有條帶,按照相同 的規(guī)則對各條帶編號。
橫向校驗(yàn)?zāi)K92:對于每行磁盤的每個(gè)條帶,對該條帶中的m- 1個(gè)數(shù) 據(jù)塊進(jìn)行異或運(yùn)算,得到該條帶的橫向校驗(yàn)塊。
縱向校驗(yàn)?zāi)K93:對每列磁盤中所屬條帶的編號相同的n-1數(shù)據(jù)塊進(jìn) 行異或運(yùn)算,得到該列磁盤中所屬條帶的編號相同的n個(gè)分塊的縱向校驗(yàn) 塊。
數(shù)據(jù)恢復(fù)模塊94:當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫 向校驗(yàn)塊和/或縱向校驗(yàn)塊,恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊。 其中,數(shù)據(jù)恢復(fù)模塊94可包括
損壞發(fā)現(xiàn)模塊發(fā)現(xiàn)有一個(gè)磁盤損壞,將該磁盤標(biāo)識發(fā)送給恢復(fù)模塊。 恢復(fù)模塊接收損壞的磁盤標(biāo)識,對于該磁盤的每個(gè)數(shù)據(jù)塊,使用該數(shù)
據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來
恢復(fù)該數(shù)據(jù)塊;或者,
對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤
位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
或者,數(shù)據(jù)恢復(fù)模塊94可包括
損壞發(fā)現(xiàn)模塊發(fā)現(xiàn)同 一行的兩磁盤同時(shí)損壞,將該兩磁盤標(biāo)識發(fā)送給 恢復(fù)模塊。
恢復(fù)模塊接收同時(shí)損壞的兩磁盤標(biāo)識,對于其中一磁盤,對該磁盤上 的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的其 它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù) 據(jù)塊;或者,
對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向 校驗(yàn)塊、與該磁盤位于同 一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
或者,數(shù)據(jù)恢復(fù)模塊94可包括
損壞發(fā)現(xiàn)模塊發(fā)現(xiàn)第一、第二、第三磁盤同時(shí)損壞,且第一、二磁盤 位于同一行,第一、三磁盤位于同一列,將該三磁盤標(biāo)識發(fā)送給恢復(fù)模塊;
恢復(fù)模塊,接收同時(shí)損壞的三磁盤標(biāo)識,對于第三磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同 一 列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁 盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的 其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者,
對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤 上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的 其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對 應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該 數(shù)據(jù)塊;或者,
對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
以上所述僅為本發(fā)明的過程及方法實(shí)施例,并不用以限制本發(fā)明,凡在 本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在 本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種獨(dú)立磁盤冗余陣列RAID構(gòu)建方法,應(yīng)用于磁盤陣列包含n×m個(gè)磁盤的場景中,其中,n≥3,m≥3,將n×m個(gè)磁盤構(gòu)造成一個(gè)n行×m列的磁盤矩陣,對每一行磁盤進(jìn)行條帶劃分,對于每一行磁盤中的所有條帶,按照相同的規(guī)則對各條帶編號,其特征在于,該方法包括在每行磁盤的每個(gè)條帶中設(shè)置一個(gè)橫向校驗(yàn)塊,在每列磁盤中所屬條帶的編號相同的每n個(gè)分塊中設(shè)置一個(gè)縱向校驗(yàn)塊;所述橫向校驗(yàn)塊由該橫向校驗(yàn)塊所在條帶中的m-1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得出;所述縱向校驗(yàn)塊由所屬條帶編號與該縱向校驗(yàn)塊所屬條帶編號相同的n-1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得到。
2、 如權(quán)利要求l所述的方法,其特征在于,所述方法進(jìn)一步包括 預(yù)先設(shè)定不同行磁盤所屬條帶編號相同的橫向校驗(yàn)塊位于同一列磁盤上。
3、 如權(quán)利要求l所述的方法,其特征在于,所述方法進(jìn)一步包括 預(yù)先設(shè)定不同列磁盤所屬條帶編號相同的縱向校驗(yàn)塊位于同一行磁盤上。
4、 如權(quán)利要求1至3任一所述的方法,其特征在于,所述方法進(jìn)一步 包括當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或縱 向校驗(yàn)塊,恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊。
5、 如權(quán)利要求4所述的方法,其特征在于,所述當(dāng)有磁盤損壞時(shí),根 據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或縱向校驗(yàn)塊恢復(fù)該磁盤上的每 個(gè)數(shù)據(jù)塊包括當(dāng)有一個(gè)》茲盤損壞時(shí),對于該磁盤的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的 橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù) 塊;或者,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與 該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號 相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
6、 如權(quán)利要求4所述的方法,其特征在于,所述當(dāng)有磁盤損壞時(shí),根 據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或縱向校驗(yàn)塊恢復(fù)該磁盤上的每 個(gè)數(shù)據(jù)塊包括當(dāng)發(fā)現(xiàn)同一行的兩磁盤同時(shí)損壞時(shí),對于其中一磁盤,對該磁盤上的每 個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的其它磁 盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算, 來恢復(fù)該數(shù)據(jù)塊;對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向 校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊; 或者,同時(shí)使用如下步驟同時(shí)恢復(fù)該兩磁盤上的數(shù)據(jù)塊 對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同 一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
7、 如權(quán)利要求4所述的方法,其特征在于,所述當(dāng)有磁盤損壞時(shí),根 據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊和/或縱向校驗(yàn)塊恢復(fù)該磁盤上的每 個(gè)數(shù)據(jù)塊包括當(dāng)有第一、第二、第三磁盤同時(shí)損壞,且第一、二磁盤位于同一行,第 一、三,茲盤位于同一列時(shí),貝'J:對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
8、 一種RAID構(gòu)建裝置,應(yīng)用于磁盤陣列包含nxm個(gè)磁盤的場景中, 其中,n>3, m>3,將n x m個(gè)f茲盤構(gòu)造成一個(gè)n《亍x m列的;茲盤矩陣,對 每一行磁盤進(jìn)行條帶劃分,對于每一行磁盤中的所有條帶,按照相同的規(guī)則 對各條帶編號;其特征在于,該裝置包括磁盤矩陣構(gòu)建模塊,橫向校驗(yàn)?zāi)K,對于每行磁盤的每個(gè)條帶,對該條帶中的m-l個(gè)數(shù)據(jù) 塊進(jìn)行異或運(yùn)算,得到該條帶的橫向校驗(yàn)塊;縱向校驗(yàn)?zāi)K,對每列磁盤中所屬條帶的編號相同的n - 1數(shù)據(jù)塊進(jìn)行 異或運(yùn)算,得到該列磁盤中所屬條帶的編號相同的n個(gè)分塊的縱向校驗(yàn)塊。
9、 如權(quán)利要求8所述的裝置,其特征在于,該裝置進(jìn)一步包括數(shù)據(jù)恢復(fù)模塊,當(dāng)有磁盤損壞時(shí),根據(jù)該磁盤上的數(shù)據(jù)塊對應(yīng)的橫向校 驗(yàn)塊和/或縱向校驗(yàn)塊,恢復(fù)該磁盤上的每個(gè)數(shù)據(jù)塊。
10、 如權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)恢復(fù)模塊包括 損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)有一個(gè)磁盤損壞,將該磁盤標(biāo)識發(fā)送給恢復(fù)模塊; 恢復(fù)模塊,接收損壞的磁盤標(biāo)識,對于該磁盤的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來 恢復(fù)該數(shù)據(jù)塊;或者,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤 位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的 數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
11、 如權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)恢復(fù)模塊包括 損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)同一行的兩磁盤同時(shí)損壞,將該兩磁盤標(biāo)識發(fā)送給恢復(fù)模塊;恢復(fù)模塊,接收同時(shí)損壞的兩磁盤標(biāo)識,對于其中一磁盤,對該磁盤上 的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的其 它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于另一磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù) 據(jù)塊;或者,對其中任一磁盤,對該磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向 校驗(yàn)塊、與該磁盤位于同 一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在 條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
12、 如權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)恢復(fù)模塊包括 損壞發(fā)現(xiàn)模塊,發(fā)現(xiàn)第一、第二、第三磁盤同時(shí)損壞,且第一、二磁盤位于同一行,第一、三磁盤位于同一列,將該三磁盤標(biāo)識發(fā)送給恢復(fù)模塊; 恢復(fù)模塊,接收同時(shí)損壞的三磁盤標(biāo)識,對于第三磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁 盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的 其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;或者,對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù) 據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤 上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該磁盤位于同一列的 其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異 或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對 應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該 數(shù)據(jù)塊;或者,對于第二磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng)的縱向校驗(yàn)塊、與該 磁盤位于同一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù)塊所在條帶編號相 同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第一磁盤上的每個(gè)數(shù)據(jù)塊, 使用該數(shù)據(jù)塊對應(yīng)的橫向校驗(yàn)塊、該數(shù)據(jù)塊所在條帶的其它數(shù)據(jù)塊進(jìn)行異或 運(yùn)算,來恢復(fù)該數(shù)據(jù)塊;對于第三磁盤上的每個(gè)數(shù)據(jù)塊,使用該數(shù)據(jù)塊對應(yīng) 的縱向校驗(yàn)塊、與該磁盤位于同 一列的其它磁盤中所屬條帶編號與所述數(shù)據(jù) 塊所在條帶編號相同的數(shù)據(jù)塊進(jìn)行異或運(yùn)算,來恢復(fù)該數(shù)據(jù)塊。
全文摘要
本發(fā)明公開了獨(dú)立磁盤冗余陣列構(gòu)建方法及裝置。本發(fā)明應(yīng)用于磁盤陣列包含n×m個(gè)磁盤的場景中,其中,n≥3,m≥3,將n×m個(gè)磁盤構(gòu)造成一個(gè)n行×m列的磁盤矩陣,對每一行磁盤進(jìn)行條帶劃分,對于每一行磁盤中的所有條帶,按照相同的規(guī)則對各條帶編號,在每行磁盤的每個(gè)條帶中設(shè)置一個(gè)橫向校驗(yàn)塊,在每列磁盤中所屬條帶的編號相同的每n個(gè)分塊中設(shè)置一個(gè)縱向校驗(yàn)塊;所述橫向校驗(yàn)塊由該橫向校驗(yàn)塊所在條帶中的m-1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得出;所述縱向校驗(yàn)塊由所屬條帶編號與該縱向校驗(yàn)塊所屬條帶編號相同的n-1個(gè)數(shù)據(jù)塊通過異或運(yùn)算得到。本發(fā)明提高了RAID的冗余度。
文檔編號G06F11/10GK101504623SQ20091008060
公開日2009年8月12日 申請日期2009年3月20日 優(yōu)先權(quán)日2009年3月20日
發(fā)明者迪 周, 策 孫 申請人:杭州華三通信技術(shù)有限公司