該右移操作,得到第I號(hào)磁盤(pán)分區(qū)Rl中的編號(hào);對(duì)第I號(hào)磁盤(pán)分區(qū)Rl中的編號(hào)進(jìn)行該右移操作,得到第2號(hào)分區(qū)R2中的編號(hào)。最終第O號(hào)磁盤(pán)分區(qū)RO中第零行磁盤(pán)編號(hào)為0、1、2、3、4,第一行磁盤(pán)編號(hào)為5、6、7、8、9,第二行磁盤(pán)編號(hào)為10、11、12、13、14,第三行磁盤(pán)編號(hào)為15、16、17、18、19,第四行磁盤(pán)編號(hào)為20、21、22、23、24 ;第I號(hào)磁盤(pán)分區(qū)Rl中第零行磁盤(pán)編號(hào)為0、1、2、3、4,第一行磁盤(pán)編號(hào)為9、5、6、7、8,第二行磁盤(pán)編號(hào)為13、14、10、11、12,第三行磁盤(pán)編號(hào)為17、18、19、15、16,第四行磁盤(pán)編號(hào)為21、22、23、24、20 ;第2號(hào)磁盤(pán)分區(qū)R2中第零行磁盤(pán)編號(hào)為0、1、2、3、4,第一行磁盤(pán)編號(hào)為8、9、5、6、7,第二行磁盤(pán)編號(hào)為11、12、13、14、10,由第三行磁盤(pán)編號(hào)為19、15、16、17、18,第四行磁盤(pán)編號(hào)為22、23、24、20、21。編號(hào)完成之后,從各分區(qū)中取相同編號(hào)的邏輯塊構(gòu)建組間子陣列,同樣采用RAID-5編碼,由2個(gè)數(shù)據(jù)塊產(chǎn)生I個(gè)校驗(yàn)塊。圖3中用十字外加圓圈的符號(hào)表示異或運(yùn)算,用虛線箭頭連接參與運(yùn)算的邏輯塊。如附圖3中所示,由第O號(hào)磁盤(pán)分區(qū)RO和第I號(hào)磁盤(pán)分區(qū)Rl中的O號(hào)數(shù)據(jù)塊通過(guò)異或運(yùn)算產(chǎn)生第2號(hào)磁盤(pán)分區(qū)R2中的O號(hào)校驗(yàn)塊;由第O號(hào)磁盤(pán)分區(qū)R0、第2號(hào)磁盤(pán)分區(qū)R2中的22號(hào)數(shù)據(jù)塊,通過(guò)異或運(yùn)算產(chǎn)生第I號(hào)磁盤(pán)分區(qū)Rl中的22號(hào)校驗(yàn)塊。將21?24號(hào)組間子陣列的校驗(yàn)塊放置在第I號(hào)磁盤(pán)分區(qū)Rl中,是因?yàn)榻M間校驗(yàn)塊與組內(nèi)校驗(yàn)塊不能是相同的邏輯塊,需要在第2號(hào)磁盤(pán)分區(qū)R2中需留出一行作為組內(nèi)校驗(yàn)塊。
[0032]第四步:制定容錯(cuò)策略步驟
[0033]當(dāng)單個(gè)磁盤(pán)出錯(cuò)時(shí),采用組間編碼進(jìn)行修復(fù)。圖4為單盤(pán)修復(fù)方法示意圖,圖中同樣用十字外加圓圈的符號(hào)表示異或運(yùn)算,用虛線箭頭表示讀取組間相應(yīng)的邏輯塊,通過(guò)異或運(yùn)算修復(fù)出損壞的邏輯塊。在附圖4中,組間編碼采用2個(gè)數(shù)據(jù)塊產(chǎn)生I個(gè)校驗(yàn)塊的RAID-5編碼,當(dāng)某個(gè)邏輯塊壞掉之后,只需讀取相同組間子陣列中存活的邏輯塊進(jìn)行異或運(yùn)算即可修復(fù)。例如,圖4中在整個(gè)第7號(hào)磁盤(pán)D7上打了 “叉”形符號(hào),表示該磁盤(pán)D7上的所有邏輯塊都損壞。對(duì)于該磁盤(pán)D7中的2號(hào)邏輯塊,按圖4中上方虛線箭頭所示,讀取第2號(hào)磁盤(pán)D2和第12號(hào)磁盤(pán)D12中的2號(hào)邏輯塊進(jìn)行異或運(yùn)算,即可修復(fù)。采用相同的方法,可以依次修復(fù)第7號(hào)磁盤(pán)D7中標(biāo)注編號(hào)為2、6、10、19、23號(hào)的邏輯塊。
[0034]當(dāng)多個(gè)磁盤(pán)出錯(cuò)時(shí),采用組內(nèi)、組間編碼混合修復(fù)。圖5為多盤(pán)修復(fù)方法示意圖,圖中同樣用十字外加圓圈的符號(hào)表示異或運(yùn)算,用虛線箭頭表示讀取組間相應(yīng)的邏輯塊,用實(shí)線箭頭表示讀取組內(nèi)相應(yīng)的邏輯塊,最后均通過(guò)異或運(yùn)算修復(fù)出損壞的邏輯塊。在附圖5中,分別在整個(gè)第I號(hào)磁盤(pán)Dl和整個(gè)第7號(hào)磁盤(pán)D7上打了 “叉”形符號(hào),表示磁盤(pán)Dl和磁盤(pán)D7上的所有邏輯塊都損壞。不難發(fā)現(xiàn),兩個(gè)磁盤(pán)中均包含了編號(hào)為6的邏輯塊,因此無(wú)法通過(guò)組間編碼修復(fù)編號(hào)為6的組間子陣列。此時(shí),首先在第O號(hào)磁盤(pán)分區(qū)RO中,采用組內(nèi)編碼修復(fù)標(biāo)注編號(hào)為6號(hào)的邏輯塊,即讀取第O號(hào)磁盤(pán)分區(qū)RO中實(shí)線箭頭上所包含的邏輯塊,進(jìn)行異或運(yùn)算,以恢復(fù)出第I號(hào)磁盤(pán)Dl中的標(biāo)注編號(hào)為6號(hào)的邏輯塊;然后采用上述組間編碼方法修復(fù)第2號(hào)磁盤(pán)分區(qū)R2中的標(biāo)注編號(hào)為6號(hào)的邏輯塊以及其余損壞的邏輯塊。
[0035]無(wú)論是單磁盤(pán)修復(fù),還是多磁盤(pán)修復(fù),都并發(fā)地將恢復(fù)的數(shù)據(jù)臨時(shí)寫(xiě)入空閑磁盤(pán),最后將恢復(fù)的數(shù)據(jù)寫(xiě)入熱備盤(pán)。
[0036]在附圖4的磁盤(pán)陣列中,發(fā)生了單磁盤(pán)出錯(cuò),即第7號(hào)磁盤(pán)D7出錯(cuò),小方格內(nèi)用左斜線表示的邏輯塊為修復(fù)第7號(hào)磁盤(pán)D7所需讀取的存活塊。假定第7號(hào)磁盤(pán)D7的數(shù)據(jù)量為M,可以看出,修復(fù)所需讀取的數(shù)據(jù)總量2*M,即(N-1) *M ;參與修復(fù)的存活盤(pán)數(shù)量為10,即(N-1) *G ;各磁盤(pán)讀取的數(shù)據(jù)量為M/5,即Μ/G。該磁盤(pán)陣列校驗(yàn)塊所占比例為53.3%,與此比例接近,且能容任意四個(gè)磁盤(pán)錯(cuò)的Reed Solomon碼為RS (3,4),即3個(gè)數(shù)據(jù)盤(pán)產(chǎn)生4個(gè)校驗(yàn)盤(pán),RS (3,4)校驗(yàn)塊比例為57.1%。同樣,假定某個(gè)數(shù)據(jù)量為M的磁盤(pán)出錯(cuò),修復(fù)時(shí)RS (3,4)所需讀取的數(shù)據(jù)總量為3*M,參與修復(fù)的存活盤(pán)數(shù)量為3,各磁盤(pán)讀取的數(shù)據(jù)量為M。對(duì)比發(fā)現(xiàn),采用本發(fā)明的布局方法將單盤(pán)修復(fù)時(shí)所需讀取的數(shù)據(jù)總量減小了 33.3%,各磁盤(pán)數(shù)據(jù)讀取量減小了 80%。而且當(dāng)G、N選擇其它值時(shí),單盤(pán)修復(fù)性能還可進(jìn)一步提升。
【主權(quán)項(xiàng)】
1.一種基于分組編碼的磁盤(pán)陣列構(gòu)建方法,其特征在于包括以下步驟: 第一步:磁盤(pán)分區(qū)步驟 首先將每個(gè)容量為c MB的磁盤(pán)切分成大小為H MB的C/Η個(gè)邏輯塊,其中C的范圍是256GB?4TB,H的范圍是64MB?IGB ;然后將所有磁盤(pán)劃分為N組,每組G個(gè)磁盤(pán),其中G為素?cái)?shù),N〈 = G,共G*N個(gè)磁盤(pán);在各組中,從每個(gè)磁盤(pán)中取G個(gè)邏輯塊組成一個(gè)G*G的邏輯塊矩陣,構(gòu)成一個(gè)分區(qū); 第二步:組內(nèi)編碼步驟 設(shè)Pu為某個(gè)分區(qū)第i行第j列的邏輯塊,<j-1> e表示j_i對(duì)G求模;取<j-1> e相同的邏輯塊來(lái)構(gòu)建組內(nèi)子陣列,每個(gè)組內(nèi)子陣列由G個(gè)邏輯塊構(gòu)成;組內(nèi)子陣列采用RAID-5編碼,即G-1個(gè)數(shù)據(jù)塊產(chǎn)生I個(gè)校驗(yàn)塊; 第三步:組間編碼步驟 在第O組的分區(qū)中,對(duì)每個(gè)邏輯塊進(jìn)行編號(hào),從左到右、從上到下依次為O到G*G-1 ;定義一個(gè)右移操作:在一個(gè)分區(qū)中,第i行的編號(hào)循環(huán)右移i個(gè)邏輯位置;對(duì)第O組的分區(qū)進(jìn)行該右移操作,得到第I組分區(qū)的邏輯編號(hào);對(duì)第I組的分區(qū)進(jìn)行該右移操作,得到第2組分區(qū)的邏輯編號(hào),以此類(lèi)推;組間編碼的方法為,從各分區(qū)取出相同編號(hào)的邏輯塊構(gòu)建組間子陣列,組間子陣列共由N個(gè)邏輯塊構(gòu)成;組間子陣列采用RAID-5編碼,即N-1個(gè)數(shù)據(jù)塊產(chǎn)生I個(gè)校驗(yàn)塊;選擇非組內(nèi)編碼校驗(yàn)塊的邏輯塊作為組間編碼校驗(yàn)塊; 第四步:制定容錯(cuò)策略步驟 當(dāng)發(fā)生單磁盤(pán)錯(cuò)誤時(shí),記錄壞盤(pán)所包含的組間子陣列的編號(hào),并發(fā)地從其它分區(qū)讀取相同編號(hào)的邏輯塊進(jìn)行異或運(yùn)算,并發(fā)地將恢復(fù)的數(shù)據(jù)臨時(shí)寫(xiě)入空閑磁盤(pán),最后將恢復(fù)的數(shù)據(jù)寫(xiě)入熱備盤(pán);當(dāng)發(fā)生多磁盤(pán)錯(cuò)誤時(shí),首先采用組內(nèi)編碼修復(fù)損壞的邏輯塊,再采用組間編碼修復(fù)剩余的邏輯塊。
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于分組編碼的磁盤(pán)陣列構(gòu)建方法,特征是包括磁盤(pán)分區(qū)步驟,組內(nèi)編碼步驟,組間編碼步驟和制定容錯(cuò)策略步驟;采用此構(gòu)建方法的磁盤(pán)陣列能容任意四個(gè)磁盤(pán)錯(cuò);當(dāng)發(fā)生單磁盤(pán)錯(cuò)時(shí),采用組間編碼進(jìn)行修復(fù);當(dāng)發(fā)生多磁盤(pán)錯(cuò)時(shí),采用組內(nèi)編碼和組間編碼的混合修復(fù)。本發(fā)明方法與傳統(tǒng)磁盤(pán)陣列構(gòu)建方法相比,在相同的容錯(cuò)能力和冗余率的前提下,修復(fù)單磁盤(pán)錯(cuò)時(shí)所讀取的數(shù)據(jù)總量以及各磁盤(pán)的數(shù)據(jù)讀取量都明顯減少,節(jié)省了網(wǎng)絡(luò)帶寬,加快了修復(fù)速度,提高了系統(tǒng)可靠性。
【IPC分類(lèi)】G06F3-06
【公開(kāi)號(hào)】CN104615380
【申請(qǐng)?zhí)枴緾N201510016735
【發(fā)明人】許胤龍, 王能, 吳思, 梁杰, 鄒懋
【申請(qǐng)人】浪潮電子信息產(chǎn)業(yè)股份有限公司, 中國(guó)科學(xué)技術(shù)大學(xué)
【公開(kāi)日】2015年5月13日
【申請(qǐng)日】2015年1月13日