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

用于分級(jí)存儲(chǔ)管理系統(tǒng)的轉(zhuǎn)換廉價(jià)磁盤冗余陣列的制作方法

文檔序號(hào):6412725閱讀:930來(lái)源:國(guó)知局
專利名稱:用于分級(jí)存儲(chǔ)管理系統(tǒng)的轉(zhuǎn)換廉價(jià)磁盤冗余陣列的制作方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及數(shù)字?jǐn)?shù)據(jù)存儲(chǔ)系統(tǒng),特別涉及對(duì)通常被稱為“廉價(jià)磁盤冗余陣列(RAID)”的獨(dú)立存儲(chǔ)設(shè)備冗余陣列的管理。
現(xiàn)代計(jì)算機(jī)系統(tǒng)的擴(kuò)充數(shù)據(jù)存儲(chǔ)需要大容量的海量數(shù)據(jù)存儲(chǔ)設(shè)備。常用的存儲(chǔ)設(shè)備是旋轉(zhuǎn)式磁硬盤驅(qū)動(dòng)器,其包括多個(gè)組成部分的復(fù)雜機(jī)械結(jié)構(gòu)容易導(dǎo)致發(fā)生故障。一個(gè)典型的計(jì)算機(jī)系統(tǒng)包含多個(gè)這樣的單元。一個(gè)存儲(chǔ)單元的故障對(duì)系統(tǒng)來(lái)說(shuō)是一個(gè)極具破壞性的事件。很多系統(tǒng)直到損壞的單元被修復(fù)或替換以及丟失的數(shù)據(jù)被恢復(fù)之后才能運(yùn)行。
隨著計(jì)算機(jī)系統(tǒng)變得更大、速度更快和更可靠,對(duì)存儲(chǔ)設(shè)備的存儲(chǔ)容量、速度和可靠性的需求也相應(yīng)增加。簡(jiǎn)單疊加存儲(chǔ)單元以增加存儲(chǔ)容量將導(dǎo)致任一單元出現(xiàn)故障的概率相應(yīng)增加。另一方面,只增大現(xiàn)有單元的大小而沒(méi)有其它任何改進(jìn)將導(dǎo)致速度的降低并對(duì)提高可靠性無(wú)益。
最近已考慮到用以提供數(shù)據(jù)冗余性等級(jí)的直接存取存儲(chǔ)設(shè)備陣列。這種陣列通常被稱為“RAID”(獨(dú)立(或廉價(jià))磁盤的冗余陣列)。在由Patterson、Gibson和Katz于1988年6月在ACM SIGMOD會(huì)議上發(fā)表的題為“A Case for Redundant Arrays of Inexpensive Disks(RAID)”的文章中,已經(jīng)對(duì)提供不同形式的冗余性的各種類型的RAID進(jìn)行了描述。Patterson等人分出了五種類型的RAID,其等級(jí)被分別指定為1到5。Patterson命名法已成為一種工業(yè)標(biāo)準(zhǔn)。
RAID的最初原理是用多個(gè)相對(duì)價(jià)廉的、小的磁盤驅(qū)動(dòng)器來(lái)提供一個(gè)價(jià)格昂貴的大的磁盤驅(qū)動(dòng)器的容量。而且較小的驅(qū)動(dòng)器速度較快,因?yàn)樗鼈兡軌蛲瑫r(shí)讀或?qū)?“存取”)數(shù)據(jù)。另外,由于小驅(qū)動(dòng)器的成本很低,所以可以還包括附加的(冗余)磁盤驅(qū)動(dòng)器,從而結(jié)合特定的存儲(chǔ)管理技術(shù),當(dāng)存儲(chǔ)在一個(gè)小驅(qū)動(dòng)器上的數(shù)據(jù)出現(xiàn)故障時(shí),該磁盤驅(qū)動(dòng)器允許系統(tǒng)恢復(fù)該數(shù)據(jù)。這樣,RAID就能夠允許增加后的容量、性能和可靠性。隨著RAID在市場(chǎng)上得到認(rèn)可,其使用并不僅限于小容量的驅(qū)動(dòng)器,現(xiàn)在的RAID系統(tǒng)被配置以各種容量的驅(qū)動(dòng)器。而且,RAID系統(tǒng)可由其它類型的存儲(chǔ)設(shè)備構(gòu)成,如光盤驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)器、軟盤驅(qū)動(dòng)器等。如這里所用,術(shù)語(yǔ)“RAID”和“RAID系統(tǒng)”不限于任何特定類型的存儲(chǔ)設(shè)備。
利用Patterson命名法,RAID等級(jí)1為一種鏡像配置。按照RAID-1存儲(chǔ)器結(jié)構(gòu),每個(gè)數(shù)據(jù)單元被存儲(chǔ)在位于一個(gè)陣列中的兩個(gè)獨(dú)立存儲(chǔ)設(shè)備上。因此,如果一個(gè)設(shè)備發(fā)生故障,能夠從第二設(shè)備上恢復(fù)數(shù)據(jù)。

