欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多磁盤容錯(cuò)系統(tǒng)及方法

文檔序號(hào):6393849閱讀:158來源:國知局
專利名稱:多磁盤容錯(cuò)系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種磁盤容錯(cuò)系統(tǒng)及方法,特別是關(guān)于一種應(yīng)用于RAID6中可修補(bǔ)兩個(gè)損毀磁盤的多磁盤陣列容錯(cuò)系統(tǒng)及方法。
背景技術(shù)
在當(dāng)今信息時(shí)代,用戶需要大容量磁盤來儲(chǔ)存日益增多的數(shù)據(jù),然而大容量磁盤的價(jià)格非常昂貴,對(duì)用戶形成很大經(jīng)濟(jì)負(fù)擔(dān)。因此,如何增加磁盤的存取速度,如何防止數(shù)據(jù)因磁盤的故障而損毀和如何有效率的利用磁盤空間,一直是計(jì)算機(jī)專業(yè)人員和用戶的困擾。目前改進(jìn)磁盤存取速度的方式主要有兩種一是磁盤快取控制(Disk Cache Controller)技術(shù),其二是使用磁盤陣列(DiskArray)技術(shù)。其中磁盤陣列是把多個(gè)磁盤組成一個(gè)陣列,當(dāng)作單一磁盤使用,它將數(shù)據(jù)以分段(Striping)的方式儲(chǔ)存于不同的磁盤中,存取數(shù)據(jù)時(shí),磁盤陣列中的相關(guān)磁盤一起協(xié)同運(yùn)作,減少數(shù)據(jù)的存取時(shí)間,提高磁盤的空間利用率。磁盤陣列所利用的不同技術(shù),稱為RAID(Redundant Array of Independent Disks)級(jí)別,通常稱為RAID0、RAID1、RAID2、RAID3、RAID4、RAID5和RAID6,其每一個(gè)RAID級(jí)別都有自己的優(yōu)點(diǎn)和缺點(diǎn)。RAID6與其它級(jí)別的RAID相比,增加了兩個(gè)獨(dú)立的錯(cuò)誤校驗(yàn)區(qū)塊(ParityBlock),來保證儲(chǔ)存數(shù)據(jù)的可靠性,其數(shù)據(jù)的可靠性較高,即使兩個(gè)磁盤同時(shí)損毀,也不會(huì)影響數(shù)據(jù)的使用。但是需要分配給錯(cuò)誤校驗(yàn)區(qū)塊更大的磁盤空間,相對(duì)RAID5有更大的“寫性能損失”。由于RAID6的寫性能較差和復(fù)雜的實(shí)施,使得RAID 6難以實(shí)現(xiàn)。
關(guān)于磁盤陣列容錯(cuò)的支持技術(shù)曾揭露于2002年3月5日公告的美國第6,353,895號(hào)專利,其專利名稱為“磁盤容錯(cuò)RAID架構(gòu)(RAID ARCHITECTURE WITH TWO-DRIVE FAULTTOLERANCE)”。該專利是揭露了一種使用XOR邏輯運(yùn)算編碼方法來解決單個(gè)或兩個(gè)磁盤的容錯(cuò)問題,其編碼方法使用了兩組錯(cuò)誤校驗(yàn)區(qū)塊。然而,其不足之處在于該專利的發(fā)明對(duì)不同數(shù)量磁盤個(gè)數(shù)有不同的存放數(shù)據(jù)區(qū)塊與錯(cuò)誤校驗(yàn)區(qū)塊的布局,使得數(shù)據(jù)區(qū)塊與錯(cuò)誤校驗(yàn)區(qū)塊無明顯的存放關(guān)聯(lián)規(guī)則,造成寫性能較差,且過于復(fù)雜而在實(shí)際應(yīng)用系統(tǒng)中難以實(shí)現(xiàn)。
為克服上述先前技術(shù)的不足,須提供一種多磁盤容錯(cuò)系統(tǒng)及方法,其可使用少量XOR運(yùn)算,很容易實(shí)現(xiàn)于磁盤陣列中修補(bǔ)單個(gè)損毀磁盤或者兩個(gè)損毀磁盤的數(shù)據(jù),其構(gòu)成該磁盤陣列的磁盤個(gè)數(shù)可以為大于等于4的任意個(gè),其磁盤數(shù)量不受選定質(zhì)數(shù)條件的限制,并能更有效率的提高磁盤空間利用率。