圖1示出了按照RAID-1存儲(chǔ)器結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù)。如圖1所示,存在設(shè)備1上的信息(A,B,C,D)鏡像于設(shè)備2中(A′,B′,C′,D′)。同樣地,存在設(shè)備3上的信息(E,F(xiàn),G,H)鏡像于設(shè)備4中(E′,F(xiàn)′,G′,H′),而存在設(shè)備5上的信息(I,J,K,L)鏡像于設(shè)備6中(I′,J′,K′,L′)。
根據(jù)Patterson的命名法,RAID等級(jí)3及更高等級(jí)(RAID-3,RAID-4,RAID-5)將奇偶性記錄用于數(shù)據(jù)冗余性。通過(guò)將存儲(chǔ)在該陣列中不同存儲(chǔ)單元的一個(gè)特定位置上的所有數(shù)據(jù)記錄進(jìn)行異或運(yùn)算而得到奇偶性記錄。換言之,在一個(gè)由N個(gè)存儲(chǔ)單元構(gòu)成的陣列中,位于一個(gè)存儲(chǔ)單元上的一個(gè)特定位置的數(shù)據(jù)塊中的每一位與其它(N-1)個(gè)存儲(chǔ)單元中該位置上的每一位進(jìn)行異或以生成一個(gè)由奇偶校驗(yàn)位構(gòu)成的數(shù)據(jù)塊;然后將該奇偶性數(shù)據(jù)塊存儲(chǔ)在剩余的(第N個(gè))存儲(chǔ)單元的該位置上。如果陣列中的任何存儲(chǔ)單元發(fā)生故障,能夠通過(guò)對(duì)位于剩余設(shè)備的同一位置上的數(shù)據(jù)塊及其相應(yīng)的奇偶性數(shù)據(jù)塊進(jìn)行異或而重新生成位于故障單元上任何位置處的數(shù)據(jù)。
在RAID-3中,不同磁盤驅(qū)動(dòng)器上的所有讀/寫(xiě)致動(dòng)器一致動(dòng)作以訪問(wèn)位于每個(gè)驅(qū)動(dòng)器的同一位置上的數(shù)據(jù)。RAID-4和RAID-5的特征還在于獨(dú)立地操作磁盤驅(qū)動(dòng)器單元中的讀/寫(xiě)致動(dòng)器。換言之,一個(gè)磁盤驅(qū)動(dòng)器單元上的每個(gè)讀/寫(xiě)頭可以自由存取磁盤任何位置上的數(shù)據(jù),而與陣列中其它單元正在訪問(wèn)數(shù)據(jù)的位置無(wú)關(guān)。
按照RAID-4,信息被存儲(chǔ)在“數(shù)據(jù)塊”中,而每個(gè)數(shù)據(jù)塊被存儲(chǔ)在不同的存儲(chǔ)設(shè)備中。在此文中,術(shù)語(yǔ)“數(shù)據(jù)塊”是指一個(gè)由一個(gè)或多個(gè)扇區(qū)的數(shù)據(jù)構(gòu)成的數(shù)據(jù)相關(guān)單元,可從一個(gè)存儲(chǔ)設(shè)備單獨(dú)訪問(wèn)該數(shù)據(jù)。包括這樣一個(gè)RAID-4存儲(chǔ)器結(jié)構(gòu)的信息被稱為一個(gè)“數(shù)據(jù)條”。每個(gè)數(shù)據(jù)條包括存在陣列中的幾個(gè)設(shè)備202a-202f中的部分信息。在此文中,術(shù)語(yǔ)“數(shù)據(jù)條”是指一組數(shù)據(jù)塊,其中每個(gè)數(shù)據(jù)塊最好被存在與另一個(gè)存儲(chǔ)設(shè)備中的另一個(gè)數(shù)據(jù)塊地址相關(guān)的地址上,也可以包括一組數(shù)據(jù)塊,其中每個(gè)(或一些)數(shù)據(jù)塊被存在與被存在其它設(shè)備中的其它數(shù)據(jù)塊的地址不相關(guān)的地址上。圖2示出了按照RAID-4存儲(chǔ)的4個(gè)數(shù)據(jù)條204a,204b,204c和204d。如圖2所示,一個(gè)數(shù)據(jù)條204a包括一個(gè)存在設(shè)備1中的數(shù)據(jù)塊201,一個(gè)存在設(shè)備2中的數(shù)據(jù)塊203,一個(gè)存在設(shè)備3中的數(shù)據(jù)塊205,一個(gè)存在設(shè)備4中的數(shù)據(jù)塊207和一個(gè)存在設(shè)備5中的數(shù)據(jù)塊209。另外,設(shè)備202f被用于存儲(chǔ)奇偶性數(shù)據(jù)塊211中的“奇偶性”信息。其它的每個(gè)設(shè)備用于存儲(chǔ)用戶信息。如果任何一個(gè)存儲(chǔ)設(shè)備發(fā)生故障,則通過(guò)對(duì)存在其它每個(gè)設(shè)備中的數(shù)據(jù)條的保留信息進(jìn)行邏輯異或來(lái)恢復(fù)存在故障設(shè)備中的信息。
在具有獨(dú)立讀/寫(xiě)能力(即RAID-4或RAID-5)的奇偶性保護(hù)磁盤陣列中所遇到的一個(gè)問(wèn)題是在對(duì)一個(gè)數(shù)據(jù)塊進(jìn)行寫(xiě)操作的任何時(shí)候,與奇偶性數(shù)據(jù)塊的更新相關(guān)的系統(tǒng)開(kāi)銷。例如,當(dāng)改變?cè)O(shè)備1的數(shù)據(jù)塊201中的信息(即,寫(xiě)入“新數(shù)據(jù)”以更新“舊數(shù)據(jù)”)時(shí),通常對(duì)舊數(shù)據(jù)、來(lái)自奇偶性數(shù)據(jù)塊211的舊奇偶性信息和新數(shù)據(jù)進(jìn)行異或以產(chǎn)生更新后的奇偶性信息。新數(shù)據(jù)和新的奇偶性信息被寫(xiě)入它們各自的數(shù)據(jù)塊中。這些操作可通過(guò)按照不同順序的命令執(zhí)行,但它們通常需要在每次更新數(shù)據(jù)時(shí)讀兩個(gè)數(shù)據(jù)塊(舊數(shù)據(jù)和舊奇偶性信息)和寫(xiě)兩個(gè)數(shù)據(jù)塊(新數(shù)據(jù)和新奇偶性信息)。在利用高速緩存和其它技術(shù)克服此問(wèn)題的同時(shí),對(duì)一個(gè)RAID-4系統(tǒng)中的奇偶性磁盤存在過(guò)分使用的傾向。
在此作為參考引用的、被授予Clark等人的美國(guó)專利4,761,785描述了一種獨(dú)立的讀/寫(xiě)陣列,其中基本均勻地將奇偶性數(shù)據(jù)塊分配給陣列中的磁盤存儲(chǔ)單元。Patterson等人將這種類型的陣列指定為RAID-5。圖3示出了一個(gè)RAID-5配置。將奇偶性數(shù)據(jù)塊基本均勻地分配給陣列中的磁盤分擔(dān)了更新奇偶性信息所造成的負(fù)擔(dān),從而避免了在將所有奇偶性記錄保存在一個(gè)指定磁盤驅(qū)動(dòng)器單元上時(shí)可能出現(xiàn)的潛在運(yùn)行瓶頸,即使在RAID-5系統(tǒng)以及RAID-4系統(tǒng)中一般都使用相同的讀-修改-寫(xiě)操作來(lái)寫(xiě)數(shù)據(jù)。RAID-5是Patterson所描述的最高等級(jí)的RAID。
每種不同的存儲(chǔ)器結(jié)構(gòu)格式都具有其自身的特性,這種特性使得該格式比其它任何格式都更適于存儲(chǔ)特定的數(shù)據(jù)。同時(shí),不存在一種公認(rèn)為高級(jí)的格式。例如,從存儲(chǔ)每個(gè)字節(jié)所花費(fèi)的成本上看,RAID-1是最昂貴的,奇偶性保護(hù)格式的RAID較少,而非冗余存儲(chǔ)則更少。非冗余存儲(chǔ)與RAID-1通常比奇偶性保護(hù)格式速度更快,因?yàn)樵谄媾夹员Wo(hù)格式中更新數(shù)據(jù)的難度較大。奇偶性保護(hù)和鏡像格式都是冗余的,但鏡像格式更為堅(jiān)固,因?yàn)榧词箖蓚€(gè)存儲(chǔ)設(shè)備都發(fā)生故障,只要發(fā)生故障的兩個(gè)設(shè)備中存儲(chǔ)了不同的信息,就可以恢復(fù)存儲(chǔ)在這兩個(gè)設(shè)備上的所有信息。例如,參照?qǐng)D1,如果設(shè)備1和設(shè)備3都發(fā)生故障,存儲(chǔ)在這兩個(gè)設(shè)備中的信息仍保留在設(shè)備2和4中。因此,能夠恢復(fù)故障存儲(chǔ)設(shè)備中的數(shù)據(jù)。但是,對(duì)于奇偶性保護(hù)配置來(lái)說(shuō),發(fā)生故障的兩個(gè)設(shè)備中的所有數(shù)據(jù)都被丟失,因?yàn)槠媾夹员Wo(hù)配置需要來(lái)自N-1個(gè)設(shè)備的可用信息以重構(gòu)存儲(chǔ)在一個(gè)故障設(shè)備中的信息,而N是RAID-4數(shù)據(jù)條中的設(shè)備總數(shù)。
由于在決定是否以一種特定的配置來(lái)組織信息時(shí)必須在速度、堅(jiān)固性和所需空間之間進(jìn)行權(quán)衡,所以能夠?qū)㈥嚵械闹辽僖徊糠种付榉侨哂喔袷?,一部分為鏡像格式而另一部分為奇偶性保護(hù)格式將是非常有利的。動(dòng)態(tài)地將一個(gè)陣列的一部分指定為一種格式或另一種格式(即來(lái)回將陣列的部分從一種格式轉(zhuǎn)換成另一種格式)則是更加有利的。通過(guò)如下方式可以實(shí)現(xiàn)這種轉(zhuǎn)換首先將來(lái)自被重新格式化的陣列部分的所有數(shù)據(jù)復(fù)制到一個(gè)緩沖器(可位于陣列的內(nèi)部或外部),然后重新格式化陣列的該部分并以新的格式反向復(fù)制數(shù)據(jù)。但是,將數(shù)據(jù)復(fù)制到一個(gè)緩沖器需要相當(dāng)大的系統(tǒng)開(kāi)銷。
因此本發(fā)明的一個(gè)目的是提供一種用于在計(jì)算機(jī)系統(tǒng)中存儲(chǔ)數(shù)據(jù)的增強(qiáng)方法及裝置。
本發(fā)明的另一個(gè)目的是為計(jì)算機(jī)系統(tǒng)提供一種更靈活的存儲(chǔ)子系統(tǒng)。
本發(fā)明的另一個(gè)目的是提供一種用于在計(jì)算機(jī)系統(tǒng)中管理存儲(chǔ)設(shè)備的一個(gè)冗余陣列的增強(qiáng)方法及裝置。
本發(fā)明的另一個(gè)目的是增強(qiáng)計(jì)算機(jī)系統(tǒng)的一個(gè)存儲(chǔ)子系統(tǒng)被重構(gòu)的能力以滿足計(jì)算機(jī)系統(tǒng)用戶的需求。
本發(fā)明的另一個(gè)目的是提供一種能夠有效進(jìn)行從RAID-1到RAID-4或RAID-5及反向轉(zhuǎn)換的系統(tǒng)和方法。
一種靈活的數(shù)據(jù)存儲(chǔ)裝置包括一個(gè)能被格式化以支持用戶需求的存儲(chǔ)設(shè)備陣列。依據(jù)本發(fā)明的最佳實(shí)施例,陣列中的每個(gè)存儲(chǔ)設(shè)備存儲(chǔ)多個(gè)數(shù)據(jù)塊,并且陣列的存儲(chǔ)空間被分成多個(gè)被稱為數(shù)據(jù)條的數(shù)據(jù)塊組。一個(gè)陣列控制器支持獨(dú)立依據(jù)不同存儲(chǔ)器結(jié)構(gòu)對(duì)數(shù)據(jù)條的格式化。具體地,最佳實(shí)施例中所支持的存儲(chǔ)器結(jié)構(gòu)為非冗余、鏡像和奇偶性保護(hù)(RAID-4或-5)的。在使信息移動(dòng)最小化的同時(shí),鏡像(RAID-1)信息的一個(gè)或多個(gè)數(shù)據(jù)條最好可被轉(zhuǎn)換成RAID-4或RAID-5信息的等量個(gè)數(shù)據(jù)條,反之亦然。
依據(jù)最佳實(shí)施例,每個(gè)存儲(chǔ)數(shù)據(jù)塊存在于五種狀態(tài)之一(1)“空”;(2)“數(shù)據(jù)”;(3)“奇偶性”;(4)“備份”;或(5)“自由”。陣列中存儲(chǔ)數(shù)據(jù)塊的每個(gè)數(shù)據(jù)條存在于七種狀態(tài)之一,這七種狀態(tài)取決于數(shù)據(jù)塊的狀態(tài)。其中三種數(shù)據(jù)條狀態(tài)為非冗余,兩種為奇偶性保護(hù),兩種利用鏡像結(jié)構(gòu)。只有特別定義的狀態(tài)躍遷是可行的。當(dāng)在不危及用戶信息的情況下,RAID控制器可改變一個(gè)存儲(chǔ)設(shè)備的一個(gè)數(shù)據(jù)塊中的信息(即所存儲(chǔ)的信息既不是用戶信息,也不是奇偶性信息,并且不用于生成奇偶性信息)時(shí),該數(shù)據(jù)塊最好被指定為一個(gè)“空”數(shù)據(jù)塊。當(dāng)一個(gè)數(shù)據(jù)塊被保留用于存儲(chǔ)用戶信息時(shí),該數(shù)據(jù)塊最好被指定為一個(gè)“數(shù)據(jù)”塊。當(dāng)一個(gè)存儲(chǔ)設(shè)備的一個(gè)數(shù)據(jù)塊中所存儲(chǔ)的信息是包含在同一數(shù)據(jù)條中的每個(gè)“數(shù)據(jù)”數(shù)據(jù)塊的邏輯異或(“XOR”)結(jié)果時(shí),該數(shù)據(jù)塊最好被指定為一個(gè)“奇偶性”數(shù)據(jù)塊。當(dāng)一個(gè)存儲(chǔ)設(shè)備的一個(gè)數(shù)據(jù)塊中所存儲(chǔ)的信息是同一數(shù)據(jù)條的另一個(gè)設(shè)備中的“數(shù)據(jù)”數(shù)據(jù)塊所存儲(chǔ)的信息的備份時(shí),該數(shù)據(jù)塊最好被指定為一個(gè)“備份”數(shù)據(jù)塊。如果一個(gè)存儲(chǔ)設(shè)備的一個(gè)數(shù)據(jù)塊中當(dāng)前沒(méi)有存儲(chǔ)用戶信息,則該數(shù)據(jù)塊最好被指定為一個(gè)“自由”數(shù)據(jù)塊,但是必須按照RAID-4(5)讀-修改-寫(xiě)的順序變更存儲(chǔ)在其中的信息,因?yàn)樵撔畔⒈挥糜诖_定該數(shù)據(jù)條中一個(gè)相關(guān)“奇偶性”數(shù)據(jù)塊的值。
按照RAID-1,存儲(chǔ)每個(gè)數(shù)據(jù)塊的兩個(gè)備份;第一備份存儲(chǔ)于第一存儲(chǔ)設(shè)備,而第二備份存儲(chǔ)于第二存儲(chǔ)設(shè)備。一個(gè)數(shù)據(jù)塊的第一備份最好被指定為一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,而該數(shù)據(jù)塊的第二備份最好被指定為一個(gè)“備份”數(shù)據(jù)塊。依據(jù)最佳實(shí)施例,在“數(shù)據(jù)”數(shù)據(jù)塊中的信息和“備份”數(shù)據(jù)塊中的信息被存儲(chǔ)在不同的存儲(chǔ)設(shè)備上的同時(shí),相關(guān)的“數(shù)據(jù)”和“備份”數(shù)據(jù)塊被指定于同一數(shù)據(jù)條中。因此,RAID-1信息的一個(gè)數(shù)據(jù)條最好包括等量的“數(shù)據(jù)”和“備份”數(shù)據(jù)塊,并且陣列中的存儲(chǔ)設(shè)備個(gè)數(shù)最好為一個(gè)偶數(shù)。即,每個(gè)數(shù)據(jù)條可由來(lái)自陣列中每個(gè)設(shè)備的一個(gè)數(shù)據(jù)塊組成。如果陣列中存儲(chǔ)設(shè)備的個(gè)數(shù)為奇數(shù),那么由于每個(gè)“數(shù)據(jù)”數(shù)據(jù)塊需要一個(gè)相應(yīng)的“備份”數(shù)據(jù)塊,所以或者一個(gè)數(shù)據(jù)條包括來(lái)自少于存儲(chǔ)設(shè)備個(gè)數(shù)的存儲(chǔ)設(shè)備的數(shù)據(jù),或者在每個(gè)數(shù)據(jù)條中有一個(gè)奇數(shù)據(jù)塊。
依據(jù)最佳實(shí)施例,通過(guò)將RAID-1數(shù)據(jù)條中的任一個(gè)數(shù)據(jù)塊指定為“奇偶性”數(shù)據(jù)塊并改變特定的狀態(tài)信息,一個(gè)處于完全鏡像狀態(tài)中的數(shù)據(jù)條被轉(zhuǎn)換成奇偶性保護(hù)狀態(tài)(RAID-4或-5)。在這種情況下不需要移動(dòng)數(shù)據(jù)。
在從非冗余或奇偶性保護(hù)狀態(tài)轉(zhuǎn)換到完全鏡像狀態(tài)時(shí),狀態(tài)表定義了轉(zhuǎn)換規(guī)則,借以允許進(jìn)行轉(zhuǎn)換。必須有足夠的未使用空間(“空”或“自由”狀態(tài))來(lái)生成一個(gè)與該數(shù)據(jù)條中每個(gè)“數(shù)據(jù)”數(shù)據(jù)塊相關(guān)的“備份”數(shù)據(jù)塊。由于RAID-1信息的“數(shù)據(jù)”數(shù)據(jù)塊及其相關(guān)的“備份”數(shù)據(jù)塊最好存在于同一數(shù)據(jù)條中,如果存在將被轉(zhuǎn)換的數(shù)據(jù)條(“轉(zhuǎn)換”數(shù)據(jù)條)中的信息需要占用多于一半的數(shù)據(jù)條容量,則必須將至少一部分信息移到另一個(gè)數(shù)據(jù)條中以便為與剩余的“數(shù)據(jù)”數(shù)據(jù)塊相關(guān)的“備份”數(shù)據(jù)塊讓出空間。如果信息所移至的數(shù)據(jù)條(“接收”數(shù)據(jù)條)是按照RAID-1配置的,則每個(gè)接收數(shù)據(jù)條必須具有足夠的空間來(lái)存儲(chǔ)“數(shù)據(jù)”數(shù)據(jù)塊及其相關(guān)的“備份”數(shù)據(jù)塊。可替換地,一些數(shù)據(jù)可被移到一個(gè)奇偶性受保護(hù)或未受保護(hù)的接收數(shù)據(jù)條中,在這種情況下,在接收數(shù)據(jù)條中只需有足夠的空間來(lái)存儲(chǔ)數(shù)據(jù)。對(duì)“數(shù)據(jù)”數(shù)據(jù)塊進(jìn)行備份并更新數(shù)據(jù)條狀態(tài)。
參照附圖能夠更好地理解本發(fā)明的結(jié)構(gòu)和操作,在附圖中,相同的附圖標(biāo)記代表相同的部件,其中圖1示出了按照現(xiàn)有的RAID-1結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù);圖2示出了按照現(xiàn)有的RAID-4結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù);圖3示出了按照現(xiàn)有的RAID-5結(jié)構(gòu)存儲(chǔ)的數(shù)據(jù);圖4示出了依據(jù)本發(fā)明最佳實(shí)施例的RAID系統(tǒng);圖5A,5B和5C描述了依據(jù)最佳實(shí)施例用以與數(shù)據(jù)塊的狀態(tài)和使用相映射的數(shù)據(jù)結(jié)構(gòu);圖6是依據(jù)最佳實(shí)施例用以執(zhí)行向與一個(gè)RAID控制器相連接的存儲(chǔ)設(shè)備寫(xiě)數(shù)據(jù)的流程圖;圖7是示出了依據(jù)最佳實(shí)施例的數(shù)據(jù)塊的數(shù)據(jù)條中可能的狀態(tài)變化的狀態(tài)圖;圖8是依據(jù)本發(fā)明的一個(gè)實(shí)施例,用以執(zhí)行將當(dāng)前被格式化為鏡像結(jié)構(gòu)(RAID-1)的陣列部分轉(zhuǎn)換成奇偶性保護(hù)結(jié)構(gòu)(RAID-4或-5)的流程圖;圖9示出了依據(jù)最佳實(shí)施例的一個(gè)陣列900,其中一個(gè)數(shù)據(jù)條901被格式化為RAID-1結(jié)構(gòu);圖10示出了依據(jù)最佳實(shí)施例在將圖9中RAID-1結(jié)構(gòu)的數(shù)據(jù)條轉(zhuǎn)換成奇偶性保護(hù)數(shù)據(jù)條之后的圖9所示的陣列;圖11是示出了依據(jù)最佳實(shí)施例將一個(gè)奇偶性保護(hù)數(shù)據(jù)條(RAID-4或-5)轉(zhuǎn)換成鏡像結(jié)構(gòu)(RAID-1)的方法流程圖;圖12是示出了依據(jù)最佳實(shí)施例將一個(gè)非冗余數(shù)據(jù)條轉(zhuǎn)換成奇偶性保護(hù)數(shù)據(jù)條(RAID-4或-5)的方法流程圖;以及圖13示出了依據(jù)本發(fā)明的另一個(gè)實(shí)施例的具有奇數(shù)個(gè)存儲(chǔ)設(shè)備的陣列。
首先參照?qǐng)D4,示出了一個(gè)依據(jù)本發(fā)明最佳實(shí)施例的可重新配置的RAID存儲(chǔ)系統(tǒng)。在現(xiàn)有的RAID配置中,最佳實(shí)施例中的RAID系統(tǒng)400包括多個(gè)存儲(chǔ)設(shè)備401a-401f。在最佳實(shí)施例中,存儲(chǔ)設(shè)備401a-401f為直接存取存儲(chǔ)設(shè)備(DASD),具體為旋轉(zhuǎn)式磁硬盤驅(qū)動(dòng)存儲(chǔ)設(shè)備,應(yīng)當(dāng)理解也可以使用其它類型的存儲(chǔ)設(shè)備取而代之。應(yīng)當(dāng)理解,雖然為方便起見(jiàn)在圖4中示出了6個(gè)DASD,但依據(jù)本發(fā)明的陣列可由三個(gè)或三個(gè)以上設(shè)備構(gòu)成。一個(gè)RAID控制器403與DASD401a-401f相耦合。依據(jù)本發(fā)明的一個(gè)實(shí)施例,RAID控制器403包括隨機(jī)存取存儲(chǔ)器410和可編程微處理器412。存儲(chǔ)器410的一部分或全部是非易失性的,以便進(jìn)一步減少數(shù)據(jù)丟失的可能性。處理器412執(zhí)行一個(gè)控制程序412,該程序控制陣列的操作,具體地說(shuō)就是按照這里所述的方法控制存儲(chǔ)設(shè)備組從一種格式向另一種格式的轉(zhuǎn)換。如圖所示,控制程序413駐留在存儲(chǔ)器410中,但它也可以駐留在一個(gè)單獨(dú)的控制存儲(chǔ)存儲(chǔ)器中,如一個(gè)只讀存儲(chǔ)器(ROM)芯片??蓮囊粋€(gè)任意的獨(dú)立外設(shè),如磁盤、磁帶、光盤等中將控制程序裝入存儲(chǔ)器410中,或從主機(jī)系統(tǒng)404下載控制程序。控制器403最好從主機(jī)系統(tǒng)404接收命令和信息。主機(jī)系統(tǒng)404可以是任何能夠與現(xiàn)有的RAID系統(tǒng)相耦合的設(shè)備,包括被編程的通用數(shù)字計(jì)算機(jī)在內(nèi)。命令指示控制器403將所接收的與該命令有關(guān)的信息存儲(chǔ)到DASD陣列中。另外,這些命令還指出是按照非冗余格式還是按照RAID-1、-4或-5格式存儲(chǔ)該信息??商鎿Q地,控制器403在沒(méi)有主處理器引導(dǎo)的情況下確定是非冗余地還是按照RAID-1、-4或-5格式存儲(chǔ)所接收的信息。
控制器403可通過(guò)一條總線與DASD陣列耦合。但是,在最佳實(shí)施例中,提供了允許同時(shí)向一個(gè)以上DASD傳送數(shù)據(jù)的連接。依據(jù)本發(fā)明的一個(gè)實(shí)施例,任意的外部存儲(chǔ)器405,如一個(gè)磁帶陣列也可以與控制器403耦合。磁帶陣列允許控制器將不經(jīng)常使用的信息移出DASD陣列以便釋放DASD陣列中的空間??蛇x擇地,外部存儲(chǔ)器405可以是一個(gè)被用作用于寫(xiě)數(shù)據(jù)的臨時(shí)高速緩存的DASD,如由DavidA.Styczinski于92年5月6日申請(qǐng)的題目為“用于操作存儲(chǔ)設(shè)備陣列的方法和裝置”、申請(qǐng)?zhí)枮镹o.07/879,621的未決申請(qǐng)所述。
在本發(fā)明的最佳實(shí)施例中,或者使用RAID-4格式,或者使用RAID-5格式,但是不能同時(shí)使用兩種格式。但是,在另一個(gè)實(shí)施例中,控制器403可以按照RAID-1、-4或-5格式中的任一種來(lái)存儲(chǔ)信息。所屬技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解控制器403必須知道向每個(gè)配置分配陣列的哪一部分。例如,如果分配陣列的一部分用于按照RAID-1存儲(chǔ)信息而分配陣列的一部分用于按照RAID-5存儲(chǔ)信息,則控制器403必須知道哪部分被分配給哪種格式。
存儲(chǔ)器410中的數(shù)據(jù)目錄411記錄如何使用陣列的不同部分。數(shù)據(jù)目錄411存儲(chǔ)陣列中數(shù)據(jù)塊的當(dāng)前狀態(tài),即每個(gè)數(shù)據(jù)塊是一個(gè)“數(shù)據(jù)”、“備份”、“奇偶性”還是“自由”數(shù)據(jù)塊,以及用于每個(gè)數(shù)據(jù)條的數(shù)據(jù)冗余形式(鏡像、奇偶性保護(hù)或非冗余)。數(shù)據(jù)目錄411可以存儲(chǔ)附加信息以及用于確定陣列各部分用途的信息。為了能夠在掉電或部件故障的情況下進(jìn)行恢復(fù),最好在別處(例如,在一個(gè)DASD的指定位置上或在獨(dú)立的外設(shè)406上)有一個(gè)數(shù)據(jù)目錄411的冗余備份(圖中未示出),和/或?qū)?shù)據(jù)目錄411存在RAM410的一個(gè)非易失部分中。
圖5A,5B和5C示出了依據(jù)最佳實(shí)施例而用于上述目的的數(shù)據(jù)目錄411中的三種數(shù)據(jù)結(jié)構(gòu)。圖5A示出了一個(gè)數(shù)據(jù)條狀態(tài)表,圖5B示出了一個(gè)數(shù)據(jù)塊狀態(tài)表,而圖5C示出了一個(gè)主機(jī)地址映象表。數(shù)據(jù)條狀態(tài)表501包含多個(gè)項(xiàng),每一項(xiàng)包含一個(gè)數(shù)據(jù)條地址字段502和一個(gè)數(shù)據(jù)條狀態(tài)字段503。數(shù)據(jù)條地址字段502存儲(chǔ)數(shù)據(jù)條的數(shù)據(jù)塊在存儲(chǔ)設(shè)備上的起始地址。在最佳實(shí)施例中,所有數(shù)據(jù)塊的大小相同并且一個(gè)數(shù)據(jù)條的所有數(shù)據(jù)塊在每個(gè)存儲(chǔ)設(shè)備中分別具有相同的地址;因此一個(gè)起始地址標(biāo)識(shí)足以標(biāo)識(shí)整個(gè)數(shù)據(jù)條。數(shù)據(jù)條狀態(tài)字段503包含該數(shù)據(jù)條的當(dāng)前狀態(tài);下面將參照?qǐng)D6詳細(xì)描述可能出現(xiàn)的狀態(tài)。
數(shù)據(jù)塊狀態(tài)表521包含多個(gè)項(xiàng),每一項(xiàng)對(duì)應(yīng)于一個(gè)數(shù)據(jù)塊。數(shù)據(jù)塊狀態(tài)表521中的每一項(xiàng)包含數(shù)據(jù)條標(biāo)識(shí)字段523,設(shè)備ID字段524,狀態(tài)字段525,版本號(hào)字段526和配對(duì)設(shè)備字段527。數(shù)據(jù)條ID字段523標(biāo)識(shí)包含有數(shù)據(jù)塊的數(shù)據(jù)條,并且可以是一個(gè)例如指向數(shù)據(jù)條狀態(tài)表501中相應(yīng)項(xiàng)的指針。設(shè)備ID字段524包含一個(gè)包含該數(shù)據(jù)塊的DASD標(biāo)識(shí)符。由于對(duì)任一個(gè)DASD來(lái)說(shuō),每個(gè)數(shù)據(jù)條包含不多于一個(gè)的數(shù)據(jù)塊,所以關(guān)于數(shù)據(jù)條和DASD的說(shuō)明足以對(duì)任何數(shù)據(jù)塊進(jìn)行規(guī)定。狀態(tài)字段525記錄數(shù)據(jù)塊的使用狀態(tài)(“數(shù)據(jù)”,“備份”,“奇偶性”,“自由”或“空”)。版本號(hào)字段526記錄一個(gè)版本號(hào)。版本號(hào)隨每次數(shù)據(jù)更新而加1,并用于確定冗余數(shù)據(jù)塊是否同步。配對(duì)設(shè)備字段527標(biāo)識(shí)用于存儲(chǔ)設(shè)備的一個(gè)鏡像數(shù)據(jù)塊的配對(duì)數(shù)據(jù)塊或用于奇偶性保護(hù)數(shù)據(jù)塊的奇偶性數(shù)據(jù)塊。配對(duì)設(shè)備字段可以是例如一個(gè)指向與配對(duì)/奇偶性數(shù)據(jù)塊相對(duì)應(yīng)的數(shù)據(jù)塊狀態(tài)映象表項(xiàng)的指針,或是一個(gè)設(shè)備標(biāo)識(shí)符。
主機(jī)地址映象表541將主機(jī)地址與數(shù)據(jù)塊相映射。依據(jù)最佳實(shí)施例,一個(gè)主計(jì)算機(jī)系統(tǒng)將存儲(chǔ)子系統(tǒng)視為一個(gè)大范圍的地址。來(lái)自主機(jī)的用于對(duì)一個(gè)特定地址進(jìn)行讀或?qū)懙拿畋仨毐环g成涉及一個(gè)存儲(chǔ)設(shè)備ID和該存儲(chǔ)設(shè)備中的地址,通過(guò)主機(jī)地址映象表541實(shí)現(xiàn)該命令。映象表541包含多項(xiàng),每一項(xiàng)對(duì)應(yīng)于一個(gè)由主機(jī)系統(tǒng)編址的數(shù)據(jù)塊。每一項(xiàng)包含一個(gè)主機(jī)系統(tǒng)地址字段542和一個(gè)數(shù)據(jù)塊標(biāo)識(shí)字段543,數(shù)據(jù)塊標(biāo)識(shí)字段包含一個(gè)指向用以標(biāo)識(shí)該數(shù)據(jù)塊的數(shù)據(jù)塊表521中的一項(xiàng)的指針。
應(yīng)當(dāng)理解上述數(shù)據(jù)結(jié)構(gòu)只是為了以一個(gè)實(shí)施例為例進(jìn)行說(shuō)明,也可以使用各種不同的數(shù)據(jù)結(jié)構(gòu)。例如,對(duì)于一個(gè)跟蹤數(shù)據(jù)塊的物理位置的主計(jì)算機(jī)系統(tǒng)來(lái)說(shuō),在RAID控制器403中可以不必包括一個(gè)主機(jī)地址映象表。數(shù)據(jù)結(jié)構(gòu)可以由一個(gè)大表構(gòu)成,如鏈接表或其它形式。另外,根據(jù)實(shí)施的恰當(dāng)方式,一些字段可能是不必要的,也可能需要一些其它字段。應(yīng)當(dāng)理解上述數(shù)據(jù)結(jié)構(gòu)不是RAID控制器403所使用的唯一數(shù)據(jù)結(jié)構(gòu)。例如,控制器403最好具備一個(gè)在存儲(chǔ)設(shè)備上分配可用的自由空間列表;這不僅包括具有“自由”或“空”狀態(tài)的數(shù)據(jù)塊,還包括“數(shù)據(jù)”數(shù)據(jù)塊的未分配部分。
在正常操作中,控制器403響應(yīng)從主計(jì)算機(jī)系統(tǒng)404接收的數(shù)據(jù)訪問(wèn)命令(讀或?qū)憯?shù)據(jù))。來(lái)自主機(jī)404的一個(gè)數(shù)據(jù)訪問(wèn)命令包含被讀的一個(gè)數(shù)據(jù)塊(或其一部分,如一個(gè)扇區(qū))的地址。來(lái)自主機(jī)的地址被用于訪問(wèn)主機(jī)地址映象表541中的一項(xiàng)。數(shù)據(jù)塊標(biāo)識(shí)字段543指向數(shù)據(jù)塊表521中與該數(shù)據(jù)塊相對(duì)應(yīng)的項(xiàng)??刂破髟L問(wèn)該項(xiàng)以便從字段524中得到一個(gè)存儲(chǔ)設(shè)備標(biāo)識(shí)符并從字段523中得到一個(gè)數(shù)據(jù)條標(biāo)識(shí)符。這些標(biāo)識(shí)符標(biāo)識(shí)了被讀的數(shù)據(jù)塊。然后控制器403在傳送存儲(chǔ)設(shè)備中所需數(shù)據(jù)的地址的同時(shí),向?qū)?yīng)的存儲(chǔ)設(shè)備發(fā)送一個(gè)讀命令。
寫(xiě)操作更為復(fù)雜,因?yàn)?a)控制器403必須確定數(shù)據(jù)塊當(dāng)前的使用狀態(tài),以及(b)一次寫(xiě)操作可導(dǎo)致數(shù)據(jù)條狀態(tài)的改變。圖6是在執(zhí)行一次寫(xiě)操作時(shí)RAID控制器403所執(zhí)行的流程圖。響應(yīng)于來(lái)自主機(jī)404的寫(xiě)命令,控制器403參考表501、521和541以便確定如上所述用于讀操作的存儲(chǔ)設(shè)備ID和所需數(shù)據(jù)塊的地址(步驟601)。另外,控制器還從表501的數(shù)據(jù)條狀態(tài)字段503中確定數(shù)據(jù)條的當(dāng)前狀態(tài)(步驟602)。
下面將參照?qǐng)D7詳細(xì)描述可能出現(xiàn)的狀態(tài)及狀態(tài)躍遷。根據(jù)數(shù)據(jù)條的當(dāng)前狀態(tài),分成三種可能情況。如果當(dāng)前狀態(tài)是未受保護(hù)狀態(tài)中的任一種(標(biāo)號(hào)5,6,7),控制器403在傳送數(shù)據(jù)在應(yīng)寫(xiě)入存儲(chǔ)設(shè)備中的地址的同時(shí),只向?qū)?yīng)的存儲(chǔ)設(shè)備發(fā)送一個(gè)寫(xiě)命令(步驟605)。
如果當(dāng)前狀態(tài)是鏡像狀態(tài)的一種(標(biāo)號(hào)1和2),控制器403首先向包含該鏡像數(shù)據(jù)的對(duì)應(yīng)存儲(chǔ)設(shè)備發(fā)送一個(gè)寫(xiě)命令(步驟610)。然后控制器403使包含該鏡像數(shù)據(jù)的數(shù)據(jù)塊的版本號(hào)字段526加1(步驟611)。然后控制器403從配對(duì)設(shè)備字段527中找到包含該鏡像數(shù)據(jù)備份的設(shè)備的設(shè)備ID,并向包含該備份的存儲(chǔ)設(shè)備發(fā)送一個(gè)寫(xiě)命令(步驟612)。在完成的同時(shí),使包含該備份的數(shù)據(jù)塊的版本號(hào)字段526加1以便與包含原始數(shù)據(jù)的數(shù)據(jù)塊的版本號(hào)相等(步驟613)。
如果當(dāng)前狀態(tài)是奇偶性保護(hù)狀態(tài)的一種(標(biāo)號(hào)3和4),控制器403首先從包含該數(shù)據(jù)的存儲(chǔ)設(shè)備中讀出該數(shù)據(jù)(步驟620),將該數(shù)據(jù)與將被寫(xiě)入的新數(shù)據(jù)進(jìn)行異或以便生成一個(gè)臨時(shí)變更掩碼(步驟621),將新數(shù)據(jù)寫(xiě)入存儲(chǔ)設(shè)備并使版本號(hào)字段加1(步驟622)。然后控制器403從配對(duì)設(shè)備字段527中得到包含奇偶位的設(shè)備標(biāo)識(shí)符,從奇偶性設(shè)備中讀出舊的奇偶性數(shù)據(jù)塊(步驟625),將這個(gè)舊的奇偶性數(shù)據(jù)與變更掩碼進(jìn)行異或以便生成新的奇偶性數(shù)據(jù)(步驟626),將新的數(shù)據(jù)寫(xiě)入奇偶性數(shù)據(jù)塊(步驟627),并使該奇偶性數(shù)據(jù)塊的版本號(hào)加1。
然后控制器403確定一個(gè)數(shù)據(jù)塊的狀態(tài)是否發(fā)生了任何變化。即,如果數(shù)據(jù)已被寫(xiě)入一個(gè)狀態(tài)為“自由”或“空”的數(shù)據(jù)塊中,則數(shù)據(jù)塊的狀態(tài)必須改變成“數(shù)據(jù)”(步驟630)。如果數(shù)據(jù)塊的狀態(tài)發(fā)生了變化,則數(shù)據(jù)條的狀態(tài)也可能發(fā)生變化。因此控制器確定數(shù)據(jù)條的狀態(tài)是否發(fā)生了變化,并更新?tīng)顟B(tài)字段503以便反映出這種變化(步驟631)。以后將參照?qǐng)D7對(duì)可能的變化和引發(fā)這些變化的事件進(jìn)行描述。
應(yīng)當(dāng)理解為了便于理解起見(jiàn),對(duì)圖6中所示的關(guān)于上述讀和寫(xiě)操作的描述進(jìn)行了簡(jiǎn)化,并且對(duì)理解本發(fā)明起非關(guān)鍵性作用的其它操作可隨讀或?qū)懖僮鲌?zhí)行。特別是,控制器403可具備一個(gè)用于提高性能的駐留超高速緩沖存儲(chǔ)器并且在這種情況下,在從和/或向一個(gè)存儲(chǔ)設(shè)備讀寫(xiě)之前,通常要檢查該超高速緩存的內(nèi)容??商鎿Q地,控制器403可采用一個(gè)外部記錄設(shè)備來(lái)對(duì)寫(xiě)操作進(jìn)行臨時(shí)緩存。
除了能夠以RAID-1、-4或-5格式存儲(chǔ)所接收的信息以外,最佳實(shí)施例的控制器403還能夠重新分配陣列,使得其中已按照一種RAID格式存有信息的陣列部分被重新分配成另一種RAID格式。例如,被分配按照RAID-1存儲(chǔ)信息的陣列部分可被重新分配成按照RAID-5存儲(chǔ)信息。然后按照RAID-5對(duì)存儲(chǔ)在該陣列部分中的信息進(jìn)行重新格式化。
為了支持陣列部分從一種RAID格式向另一種格式的轉(zhuǎn)換,每個(gè)數(shù)據(jù)條與一種狀態(tài)(存儲(chǔ)在表501中)相關(guān),并且根據(jù)預(yù)定的事件而允許發(fā)生預(yù)定的狀態(tài)變化。導(dǎo)致?tīng)顟B(tài)改變的事件一般為特定的數(shù)據(jù)寫(xiě)操作、對(duì)自由空間的特定請(qǐng)求(即刪除一個(gè)現(xiàn)存數(shù)據(jù)塊中的數(shù)據(jù))和對(duì)改變數(shù)據(jù)條的RAID格式的請(qǐng)求。圖7是示出了可用狀態(tài)和可能狀態(tài)變化的狀態(tài)圖。
七種狀態(tài)被定義如下1.“新鏡像”此狀態(tài)隱含寫(xiě)入該數(shù)據(jù)條的數(shù)據(jù)還具有一個(gè)寫(xiě)入該數(shù)據(jù)條中的鏡像備份。但是這個(gè)數(shù)據(jù)條中的至少一個(gè)數(shù)據(jù)塊為“空”。
2.“完全鏡像”此狀態(tài)隱含該數(shù)據(jù)條中的所有數(shù)據(jù)都是鏡像的并且此數(shù)據(jù)條中不存在“空”數(shù)據(jù)塊。
3.“奇偶性X”此狀態(tài)隱含該數(shù)據(jù)是受奇偶性保護(hù)的(例如,RAID-4或RAID-5),但具有足夠的“自由”和“奇偶性”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”空間的備份。
4.“完全奇偶性”此狀態(tài)隱含該數(shù)據(jù)是受奇偶性保護(hù)的,但不具有足夠的“自由”和“奇偶性”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份。
5.“未被保護(hù)”X此狀態(tài)隱含該數(shù)據(jù)是未被保護(hù)的,但是具有足夠的“空”數(shù)據(jù)塊用于所有“數(shù)據(jù)”數(shù)據(jù)塊的備份。
6.“未被保護(hù)”此狀態(tài)隱含該數(shù)據(jù)是未被保護(hù)的,且不具有足夠的“空”數(shù)據(jù)塊用于所有“數(shù)據(jù)”數(shù)據(jù)塊的備份,但具有一個(gè)用作奇偶性數(shù)據(jù)塊的“空”數(shù)據(jù)塊。
7.“完全未被保護(hù)”此狀態(tài)隱含該數(shù)據(jù)是未被保護(hù)的,并且不存在“空”數(shù)據(jù)塊。
圖7中示出了下述可能的狀態(tài)躍遷1a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入但在數(shù)據(jù)條中仍存在至少一個(gè)“空”數(shù)據(jù)塊時(shí)。
1b此躍遷發(fā)生在作為一次寫(xiě)操作的結(jié)果,此數(shù)據(jù)條中不再存在一個(gè)“空”數(shù)據(jù)塊(即,數(shù)據(jù)被寫(xiě)入最后一個(gè)現(xiàn)在已變?yōu)椤皵?shù)據(jù)”數(shù)據(jù)塊的“空”數(shù)據(jù)塊中)時(shí)。作為將參照?qǐng)D8詳細(xì)說(shuō)明的二級(jí)躍遷(從狀態(tài)1到狀態(tài)2,再到狀態(tài)3)的一部分,這種變化還可發(fā)生在用于將數(shù)據(jù)條格式變?yōu)槠媾夹员Wo(hù)的命令中;在這種情況下,“空”數(shù)據(jù)塊與備份配對(duì)并且它們的狀態(tài)都變?yōu)椤白杂伞薄?br> 1c此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中,以便為存儲(chǔ)數(shù)據(jù)生成更多空間。在這種躍遷中,數(shù)據(jù)條中狀態(tài)為“備份”的所有數(shù)據(jù)塊都變?yōu)椤翱铡睜顟B(tài)。
2a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一對(duì)“自由”數(shù)據(jù)塊中(導(dǎo)致?tīng)顟B(tài)變?yōu)椤皵?shù)據(jù)”和“備份”)時(shí)。還可發(fā)生在用于釋放一個(gè)數(shù)據(jù)塊內(nèi)的空間的命令中。在后一種情況下,該數(shù)據(jù)塊的備份都被指定為“自由”(表示可用)并且其鏡像不受干擾。
2b此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。以后將參照?qǐng)D8詳細(xì)描述關(guān)于此狀態(tài)變化的過(guò)程。
2c此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。在此躍遷中,所有的“備份”數(shù)據(jù)塊變?yōu)椤翱铡睜顟B(tài)。
3a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“自由”數(shù)據(jù)塊中,從而使?fàn)顟B(tài)變?yōu)椤皵?shù)據(jù)”(下面3b中所述的情況除外)時(shí)。還可發(fā)生在用于釋放一個(gè)數(shù)據(jù)塊內(nèi)的空間的命令中,從而使該數(shù)據(jù)塊的狀態(tài)變?yōu)椤白杂伞薄?br> 3b此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“自由”數(shù)據(jù)塊中,從而使?fàn)顟B(tài)變?yōu)椤皵?shù)據(jù)”(下面3b中所述的情況除外)時(shí),并且其結(jié)果是不再剩有足夠的“自由”和“奇偶性”數(shù)據(jù)塊用以備份該數(shù)據(jù)條中的所有“數(shù)據(jù)”數(shù)據(jù)塊。
3c此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。以后將參照?qǐng)D11詳細(xì)描述關(guān)于此狀態(tài)變化的過(guò)程。
3d此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。以后將參照?qǐng)D11詳細(xì)描述關(guān)于此狀態(tài)變化的過(guò)程。
3e此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。所有的“奇偶性”和“自由”數(shù)據(jù)塊都被變?yōu)椤翱铡?,使它們可用于存?chǔ)其它數(shù)據(jù)。
4a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“自由”數(shù)據(jù)塊中時(shí)或一個(gè)用于釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊內(nèi)的自由空間的命令使該數(shù)據(jù)塊變?yōu)椤白杂伞保谠摂?shù)據(jù)條中不再具有足夠的“自由”和“奇偶性”數(shù)據(jù)塊用以支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份(啟動(dòng)向鏡像狀態(tài)的躍遷)時(shí)。
4b此躍遷發(fā)生在一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊被變?yōu)椤白杂伞辈⑶移浣Y(jié)果是現(xiàn)在具有足夠的“自由”和“奇偶性”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份之后。
4c此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。所有的“奇偶性”和“自由”數(shù)據(jù)塊都被變?yōu)椤翱铡薄?br> 5a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“空”數(shù)據(jù)塊,從而使其狀態(tài)變?yōu)椤皵?shù)據(jù)”時(shí),或發(fā)生在用于釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊內(nèi)空間的命令使該數(shù)據(jù)塊從“數(shù)據(jù)”變?yōu)椤翱铡睍r(shí),在任一種改變之后,都有足夠的“空”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份(啟動(dòng)向鏡像狀態(tài)的躍遷)。
5b如后所述,此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。
5c如后所述,此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。
5d此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“空”數(shù)據(jù)塊中,從而使“空”數(shù)據(jù)塊的狀態(tài)變?yōu)椤皵?shù)據(jù)”時(shí),并且其結(jié)果是不再具有足夠的“空”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份。
5e如后所述,此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。
6a此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入一個(gè)“空”數(shù)據(jù)塊,從而使其狀態(tài)變?yōu)椤皵?shù)據(jù)”時(shí),或發(fā)生在一個(gè)用于釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊內(nèi)空間的命令使該數(shù)據(jù)塊從“數(shù)據(jù)”變?yōu)椤翱铡睍r(shí),在任一種改變之后,只有一個(gè)“空”數(shù)據(jù)塊用于奇偶性校驗(yàn)而沒(méi)有足夠的“空”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份。
6b此躍遷發(fā)生在一個(gè)用于釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊內(nèi)空間的命令使該數(shù)據(jù)塊從“數(shù)據(jù)”變?yōu)椤翱铡辈⑶移浣Y(jié)果是現(xiàn)在具有足夠的“自由”和“奇偶性”數(shù)據(jù)塊來(lái)支持所有“數(shù)據(jù)”數(shù)據(jù)塊的備份時(shí)。
6c如后所述,此躍遷只發(fā)生在用于改變數(shù)據(jù)條格式的命令中。
6d此躍遷發(fā)生在數(shù)據(jù)被寫(xiě)入最后一個(gè)“空”數(shù)據(jù)塊,從而使其狀態(tài)變?yōu)椤皵?shù)據(jù)”時(shí),使得不再具有“空”數(shù)據(jù)塊。
7a此躍遷發(fā)生在一個(gè)用于釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊內(nèi)空間的命令使該數(shù)據(jù)塊從“數(shù)據(jù)”變?yōu)椤翱铡睍r(shí)。
如上所述,某些躍遷“依命令”而發(fā)生以便改變數(shù)據(jù)條格式??刂破?03最好根據(jù)來(lái)自主機(jī)404的命令來(lái)配置數(shù)據(jù)條。主機(jī)不記錄單個(gè)數(shù)據(jù)條的配置而只知道鏡像配置中的特定存儲(chǔ)量、奇偶性保護(hù)配置中的特定存儲(chǔ)量以及未受保護(hù)(即非冗余)配置中的特定存儲(chǔ)量??刂破?03通過(guò)為每種配置分配適量的數(shù)據(jù)條來(lái)響應(yīng)來(lái)自主機(jī)404的初始配置命令。然后,無(wú)論主機(jī)404何時(shí)寫(xiě)入新數(shù)據(jù),它規(guī)定該數(shù)據(jù)是將被鏡像、奇偶性保護(hù)還是不受保護(hù)。控制器403根據(jù)此規(guī)定選擇一個(gè)適當(dāng)?shù)臄?shù)據(jù)條和數(shù)據(jù)塊。由于主機(jī)404發(fā)現(xiàn)它需要一種具有更多空間的不同配置,主機(jī)404可改變配置,例如以釋放出更多空間。在這種情況下,主機(jī)404將向控制器403發(fā)送一個(gè)配置命令,請(qǐng)求重新配置一定的存儲(chǔ)量(數(shù)據(jù)條的數(shù)量)??刂破鞲鶕?jù)數(shù)據(jù)條的當(dāng)前狀態(tài)選擇一個(gè)適當(dāng)?shù)臄?shù)據(jù)條進(jìn)行重新配置。控制器403最好選擇其中至少已具有一定量數(shù)據(jù)的數(shù)據(jù)條。例如,如果從主機(jī)404接收到一個(gè)命令,用于將一個(gè)數(shù)據(jù)條從未受保護(hù)狀態(tài)轉(zhuǎn)換成奇偶性保護(hù)狀態(tài)與躍遷6(c)相比,更優(yōu)選躍遷5(c);在處于同一狀態(tài)中的多個(gè)數(shù)據(jù)條之間,優(yōu)選具有最多“空”數(shù)據(jù)塊的數(shù)據(jù)條;以及在具有等量“空”數(shù)據(jù)塊的數(shù)據(jù)條之間,優(yōu)選在部分“數(shù)據(jù)”數(shù)據(jù)塊中具有最多未用空間的數(shù)據(jù)條(假設(shè)部分?jǐn)?shù)據(jù)塊可被分配)。
應(yīng)當(dāng)理解可替換地,主機(jī)404將數(shù)據(jù)塊與設(shè)備和地址進(jìn)行映射并(通過(guò)或不通過(guò)用戶輸入)確定以哪種方式配置哪些數(shù)據(jù)條。在這種情況下,控制器403僅僅響應(yīng)用于改變一個(gè)數(shù)據(jù)條的配置的主機(jī)命令??商鎿Q地,按照某種預(yù)定算法或條件,控制器403可自身決定改變配置。作為另一替換例,用戶可直接向控制器403輸入配置變化。關(guān)于“依命令”而發(fā)生用以改變配置的特定躍遷的描述不僅不構(gòu)成對(duì)那些由主機(jī)初始化的配置變化的限制,而且還可包括由控制器本身、用戶或通過(guò)其它方法產(chǎn)生的“命令”。
圖8是依據(jù)最佳實(shí)施例,用以將當(dāng)前格式化為RAID-1結(jié)構(gòu)的陣列部分轉(zhuǎn)換成RAID-4(5)結(jié)構(gòu)時(shí)所執(zhí)行的流程圖。換言之,一個(gè)數(shù)據(jù)條的狀態(tài)從狀態(tài)2變?yōu)闋顟B(tài)3(或處于從狀態(tài)1到狀態(tài)2再到狀態(tài)3的二級(jí)躍遷)。在這個(gè)實(shí)施例中,陣列由偶數(shù)個(gè)存儲(chǔ)設(shè)備構(gòu)成,且一個(gè)數(shù)據(jù)條由每個(gè)存儲(chǔ)設(shè)備的一個(gè)數(shù)據(jù)塊構(gòu)成,一個(gè)數(shù)據(jù)條的每個(gè)數(shù)據(jù)塊位于每個(gè)相應(yīng)存儲(chǔ)設(shè)備的相同地址范圍內(nèi)。圖9示出了用于實(shí)現(xiàn)圖8所示方法的陣列900。應(yīng)當(dāng)注意按照RAID-1格式化的信息通常不存儲(chǔ)在一個(gè)數(shù)據(jù)條中。即,按照RAID-1組織的信息只需要將該信息的備份駐留在陣列中的另一個(gè)存儲(chǔ)設(shè)備中。反之,依據(jù)本發(fā)明,指定RAID-1存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)塊以形成一個(gè)“數(shù)據(jù)條”,該數(shù)據(jù)條具有與所轉(zhuǎn)換成的RAID-4或RAID-5數(shù)據(jù)條相同的維數(shù)。應(yīng)當(dāng)注意最好將一個(gè)數(shù)據(jù)條中的數(shù)據(jù)塊存儲(chǔ)在不同DASD內(nèi)的相關(guān)地址上,例如存儲(chǔ)在與存儲(chǔ)于其中的第一數(shù)據(jù)塊相關(guān)的每個(gè)DASD內(nèi)的相同地址上。但是,在本發(fā)明的另一個(gè)實(shí)施例中,一個(gè)數(shù)據(jù)條內(nèi)的每個(gè)數(shù)據(jù)塊可被存儲(chǔ)在與其它數(shù)據(jù)塊地址無(wú)關(guān)的地址上。為簡(jiǎn)潔起見(jiàn),在一個(gè)數(shù)據(jù)條是一個(gè)RAID-4數(shù)據(jù)條或RAID-5數(shù)據(jù)條的情況下,將該數(shù)據(jù)條記為“RAID-4(5)”。圖10示出了在圖9中所示的RAID-1數(shù)據(jù)條901被轉(zhuǎn)換成RAID-4(5)數(shù)據(jù)條1001之后的陣列900。本發(fā)明利用下述觀測(cè)值。一個(gè)與其本身進(jìn)行異或的數(shù)據(jù)塊將產(chǎn)生一個(gè)全為零的數(shù)據(jù)塊。即(A)XOR(A)=0(EQ1)由于圖9和10所示實(shí)施例中的一個(gè)RAID-1數(shù)據(jù)條由三對(duì)數(shù)據(jù)塊構(gòu)成,每對(duì)數(shù)據(jù)塊包括一個(gè)數(shù)據(jù)塊和該數(shù)據(jù)塊的一個(gè)備份,在任意五個(gè)數(shù)據(jù)塊之間進(jìn)行異或操作的結(jié)果是產(chǎn)生一個(gè)與第六數(shù)據(jù)塊相等的數(shù)據(jù)塊。即(A)XOR(A′)XOR(B)XOR(B′)XOR(C)=(C′) (EQ2)其中A′是A的一個(gè)精確備份,B′是B的一個(gè)精確備份,而C′是C的一個(gè)精確備份。
假設(shè)五個(gè)數(shù)據(jù)塊中的兩個(gè)是五個(gè)數(shù)據(jù)塊中的另兩個(gè)的備份,則上述關(guān)系式將保持真值而與哪五個(gè)數(shù)據(jù)塊被異或無(wú)關(guān)。因此,如圖10所示,只需將一個(gè)RAID-1數(shù)據(jù)條中的一個(gè)數(shù)據(jù)塊913從“備份”改為“奇偶性”并將其它“備份”數(shù)據(jù)塊905和909中的每一個(gè)改為“自由”,該RAID-1數(shù)據(jù)條就能夠轉(zhuǎn)換成一個(gè)RAID-4(5)數(shù)據(jù)條??梢钥闯鰧?duì)被指定為“奇偶性”數(shù)據(jù)塊的特定數(shù)據(jù)塊的選擇將確定該數(shù)據(jù)條被構(gòu)造成一個(gè)RAID-4還是一個(gè)RAID-5數(shù)據(jù)條。顯然,從其本身來(lái)說(shuō),在一個(gè)RAID-4或RAID-5數(shù)據(jù)條之間是沒(méi)有區(qū)別的,因?yàn)樗恰捌媾夹浴睌?shù)據(jù)塊在每個(gè)用以區(qū)分RAID-4與RAID-5系統(tǒng)的數(shù)據(jù)條中的相對(duì)位置。
如圖8所示,轉(zhuǎn)換過(guò)程的第一步是標(biāo)識(shí)一組將被轉(zhuǎn)換的數(shù)據(jù)塊(步驟801)。在最佳實(shí)施例中,每個(gè)數(shù)據(jù)條能夠被個(gè)別和獨(dú)立地從RAID-1配置轉(zhuǎn)換成RAID-4(5)配置,反之亦然。由于每個(gè)數(shù)據(jù)條最好由位于每個(gè)DASD上的一個(gè)特定地址范圍內(nèi)的所有數(shù)據(jù)塊構(gòu)成,所以僅通過(guò)指定該地址范圍或指定其中一個(gè)數(shù)據(jù)塊即可選擇一個(gè)數(shù)據(jù)條。但是,標(biāo)識(shí)一個(gè)要轉(zhuǎn)換的數(shù)據(jù)條的步驟也可涉及其它事情。例如,如果一個(gè)數(shù)據(jù)條由位于彼此無(wú)關(guān)的混合地址上的數(shù)據(jù)塊構(gòu)成,則一個(gè)數(shù)據(jù)條的識(shí)別就可能涉及選擇單獨(dú)的RAID-1數(shù)據(jù)塊對(duì)。可替換地,可將一個(gè)存儲(chǔ)設(shè)備陣列設(shè)計(jì)成只能選擇預(yù)定義的數(shù)據(jù)條組(例如一個(gè)包括多個(gè)數(shù)據(jù)塊的大地址范圍),或?qū)⒋鎯?chǔ)設(shè)備陣列設(shè)計(jì)成只在整個(gè)陣列上執(zhí)行轉(zhuǎn)換。用戶可手動(dòng)執(zhí)行該識(shí)別過(guò)程或通過(guò)依據(jù)某些算法的軟件來(lái)執(zhí)行該識(shí)別過(guò)程(例如選擇最近使用過(guò)的數(shù)據(jù)條)。轉(zhuǎn)換算法假設(shè)已完成了所有的未決寫(xiě)操作,即每個(gè)“數(shù)據(jù)”及其各自的“備份”數(shù)據(jù)塊具有相同的數(shù)據(jù)。這可通過(guò)檢查其版本級(jí)來(lái)進(jìn)行驗(yàn)證。如果一個(gè)寫(xiě)操作還沒(méi)有完成(版本級(jí)不匹配),則在開(kāi)始處理之前完成該寫(xiě)操作。
依據(jù)最佳實(shí)施例,有兩種鏡像狀態(tài),分別標(biāo)識(shí)為狀態(tài)1(“新鏡像”)和狀態(tài)2(“完全鏡像”)。只允許進(jìn)行從狀態(tài)2向奇偶性保護(hù)狀態(tài)(狀態(tài)3,“奇偶性X”)的狀態(tài)躍遷。因此,如果該數(shù)據(jù)條處于狀態(tài)1,則必須將其首先轉(zhuǎn)換成狀態(tài)2(躍遷1b)以便于最終向“奇偶性X”狀態(tài)躍遷,如步驟802中的分支所示。為了使一個(gè)處于“新鏡像”狀態(tài)中的數(shù)據(jù)條變?yōu)椤巴耆R像”狀態(tài),必須對(duì)“空”數(shù)據(jù)塊進(jìn)行鏡像,即必須將存在一個(gè)“空”數(shù)據(jù)塊中的任何內(nèi)容鏡像到另一個(gè)“空”數(shù)據(jù)塊中。如果預(yù)先知道所有“空”數(shù)據(jù)塊都為零,則已經(jīng)滿足條件。否則,完成此過(guò)程的最簡(jiǎn)單方式就是通常使“空”數(shù)據(jù)塊置零(可替換地,也可彼此配對(duì)和與所作的數(shù)據(jù)備份配對(duì))(步驟803)。然后“空”數(shù)據(jù)塊的狀態(tài)就變?yōu)椤白杂伞辈⑶以摂?shù)據(jù)條的狀態(tài)變成“完全鏡像”(步驟804)。
利用處于狀態(tài)2(“完全鏡像”)中的數(shù)據(jù)條,選擇一個(gè)DASD以便存儲(chǔ)與新的RAID-4(5)數(shù)據(jù)條相關(guān)的奇偶性數(shù)據(jù)塊(步驟806)。在圖9和10中,示出了選擇數(shù)據(jù)塊913,應(yīng)當(dāng)理解其它數(shù)據(jù)塊已經(jīng)被選擇。在最佳實(shí)施例中,控制器403按照一種用于奇偶性數(shù)據(jù)塊的預(yù)定映射算法而自動(dòng)選擇一個(gè)奇偶性數(shù)據(jù)塊。即,在最佳實(shí)施例中,按照RAID-5構(gòu)造奇偶性,并通過(guò)一個(gè)簡(jiǎn)單的循環(huán)公式來(lái)確定奇偶設(shè)備的個(gè)數(shù),例如((N-1)*S MOD N)+1,其中S為數(shù)據(jù)條個(gè)數(shù)而N為陣列中存儲(chǔ)設(shè)備的個(gè)數(shù)。但是,應(yīng)當(dāng)理解還可通過(guò)用戶、主機(jī)來(lái)執(zhí)行對(duì)適當(dāng)奇偶性數(shù)據(jù)塊的選擇或隱含于其它判別式中。例如,如果指定了RAID-4,則包含奇偶性的DASD為已知,因此從該數(shù)據(jù)條的識(shí)別中可以知道包含奇偶性的數(shù)據(jù)塊。也可以先選擇該奇偶性數(shù)據(jù)塊,并根據(jù)該奇偶性數(shù)據(jù)塊的選擇而默認(rèn)適當(dāng)?shù)臄?shù)據(jù)條。因此可以按照不同的順序執(zhí)行步驟801-806,或同時(shí)執(zhí)行特定的步驟。
將所選定的用于存儲(chǔ)奇偶性數(shù)據(jù)的數(shù)據(jù)塊913指定為“奇偶性”數(shù)據(jù)塊(步驟807)。通過(guò)指定這是一個(gè)奇偶性數(shù)據(jù)塊,應(yīng)當(dāng)理解由于已經(jīng)在系統(tǒng)中進(jìn)行了一些記錄,從而系統(tǒng)能夠如此識(shí)別和對(duì)待該數(shù)據(jù)塊。在最佳實(shí)施例中,更新數(shù)據(jù)塊表521的數(shù)據(jù)塊狀態(tài)字段525中的數(shù)據(jù)塊狀態(tài)以便反映出所選定的數(shù)據(jù)塊是一個(gè)奇偶性數(shù)據(jù)塊,即,表521中的數(shù)據(jù)塊狀態(tài)變?yōu)椤捌媾夹浴薄?br> 如果已被指定為“奇偶性”數(shù)據(jù)塊913的數(shù)據(jù)塊以前是一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊(步驟808),則指定與該“數(shù)據(jù)”數(shù)據(jù)塊相關(guān)的“備份”數(shù)據(jù)塊為一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊(步驟809)。然后將剩余的每個(gè)“備份”數(shù)據(jù)塊指定為一個(gè)“自由”數(shù)據(jù)塊(步驟810)。最后,指定的數(shù)據(jù)條從“完全鏡像”(狀態(tài)2)變?yōu)椤捌媾夹訶”(狀態(tài)3)(步驟812)。如上所述,最佳實(shí)施例中的“指定”意味著改變數(shù)據(jù)塊表521中的數(shù)據(jù)塊狀態(tài)和數(shù)據(jù)條狀態(tài)表501中的數(shù)據(jù)條狀態(tài),應(yīng)當(dāng)理解也可以用其它形式表示這種信息。
從等式EQ2可以看出存儲(chǔ)在“奇偶性”數(shù)據(jù)塊913中的信息等于數(shù)據(jù)條1001內(nèi)的其它每個(gè)數(shù)據(jù)塊903-911的異或值,因此不必通過(guò)后面的異或操作來(lái)計(jì)算奇偶性。另外,由于兩個(gè)數(shù)據(jù)塊905和909被指定為“自由”,所以在從RAID-1轉(zhuǎn)換成RAID-4(5)之后,可以在數(shù)據(jù)條1001中存儲(chǔ)其它信息。
圖11是將一個(gè)奇偶性保護(hù)或非冗余數(shù)據(jù)條(即“轉(zhuǎn)換數(shù)據(jù)條”)轉(zhuǎn)換成一個(gè)鏡像數(shù)據(jù)條(RAID-1)的方法流程圖。為了將一個(gè)數(shù)據(jù)條轉(zhuǎn)換成完全鏡像狀態(tài),在轉(zhuǎn)換數(shù)據(jù)條中必須有足夠的可用空間以存儲(chǔ)每個(gè)“數(shù)據(jù)”數(shù)據(jù)塊的備份。具體地參照?qǐng)D7所示的狀態(tài)圖,從狀態(tài)3(“奇偶性X”)或狀態(tài)5(“未被保護(hù)”X)向狀態(tài)2(“完全鏡像”)的狀態(tài)躍遷是可能的。這就是圖7所示的躍遷3d和5b。圖10示出了一個(gè)處于“奇偶性X”狀態(tài)下的轉(zhuǎn)換數(shù)據(jù)條1001,該數(shù)據(jù)條能夠被轉(zhuǎn)換成“完全鏡像”狀態(tài)。如果該數(shù)據(jù)條處于狀態(tài)4,6或7,則在進(jìn)行完全鏡像之前,該數(shù)據(jù)條必須首先變成狀態(tài)3或狀態(tài)5,如下所述。因此,在將信息存入一個(gè)奇偶性保護(hù)或未受保護(hù)數(shù)據(jù)條中時(shí),最好在將任何信息存入位于第二DASD內(nèi)的第二數(shù)據(jù)塊之前,將第一數(shù)據(jù)塊存入第一DASD。以這種方式,信息被合并并且不一定以一種方式進(jìn)行合并,以便使必需的空間可用。
如圖11所示,轉(zhuǎn)換的第一步是識(shí)別將被轉(zhuǎn)換的數(shù)據(jù)塊組,即轉(zhuǎn)換數(shù)據(jù)條(步驟1101)。如前所述,在最佳實(shí)施例中,每個(gè)數(shù)據(jù)條能夠被個(gè)別和獨(dú)立地從一種配置轉(zhuǎn)換成另一種配置??梢酝ㄟ^(guò)上述圖8所示的任一種方法來(lái)進(jìn)行識(shí)別。
然后系統(tǒng)驗(yàn)證在該數(shù)據(jù)條中是否存在足夠的未用空間來(lái)創(chuàng)建每個(gè)“數(shù)據(jù)”數(shù)據(jù)塊的“備份”數(shù)據(jù)塊。具體地,控制器403參照數(shù)據(jù)條狀態(tài)表501來(lái)確定數(shù)據(jù)條狀態(tài);狀態(tài)3或狀態(tài)5下的一個(gè)數(shù)據(jù)條具有足夠的未用空間(步驟1102)。如果在轉(zhuǎn)換數(shù)據(jù)條中沒(méi)有足夠的空間來(lái)存儲(chǔ)所需的“備份”數(shù)據(jù)塊(即,該數(shù)據(jù)條處于狀態(tài)4,6或7),則必須將至少一部分?jǐn)?shù)據(jù)從轉(zhuǎn)換數(shù)據(jù)條重新定位到另一個(gè)數(shù)據(jù)條或另一個(gè)存儲(chǔ)子系統(tǒng)中,例如重新定位于相關(guān)的磁帶驅(qū)動(dòng)器405中(參看圖4)。圖11中的步驟1103-1106示出了這個(gè)過(guò)程。該系統(tǒng)首先確定是否能夠釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊中的存儲(chǔ)空間(步驟1103)。例如通過(guò)詢問(wèn)用戶該數(shù)據(jù)塊中的數(shù)據(jù)是否能被覆蓋、壓縮或存儲(chǔ)于別處,并由用戶進(jìn)行選擇來(lái)執(zhí)行該步驟??商鎿Q地,可對(duì)控制器403編程以便為數(shù)據(jù)可重新定位于其上的數(shù)據(jù)塊掃描可用的其它數(shù)據(jù)條,壓縮可被壓縮的數(shù)據(jù)或?yàn)橹匦露ㄎ挥诖艓Фx擇數(shù)據(jù)塊等,從而自動(dòng)地重新定位數(shù)據(jù)塊??刂破?03可利用最近常用的算法來(lái)確定對(duì)哪個(gè)數(shù)據(jù)塊進(jìn)行壓縮和/或重新定位。如果不能釋放其中一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,則該過(guò)程異常中斷且不能轉(zhuǎn)換該轉(zhuǎn)換數(shù)據(jù)條(步驟1106)。如果找到一個(gè)合適的候選數(shù)據(jù)塊,則在適當(dāng)?shù)臅r(shí)候重新定位/壓縮/忽略該數(shù)據(jù)塊中的數(shù)據(jù),并釋放該數(shù)據(jù)塊本身以存儲(chǔ)其它數(shù)據(jù)(步驟1104)??刂破?03將狀態(tài)表521中的數(shù)據(jù)塊狀態(tài)改為“自由”(如果數(shù)據(jù)條處于狀態(tài)4,則變?yōu)椤巴耆媾夹浴?或“空”(如果數(shù)據(jù)條處于狀態(tài)6或7,則變?yōu)椤拔幢槐Wo(hù)”或“完全未被保護(hù)”),并更新數(shù)據(jù)條狀態(tài)(步驟1105)。數(shù)據(jù)塊狀態(tài)的改變可引發(fā)數(shù)據(jù)條狀態(tài)變?yōu)闋顟B(tài)3或狀態(tài)5。然后重復(fù)步驟1102的算法。
如果該數(shù)據(jù)條已經(jīng)處于狀態(tài)3或5,或能被轉(zhuǎn)換成上述任一種狀態(tài)(步驟1102的“是”分支),則控制器403首先將該數(shù)據(jù)條中的所有“數(shù)據(jù)”數(shù)據(jù)塊讀入RAM410(步驟1108)。在“數(shù)據(jù)”數(shù)據(jù)塊被讀入RAM410中時(shí),它們排入已部分完成,即已寫(xiě)入“數(shù)據(jù)”但還沒(méi)有“備份”的寫(xiě)操作隊(duì)列中??刂破?03通過(guò)將“空”、“自由”和“奇偶性”數(shù)據(jù)塊的狀態(tài)改為“備份”并將適當(dāng)?shù)捻?xiàng)置入配對(duì)設(shè)備字段527中來(lái)更新數(shù)據(jù)塊表521(步驟1109)。只有在數(shù)據(jù)塊被讀入RAM且數(shù)據(jù)塊狀態(tài)被映射之后,數(shù)據(jù)條狀態(tài)才變成“完全鏡像”(步驟1110)。然后控制器403通過(guò)將數(shù)據(jù)從RAM寫(xiě)到“備份”數(shù)據(jù)塊中來(lái)完成排隊(duì)等候的操作(步驟1112)。以這種方式,在一個(gè)DASD發(fā)生故障而轉(zhuǎn)換過(guò)程仍然繼續(xù)的情況下,一個(gè)從奇偶性保護(hù)狀態(tài)轉(zhuǎn)換到鏡像狀態(tài)的數(shù)據(jù)條保持了冗余度。
圖12是將一個(gè)非冗余數(shù)據(jù)條(即“轉(zhuǎn)換數(shù)據(jù)條”)轉(zhuǎn)換成一個(gè)奇偶性保護(hù)數(shù)據(jù)條(RAID-4或-5)的方法流程圖。為了將一個(gè)數(shù)據(jù)條轉(zhuǎn)換成奇偶性保護(hù)狀態(tài),在轉(zhuǎn)換數(shù)據(jù)條中必須具有一個(gè)可用的未用數(shù)據(jù)塊來(lái)存儲(chǔ)奇偶性。具體參照?qǐng)D7所示的狀態(tài)圖,從狀態(tài)5(“未被保護(hù)”X)到狀態(tài)3(“奇偶性X”)或從狀態(tài)6(“未被保護(hù)”)到狀態(tài)4(“完全奇偶性”)的狀態(tài)躍遷是可能的。這就是圖7所示的狀態(tài)躍遷5c和6c。如果該數(shù)據(jù)條處于狀態(tài)7,則該數(shù)據(jù)條必須在被奇偶性保護(hù)之前變成狀態(tài)6,如后所述。
步驟1201到1206與上述步驟1101-1106相似。如圖12所示,轉(zhuǎn)換的第一步是識(shí)別將被轉(zhuǎn)換的數(shù)據(jù)塊組,即轉(zhuǎn)換數(shù)據(jù)條(步驟1201)。如前所述,每個(gè)數(shù)據(jù)條能夠被個(gè)別配置并且可以通過(guò)上述圖8所示的任一種方法來(lái)進(jìn)行識(shí)別。
然后系統(tǒng)驗(yàn)證在該數(shù)據(jù)條中是否存在一個(gè)未用數(shù)據(jù)塊以便存儲(chǔ)奇偶性信息。具體地,控制器403參照數(shù)據(jù)條狀態(tài)表501來(lái)確定數(shù)據(jù)條狀態(tài);狀態(tài)5或狀態(tài)6下的一個(gè)數(shù)據(jù)條具有足夠的未用空間(步驟1202)。如果在轉(zhuǎn)換數(shù)據(jù)條中沒(méi)有足夠的空間來(lái)存儲(chǔ)所需的PATIRY數(shù)據(jù)塊(即,該數(shù)據(jù)條處于狀態(tài)7),則必須如上述圖1所述釋放一個(gè)數(shù)據(jù)塊。系統(tǒng)確定是否能夠釋放一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊中的存儲(chǔ)空間(步驟1203);如果不能,則處理過(guò)程異常中斷(步驟1206)。如果找到一個(gè)合適的候選數(shù)據(jù)塊,則在適當(dāng)?shù)臅r(shí)候重新定位/壓縮/忽略該數(shù)據(jù)塊中的數(shù)據(jù),并釋放該數(shù)據(jù)塊本身以存儲(chǔ)其它數(shù)據(jù)(步驟1204)。控制器403將狀態(tài)表521中的數(shù)據(jù)塊狀態(tài)改為“空”,并更新數(shù)據(jù)條狀態(tài)(步驟1205)?!翱铡睌?shù)據(jù)塊的創(chuàng)建使數(shù)據(jù)條狀態(tài)從狀態(tài)7變成狀態(tài)6。然后重復(fù)步驟1202的算法。
如果該數(shù)據(jù)條已經(jīng)處于狀態(tài)5或6,或能夠如上所述被轉(zhuǎn)換成狀態(tài)6(步驟1202的“是”分支),則控制器403首先選擇一個(gè)用于存儲(chǔ)奇偶性信息的數(shù)據(jù)塊(步驟1208)??赏ㄟ^(guò)上述圖8所述的任一種方法執(zhí)行此步驟。但是,如果選擇了一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,則該數(shù)據(jù)塊中的數(shù)據(jù)將不得不被重新定位到一個(gè)“空”數(shù)據(jù)塊中。因此,最好選擇一個(gè)可用的“空”數(shù)據(jù)塊。如果存在多于一個(gè)的“空”數(shù)據(jù)塊,則通過(guò)適當(dāng)?shù)乃惴▉?lái)選擇這樣一個(gè)“空”數(shù)據(jù)塊。然后控制器連續(xù)讀取數(shù)據(jù)條中除了被選擇用以存儲(chǔ)奇偶性信息的數(shù)據(jù)塊以外的所有數(shù)據(jù)塊,并產(chǎn)生所讀取數(shù)據(jù)塊的一個(gè)累積異或值(步驟1209)。這個(gè)累積異或值被暫時(shí)存儲(chǔ)在RAM410中。當(dāng)所有數(shù)據(jù)塊已被讀出時(shí),所產(chǎn)生的累積異或值即為奇偶性信息。然后將這個(gè)奇偶性信息寫(xiě)入所選定的“奇偶性”數(shù)據(jù)塊中(步驟1210)。然后控制器403通過(guò)將奇偶性數(shù)據(jù)塊的狀態(tài)改為“奇偶性”、將任意“空”數(shù)據(jù)塊的狀態(tài)改為“自由”,并在適當(dāng)?shù)臅r(shí)候更新配對(duì)設(shè)備字段527來(lái)更新數(shù)據(jù)塊狀態(tài)表521(步驟1211)。然后控制器在適當(dāng)?shù)臅r(shí)候?qū)⒈?01中的數(shù)據(jù)條狀態(tài)改為“奇偶性X”或“完全奇偶性”(步驟1212)。并設(shè)置版本號(hào)以反映出奇偶性信息當(dāng)前有效。
在最佳實(shí)施例中,陣列中的存儲(chǔ)設(shè)備個(gè)數(shù)為偶數(shù),并且每個(gè)數(shù)據(jù)條由位于每個(gè)存儲(chǔ)設(shè)備的特定地址范圍上的所有數(shù)據(jù)塊構(gòu)成。這種排列簡(jiǎn)化了數(shù)據(jù)條與確定奇偶性數(shù)據(jù)塊之間的映射關(guān)系。但是,也可以利用一個(gè)具有奇數(shù)個(gè)存儲(chǔ)設(shè)備的陣列。在這種情況下,一個(gè)數(shù)據(jù)條最好由少于存儲(chǔ)設(shè)備個(gè)數(shù)的偶數(shù)個(gè)數(shù)據(jù)塊構(gòu)成。例如,一個(gè)數(shù)據(jù)條中的數(shù)據(jù)塊個(gè)數(shù)為N-1,其中N是存儲(chǔ)設(shè)備的個(gè)數(shù)。圖13示出了這樣一種配置。在圖13的陣列中,標(biāo)記為“數(shù)據(jù)1A”、“備份1A”、“數(shù)據(jù)1B”和“備份1B”的數(shù)據(jù)塊構(gòu)成了一個(gè)數(shù)據(jù)條,而例如標(biāo)記為“數(shù)據(jù)3A”、“備份3A”、“數(shù)據(jù)3B”和“備份3B”的數(shù)據(jù)塊(1301-1304)構(gòu)成了第二數(shù)據(jù)條。應(yīng)當(dāng)注意每個(gè)數(shù)據(jù)條包含偶數(shù)個(gè)數(shù)據(jù)塊,但這些數(shù)據(jù)塊并非都位于相同的地址上。利用上述技術(shù)可將這樣一個(gè)數(shù)據(jù)條轉(zhuǎn)換成RAID-4(5)格式或反向轉(zhuǎn)換。對(duì)數(shù)據(jù)目錄表的某些改動(dòng)是必要的,以便處理更復(fù)雜的數(shù)據(jù)條映射。
可替換地,如果一個(gè)數(shù)據(jù)塊已知為“空”且包含的數(shù)據(jù)全部為零(如果一個(gè)“空”數(shù)據(jù)塊的內(nèi)容未知或非零,則將零寫(xiě)入該數(shù)據(jù)塊中以滿足條件),則可以利用改進(jìn)的上述技術(shù)將一個(gè)包含了奇數(shù)個(gè)數(shù)據(jù)塊的數(shù)據(jù)條從RAID-1轉(zhuǎn)換成RAID-4(5)。這種情況可能出現(xiàn)在例如將一個(gè)新的DASD加入到現(xiàn)有的陣列中時(shí)。在這種情況下,通過(guò)(a)選擇一個(gè)奇偶性數(shù)據(jù)塊(可以是空數(shù)據(jù)塊)并將其指定為“奇偶性”數(shù)據(jù)塊,(b)如果選定的數(shù)據(jù)塊是一個(gè)“備份”數(shù)據(jù)塊,則指定其它每個(gè)“備份”數(shù)據(jù)塊和“空”數(shù)據(jù)塊為“自由”;(c)如果選定的數(shù)據(jù)塊是一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,則指定相關(guān)的“備份”數(shù)據(jù)塊為一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,并指定所有其它“備份”數(shù)據(jù)塊和“空”數(shù)據(jù)塊為“自由”;以及(d)如果選定的數(shù)據(jù)塊是“空”數(shù)據(jù)塊,則指定每個(gè)“備份”數(shù)據(jù)塊為“自由”,可以將一個(gè)選定的數(shù)據(jù)條轉(zhuǎn)換成RAID-4(5),其中該數(shù)據(jù)條包含按照RAID-1配置的一對(duì)或多對(duì)數(shù)據(jù)塊以及一個(gè)空數(shù)據(jù)塊。相似地,可以利用剩余的一個(gè)未配對(duì)數(shù)據(jù)塊(作為一個(gè)“自由”數(shù)據(jù)塊或作為一個(gè)為防止存儲(chǔ)設(shè)備故障而未受保護(hù)的“數(shù)據(jù)”數(shù)據(jù)塊)進(jìn)行向RAID-1的反向轉(zhuǎn)換。
依據(jù)本發(fā)明的最佳實(shí)施例,通過(guò)一個(gè)RAID控制器來(lái)執(zhí)行“自由”、“備份”、“數(shù)據(jù)”或“空”數(shù)據(jù)塊的指定。RAID控制器可以是一個(gè)可編程設(shè)備,例如一個(gè)用于PC服務(wù)器的IBM SSA RAID適配器,一個(gè)PC ServeRAID SCSI適配器,或一個(gè)AS/400高級(jí)系統(tǒng)模型300中的磁盤單元控制器,其中每種設(shè)備都是由國(guó)際商業(yè)機(jī)器公司生產(chǎn)制造的??商鎿Q地,該控制器可以是一個(gè)狀態(tài)機(jī)、專用硬件或一個(gè)ASIC(專用集成電路)??商鎿Q地,可通過(guò)運(yùn)行于實(shí)際上系統(tǒng)的通用中央處理器上的軟件來(lái)執(zhí)行由一個(gè)存儲(chǔ)子系統(tǒng)的專用RAID控制器所執(zhí)行的功能,所述中央處理器除了RAID控制器功能之外還可執(zhí)行其它各種任務(wù)。
依據(jù)最佳實(shí)施例,特別指定每個(gè)數(shù)據(jù)塊以便確定新數(shù)據(jù)是否能被寫(xiě)入該數(shù)據(jù)塊中,并且如果能,則確定是否必須按照讀-修改-寫(xiě)的算法寫(xiě)入新數(shù)據(jù)。所屬技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解也可利用其它的指定方法來(lái)達(dá)到相似的結(jié)果,并且每個(gè)數(shù)據(jù)塊的指定也可用于與本發(fā)明無(wú)關(guān)的其它目的。
一個(gè)用于存儲(chǔ)設(shè)備陣列的控制程序可作為存儲(chǔ)在一個(gè)計(jì)算機(jī)程序產(chǎn)品上的處理器可執(zhí)行指令序列而執(zhí)行,所述計(jì)算機(jī)程序產(chǎn)品包括磁軟盤、磁帶、光盤、集成電路芯片或可編程計(jì)算機(jī)可讀的其它存儲(chǔ)設(shè)備。
依據(jù)最佳實(shí)施例,一組RAID-1配置的數(shù)據(jù)塊可被轉(zhuǎn)換成RAID-4或RAID-5配置,反之亦然。但是,應(yīng)當(dāng)理解也可以使用具有相似特性并與RAID級(jí)數(shù)或其它限定無(wú)關(guān)的其它配置。特別是指6級(jí)以上的工業(yè)識(shí)別RAID級(jí)。一般地,這些系統(tǒng)具有RAID-4或5級(jí)的全部特性,但還具有諸如雙重奇偶性數(shù)據(jù)塊或附加備用數(shù)據(jù)塊之類的其它特性。
圖1、2、3、9、10和13示出了存儲(chǔ)設(shè)備陣列,陣列中的每個(gè)設(shè)備包含相對(duì)較少的數(shù)據(jù)塊。選擇數(shù)目較少的數(shù)據(jù)塊只是為了進(jìn)行說(shuō)明,而不應(yīng)將本發(fā)明限定在任何特定的數(shù)目上。雖然本發(fā)明是通過(guò)利用較少數(shù)目的數(shù)據(jù)塊而實(shí)現(xiàn)的,但所屬技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解存儲(chǔ)設(shè)備陣列中的每個(gè)存儲(chǔ)設(shè)備實(shí)際上可包括很多個(gè)數(shù)據(jù)塊。
雖然前述的用于將一個(gè)數(shù)據(jù)條從一種格式轉(zhuǎn)換成另一種格式的特定系統(tǒng)和方法能夠完全達(dá)到本發(fā)明的目的,但應(yīng)當(dāng)理解這只是本發(fā)明的一個(gè)最佳實(shí)施例并且只代表本發(fā)明所廣泛關(guān)注的主題,本發(fā)明的保護(hù)范圍包括對(duì)所屬技術(shù)領(lǐng)域的技術(shù)人員來(lái)說(shuō)是顯而易見(jiàn)的其他實(shí)施例,因此除了后述的權(quán)利要求以外,不能對(duì)本發(fā)明進(jìn)行任何限定。
權(quán)利要求
1.一種用于將存儲(chǔ)在多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備上的第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備上的第二存儲(chǔ)器結(jié)構(gòu)的方法,該方法包括步驟(a)識(shí)別將被轉(zhuǎn)換的數(shù)據(jù)塊組,其中每個(gè)數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的不同數(shù)據(jù)存儲(chǔ)設(shè)備上,所述數(shù)據(jù)塊組包括多個(gè)數(shù)據(jù)塊對(duì),每一對(duì)數(shù)據(jù)塊具有相同的數(shù)據(jù);(b)選擇所述數(shù)據(jù)塊組的一個(gè)第一數(shù)據(jù)塊;(c)將第一數(shù)據(jù)塊指定為一個(gè)奇偶性數(shù)據(jù)塊;(d)從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇一個(gè)數(shù)據(jù)塊;以及(e)將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)塊組包括一個(gè)數(shù)據(jù)條,其中每個(gè)數(shù)據(jù)塊被存儲(chǔ)在各數(shù)據(jù)存儲(chǔ)設(shè)備中的相同地址上。
3.如權(quán)利要求1所述的方法,其中每個(gè)所述數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)多個(gè)所述數(shù)據(jù)塊,所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)所述數(shù)據(jù)塊組;以及其中可將第一數(shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu),而第二數(shù)據(jù)塊組保持按照所述第一存儲(chǔ)器結(jié)構(gòu)而配置。
4.如權(quán)利要求3所述的方法,其特征在于可個(gè)別和獨(dú)立地將每個(gè)數(shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu)。
5.如權(quán)利要求1所述的方法,其特征在于所述第一存儲(chǔ)器結(jié)構(gòu)是按照RAID-1配置的數(shù)據(jù)塊組,而所述第二存儲(chǔ)器結(jié)構(gòu)是按照RAID-4或RAID-5配置的數(shù)據(jù)塊組。
6.如權(quán)利要求1所述的方法,其中第一存儲(chǔ)器結(jié)構(gòu)包括多個(gè)“備份”數(shù)據(jù)塊和“數(shù)據(jù)”數(shù)據(jù)塊,每個(gè)“備份”數(shù)據(jù)塊是一個(gè)相關(guān)的“數(shù)據(jù)”數(shù)據(jù)塊的備份并且每個(gè)“備份”數(shù)據(jù)塊被存儲(chǔ)在一個(gè)與存儲(chǔ)相關(guān)“數(shù)據(jù)”數(shù)據(jù)塊的DASD不同的DASD上,第二存儲(chǔ)器結(jié)構(gòu)包括 一奇偶性數(shù)據(jù)塊和一組奇偶性保護(hù)數(shù)據(jù)塊,每個(gè)奇偶性保護(hù)數(shù)據(jù)塊被存儲(chǔ)在一個(gè)與存儲(chǔ)奇偶性數(shù)據(jù)塊和其它每個(gè)奇偶性保護(hù)數(shù)據(jù)塊的DASD不同的DASD上;其中如果所述第一數(shù)據(jù)塊是一個(gè)“備份”數(shù)據(jù)塊,則所述用于將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)的步驟包括指定每另一個(gè)“備份”數(shù)據(jù)塊為一個(gè)“自由”數(shù)據(jù)塊;以及其中如果所述第一數(shù)據(jù)塊是一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,則所述用于將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)的步驟包括(1)指定與第一數(shù)據(jù)塊相關(guān)的“備份”數(shù)據(jù)塊為一個(gè)“數(shù)據(jù)”數(shù)據(jù)塊,以及(2)指定每另一個(gè)“備份”數(shù)據(jù)塊為一個(gè)“自由”數(shù)據(jù)塊。
7.如權(quán)利要求1所述的方法,其特征在于所述數(shù)據(jù)存儲(chǔ)設(shè)備是旋轉(zhuǎn)式磁硬盤驅(qū)動(dòng)器。
8.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備;一個(gè)可編程處理器,用于控制所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的操作,所述可編程處理器執(zhí)行一個(gè)控制程序以將存儲(chǔ)在所述多個(gè)存儲(chǔ)設(shè)備上的第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成存儲(chǔ)在所述多個(gè)存儲(chǔ)設(shè)備上的第二存儲(chǔ)器結(jié)構(gòu);其中所述控制程序維護(hù)用于所述數(shù)據(jù)存儲(chǔ)系統(tǒng)的狀態(tài)信息;以及其中所述控制程序,響應(yīng)對(duì)將被轉(zhuǎn)換的數(shù)據(jù)塊組的識(shí)別,其中每個(gè)將被轉(zhuǎn)換的數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的不同數(shù)據(jù)存儲(chǔ)設(shè)備上,所述數(shù)據(jù)塊組包括多個(gè)數(shù)據(jù)塊對(duì),每一對(duì)數(shù)據(jù)塊具有相同的數(shù)據(jù),(a)更新所述狀態(tài)信息以將所述數(shù)據(jù)塊組的一個(gè)第一數(shù)據(jù)塊指定為一個(gè)奇偶性數(shù)據(jù)塊,以及(b)更新所述狀態(tài)信息以將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)。
9.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述可編程處理器被包含在一個(gè)與主計(jì)算機(jī)系統(tǒng)相連的控制器中,所述控制器包括一個(gè)包含所述狀態(tài)信息的隨機(jī)存取存儲(chǔ)器。
10.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述第一存儲(chǔ)器結(jié)構(gòu)是按照RAID-1配置的數(shù)據(jù)塊組,而所述第二存儲(chǔ)器結(jié)構(gòu)是按照RAID-4或RAID-5配置的數(shù)據(jù)塊組。
11.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述數(shù)據(jù)存儲(chǔ)設(shè)備是旋轉(zhuǎn)式磁硬盤驅(qū)動(dòng)器。
12.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述數(shù)據(jù)塊組包括一個(gè)數(shù)據(jù)條,其中每個(gè)數(shù)據(jù)塊被存儲(chǔ)在各數(shù)據(jù)存儲(chǔ)設(shè)備中的相同地址上。
13.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其中每個(gè)所述數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)多個(gè)所述數(shù)據(jù)塊,所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)所述數(shù)據(jù)塊組;以及其中所述控制程序?qū)⒌谝粩?shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu),而第二數(shù)據(jù)塊組保持按照所述第一存儲(chǔ)器結(jié)構(gòu)而配置。
14.如權(quán)利要求13所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述控制程序能夠個(gè)別和獨(dú)立地將每個(gè)數(shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu)。
15.如權(quán)利要求8所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述控制程序自動(dòng)地根據(jù)對(duì)將從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu)的數(shù)據(jù)塊組的識(shí)別而選擇所述第一數(shù)據(jù)塊。
16.一種用于控制一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)的控制器,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)具有多個(gè)用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備,所述控制器包括一個(gè)可編程處理器,用于控制所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的操作,所述可編程處理器執(zhí)行一個(gè)控制程序以將存儲(chǔ)在所述多個(gè)存儲(chǔ)設(shè)備上的第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成存儲(chǔ)在所述多個(gè)存儲(chǔ)設(shè)備上的第二存儲(chǔ)器結(jié)構(gòu);以及一個(gè)隨機(jī)存取存儲(chǔ)器,用于包含由所述控制程序維護(hù)的狀態(tài)信息;其中所述控制程序,響應(yīng)對(duì)將被轉(zhuǎn)換的數(shù)據(jù)塊組的識(shí)別,其中每個(gè)將被轉(zhuǎn)換的數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)不同的數(shù)據(jù)存儲(chǔ)設(shè)備上,所述數(shù)據(jù)塊組包括多個(gè)數(shù)據(jù)塊對(duì),每一對(duì)數(shù)據(jù)塊具有相同的數(shù)據(jù),(a)更新所述狀態(tài)信息以將所述數(shù)據(jù)塊組的第一數(shù)據(jù)塊指定為一個(gè)奇偶性數(shù)據(jù)塊,以及(b)更新所述狀態(tài)信息以將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)。
17.如權(quán)利要求16所述的控制器,其特征在于所述第一存儲(chǔ)器結(jié)構(gòu)是按照RAID-1配置的數(shù)據(jù)塊組,而所述第二存儲(chǔ)器結(jié)構(gòu)是按照RAID-4或RAID-5配置的數(shù)據(jù)塊組。
18.如權(quán)利要求16所述的控制器,其中每個(gè)所述數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)多個(gè)所述數(shù)據(jù)塊,所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)所述數(shù)據(jù)塊組;以及其中所述控制程序?qū)⒌谝粩?shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu),而第二數(shù)據(jù)塊組保持按照所述第一存儲(chǔ)器結(jié)構(gòu)而配置。
19.如權(quán)利要求18所述的控制器,其特征在于所述控制程序能夠個(gè)別和獨(dú)立地將每個(gè)數(shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu)。
20.一種數(shù)字處理裝置可讀并確實(shí)采用了由數(shù)字處理裝置可執(zhí)行的指令構(gòu)成的控制程序以便控制一個(gè)數(shù)據(jù)存儲(chǔ)系統(tǒng)的程序存儲(chǔ)設(shè)備,所述數(shù)據(jù)存儲(chǔ)系統(tǒng)具有多個(gè)用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)設(shè)備,所述程序執(zhí)行用于將第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成第二存儲(chǔ)器結(jié)構(gòu)的方法,該方法包括步驟(a)接收對(duì)將從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu)的數(shù)據(jù)塊組的識(shí)別,每個(gè)將被轉(zhuǎn)換的數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的不同數(shù)據(jù)存儲(chǔ)設(shè)備上,所述數(shù)據(jù)塊組包括多個(gè)數(shù)據(jù)塊對(duì),每一對(duì)數(shù)據(jù)塊具有相同的數(shù)據(jù),(b)更新?tīng)顟B(tài)信息以將所述數(shù)據(jù)塊組的第一數(shù)據(jù)塊指定為一個(gè)奇偶性數(shù)據(jù)塊,以及(c)更新所述狀態(tài)信息以將從不包括所述第一數(shù)據(jù)塊的所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊對(duì)中分別選擇的每個(gè)數(shù)據(jù)塊指定為可用于存儲(chǔ)替換數(shù)據(jù)。
21.如權(quán)利要求20所述的程序存儲(chǔ)設(shè)備,其特征在于所述第一存儲(chǔ)器結(jié)構(gòu)是按照RAID-1配置的數(shù)據(jù)塊組,而所述第二存儲(chǔ)器結(jié)構(gòu)是按照RAID-4或RAID-5配置的數(shù)據(jù)塊組。
22.如權(quán)利要求20所述的程序存儲(chǔ)設(shè)備,其中每個(gè)所述數(shù)據(jù)存儲(chǔ)設(shè)備存儲(chǔ)多個(gè)所述數(shù)據(jù)塊,所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備包含多個(gè)所述數(shù)據(jù)塊組;以及其中所述控制程序?qū)⒌谝粩?shù)據(jù)塊組從所述第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成所述第二存儲(chǔ)器結(jié)構(gòu),而第二數(shù)據(jù)塊組保持按照所述第一存儲(chǔ)器結(jié)構(gòu)而配置。
23.一種用于將存儲(chǔ)在多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備上的第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備上的第二存儲(chǔ)器結(jié)構(gòu)的方法,該方法包括步驟(a)識(shí)別將被轉(zhuǎn)換的數(shù)據(jù)塊組,其中每個(gè)數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的不同數(shù)據(jù)存儲(chǔ)設(shè)備上,所述數(shù)據(jù)塊組包括多個(gè)包含數(shù)據(jù)的數(shù)據(jù)塊和一個(gè)包含由所述多個(gè)包含數(shù)據(jù)的數(shù)據(jù)塊而得出的奇偶性的第一數(shù)據(jù)塊;(b)選擇包含奇偶性的所述數(shù)據(jù)塊以包含所述多個(gè)包含數(shù)據(jù)的數(shù)據(jù)塊中的第一數(shù)據(jù)塊中所包含的數(shù)據(jù)備份;(c)選擇所述數(shù)據(jù)塊組中的至少另一個(gè)數(shù)據(jù)塊以包含所述包含數(shù)據(jù)的所述數(shù)據(jù)塊組中的至少一個(gè)數(shù)據(jù)塊中所包含的數(shù)據(jù)備份;以及(d)指定從所述數(shù)據(jù)塊組中選定的每個(gè)數(shù)據(jù)塊可用于存儲(chǔ)所述數(shù)據(jù)塊組中另一個(gè)數(shù)據(jù)塊所包含的數(shù)據(jù)備份。
24.一種數(shù)據(jù)存儲(chǔ)系統(tǒng),包括多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備;一個(gè)可編程處理器,用于控制所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的操作,所述可編程處理器執(zhí)行一個(gè)控制程序以控制所述數(shù)據(jù)存儲(chǔ)系統(tǒng)的操作;其中所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備中的數(shù)據(jù)被組織成多個(gè)數(shù)據(jù)塊組,所述數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊被分別存儲(chǔ)在所述多個(gè)數(shù)據(jù)存儲(chǔ)設(shè)備的不同數(shù)據(jù)存儲(chǔ)設(shè)備上;其中所述控制程序支持依據(jù)多種不同存儲(chǔ)器結(jié)構(gòu)對(duì)所述數(shù)據(jù)塊組的格式化,所述至少一種存儲(chǔ)器結(jié)構(gòu)為冗余數(shù)據(jù)格式,第一數(shù)據(jù)塊組和第二數(shù)據(jù)塊組的格式化可彼此獨(dú)立;以及一個(gè)隨機(jī)存取存儲(chǔ)器,用于存儲(chǔ)由所述控制程序維護(hù)的狀態(tài)信息,所述狀態(tài)信息包括用于每個(gè)數(shù)據(jù)塊的數(shù)據(jù)塊狀態(tài)和分別用于所述第一數(shù)據(jù)塊組和所述第二數(shù)據(jù)塊組的組狀態(tài),所述組狀態(tài)信息包括對(duì)每個(gè)數(shù)據(jù)塊組所依據(jù)的存儲(chǔ)器結(jié)構(gòu)的標(biāo)識(shí);其中所述控制程序,響應(yīng)對(duì)將從第一存儲(chǔ)器結(jié)構(gòu)轉(zhuǎn)換成第二存儲(chǔ)器結(jié)構(gòu)的數(shù)據(jù)塊組的標(biāo)識(shí),(a)更新用于將被轉(zhuǎn)換的所述數(shù)據(jù)塊組中的數(shù)據(jù)塊的數(shù)據(jù)塊狀態(tài)信息,以及(b)更新用于所述數(shù)據(jù)塊組的組狀態(tài)信息,以識(shí)別按照第二存儲(chǔ)器結(jié)構(gòu)配置的數(shù)據(jù)塊組。
25.如權(quán)利要求24所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述第一存儲(chǔ)器結(jié)構(gòu)是按照RAID-1配置的數(shù)據(jù)塊組,而所述第二存儲(chǔ)器結(jié)構(gòu)是按照RAID-4或RAID-5配置的數(shù)據(jù)塊組。
26.如權(quán)利要求24所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述每個(gè)數(shù)據(jù)塊組包括一個(gè)數(shù)據(jù)條,其中每個(gè)數(shù)據(jù)塊被存儲(chǔ)在各數(shù)據(jù)存儲(chǔ)設(shè)備中的相同地址上。
27.如權(quán)利要求24所述的數(shù)據(jù)存儲(chǔ)系統(tǒng),其特征在于所述狀態(tài)信息包括分別用于所述多個(gè)數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊組的組狀態(tài),所述多個(gè)數(shù)據(jù)塊組中的每個(gè)數(shù)據(jù)塊組彼此單獨(dú)和獨(dú)立地按照各自的存儲(chǔ)器結(jié)構(gòu)而配置。
全文摘要
一個(gè)靈活的存儲(chǔ)設(shè)備陣列存儲(chǔ)多個(gè)數(shù)據(jù)塊(903,905,907,909,911,913),這些數(shù)據(jù)塊被分成了所謂數(shù)據(jù)條(901,1001)的數(shù)據(jù)塊組,一個(gè)數(shù)據(jù)條中的每個(gè)數(shù)據(jù)塊被存儲(chǔ)在不同的設(shè)備上(401a-40lf)。一個(gè)陣列控制器(403)支持依據(jù)不同存儲(chǔ)器結(jié)構(gòu)而獨(dú)立格式化的數(shù)據(jù)條。具體地,最佳實(shí)施例中所支持的存儲(chǔ)器結(jié)構(gòu)是非冗余、鏡像和奇偶性保護(hù)。每個(gè)存儲(chǔ)數(shù)據(jù)塊處于五種狀態(tài)之一:(1)“空”;(2)“數(shù)據(jù)”;(3)“奇偶性”;(4)“備份”;或(5)?!白杂伞?。陣列中存儲(chǔ)數(shù)據(jù)塊的每個(gè)數(shù)據(jù)條存在于七種狀態(tài)之一,這七種狀態(tài)取決于數(shù)據(jù)塊的狀態(tài)。定義了允許一種類型的數(shù)據(jù)條被轉(zhuǎn)換成另一種類型數(shù)據(jù)條的特定狀態(tài)躍遷,同時(shí)使數(shù)據(jù)的移動(dòng)最小化(圖7)。具體地,通過(guò)將鏡像數(shù)據(jù)條中的任何一個(gè)數(shù)據(jù)塊指定為一個(gè)“奇偶性”,數(shù)據(jù)塊(806-807)并改變特定的狀態(tài)信息(808-812),可使處于完全鏡像狀態(tài)的數(shù)據(jù)條被轉(zhuǎn)換成奇偶性保護(hù)狀態(tài)。在這種情況下無(wú)須移動(dòng)數(shù)據(jù)。將一個(gè)非冗余或奇偶性保護(hù)數(shù)據(jù)條轉(zhuǎn)換成一個(gè)鏡像數(shù)據(jù)條(1102-1112,1202-1212)也是可能的。
文檔編號(hào)G06F13/10GK1247608SQ97181961
公開(kāi)日2000年3月15日 申請(qǐng)日期1997年5月28日 優(yōu)先權(quán)日1997年2月27日
發(fā)明者戴維·阿倫·斯太克金司凱 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
永登县| 泸溪县| 辛集市| 合水县| 闽侯县| 泰兴市| 安顺市| 大竹县| 冀州市| 鄂州市| 老河口市| 邻水| 原阳县| 苏尼特右旗| 石柱| 巴林左旗| 鄂伦春自治旗| 普兰店市| 昭苏县| 浙江省| 土默特右旗| 岳阳县| 阳信县| 朝阳县| 谷城县| 肥西县| 桦南县| 巴南区| 鄱阳县| 大庆市| 多伦县| 安塞县| 临湘市| 沙雅县| 临猗县| 博兴县| 太仓市| 磐石市| 德钦县| 海宁市| 革吉县|