發(fā)明內(nèi)容本發(fā)明的主要目的在于提供一種多磁盤容錯(cuò)系統(tǒng)及方法。其可由任意個(gè)磁盤組成一磁盤陣列,通過使用少量XOR運(yùn)算產(chǎn)生兩組錯(cuò)誤校驗(yàn)區(qū)塊,并對(duì)數(shù)據(jù)區(qū)塊進(jìn)行適當(dāng)分組并排列,實(shí)現(xiàn)于磁盤陣列中修補(bǔ)單個(gè)或兩個(gè)損毀磁盤的數(shù)據(jù)。
為達(dá)成上述發(fā)明目的,本發(fā)明提供一種多磁盤容錯(cuò)系統(tǒng),該多磁盤容錯(cuò)系統(tǒng)包括一中央處理器、一異或運(yùn)算單元、一磁盤陣列和一系統(tǒng)總線。其中,該中央處理器包括有一求模數(shù)運(yùn)算單元、一移位運(yùn)算單元和一地址轉(zhuǎn)換單元,其分別用于求模數(shù)運(yùn)算、移位運(yùn)算和地址轉(zhuǎn)換運(yùn)算與控制操作。該異或運(yùn)算單元用于對(duì)儲(chǔ)存于磁盤中數(shù)據(jù)進(jìn)行XOR運(yùn)算,其可包含于中央處理器中,也可獨(dú)立于中央處理器的外以減少中央處理器的負(fù)荷。該磁盤陣列包括有多個(gè)磁盤,該多個(gè)磁盤用于儲(chǔ)存多數(shù)據(jù)段、一組錯(cuò)誤校驗(yàn)段P和另一組錯(cuò)誤校驗(yàn)段Q。每一數(shù)據(jù)段包括多個(gè)數(shù)據(jù)區(qū)塊;錯(cuò)誤校驗(yàn)段P包括多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P,錯(cuò)誤校驗(yàn)段Q包括多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q,其用于修補(bǔ)兩個(gè)損毀磁盤或者單個(gè)損毀磁盤。該系統(tǒng)總線用于協(xié)同實(shí)現(xiàn)中央處理器對(duì)磁盤中數(shù)據(jù)進(jìn)行相應(yīng)的運(yùn)算、讀寫與控制操作。
本發(fā)明提供一種應(yīng)用于多磁盤容錯(cuò)系統(tǒng)中的數(shù)據(jù)區(qū)塊分組方法,其每一數(shù)據(jù)區(qū)塊D(i,j)在邏輯上分別進(jìn)行兩次不同分組方法的分組,一組記為錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組,另一組記為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組。其分組方法包括(a)標(biāo)示每一個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P(j);(b)將數(shù)據(jù)區(qū)塊D(i,j)中的j值與錯(cuò)誤校驗(yàn)區(qū)塊P(j)的標(biāo)號(hào)j相同的數(shù)據(jù)區(qū)塊D(i,j)劃分為錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組中;(c)標(biāo)示每一個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q(k);(d)將數(shù)據(jù)區(qū)塊D(i,j)中的((i+j)mod n)值與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的標(biāo)號(hào)k相同的數(shù)據(jù)區(qū)塊D(i,j)劃分為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組中。其中,D(i,j)表示任意數(shù)據(jù)區(qū)塊,其中D(i,j)的含義為第i個(gè)磁盤上第j個(gè)數(shù)據(jù)區(qū)塊,其所屬的錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組為第j組,其所屬的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組為第k組,k為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的標(biāo)號(hào),“mod”為求模數(shù)運(yùn)算符。
本發(fā)明還提供一種高效的多磁盤容錯(cuò)方法,其可于磁盤陣列中修補(bǔ)單個(gè)損毀磁盤和兩個(gè)損毀磁盤的數(shù)據(jù)。該多磁盤容錯(cuò)方法包括以下步驟(a)檢查碟陣列中其它磁盤的數(shù)據(jù)區(qū)塊D(i,j)、錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k);(b)利用一錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法重建第一個(gè)損毀磁盤的一數(shù)據(jù)區(qū)塊D(i,j),并將其寫入新磁盤;(c)利用一錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法重建第二個(gè)損毀磁盤的一數(shù)據(jù)區(qū)塊D(i,j),并將其寫入新磁盤;(d)分別判斷兩個(gè)損毀磁盤的數(shù)據(jù)區(qū)塊D(i,j)是否全部重建完畢。若損毀磁盤的數(shù)據(jù)區(qū)塊D(i,j)沒有重建完畢,則從步驟(a)開始重復(fù)執(zhí)行以上步驟;若損毀磁盤的數(shù)據(jù)區(qū)塊D(i,j)全部重建完畢,則結(jié)束。
通過實(shí)施本發(fā)明,可有效使用磁盤空間和使用少量XOR運(yùn)算來產(chǎn)生兩組錯(cuò)誤校驗(yàn)區(qū)塊。該兩組錯(cuò)誤校驗(yàn)區(qū)塊的編碼效率較高,亦具有較高的磁盤空間使用率,其實(shí)際使用空間/數(shù)據(jù)占用空間=((n+2)*(p-1)+1)/(n*p-1)),其中n為儲(chǔ)存實(shí)際數(shù)據(jù)的磁盤個(gè)數(shù),p為任意選定的質(zhì)數(shù),當(dāng)p很大時(shí),則此數(shù)值可以逼近(n+2)/n。另外該多磁盤容錯(cuò)系統(tǒng)及方法還具有較高的磁盤數(shù)據(jù)讀寫速度,從而于磁盤陣列中高效率的同時(shí)修補(bǔ)損毀兩個(gè)磁盤的數(shù)據(jù)。

圖1是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的硬件架構(gòu)圖。
圖2是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的另一硬件架構(gòu)圖。
圖3是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的磁盤陣列移位示意圖。
圖4是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的數(shù)據(jù)區(qū)塊分組和錯(cuò)誤校驗(yàn)區(qū)塊產(chǎn)生示意圖。
圖5是本發(fā)明多磁盤容錯(cuò)方法的錯(cuò)誤校驗(yàn)區(qū)塊P(j)產(chǎn)生流程圖。
圖6是本發(fā)明多磁盤容錯(cuò)方法的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)產(chǎn)生流程圖。
圖7是本發(fā)明多磁盤容錯(cuò)方法的數(shù)據(jù)區(qū)塊讀寫流程圖。
圖8是本發(fā)明多磁盤容錯(cuò)方法的利用錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法重建單個(gè)損毀數(shù)據(jù)區(qū)塊流程圖。
圖9是本發(fā)明多磁盤容錯(cuò)方法的利用錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法重建單個(gè)損毀數(shù)據(jù)區(qū)塊流程圖。
圖10是本發(fā)明多磁盤容錯(cuò)方法的修補(bǔ)單個(gè)損毀磁盤方法流程圖。
圖11是本發(fā)明多磁盤容錯(cuò)方法的修補(bǔ)兩個(gè)損毀磁盤方法流程圖。
實(shí)施方式如圖1和圖2所示,是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的硬件架構(gòu)圖。該系統(tǒng)包括一中央處理器(CPU)1、一異或運(yùn)算單元(XOR Unit)2、一磁盤陣列(Disk Array)3和一系統(tǒng)總線(BUS)4。中央處理器1包括有一求模數(shù)運(yùn)算單元(Module Unit)11、一移位運(yùn)算單元(Shift Unit)12、一地址轉(zhuǎn)換單元(Address Conversion Unit)13,其分別用于求模數(shù)運(yùn)算、移位運(yùn)算和地址轉(zhuǎn)換運(yùn)算與控制操作。其中,求模數(shù)運(yùn)算單元11用于計(jì)算一操作數(shù)的模數(shù);移位運(yùn)算單元12用于完成數(shù)據(jù)的移位運(yùn)算操作;地址轉(zhuǎn)換單元13用于完成地址轉(zhuǎn)換,例如將邏輯地址(Logical Address)轉(zhuǎn)換成磁盤陣列3中磁盤30的物理地址(Physical Address)。異或運(yùn)算單元2用于對(duì)儲(chǔ)存于磁盤30中數(shù)據(jù)進(jìn)行XOR運(yùn)算,其可獨(dú)立于中央處理器1(如圖1所示),也可包含于中央處理器1中(如圖2所示)。磁盤陣列3包括有n+2個(gè)磁盤30,該n+2個(gè)磁盤30可分別編號(hào)為Disk0、Disk1、...、Disk(n-1)、Disk(n)和Disk(n+1),其中n個(gè)磁盤用于儲(chǔ)存數(shù)據(jù),磁盤Disk(n)和Disk(n+1)用于儲(chǔ)存對(duì)數(shù)據(jù)進(jìn)行同位校驗(yàn)檢查的校驗(yàn)碼;該系統(tǒng)總線4用于協(xié)同實(shí)現(xiàn)中央處理器1對(duì)磁盤陣列3中數(shù)據(jù)進(jìn)行相應(yīng)的運(yùn)算、讀寫與控制操作。
如圖3所示,是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的磁盤陣列移位示意圖。本發(fā)明使用n+2個(gè)磁盤30來組成一磁盤陣列(Disk Array)3,其中有n個(gè)磁盤用于儲(chǔ)存實(shí)際的數(shù)據(jù),還有兩個(gè)磁盤用于儲(chǔ)存校驗(yàn)碼。為了便于描述本發(fā)明,假設(shè)n=5,在實(shí)際應(yīng)用系統(tǒng)中,n為一個(gè)大于等于4的任意自然數(shù),故在本示意圖只畫出7個(gè)磁盤30組成的一磁盤陣列3。如圖所示,磁盤陣列3由7個(gè)磁盤30組成,該7個(gè)磁盤30分別標(biāo)示為Disk0、Disk1、Disk2、Disk3、Disk4、Disk5和Disk6,其中磁盤Disk0、Disk1、Disk2、Disk3和Disk4用于儲(chǔ)存多數(shù)據(jù)段(DB)321,磁盤Disk5用于儲(chǔ)存錯(cuò)誤校驗(yàn)段P322,磁盤Disk6用于儲(chǔ)存錯(cuò)誤校驗(yàn)段Q323。磁盤陣列3可在邏輯上劃分為多個(gè)數(shù)據(jù)集(Data Set)32,每一數(shù)據(jù)集32包括多數(shù)據(jù)段(DB)321、一錯(cuò)誤校驗(yàn)段P322和一錯(cuò)誤校驗(yàn)段Q323。該錯(cuò)誤校驗(yàn)段P322和錯(cuò)誤校驗(yàn)段Q323用于多數(shù)據(jù)段321的同位校驗(yàn)檢查,并重建損毀的數(shù)據(jù)段321,進(jìn)而修補(bǔ)損毀磁盤30的數(shù)據(jù)。為了能平均的使用構(gòu)成同一個(gè)磁盤陣列3的磁盤空間以達(dá)到提高磁盤空間利用率,移位運(yùn)算單元12將多個(gè)數(shù)據(jù)段(DB)321、錯(cuò)誤校驗(yàn)段P322和錯(cuò)誤校驗(yàn)段Q323的排列做一個(gè)移位旋轉(zhuǎn),其構(gòu)成多數(shù)據(jù)集32并將其移位排列成一磁盤陣列3,其中使用到的換算地址值可由地址轉(zhuǎn)換單元13計(jì)算出來。
如圖4所示,是本發(fā)明多磁盤容錯(cuò)系統(tǒng)的數(shù)據(jù)區(qū)塊分組和錯(cuò)誤校驗(yàn)區(qū)塊產(chǎn)生示意圖。結(jié)合圖3所示,于n+2個(gè)磁盤個(gè)陣列成的磁盤陣列3中,假定n=5,質(zhì)數(shù)p=7,該質(zhì)數(shù)p只應(yīng)用于垂直方向上數(shù)據(jù)區(qū)塊的分割上,而水平方向上的用于儲(chǔ)存數(shù)據(jù)的磁盤個(gè)數(shù)n,則不受該質(zhì)數(shù)p限制。一數(shù)據(jù)集32包括多數(shù)據(jù)段(DB)321、一錯(cuò)誤校驗(yàn)段P322和一錯(cuò)誤校驗(yàn)段Q323。每一數(shù)據(jù)段321包括六個(gè)數(shù)據(jù)區(qū)塊(Data Block),以下用D(i,j)來表示任意一數(shù)據(jù)區(qū)塊,其中i表示第i個(gè)磁盤30的編號(hào),j表示第i個(gè)磁盤30上的數(shù)據(jù)的編號(hào);每一錯(cuò)誤校驗(yàn)段P322包括六個(gè)錯(cuò)誤校驗(yàn)區(qū)塊(Parity Block)P,以下用P(j)來表示任意一錯(cuò)誤校驗(yàn)區(qū)塊P;每一錯(cuò)誤校驗(yàn)段Q323包括七個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q,以下用Q(k)來表示任意一錯(cuò)誤校驗(yàn)區(qū)塊Q,其中k=((i+j)mod p),p為任意質(zhì)數(shù),該k=((i+j)mod p)是本發(fā)明產(chǎn)生錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組的演算法則。每一錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)用于對(duì)屬于同組數(shù)據(jù)區(qū)塊D(i,j)進(jìn)行同位校驗(yàn)檢查,并重建損毀的同組數(shù)據(jù)區(qū)塊D(i,j),進(jìn)而修補(bǔ)損毀磁盤30。如圖所示,將30個(gè)數(shù)據(jù)區(qū)塊D(i,j)在邏輯上分別進(jìn)行兩次不同分組方法的分組,一組記為錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組,一組記為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組。對(duì)于錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組而言,由于將30個(gè)數(shù)據(jù)區(qū)塊D(i,j)分為六組,故每組有五個(gè)數(shù)據(jù)區(qū)塊D(i,j);對(duì)于錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組而言,每個(gè)數(shù)據(jù)區(qū)塊D(i,j)所屬的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組為第k組,由于計(jì)算k=((i+j)mod p)值的質(zhì)數(shù)p=7,故每組可能有四個(gè)或五個(gè)數(shù)據(jù)區(qū)塊D(i,j)。由此可知,每一組對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊P(j)的數(shù)據(jù)為所屬同一組的所有數(shù)據(jù)區(qū)塊D(i,j)全部XOR值,而每一組對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的數(shù)據(jù)為計(jì)算數(shù)據(jù)區(qū)塊D(i,j)中的((i+j)mod p)的值與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的標(biāo)示k相等的所有數(shù)據(jù)區(qū)塊D(i,j)全部XOR值。以下舉例說明每一數(shù)據(jù)區(qū)塊D(i,j)對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的分組方法。
對(duì)于錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組采用下表1來表示表1
其中D(i,j)為數(shù)據(jù)區(qū)塊D(i,j),P(j)為錯(cuò)誤校驗(yàn)區(qū)塊P(j)。計(jì)算P(j)可采用以下演算法表示(其中“”代表XOR運(yùn)算,即XOR運(yùn)算)P(0)=D(0,0)D(1,0)D(2,0)D(3,0)D(4,0);P(1)=D(0,1)D(1,1)D(2,1)D(3,1)D(4,1);P(2)=D(0,2)D(1,2)D(2,2)D(3,2)D(4,2);P(3)=D(0,3)D(1,3)D(2,3)D(3,3)D(4,3);P(4)=D(0,4)D(1,4)D(2,4)D(3,4)D(4,4);P(5)=D(0,5)D(1,5)D(2,5)D(3,5)D(4,5).
由上述演算法可知D(0,0)、D(1,0)、D(2,0)、D(3,0)和D(4,0)在錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組上是同一組,即為第0組,其XOR運(yùn)算的結(jié)果就儲(chǔ)存于P(0)中,P(0)即為上述同一組數(shù)據(jù)區(qū)塊D(i,j)的錯(cuò)誤校驗(yàn)區(qū)塊P(j)。故對(duì)于任意數(shù)據(jù)區(qū)塊D(i,j)而言,其所屬的錯(cuò)誤校驗(yàn)區(qū)塊P分組為第j組,即P(j)=D(0,j)D(1,j)...D(n-1,j)。
對(duì)于錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組采用下表2來表示表2
根據(jù)圖4和上述所述的分組Q(k)標(biāo)示k=((i+j)mod p)的演算法則,其中p=7,對(duì)于錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組可采用以下算法表示Q(0)=D(0,0)D(4,3)D(3,4)D(2,5);Q(1)=D(1,0)D(0,1)D(4,4)D(3,5);Q(2)=D(2,0)D(1,1)D(0,2)D(4,5);Q(3)=D(3,0)D(2,1)D(1,2)D(0,3);Q(4)=D(4,0)D(3,1)D(2,2)D(1,3)D(0,4);Q(5)=D(4,1)D(3,2)D(2,3)D(4,1)D(0,5);Q(6)=D(4,2)D(3,3)D(2,4)D(1,5).
由上述算法可知D(0,0),D(4,3),D(3,4)和D(2,5)在錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組上是同一組,即為第0組,其XOR運(yùn)算的結(jié)果就儲(chǔ)存于Q(0)中,Q(0)即為上述同一組的數(shù)據(jù)區(qū)塊D(i,j)的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)。故對(duì)于任意數(shù)據(jù)區(qū)塊D(i,j)而言,其所屬的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組為第k組,其中k=((i+j)modp),本實(shí)施例中p=7。
如上述圖3和圖4所示,由于錯(cuò)誤校驗(yàn)段Q323會(huì)多使用一個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q(k),為了能平均的使用構(gòu)成同一個(gè)磁盤陣列3的磁盤空間以達(dá)到提高磁盤空間利用率,移位運(yùn)算單元12將多數(shù)據(jù)段(DB)321、錯(cuò)誤校驗(yàn)段P322和錯(cuò)誤校驗(yàn)段Q323的排列做一個(gè)移位旋轉(zhuǎn),其多移位旋轉(zhuǎn)后的數(shù)據(jù)集32排列成一磁盤陣列3,其中使用到的換算地址值可由地址轉(zhuǎn)換單元13計(jì)算出來,其地址換算方法如下假設(shè)是由n+2個(gè)磁盤30組成的磁盤陣列3,則每個(gè)數(shù)據(jù)集32含有(p-1)*n個(gè)數(shù)據(jù)區(qū)塊D(i,j),和2*p-1個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P(j)與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)。若要讀取某個(gè)邏輯地址為第r個(gè)數(shù)據(jù)區(qū)塊D(i,j),則可用以下方法轉(zhuǎn)換成物理地址以(i,j)表示物理地址,其中i為磁盤30的編號(hào),j為該磁盤30上數(shù)據(jù)區(qū)塊D(i,j)的編號(hào)(其中0<=i<n,j>=0)。首先由中央處理器1計(jì)算出此數(shù)據(jù)區(qū)塊D(i,j)屬于哪一個(gè)數(shù)據(jù)集32(表示為ds),然后再計(jì)算出物理地址(i,j)??刹捎萌缦卵菟惴ū硎?其中,n為儲(chǔ)存數(shù)據(jù)的磁盤個(gè)數(shù),p為選定質(zhì)數(shù),“mod”表示求模數(shù)運(yùn)算,r代表第r個(gè)數(shù)據(jù)區(qū)塊D(i,j))ds=(r/(n*(p-1)))mod(n+2);i=(r mod n+(n+2-ds))mod(n+2);若(r mod n)的值小于ds的值,則j=r/n+r/n*p*(p-1)+1;若(r mod n)的值大于或等于ds的值,則j=r/n+r/n*p*(p-1)+1.
如圖5所示,是本發(fā)明多磁盤容錯(cuò)方法的錯(cuò)誤校驗(yàn)區(qū)塊P(j)產(chǎn)生流程圖。首先中央處理器1初始化參數(shù),令n>=4,i=0,j=0(步驟S11)。中央處理器1讀取磁盤陣列3中與錯(cuò)誤校驗(yàn)區(qū)塊P分組為同一組的一個(gè)數(shù)據(jù)區(qū)塊D(i,j)后,并作i=i+l運(yùn)算,即中央處理器1準(zhǔn)備讀取下一個(gè)與錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)(步驟S12)。接著中央處理器1判斷i是否小于n,即判斷磁盤陣列30中與錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組為同一組的數(shù)據(jù)區(qū)塊D(i,j)是否全部被讀取完畢(步驟S13)。若為是,說明磁盤陣列30中與錯(cuò)誤校驗(yàn)區(qū)塊P分組屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)還未被讀取完畢,則重新執(zhí)行步驟S12,直到屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)全部被讀取完畢為止;若為否,說明磁盤陣列30中與錯(cuò)誤校驗(yàn)區(qū)塊P分組屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)已全部被讀取完畢,則異或運(yùn)算單元2將所有讀取的數(shù)據(jù)區(qū)塊D(i,j)作XOR運(yùn)算(步驟S14)。中央處理器1將XOR運(yùn)算結(jié)果寫入對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊P(j)中(步驟S15)。中央處理器1作j=j(luò)+l運(yùn)算,即中央處理器1再為下一組數(shù)據(jù)區(qū)塊D(i,j)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊P(j)(步驟S16)。最后中央處理器1判斷j是否小于n-1,即所有錯(cuò)誤校驗(yàn)區(qū)塊P(j)是否都已被產(chǎn)生(步驟S17)。若為是,說明還有錯(cuò)誤校驗(yàn)區(qū)塊P(j)未被產(chǎn)生,則重新執(zhí)行步驟S12;若為否,說明所有錯(cuò)誤校驗(yàn)區(qū)塊P(j)均已被產(chǎn)生,則該流程結(jié)束。
如圖6所示,是本發(fā)明多磁盤容錯(cuò)方法的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)產(chǎn)生流程圖。首先中央處理器1初始化參數(shù),令n>=4,k=0,n為儲(chǔ)存數(shù)據(jù)的磁盤個(gè)數(shù)(步驟S20),并作j=k,i=0(步驟S21),其中k為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的標(biāo)號(hào)。中央處理器1讀取磁盤陣列3中與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組為同一組的一個(gè)數(shù)據(jù)區(qū)塊D(i,j)(步驟S22),并作i=i+1和j=(j+p-1)mod p運(yùn)算(p為選定的質(zhì)數(shù)),即中央處理器1準(zhǔn)備讀取下一個(gè)與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組屬于同一組的數(shù)據(jù)區(qū)塊D(i+j)(步驟S23)。中央處理器1判斷j是否小于p-1(步驟S24),若為否,則轉(zhuǎn)向步驟S23;若為否,則判斷i是否小于n,即磁盤陣列30中與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)是否全部被讀取完畢(步驟S25)。若為是,說明磁盤陣列30中與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組屬于同一組的數(shù)據(jù)區(qū)塊D(i,j)還未被讀取完畢,則轉(zhuǎn)向步驟S22,直到屬于同一組的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組的數(shù)據(jù)區(qū)塊D(i,j)全部被讀取完畢為止;若為否,則異或運(yùn)算單元2將所有讀取的數(shù)據(jù)區(qū)塊D(i,j)作XOR運(yùn)算(步驟S26)。中央處理器1將XOR運(yùn)算結(jié)果寫入對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)中(步驟S27),再作k=k+1運(yùn)算,即中央處理器1再為下一組數(shù)據(jù)區(qū)塊D(i,j)產(chǎn)生對(duì)應(yīng)的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)(步驟S28)。最后判斷k是否小于p,即所有錯(cuò)誤校驗(yàn)區(qū)塊Q(k)是否都已被產(chǎn)生(步驟S29)。若為是,說明還有錯(cuò)誤校驗(yàn)區(qū)塊Q(k)未被產(chǎn)生完畢,則流程轉(zhuǎn)向步驟S22;若為否,說明所有錯(cuò)誤校驗(yàn)區(qū)塊錯(cuò)誤校驗(yàn)區(qū)塊Q(k)均已被產(chǎn)生完畢,則該流程結(jié)束。
如圖7所示,是本發(fā)明多磁盤容錯(cuò)方法的數(shù)據(jù)區(qū)塊讀寫流程圖。分別采用D′(i,j)、P′(j)和Q′(k)表示中央處理器1將要重新寫入磁盤30中新的數(shù)據(jù)區(qū)塊D(i,j)、錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k),其中k=((i+j)mod p),其中p為選定的質(zhì)數(shù)。首先,地址轉(zhuǎn)換單元13將邏輯地址轉(zhuǎn)換成物理地址(步驟S31)。接著中央處理器1讀取原來儲(chǔ)存于磁盤30的物理地址中的數(shù)據(jù)區(qū)塊D(i,j)、錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)(步驟S32),并采用演算法P′(j)=P(j)D(i,j)D′(i,j)來計(jì)算P′(j)(步驟S33),采用演算法Q′(k)=Q(k)D(i,j)D′(i,j)來計(jì)算Q′(k)(步驟S34)。中央處理器1將需寫入的新數(shù)據(jù)區(qū)塊D′(i,j)和計(jì)算出錯(cuò)誤校驗(yàn)區(qū)塊P′(j)和(j)Q′(k)分別寫入磁盤30中(步驟S35)。
如圖8所示,是本發(fā)明多磁盤容錯(cuò)方法的利用錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法重建單個(gè)損毀數(shù)據(jù)區(qū)塊流程圖。當(dāng)發(fā)現(xiàn)磁盤30的數(shù)據(jù)區(qū)塊D(i,j)損毀時(shí),可利用錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組上同組的其它完好數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊P(j)作XOR運(yùn)算來計(jì)算出損毀數(shù)據(jù)區(qū)塊D(i,j)。中央處理器1讀取磁盤30中與該損毀數(shù)據(jù)區(qū)塊D(i,j)屬于同一組的錯(cuò)誤校驗(yàn)區(qū)塊P(j)(步驟S41),接著讀取與該損毀數(shù)據(jù)區(qū)塊D(i,j)在錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組上為同一組的其它完好的數(shù)據(jù)區(qū)塊D(i,j)(步驟S42)。異或運(yùn)算單元2將所有完好的數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊P(j)作XOR運(yùn)算,其結(jié)果即為損毀的數(shù)據(jù)區(qū)塊D(i,j)(步驟S43)。
如圖9所示,是本發(fā)明多磁盤容錯(cuò)方法的利用錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法重建單個(gè)損毀數(shù)據(jù)區(qū)塊流程圖。當(dāng)發(fā)現(xiàn)磁盤30的數(shù)據(jù)區(qū)塊D(i,j)損毀時(shí),也可利用錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組上同組的其它完好的數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)作XOR運(yùn)算來計(jì)算出損毀的數(shù)據(jù)區(qū)塊D(i,j)。中央處理器1讀取磁盤30中與該損毀數(shù)據(jù)區(qū)塊D(i,j)屬于同一組的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)(步驟S51),接著讀取與該損毀數(shù)據(jù)區(qū)塊D(i,j)在錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組上為同一組的其它完好的其它數(shù)據(jù)區(qū)塊D(i,j)(步驟S52)。最后異或運(yùn)算單元2將所有讀取的數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)作XOR運(yùn)算,其結(jié)果即為損毀的損毀數(shù)據(jù)區(qū)塊D(i,j)(步驟S53)。
如圖10所示,是本發(fā)明多磁盤容錯(cuò)方法的修補(bǔ)單個(gè)損毀磁盤流程圖。一般磁盤陣列3遇到磁盤有損毀時(shí),將會(huì)用新磁盤(系統(tǒng)中備用磁盤)取代損毀磁盤,即利用磁盤陣列3中其它完好磁盤的數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊P(j)或錯(cuò)誤校驗(yàn)區(qū)塊Q(k)來重建原來儲(chǔ)存于損毀磁盤的數(shù)據(jù),重建完的數(shù)據(jù)即可寫入新磁盤。首先取出損毀磁盤,置入新磁盤,并令n>=4,j=0(步驟S61)。中央處理器1利用上述錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法或者錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法來重建原來儲(chǔ)存于損毀磁盤30中的一數(shù)據(jù)區(qū)塊D(i,j)(步驟S62),并將重建出的數(shù)據(jù)區(qū)塊D(i,j)寫入新磁盤(步驟S63)。然后中央處理器1作j=j(luò)+1運(yùn)算,即準(zhǔn)備重建該損毀磁盤30的下一個(gè)數(shù)據(jù)區(qū)塊D(i,j)(步驟S64)。最后中央處理器1判斷j是否小于p,即檢查原來儲(chǔ)存于第i個(gè)損毀磁盤30上的所有數(shù)據(jù)是否均已被重建(步驟S65)。若為是,說明還有原來儲(chǔ)存于第i個(gè)損毀磁盤30上的數(shù)據(jù)未被重建,則重新執(zhí)行步驟S62;若為否,說明所有原來在第i個(gè)損毀磁盤30上的數(shù)據(jù)均已被重建,則該流程結(jié)束。
如圖11所示,是本發(fā)明多磁盤容錯(cuò)方法的修補(bǔ)兩個(gè)損毀磁盤流程圖。假設(shè)損毀的兩個(gè)磁盤30分別為a和b(其中a<b),首先中央處理器1初始化參數(shù),即令n>=4,a<b,y=b-a-1和j=0,其中j表示損毀磁盤a或b上第j個(gè)數(shù)據(jù)區(qū)塊D(i,j),y為一個(gè)中間參變量(步驟S71)。中央處理器1作k=((a+y)mod p)運(yùn)算,其中k為一個(gè)中間參變量,p為一個(gè)選定的任意質(zhì)數(shù)(步驟S72)。中央處理器1利用錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法來重建數(shù)據(jù)區(qū)塊D(a,y)(步驟S73),并將重建出來的D(a,y)寫入新磁盤(步驟S74)。接著中央處理器1利用錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法來重建數(shù)據(jù)區(qū)塊D(b,y)(步驟S75),并將D(b,y)寫入新磁盤(步驟S76)。而后中央處理器1作y=((y+(b-a))mod p)和j=j(luò)+1運(yùn)算,即為重建下一個(gè)損毀數(shù)據(jù)區(qū)塊D(i,j)作準(zhǔn)備(步驟S77),并判斷j是否小于n-1,即判斷損毀磁盤30中的所有數(shù)據(jù)區(qū)塊D(i,j)是否全部被重建完畢(步驟S78)。若為是,說明還有損毀磁盤30中的數(shù)據(jù)區(qū)塊D(i,j)未被重建完畢,則重新執(zhí)行步驟S72;若為否,說明損毀磁盤30中所有數(shù)據(jù)區(qū)塊D(i,j)已全部被重建完畢,則完成修補(bǔ)兩個(gè)損毀磁盤30的數(shù)據(jù)。
當(dāng)磁盤陣列3中有兩個(gè)磁盤30損毀時(shí),可用兩個(gè)新磁盤(系統(tǒng)中備用磁盤)來取代損毀磁盤,然后用其它完好磁盤的數(shù)據(jù)區(qū)塊D(i,j)重建原來儲(chǔ)存于損毀磁盤中的數(shù)據(jù)。下面舉一個(gè)具體例子(以儲(chǔ)存數(shù)據(jù)的磁盤個(gè)數(shù)n=5,質(zhì)數(shù)p=7為例)說明逐步修補(bǔ)每個(gè)損毀的數(shù)據(jù)區(qū)塊D(i,j)的步驟。假設(shè)損毀磁盤30分別為Disk0與Disk3,其可用如下表3所示(其中“x”代表損毀的數(shù)據(jù)區(qū)塊D(i,j))表3
先檢查錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組P(0)=D(0,0)D(1,0)D(2,0)D(3,0)D(4,0);P(1)=D(0,1)D(1,1)D(2,1)D(3,1)D(4,1);P(2)=D(0,2)D(1,2)D(2,2)D(3,2)D(4,2);P(3)=D(0,3)D(1,3)D(2,3)D(3,3)D(4,3);P(4)=D(0,4)D(1,4)D(2,4)D(3,4)D(4,4);P(5)=D(0,5)D(1,5)D(2,5)D(3,5)D(4,5).
由于每一組錯(cuò)誤校驗(yàn)區(qū)塊P(j)的數(shù)據(jù)區(qū)塊D(i,j)都有兩個(gè)損毀,故目前無法以錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法來修補(bǔ)。再檢查錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組Q(0)=D(0,0)D(4,3)D(3,4)D(2,5);Q(1)=D(1,0)D(0,1)D(4,4)D(3,5);Q(2)=D(2,0)D(1,1)D(0,2)D(4,5);
Q(3)=D(3,0)D(2,1)D(1,2)D(0,3);Q(4)=D(4,0)D(3,1)D(2,2)D(1,3)D(0,4);Q(5)=D(4,1)D(3,2)D(2,3)D(4,1)D(0,5);Q(6)=D(4,2)D(3,3)D(2,4)D(1,5).
發(fā)現(xiàn)Q(2)這組只有一個(gè)數(shù)據(jù)區(qū)塊D(0,2)損毀,其余均完好,故可修補(bǔ)D(0,2)=Q(2)D(2,0)D(1,1)D(4,3);繼續(xù)檢查錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組的其它分組,又發(fā)現(xiàn)Q(6)這組只有一個(gè)數(shù)據(jù)區(qū)塊D(3,3)損毀,其余均完好,故可修補(bǔ)D(3,3)=Q(6)D(4,2)D(2,4)D(1,5)。修補(bǔ)完后可得如下表4結(jié)果表4
此時(shí)發(fā)現(xiàn),又可通過P(2)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(3,2)=P(2)D(0,2)D(1,2)D(2,2)D(4,2);檢查錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組的其它分組,又可通過P(3)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(0,3)=P(3)D(1,3)D(2,3)D(3,3)D(4,3)。修補(bǔ)完可得如下表5結(jié)果表5
此時(shí)又可利用Q(3)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(3,0)=Q(3)D(2,1)D(1,2)D(0,3);繼續(xù)檢查錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組的其它分組,又可通過Q(5)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(0,5)=Q(5)D(4,1)D(3,2)D(2,3)D(4,1)。修補(bǔ)完后可得如下表6結(jié)果表6
此時(shí)發(fā)現(xiàn),又可通過P(0)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(0,0)=P(0)D(1,0)D(2,0)D(3,0)D(4,0);繼續(xù)檢查錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組的其它分組,又可通過P(5)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(3,5)=P(5)D(1,5)D(2,5)D(3,5)D(4,5)。修補(bǔ)完后可得如下表7結(jié)果表7
此時(shí)又可利用Q(0)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(3,4)=Q(0)D(0,0)D(4,3)D(2,5);繼續(xù)檢查錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組的其它分組,又可通過Q(1)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(0,1)=Q(1)D(1,0)D(3,5)D(4,4)。修補(bǔ)完后可得如下表8結(jié)果表8
此時(shí)發(fā)現(xiàn),又可通過P(1)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(3,1)=P(1)D(0,1)D(1,1)D(2,1)D(4,1);繼續(xù)檢查錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組的其它分組,又可通過P(4)和其同組數(shù)據(jù)區(qū)塊D(i,j)修補(bǔ)D(0,4)=P(4)D(1,4)D(2,4)D(3,4)D(4,4)。修補(bǔ)完后可得如下表9結(jié)果表9
如此,便分別將儲(chǔ)存于磁盤Disk0與Disk3上所有損毀的數(shù)據(jù)區(qū)塊D(i,j)重建了出來。
權(quán)利要求
1.一種多磁盤容錯(cuò)系統(tǒng),通過一磁盤陣列通過一系統(tǒng)總線連接一中央處理器和一異或運(yùn)算(XOR)單元,可于磁盤陣列中修補(bǔ)一個(gè)或兩個(gè)損毀的磁盤,其特征在于,該系統(tǒng)包括一磁盤陣列包括多個(gè)磁盤,組成該磁盤陣列的磁盤個(gè)數(shù)為大于等于4,該多個(gè)磁盤用于儲(chǔ)存多個(gè)數(shù)據(jù)段,該多個(gè)數(shù)據(jù)段包括多個(gè)數(shù)據(jù)區(qū)塊D(i,j);兩組錯(cuò)誤校驗(yàn)段,是用于所述的數(shù)據(jù)段的同位校驗(yàn)檢查和重建損毀磁盤的數(shù)據(jù)區(qū)塊D(i,j),進(jìn)而修補(bǔ)該磁盤陣列中損毀磁盤的數(shù)據(jù),該兩組錯(cuò)誤校驗(yàn)段包括一錯(cuò)誤校驗(yàn)段P,該錯(cuò)誤校驗(yàn)段P包括多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P(j),每一錯(cuò)誤校驗(yàn)區(qū)塊P(j)的數(shù)據(jù)為與該錯(cuò)誤校驗(yàn)區(qū)塊P(j)為同一組的所有數(shù)據(jù)區(qū)塊D(i,j)的全部XOR值;一錯(cuò)誤校驗(yàn)段Q,該錯(cuò)誤校驗(yàn)段Q包括有多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q(k),每一錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的數(shù)據(jù)為數(shù)據(jù)區(qū)塊D(i,j)中的((i+j)modp)的值與標(biāo)號(hào)k值相同的所有數(shù)據(jù)區(qū)塊D(i,j)的全部XOR的值;一中央處理器,是用于求模數(shù)運(yùn)算、移位運(yùn)算和地址轉(zhuǎn)換運(yùn)算與控制操作;和一異或運(yùn)算單元,是用于產(chǎn)生錯(cuò)誤校驗(yàn)區(qū)塊P(j)、錯(cuò)誤校驗(yàn)區(qū)塊Q(k)和重建損毀數(shù)據(jù)區(qū)塊D(i,j)時(shí)做XOR運(yùn)算。
2.如權(quán)利要求1所述的多磁盤容錯(cuò)系統(tǒng),其特征在于,所述的多個(gè)數(shù)據(jù)段和兩組錯(cuò)誤校驗(yàn)段于所述的磁盤陣列中做移位旋轉(zhuǎn)后組成不同的數(shù)據(jù)集,該不同數(shù)據(jù)集排列成上述磁盤陣列。
3.如權(quán)利要求1所述的多磁盤容錯(cuò)系統(tǒng),其特征在于,所述的中央處理器還包括有一求模數(shù)運(yùn)算單元、一移位運(yùn)算單元和一地址轉(zhuǎn)換單元。
4.如權(quán)利要求1所述的多磁盤容錯(cuò)系統(tǒng),其特征在于,所述的異或運(yùn)算單元可包含于中央處理器中,也可獨(dú)立于中央處理器外。
5.一種多磁盤容錯(cuò)方法,通過對(duì)碟陣列中的每一數(shù)據(jù)區(qū)塊D(i,j)在邏輯上進(jìn)行一定規(guī)則的排列、分組和讀寫操作,可于磁盤陣列中修補(bǔ)單個(gè)或兩個(gè)損毀的磁盤,其特征在于,該方法包括為每一數(shù)據(jù)區(qū)塊D(i,j)在邏輯上分別進(jìn)行兩次不同分組方法的分組,一組記為錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組,另一組記為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組;標(biāo)示每一個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P(j),將數(shù)據(jù)區(qū)塊D(i,j)中的j值與錯(cuò)誤校驗(yàn)區(qū)塊P(j)的標(biāo)號(hào)j相同的數(shù)據(jù)區(qū)塊D(i,j)劃分為錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組中;標(biāo)示每一個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q(k),將數(shù)據(jù)區(qū)塊D(i,j)中的((i+j)mod p)值與錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的標(biāo)號(hào)k相同的數(shù)據(jù)區(qū)塊D(i,j)劃分為錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組中;檢查磁盤陣列中其它磁盤的數(shù)據(jù)區(qū)塊D(i,j)、錯(cuò)誤校驗(yàn)區(qū)塊P(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k);利用一錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法重建第一個(gè)損毀磁盤的一數(shù)據(jù)區(qū)塊D(i,j),并將其寫入一新磁盤;利用一錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法重建第二個(gè)損毀磁盤的另一數(shù)據(jù)區(qū)塊D(i,j),并將其寫入一新磁盤;分別判斷兩個(gè)損毀磁盤的數(shù)據(jù)區(qū)塊是否全部重建完畢。
6.如權(quán)利要求5所述的多磁盤容錯(cuò)方法,其特征在于,其中所述的錯(cuò)誤校驗(yàn)區(qū)塊P(j)的數(shù)據(jù)為所屬錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組上所有數(shù)據(jù)區(qū)塊D(i,j)的全部XOR值。
7.如權(quán)利要求5所述的多磁盤容錯(cuò)方法,其特征在于,其中所述的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)的數(shù)據(jù)為所有與該錯(cuò)誤校驗(yàn)區(qū)塊Q(k)具有相同標(biāo)示的數(shù)據(jù)區(qū)塊D(i,j)的全部XOR值。
8.如權(quán)利要求5所述的多磁盤容錯(cuò)方法,其特征在于,所述的利用錯(cuò)誤校驗(yàn)區(qū)塊P(j)方法重建損毀的數(shù)據(jù)區(qū)塊的方法為利用屬于錯(cuò)誤校驗(yàn)區(qū)塊P(j)分組上同一組的其它未損毀數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊P(j)作XOR運(yùn)算來計(jì)算損毀的數(shù)據(jù)區(qū)塊。
9.如權(quán)利要求5所述的多磁盤容錯(cuò)方法,其特征在于,所述的利用錯(cuò)誤校驗(yàn)區(qū)塊Q(k)方法重建損毀的數(shù)據(jù)區(qū)塊的方法為利用屬于錯(cuò)誤校驗(yàn)區(qū)塊Q(k)分組上同一組的其它未損毀的數(shù)據(jù)區(qū)塊D(i,j)和錯(cuò)誤校驗(yàn)區(qū)塊Q(k)作XOR運(yùn)算計(jì)算損毀的數(shù)據(jù)區(qū)塊。
10.如權(quán)利要求5所述的多磁盤容錯(cuò)方法,其特征在于,其中涉及于磁盤陣列中讀寫磁盤中數(shù)據(jù)區(qū)塊的方法包括將所述的磁盤陣列中的邏輯地址轉(zhuǎn)換成一磁盤的物理地址;讀取物理地址中數(shù)據(jù)區(qū)塊D(i,j)、錯(cuò)誤校驗(yàn)區(qū)塊P(j)和Q(k);計(jì)算一需寫入新的錯(cuò)誤校驗(yàn)區(qū)塊P′(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q′(k);將需要寫入的數(shù)據(jù)區(qū)塊D′(i,j)、新的錯(cuò)誤校驗(yàn)區(qū)塊P′(j)和錯(cuò)誤校驗(yàn)區(qū)塊Q′(k)寫入磁盤的物理地址中。
11.如權(quán)利要求10所述的多磁盤容錯(cuò)方法,其特征在于,所述的邏輯地址轉(zhuǎn)換成物理地址的方法為先確定數(shù)據(jù)區(qū)塊D(i,j)所屬的數(shù)據(jù)集,再計(jì)算該數(shù)據(jù)區(qū)塊D(i,j)的物理地址。
12.如權(quán)利要求10所述的多磁盤容錯(cuò)方法,其特征在于,所述的計(jì)算新的錯(cuò)誤校驗(yàn)區(qū)塊P′(j)的方法為將所述的錯(cuò)誤校驗(yàn)區(qū)塊P(j)、數(shù)據(jù)區(qū)塊D(i,j)和新的數(shù)據(jù)區(qū)塊D′(i,j)作XOR運(yùn)算。
13.如權(quán)利要求10所述的多磁盤容錯(cuò)方法,其特征在于,所述的計(jì)算新的錯(cuò)誤校驗(yàn)區(qū)塊Q′(k)的方法為將所述的錯(cuò)誤校驗(yàn)區(qū)塊Q(k)、數(shù)據(jù)區(qū)塊D(i,j)和新的數(shù)據(jù)區(qū)塊D′(i,j)作XOR運(yùn)算。
全文摘要
一種多磁盤容錯(cuò)系統(tǒng),該系統(tǒng)包括一中央處理器、一異或(XOR)運(yùn)算單元、一磁盤陣列和一系統(tǒng)總線。中央處理器包括一求模數(shù)運(yùn)算單元、一移位運(yùn)算單元和一地址轉(zhuǎn)換單元;磁盤陣列包括多個(gè)磁盤,其磁盤數(shù)量(n>=4)不受質(zhì)數(shù)條件限制,每一磁盤用于儲(chǔ)存多數(shù)據(jù)段、一組錯(cuò)誤校驗(yàn)段P和一組錯(cuò)誤校驗(yàn)段Q。數(shù)據(jù)段由多個(gè)數(shù)據(jù)區(qū)塊組成,錯(cuò)誤校驗(yàn)段P由多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊P(j)組成,錯(cuò)誤校驗(yàn)段Q由多個(gè)錯(cuò)誤校驗(yàn)區(qū)塊Q(k)組成。本發(fā)明還提供一種多磁盤容錯(cuò)方法,其通過使用少量XOR運(yùn)算對(duì)磁盤陣列中的數(shù)據(jù)區(qū)塊進(jìn)行兩次不同分組,并規(guī)則排列有效利用磁盤空間。實(shí)施本發(fā)明,能對(duì)磁盤陣列中損毀磁盤的數(shù)據(jù)區(qū)塊進(jìn)行重建,進(jìn)而修補(bǔ)單個(gè)損毀磁盤或兩個(gè)損毀磁盤的數(shù)據(jù)。
文檔編號(hào)G06F11/10GK1722096SQ20041002814
公開日2006年1月18日 申請(qǐng)日期2004年7月13日 優(yōu)先權(quán)日2004年7月13日
發(fā)明者陳勉志 申請(qǐng)人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
南陵县| 洛浦县| 高碑店市| 黔东| 泗水县| 龙游县| 永安市| 金川县| 平顺县| 新河县| 呈贡县| 贺州市| 乌兰察布市| 启东市| 刚察县| 紫金县| 定陶县| 垣曲县| 渝中区| 青田县| 凌云县| 永兴县| 焉耆| 探索| 澜沧| 巴青县| 北辰区| 拜泉县| 当涂县| 巨鹿县| 江川县| 临沭县| 教育| 丁青县| 新河县| 图们市| 平江县| 汕头市| 开阳县| 巫溪县| 博客|