專利名稱:在raid數(shù)據(jù)重建和轉(zhuǎn)移中使用文件系統(tǒng)信息的制作方法
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明涉及在RAID數(shù)據(jù)重建和轉(zhuǎn)移(migration)中使用文件系統(tǒng)信息。
2.相關(guān)技術(shù)在計(jì)算機(jī)系統(tǒng)中保存大量存儲(chǔ)的一個(gè)已知方法被稱作RAID(“廉價(jià)磁盤冗余陳列”)。RAID存儲(chǔ)器包括一個(gè)磁盤群,其中至少部分被用來(lái)儲(chǔ)存數(shù)據(jù)和至少部分被用來(lái)存儲(chǔ)與那些數(shù)據(jù)相關(guān)的奇偶信息,其中數(shù)據(jù)和奇偶性被分配到多個(gè)磁盤。如果那個(gè)儲(chǔ)存數(shù)據(jù)或奇偶性的磁盤塊故障或整個(gè)磁盤都出現(xiàn)故障,則允許RAID存儲(chǔ)系統(tǒng)(從剩余的存儲(chǔ)數(shù)據(jù)和奇偶信息)重建原始數(shù)據(jù)。在被稱作RAID條帶的一組磁盤塊中,數(shù)據(jù)和奇偶性是彼此相關(guān)的。
RAID存儲(chǔ)器的一個(gè)已知問(wèn)題是,如果驅(qū)動(dòng)器出現(xiàn)故障,則RAID存儲(chǔ)系統(tǒng)不再具有相同的冗余度,而如果希望保存相同的冗余度,則必須對(duì)其做出調(diào)整。即,希望RAID存儲(chǔ)系統(tǒng)允許遲些的第二磁盤故障而不造成數(shù)據(jù)丟失,但是重建RAID條帶中兩個(gè)分離的故障磁盤的數(shù)據(jù)是不可能的。為了保存相同的冗余度,RAID存儲(chǔ)系統(tǒng)具有從故障磁盤重建數(shù)據(jù)到其上的備用磁盤,或(如果存在足夠的可用空間),則從故障磁盤把數(shù)據(jù)轉(zhuǎn)移到其它磁盤。在后一種情況中,與每個(gè)RAID條帶相關(guān)的奇偶性必須響應(yīng)于所分配數(shù)據(jù)的轉(zhuǎn)移而被調(diào)整。然而,數(shù)據(jù)重建和奇偶性重算包括實(shí)質(zhì)性的磁盤驅(qū)動(dòng)器讀寫(xiě)操作,并且最小化磁盤訪問(wèn)量和在磁盤和其余的計(jì)算機(jī)系統(tǒng)之間來(lái)回傳送的信息量將是有利的。
因此,有利的是提供一個(gè)存儲(chǔ)系統(tǒng)(其可能是RAID存儲(chǔ)系統(tǒng)或另一類型的存儲(chǔ)系統(tǒng)),其保存數(shù)據(jù)的可靠性、允許邏輯上刪除故障磁盤、和最小化計(jì)算量、執(zhí)行數(shù)據(jù)轉(zhuǎn)移或重建的磁盤存取量,或奇偶性調(diào)整量。這些和其它優(yōu)點(diǎn)在本發(fā)明實(shí)施例中被提供,其中,文件系統(tǒng)保存的信息(包括磁盤塊實(shí)際上用于記錄所存儲(chǔ)的數(shù)據(jù)的相關(guān)信息)被用于和轉(zhuǎn)移,以及奇偶性的重算。本發(fā)明最小化計(jì)算和磁盤存取的優(yōu)點(diǎn)也可以用于存儲(chǔ)系統(tǒng)的一般操作,以及用于把存儲(chǔ)卷從源存儲(chǔ)系統(tǒng)鏡像到目標(biāo)存儲(chǔ)系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明提供一種方法和系統(tǒng),它保持?jǐn)?shù)據(jù)可靠性、允許邏輯刪除故障磁盤、和最小化執(zhí)行數(shù)據(jù)轉(zhuǎn)移或重建或奇偶性重算所需的計(jì)算量和磁盤存取量。在優(yōu)選實(shí)施例中,當(dāng)執(zhí)行數(shù)據(jù)重建和轉(zhuǎn)移,以及奇偶性重算時(shí),存儲(chǔ)系統(tǒng)使用實(shí)質(zhì)上只和所分配的磁盤塊有關(guān)的信息,并忽略未分配的磁盤塊,未分配的磁盤塊已經(jīng)被設(shè)置為一個(gè)預(yù)定值,例如零。當(dāng)磁盤故障時(shí),存儲(chǔ)系統(tǒng)只轉(zhuǎn)移故障磁盤上已分配數(shù)據(jù)的那些磁盤塊,而在可能的情況下把未分配的磁盤塊視為邏輯上為零。
在本發(fā)明的一方面中,文件系統(tǒng)保存的信息識(shí)別在故障磁盤上實(shí)際被分配的磁盤塊。當(dāng)有備用磁盤或沒(méi)有備用磁盤時(shí),RAID群中的磁盤都可能出現(xiàn)故障。當(dāng)磁盤塊將從故障磁盤被轉(zhuǎn)移而沒(méi)有備用磁盤時(shí),那些磁盤塊從故障磁盤被轉(zhuǎn)移到RAID群中的其它未故障磁盤,因而減少了RAID群中的磁盤數(shù)量。當(dāng)那些磁盤塊被轉(zhuǎn)移時(shí)(即,數(shù)據(jù)被重建和拷貝到目標(biāo)磁盤塊上),源磁盤塊邏輯上被設(shè)置為零并且為與源磁盤塊相關(guān)的RAID條帶重新計(jì)算奇偶性。一旦所有已分配磁盤塊都已經(jīng)從故障磁盤被轉(zhuǎn)移,故障磁盤就可以邏輯上從RAID群中除去。當(dāng)磁盤塊將從故障磁盤被轉(zhuǎn)移到備用磁盤時(shí),那些磁盤塊用類似方法被轉(zhuǎn)移,不同在于,當(dāng)轉(zhuǎn)移的時(shí)候,備用磁盤上未分配的存儲(chǔ)塊邏輯上或物理上被設(shè)置成選定值(零)。
在本發(fā)明的一方面中,通過(guò)重定向?qū)懭氩僮?預(yù)定用于故障磁盤上的磁盤塊)到其它未故障磁盤,文件系統(tǒng)主動(dòng)地協(xié)助RAID存儲(chǔ)系統(tǒng)。文件系統(tǒng)還保持一個(gè)記錄,即哪些使用中的磁盤塊已經(jīng)被這樣“轉(zhuǎn)移”到那些其它的未故障磁盤,因而提供了一個(gè)指示符,其指示最初保存在故障磁盤上的存儲(chǔ)數(shù)據(jù)已經(jīng)完全被轉(zhuǎn)移。當(dāng)寫(xiě)入磁盤時(shí),文件系統(tǒng)提前主動(dòng)把未使用磁盤塊設(shè)置為選定值(零),從而在寫(xiě)入以及遲些寫(xiě)入的時(shí)候最小化奇偶性的重算量。在優(yōu)選實(shí)施例中,至少在下列情況中,文件系統(tǒng)把未使用磁盤塊設(shè)置為零(1)當(dāng)新磁盤被添加到RAID群時(shí),(2)當(dāng)包括未使用磁盤塊的RAID條帶被寫(xiě)入時(shí)。在優(yōu)選實(shí)施例中,文件系統(tǒng)保存“一致性點(diǎn)”,其中已存儲(chǔ)的數(shù)據(jù)被確保自相一致,并在將一致性點(diǎn)寫(xiě)入磁盤時(shí)把未使用磁盤塊設(shè)置為零。
在本發(fā)明的一方面中,RAID存儲(chǔ)系統(tǒng)可能使用一種技術(shù)(比如RAID級(jí)別5),其中,奇偶性存儲(chǔ)塊可能在不同的磁盤上被找到。當(dāng)那些磁盤之一故障時(shí),文件系統(tǒng)識(shí)別與故障磁盤上奇偶信息相關(guān)的RAID條帶,并把整組磁盤塊從那些條帶轉(zhuǎn)移到其它磁盤,以便把那些全部條帶的奇偶信息保存在未故障磁盤上。
在本發(fā)明的一方面中,存儲(chǔ)系統(tǒng)使用已分配磁盤塊的相關(guān)信息來(lái)改進(jìn)RAID存儲(chǔ)系統(tǒng)執(zhí)行的操作。當(dāng)寫(xiě)入任何一個(gè)RAID條帶時(shí),存儲(chǔ)系統(tǒng)響應(yīng)于磁盤塊被分配而確定通過(guò)減去還是重新計(jì)算來(lái)計(jì)算奇偶性更加有效。
在本發(fā)明的一方面中,通過(guò)拷貝(到鏡像拷貝)那些包括已分配數(shù)據(jù)和奇偶性的那些存儲(chǔ)塊,和通過(guò)清除(在鏡像拷貝)那些不包括任何已分配數(shù)據(jù)或奇偶性的存儲(chǔ)塊,存儲(chǔ)卷的目標(biāo)鏡像拷貝可以使用與已分配磁盤塊相關(guān)的文件系統(tǒng)信息而被創(chuàng)建。因此,目標(biāo)存儲(chǔ)卷可以響應(yīng)于源存儲(chǔ)卷而被構(gòu)造,而不需要任何奇偶性重算。
本發(fā)明通常適用于文件系統(tǒng)和存儲(chǔ)系統(tǒng),其中,數(shù)據(jù)被保存在多個(gè)裝置上,和其中,那些多個(gè)裝置上的至少一部分記錄信息可以被丟棄(例如不是文件系統(tǒng)的一部分或可以被逐出高速緩存的高速緩存對(duì)象)。這些應(yīng)用沒(méi)有被具體限制到保存一致性點(diǎn)的文件系統(tǒng),也沒(méi)有被具體限制到RAID存儲(chǔ)系統(tǒng),它們也不局限于與在此公開(kāi)的具體應(yīng)用相關(guān)的系統(tǒng)。
附圖簡(jiǎn)述
圖1示出文件系統(tǒng)和RAID存儲(chǔ)系統(tǒng)的框圖,包括在RAID數(shù)據(jù)重建中使用文件系統(tǒng)信息。
圖2示出包括在RAID數(shù)據(jù)重建中使用文件系統(tǒng)信息的方法的處理流程圖。
圖3示出一個(gè)系統(tǒng)框圖,該系統(tǒng)不重新計(jì)算奇偶性就能夠鏡像。
圖4示出不用重新計(jì)算奇偶性的鏡象方法的處理流程圖。
優(yōu)選實(shí)施例具體描述在此處的說(shuō)明書(shū)中,本發(fā)明的優(yōu)選實(shí)施例被描述,包括優(yōu)選的處理步驟和數(shù)據(jù)結(jié)構(gòu)。所屬領(lǐng)域技術(shù)人員在細(xì)讀此申請(qǐng)之后將會(huì)了解,本發(fā)明的那些實(shí)施例可以使用沒(méi)有具體描述的多種其它技術(shù)來(lái)實(shí)現(xiàn),而不用過(guò)度的試驗(yàn)或進(jìn)一步發(fā)明,而且這類其它技術(shù)將在本發(fā)明的范圍和精神內(nèi)。
詞匯下列術(shù)語(yǔ)涉及或者是指本發(fā)明的方面或其實(shí)施例。其中每個(gè)術(shù)語(yǔ)的一般意義被定為說(shuō)明性的而絕不是限制性的。
一致性點(diǎn)-通常,這指的是由自相一致的文件系統(tǒng)保存的可識(shí)別數(shù)據(jù)集,因此它可以被保存在磁盤上而不用擔(dān)心一致性點(diǎn)內(nèi)的數(shù)據(jù)引用會(huì)導(dǎo)致文件系統(tǒng)錯(cuò)誤。詞組“一致性點(diǎn)”被定為足夠?qū)捯愿采w有其自相一致性的文件系統(tǒng)以及那些原子地自相一致的文件系統(tǒng),該自相一致性由用于近期改變的一組日志項(xiàng)來(lái)保證。
磁盤塊-通常,這指的是存儲(chǔ)數(shù)據(jù)的大容量存儲(chǔ)系統(tǒng)中可分配的部分。詞組“磁盤塊”被定為足夠?qū)捯愿采w磁盤上量化或未量化的可分配空間。
文件系統(tǒng)-通常,這指的是直接在存儲(chǔ)系統(tǒng)上管理磁盤塊的任何應(yīng)用程序,包括保存命名方案和在大容量存儲(chǔ)器上保存的文件數(shù)據(jù)之間的關(guān)聯(lián)的系統(tǒng)。詞組“文件系統(tǒng)”被定為足夠?qū)捯愿采w文件系統(tǒng)的變形,包括那些直接對(duì)磁盤讀寫(xiě)的系統(tǒng)和那些允許不同的子系統(tǒng)或操作系統(tǒng)其它部分來(lái)讀寫(xiě)磁盤的系統(tǒng)。
存儲(chǔ)系統(tǒng)-通常是用于儲(chǔ)存數(shù)據(jù)的系統(tǒng),例如在RAID陣列中排列的一組一個(gè)或多個(gè)磁盤。存儲(chǔ)系統(tǒng)可以被分成一個(gè)或多個(gè)卷,每個(gè)卷起一個(gè)存儲(chǔ)系統(tǒng)的作用。術(shù)語(yǔ)“存儲(chǔ)系統(tǒng)”和“卷”或“存儲(chǔ)卷”可以被可交換地使用。
磁盤塊的轉(zhuǎn)移-通常,這指的是用于從已被丟失的磁盤塊把數(shù)據(jù)拷貝或重建數(shù)據(jù)到大容量存儲(chǔ)系統(tǒng)不同部分上的任何技術(shù),比如沒(méi)有故障因而可用的磁盤。
奇偶性重算-通常,這指的是用于在丟失之后響應(yīng)于已存儲(chǔ)的數(shù)據(jù)重建奇偶信息或其它冗余信息的任何技術(shù),無(wú)論是否與其它冗余信息結(jié)合。
RAID群-通常,這指的是RAID存儲(chǔ)系統(tǒng)內(nèi)包括的和RAID存儲(chǔ)系統(tǒng)用來(lái)保存數(shù)據(jù)冗余性的磁盤組。一部分系統(tǒng)可能包括RAID存儲(chǔ)系統(tǒng),RAID存儲(chǔ)系統(tǒng)把它們的磁盤分成多于一個(gè)的RAID群。
RAID存儲(chǔ)系統(tǒng)-通常,這指的是用于在大容量存儲(chǔ)系統(tǒng)上保存數(shù)據(jù)的任何技術(shù),它包括一組冗余信息(比如可能的奇偶信息、漢明碼、或類似實(shí)際數(shù)據(jù)拷貝的其它冗余形式),并響應(yīng)于丟失提供重建數(shù)據(jù)的可能性。
RAID條帶-通常,這指的是磁盤塊和冗余信息之間的任何關(guān)聯(lián),其中,磁盤塊和冗余信息是相互依賴的因此至少一部分可以在丟失之后被重建。
重建-通常,這指的是用于在丟失之后響應(yīng)于冗余信息來(lái)重建數(shù)據(jù)的任何技術(shù),無(wú)論是否與其它已存儲(chǔ)的數(shù)據(jù)結(jié)合。
零值映射(zeromap)-通常,這指的是具有一組指示磁盤塊邏輯上或物理上已經(jīng)被設(shè)置為零的項(xiàng)目的表。
條帶映射(stripmap)-通常,這指的是具有一組指示哪些RAID條帶已經(jīng)從故障磁盤被轉(zhuǎn)移的項(xiàng)目的表。
本發(fā)明的范圍和精神不受限于任何這些定義,不受限于其中提及的具體例子,而是打算包括這些和其它術(shù)語(yǔ)具體化的最廣泛的概念。
系統(tǒng)元件圖1示出文件系統(tǒng)和RAID存儲(chǔ)系統(tǒng)的框圖,包括在RAID數(shù)據(jù)重建中使用文件系統(tǒng)信息。
系統(tǒng)100包括文件系統(tǒng)120、存儲(chǔ)系統(tǒng)140和上面兩者之間的通信鏈路160。系統(tǒng)還包括用于運(yùn)行文件系統(tǒng)120的處理器(未示出)、程序和數(shù)據(jù)存儲(chǔ)器(未示出)。
文件系統(tǒng)120包括一組文件系統(tǒng)信息表121,其指示關(guān)于存儲(chǔ)系統(tǒng)140中磁盤塊(不管其是個(gè)別的還是成群的)的信息。文件系統(tǒng)信息表121可以被記錄在存儲(chǔ)器中,或者可以被記錄在存儲(chǔ)系統(tǒng)140被選擇的部分中,或者其它方式(比如在非易失性存儲(chǔ)器或其它輔助存儲(chǔ)器裝置中),只要即使存儲(chǔ)系統(tǒng)140丟失了數(shù)據(jù),那些文件系統(tǒng)信息表121仍然是文件系統(tǒng)120可訪問(wèn)的。文件系統(tǒng)信息表121中的特定信息進(jìn)一步被說(shuō)明如下。
存儲(chǔ)系統(tǒng)140包括一組磁盤141,其中每個(gè)包括一組磁盤塊142,磁盤塊142包括數(shù)據(jù)(存儲(chǔ)在至少一些磁盤塊142內(nèi)),在RAID條帶組中排列的磁盤塊142包括至少一些冗余信息(存儲(chǔ)在至少一些磁盤塊142內(nèi))。RAID條帶143被處理,從而使得在任何個(gè)別磁盤141上的任何個(gè)別磁盤塊142上的信息與在其它磁盤141上的其它磁盤塊142上的信息相關(guān)。如果任何磁盤塊142乃至整個(gè)磁盤141丟失,這允許任何個(gè)別磁盤塊142上的信息被重建或者重新計(jì)算。RAID存儲(chǔ)系統(tǒng)在大容量存儲(chǔ)系統(tǒng)的技術(shù)領(lǐng)域中是已知的。
通信鏈路160連接文件系統(tǒng)120和存儲(chǔ)系統(tǒng)140,并包括文件系統(tǒng)120和存儲(chǔ)系統(tǒng)140可用來(lái)交換磁盤塊142的信息和系統(tǒng)100操作信息的任何技術(shù)。在優(yōu)選實(shí)施例中,通信鏈路160包括連接到文件系統(tǒng)120和存儲(chǔ)系統(tǒng)140的總線。
文件系統(tǒng)信息表121包括塊映射(blockmap)表122,塊映射表122具有一組塊映射項(xiàng)目123,其指示哪個(gè)磁盤塊142被已分配的文件系統(tǒng)數(shù)據(jù)所使用。從而,塊映射表122為每個(gè)磁盤141上的每個(gè)磁盤塊142指示該磁盤塊142是被文件系統(tǒng)120使用(例如由邏輯“1”值指示)還是不由文件系統(tǒng)120使用(例如由邏輯“0”值指示)。說(shuō)明書(shū)中所用的“已分配的文件系統(tǒng)數(shù)據(jù)”不同于可能由文件系統(tǒng)120保存的任何臨時(shí)數(shù)據(jù)結(jié)構(gòu),臨時(shí)數(shù)據(jù)結(jié)構(gòu)可能包括磁盤上分量。已分配的文件系統(tǒng)數(shù)據(jù)也不同于可能由文件系統(tǒng)120保存的文件系統(tǒng)數(shù)據(jù)的備份拷貝,比如在關(guān)于優(yōu)選“WAFL”文件系統(tǒng)120的公開(kāi)說(shuō)明中描述的“瞬態(tài)(snapshot)”數(shù)據(jù)。
文件系統(tǒng)信息表121包括零值映射表124,其具有一組零值映射項(xiàng)目125,它指示哪個(gè)磁盤塊142已經(jīng)邏輯上或物理上被置零。
文件系統(tǒng)信息表121包括條帶映射表126,其具有一組條帶映射項(xiàng)目127,它指示哪個(gè)RAID條帶143已經(jīng)從故障磁盤被轉(zhuǎn)移。在本發(fā)明的一方面中,其中,當(dāng)那些RAID條帶143包括故障磁盤上的奇偶信息時(shí),RAID條帶143被轉(zhuǎn)移,每個(gè)條帶映射項(xiàng)目127指示來(lái)自整個(gè)RAID條帶143的磁盤塊142是否已經(jīng)被轉(zhuǎn)移(因?yàn)槠媾夹畔⒈旧聿槐晦D(zhuǎn)移)。
已分配數(shù)據(jù)的轉(zhuǎn)移如果磁盤塊142中的數(shù)據(jù)被丟失(例如磁盤塊142被損壞),或磁盤141上的所有數(shù)據(jù)都丟失(例如磁盤故障),存儲(chǔ)系統(tǒng)140能夠重建丟失數(shù)據(jù)。然而,對(duì)于任何丟失數(shù)據(jù)并在塊映射表122中被指示沒(méi)有任何已分配數(shù)據(jù)的磁盤塊142來(lái)說(shuō),不必為該磁盤塊142重建數(shù)據(jù)。從而,對(duì)于個(gè)別的磁盤塊142,如果丟失但沒(méi)有使用,則存儲(chǔ)系統(tǒng)140無(wú)須重建任何數(shù)據(jù)。對(duì)于整個(gè)磁盤141,如果丟失,則存儲(chǔ)系統(tǒng)140只須重建當(dāng)時(shí)正在被使用的磁盤塊142的數(shù)據(jù)。
如果沒(méi)有備用磁盤,則文件系統(tǒng)120指示存儲(chǔ)系統(tǒng)140重建已分配磁盤塊142的數(shù)據(jù)(即被塊映射表122指示為已分配的磁盤塊142),并把重建數(shù)據(jù)拷貝到存儲(chǔ)系統(tǒng)140中相同RAID群中的其它未故障磁盤141上的磁盤塊142上。在替換實(shí)施例中,被重建的數(shù)據(jù)可以被拷貝到存儲(chǔ)系統(tǒng)140中不同RAID群中的其它未故障磁盤上。故障磁盤141的磁盤塊142然后不再被寫(xiě)入,因此文件系統(tǒng)120將它們視為可用VBN(虛擬塊號(hào))空間中的“洞”。例如,如果故障磁盤是磁盤#1、#2、#3、#4和#5(奇偶性)中的磁盤#3,則磁盤#1、#2、#3、#4的VBN將仍然有效,而磁盤#3的VBN則無(wú)效。當(dāng)所有來(lái)自故障磁盤141的數(shù)據(jù)都已經(jīng)被除去時(shí),故障磁盤141邏輯上或物理上從RAID群被除去,從而把RAID群中的磁盤141的數(shù)量減1。
所屬領(lǐng)域技術(shù)人員將在細(xì)讀本申請(qǐng)之后認(rèn)識(shí)到,使用塊映射表122來(lái)減少數(shù)據(jù)重建量允許存儲(chǔ)系統(tǒng)140最小化工作量,同時(shí)又保存了相同的故障容許程度。所屬領(lǐng)域技術(shù)人員在細(xì)讀本申請(qǐng)之后也將認(rèn)識(shí)到,本技術(shù)可以不用過(guò)度試驗(yàn)或新發(fā)明而被應(yīng)用到已經(jīng)容許多個(gè)故障的RAID系統(tǒng)和類似RAID的系統(tǒng),比如科貝特(Corbett)或“偶奇的(EVENODD)”那些系統(tǒng)。更一般地說(shuō),所屬領(lǐng)域技術(shù)人員在細(xì)讀本申請(qǐng)之后也將認(rèn)識(shí)到,本技術(shù)可以不用過(guò)度試驗(yàn)或新發(fā)明而被應(yīng)用到?jīng)]有其中必須放置數(shù)據(jù)或元數(shù)據(jù)的空間的所有存儲(chǔ)系統(tǒng)。
當(dāng)故障磁盤141上的磁盤塊142的數(shù)據(jù)被轉(zhuǎn)移時(shí),存儲(chǔ)系統(tǒng)140邏輯上清除了(置零)該磁盤塊142的數(shù)據(jù)。文件系統(tǒng)120設(shè)置對(duì)應(yīng)RAID條帶143的零值映射項(xiàng)目125。存儲(chǔ)系統(tǒng)140重新計(jì)算對(duì)應(yīng)RAID條帶143的奇偶性,并把重新計(jì)算的奇偶性寫(xiě)入對(duì)應(yīng)RAID條帶143中的奇偶性磁盤141。
如果存在備用磁盤,則文件系統(tǒng)120用同樣的方式指示存儲(chǔ)系統(tǒng)140轉(zhuǎn)移來(lái)自已分配磁盤塊142的數(shù)據(jù)。對(duì)于未分配的磁盤塊142,存儲(chǔ)系統(tǒng)140寫(xiě)入另一未故障磁盤141上的對(duì)應(yīng)磁盤塊142,而不嘗試重建來(lái)自于未分配的磁盤塊142的數(shù)據(jù)。相反地,存儲(chǔ)系統(tǒng)140物理上清除(置零)作為未分配磁盤塊142轉(zhuǎn)移目標(biāo)的磁盤塊142。在優(yōu)選實(shí)施例中,文件系統(tǒng)120指示存儲(chǔ)系統(tǒng)140使用SCSI“寫(xiě)入相同的(write same)”命令來(lái)指導(dǎo)具有作為轉(zhuǎn)移目標(biāo)的磁盤塊142的磁盤141;這節(jié)省了磁盤141的活動(dòng)和文件系統(tǒng)120與存儲(chǔ)系統(tǒng)140之間的帶寬。
條帶映射表126包括每個(gè)RAID條帶143的一個(gè)條帶映射項(xiàng)目127,為RAID條帶143指示RAID條帶143中的磁盤塊142(來(lái)自故障磁盤141)是否已經(jīng)被轉(zhuǎn)移到另一未故障磁盤141。當(dāng)它的對(duì)應(yīng)條帶映射項(xiàng)目127指示特定磁盤塊142已經(jīng)從故障磁盤141轉(zhuǎn)移到另一未故障磁盤141時(shí),存儲(chǔ)系統(tǒng)140能夠在未來(lái)的奇偶性重算期間考慮除去該特定的磁盤塊142。更確切地說(shuō),在寫(xiě)入特定條帶適,存儲(chǔ)系統(tǒng)140通過(guò)假定指示的所有磁盤塊142一律為零來(lái)重新計(jì)算奇偶性。當(dāng)條帶映射表126指示所有來(lái)自故障磁盤141的磁盤塊142已經(jīng)被轉(zhuǎn)移到其它未故障磁盤141時(shí),文件系統(tǒng)120和存儲(chǔ)系統(tǒng)140可以邏輯上全面刪除故障磁盤141。
訪問(wèn)請(qǐng)求的重定向文件系統(tǒng)120在重定向請(qǐng)求中幫助存儲(chǔ)系統(tǒng)140訪問(wèn)故障磁盤141上的磁盤塊142。在優(yōu)選實(shí)施例中,文件系統(tǒng)120包括寫(xiě)入時(shí)拷貝(copy-on-write)技術(shù),其中,所有對(duì)磁盤塊142的寫(xiě)入操作(在任何磁盤141上,不包括剛才的故障磁盤141)都通過(guò)從作為寫(xiě)操作目標(biāo)的磁盤塊142拷貝數(shù)據(jù)、修改該拷貝和把到目標(biāo)磁盤塊142的指針調(diào)整為指向新修改過(guò)的拷貝。在優(yōu)選實(shí)施例中,當(dāng)產(chǎn)生存儲(chǔ)卷的一致性點(diǎn)時(shí),這些修改被集合到一起;然而,對(duì)于這類集合沒(méi)有特殊的要求。
如果磁盤141故障或磁盤塊142被損壞,則文件系統(tǒng)120標(biāo)記它的文件系統(tǒng)信息表(包括具有臟塊項(xiàng)目的臟塊表)以指示每個(gè)被丟失的磁盤塊142被標(biāo)記為臟。第一結(jié)果是任何對(duì)臟磁盤塊142的寫(xiě)入嘗試將導(dǎo)致寫(xiě)入時(shí)拷貝操作將被執(zhí)行。第二結(jié)果是文件系統(tǒng)120將不遲于下一個(gè)一致性點(diǎn),作為向磁盤寫(xiě)入一致性點(diǎn)的一部分而產(chǎn)生磁盤塊142的拷貝。
因?yàn)橛脩魧?duì)丟失磁盤塊142的請(qǐng)求被重定向,并且因?yàn)槲募到y(tǒng)120將不遲于下一個(gè)一致性點(diǎn)產(chǎn)生磁盤塊142拷貝,所以存儲(chǔ)系統(tǒng)140可以等候來(lái)自于文件系統(tǒng)120的指令而不需要通過(guò)積極地重建丟失的磁盤塊142來(lái)響應(yīng)。
磁盤塊的提前主動(dòng)置零在某些情況下,文件系統(tǒng)120提前主動(dòng)指示存儲(chǔ)系統(tǒng)140把整個(gè)磁盤塊142置零,從而允許容易地重算(或不重算)與包含磁盤塊142的條帶相關(guān)的奇偶信息。在優(yōu)選實(shí)施例中,文件系統(tǒng)120指示存儲(chǔ)系統(tǒng)140使用SCSI“寫(xiě)入相同的”命令,如上所述。
文件系統(tǒng)120在至少下列情況中把整個(gè)磁盤塊設(shè)置為零·當(dāng)新的磁盤141被添加到RAID群中時(shí),每個(gè)RAID條帶143從而被加寬了一個(gè)磁盤塊142,并且每個(gè)這類條帶的奇偶性從而響應(yīng)于新的磁盤塊142中的數(shù)據(jù)。文件系統(tǒng)提前主動(dòng)指示存儲(chǔ)系統(tǒng)140把新的磁盤141中的所有磁盤塊142設(shè)置為零,而不是重新計(jì)算任何奇偶信息,從而使奇偶信息保持不變。
奇偶性優(yōu)選地作為RAID條帶143中磁盤塊142的所有數(shù)據(jù)的模2和來(lái)計(jì)算,模2和也被稱作異或運(yùn)算(“XOR”)。因此,插入全是零的新磁盤塊142沒(méi)有改變RAID條帶143中的奇偶性。
·當(dāng)包括未分配的磁盤塊142(即,沒(méi)有被文件系統(tǒng)120標(biāo)記為“使用中”的磁盤塊142)的RAID條帶被寫(xiě)入時(shí),文件系統(tǒng)120提前主動(dòng)指示存儲(chǔ)系統(tǒng)140把那些磁盤塊中的數(shù)據(jù)設(shè)置為零。根據(jù)實(shí)現(xiàn),這允許文件系統(tǒng)120或存儲(chǔ)系統(tǒng)140,或者系統(tǒng)100的諸如fly-by XOR(快速XOR)子系統(tǒng)之類的其它組件重新計(jì)算那些條帶的奇偶信息,而不用讀取未使用的磁盤塊142。無(wú)須讀取未使用磁盤塊142減少了存儲(chǔ)系統(tǒng)140執(zhí)行的讀取操作量,并減少了文件系統(tǒng)120和存儲(chǔ)系統(tǒng)140之間所用的通信帶寬量。
·當(dāng)文件系統(tǒng)120準(zhǔn)備向磁盤寫(xiě)入一致性點(diǎn)時(shí),它通常寫(xiě)入磁盤141上的相對(duì)大量的磁盤塊142。文件系統(tǒng)120嘗試把那些磁盤塊142集合到整個(gè)RAID條帶143中,因此寫(xiě)入操作可以盡可能的有效,并且因此奇偶性計(jì)算可以被最小化(被看作已分配數(shù)據(jù)的每個(gè)磁盤塊142的開(kāi)銷操作)。當(dāng)寫(xiě)入RAID條帶143時(shí),文件系統(tǒng)120指示存儲(chǔ)系統(tǒng)140清除RAID條帶中不是一致性點(diǎn)一部分的那些磁盤塊142(并且因此將被文件系統(tǒng)120標(biāo)記為未分配的)。這允許奇偶性計(jì)算無(wú)須讀取那些磁盤塊142就開(kāi)始進(jìn)行。
奇偶性的有效計(jì)算在本發(fā)明的一方面中,RAID存儲(chǔ)系統(tǒng)執(zhí)行的操作響應(yīng)于目標(biāo)RAID條帶143中磁盤塊142的零值映射表125。響應(yīng)于那些零值映射表125,文件系統(tǒng)120可以對(duì)目標(biāo)RAID條帶143中的非零磁盤塊的數(shù)量進(jìn)行計(jì)數(shù);這允許文件系統(tǒng)120或存儲(chǔ)系統(tǒng)140在寫(xiě)入任何個(gè)別RAID條帶143時(shí)確定,通過(guò)減法來(lái)計(jì)算奇偶性或通過(guò)重算來(lái)計(jì)算奇偶性是否更有效。
存儲(chǔ)系統(tǒng)140可以通過(guò)減法來(lái)計(jì)算奇偶性,即當(dāng)向磁盤141寫(xiě)入磁盤塊142時(shí),存儲(chǔ)系統(tǒng)140可以從相關(guān)聯(lián)的奇偶性(用于那些RAID條帶143)減去磁盤塊142中的舊數(shù)據(jù)并把將寫(xiě)入磁盤塊142的新數(shù)據(jù)加到相關(guān)聯(lián)的奇偶性上。該減法和加法都是逐位模二進(jìn)行。通過(guò)減法來(lái)計(jì)算奇偶性在RAID存儲(chǔ)系統(tǒng)的技術(shù)領(lǐng)域中是已知的。可替換地,存儲(chǔ)系統(tǒng)140可以通過(guò)加上(模二)那些RAID條帶143的所有磁盤塊142來(lái)重新計(jì)算奇偶信息。
當(dāng)向磁盤141寫(xiě)入一組磁盤塊142時(shí),文件系統(tǒng)120確定通過(guò)減法計(jì)算奇偶性是否將需要更少的磁盤操作,或從整個(gè)RAID條帶143重新計(jì)算奇偶性是否將需要更少的磁盤操作。文件系統(tǒng)120可以從零值映射表124來(lái)確定這個(gè);它可以確定RAID條帶中是否有足夠磁盤塊是零,并且可以因此徹底地省去奇偶信息的計(jì)算。則RAID系統(tǒng)也可以簡(jiǎn)單地把條帶143中的未分配塊置零,如果它們沒(méi)有被預(yù)先置零(由零值映射表指示)。這對(duì)于非WAFL文件系統(tǒng)來(lái)說(shuō)是特別有用的,其中,更可能在條帶中存在未分配塊。
奇偶性丟失時(shí)的轉(zhuǎn)移在RAID級(jí)別4系統(tǒng)中,奇偶性被保存在存儲(chǔ)系統(tǒng)140中的單個(gè)磁盤141上;即,所有的RAID條帶都在相同的磁盤141上具有它們的奇偶性,其可能因此被稱為“奇偶性磁盤”。在RAID級(jí)別5系統(tǒng)中,奇偶性分布在存儲(chǔ)系統(tǒng)140中的多個(gè)磁盤141上;即,每個(gè)RAID條帶可能在不同的磁盤141上具有其奇偶性,因此沒(méi)有單個(gè)的“奇偶性磁盤”。
如果RAID級(jí)別5系統(tǒng)中的一個(gè)磁盤141故障,則那些將故障磁盤141用于其奇偶性的RAID條帶不再具有奇偶性塊,并且如果它們剩下的磁盤塊142中的一個(gè)或多個(gè)丟失數(shù)據(jù),則因此受到丟失信息的影響。文件系統(tǒng)120將那些RAID條帶的磁盤塊142標(biāo)記為“臟”,因此下次一致性點(diǎn)被寫(xiě)入磁盤時(shí),那些磁盤塊142被寫(xiě)入具有有效奇偶性塊的RAID條帶143中的相同或其它磁盤上的不同單元。結(jié)果,RAID條帶143中奇偶性丟失的磁盤塊142被寫(xiě)入具有可用奇偶性塊的其它RAID條帶143中的磁盤塊142(不一定都寫(xiě)入相同的RAID條帶143)。
操作方法圖2示出包括在RAID數(shù)據(jù)重建中使用文件系統(tǒng)信息的方法的處理流程圖。
方法200由系統(tǒng)100執(zhí)行。盡管方法200被連續(xù)地描述,然而方法200的流程點(diǎn)和步驟可以用流水線或其它方法由串聯(lián)或并聯(lián)分離元件來(lái)執(zhí)行,不管異步或同步。除非其中明確地指示,否則沒(méi)有方法20必須以與說(shuō)明書(shū)列出的流程點(diǎn)或步驟相同的順序來(lái)執(zhí)行的特定要求。
已分配數(shù)據(jù)的轉(zhuǎn)移在流程點(diǎn)210,系統(tǒng)100已經(jīng)檢測(cè)到故障磁盤141。
在步驟211,文件系統(tǒng)120標(biāo)記條帶映射表126以指示還沒(méi)有來(lái)自任何RAID條帶143的磁盤塊142已經(jīng)從故障磁盤141被轉(zhuǎn)移。文件系統(tǒng)120還標(biāo)記臟塊表以指示故障磁盤141上的所有磁盤塊142都將被當(dāng)做臟塊。在方法200中,第一RAID條帶143指的是故障磁盤141上的RAID條帶。第二RAID條帶143指的是備用或其它未故障磁盤上的RAID條帶。
在步驟212,文件系統(tǒng)120接收訪問(wèn)故障磁盤141上的磁盤塊142之一的用戶請(qǐng)求。因?yàn)橛脩粽?qǐng)求只適用于包括文件數(shù)據(jù)或者元數(shù)據(jù)的已分配數(shù)據(jù),所以方法200在流程點(diǎn)220開(kāi)始從磁盤塊142重建數(shù)據(jù)。
在流程點(diǎn)220,方法200準(zhǔn)備從故障磁盤141上的磁盤塊142重建數(shù)據(jù)。
在步驟221,存儲(chǔ)系統(tǒng)140確定是否存在備用磁盤141。如果有,則方法200進(jìn)行到步驟222。否則,方法200進(jìn)行到步驟223。
在步驟222(存在備用磁盤141),存儲(chǔ)系統(tǒng)140把與磁盤塊142相關(guān)的第一RAID條帶143轉(zhuǎn)移到備用磁盤141,并且方法200進(jìn)行到流程點(diǎn)230。為了執(zhí)行這個(gè)步驟,存儲(chǔ)系統(tǒng)140執(zhí)行下列的子步驟·在子步驟222a,存儲(chǔ)系統(tǒng)140從磁盤塊142重建數(shù)據(jù)。存儲(chǔ)系統(tǒng)140從第一RAID條帶143使用另一個(gè)磁盤塊142和奇偶性塊。然而,存儲(chǔ)系統(tǒng)140可以忽略第一RAID條帶中的那些磁盤塊142,對(duì)于該第一RAID條帶,相關(guān)聯(lián)的零值映射項(xiàng)目125指示磁盤塊142一律地是零。
·在子步驟222b,存儲(chǔ)系統(tǒng)140從RAID條帶143把數(shù)據(jù)拷貝到備用磁盤141上的第二目標(biāo)RAID條帶143。然而,存儲(chǔ)系統(tǒng)140不拷貝未分配的那些磁盤塊142,而是使用它們相關(guān)聯(lián)的塊映射項(xiàng)目123來(lái)確定拷貝哪一些。通過(guò)使用SCSI“寫(xiě)入相同的”命令,存儲(chǔ)系統(tǒng)140提前主動(dòng)清除第二目標(biāo)RAID條帶143中的那些未分配的塊映射項(xiàng)目123的磁盤塊142。存儲(chǔ)系統(tǒng)140響應(yīng)于它對(duì)那些磁盤塊142的搶先的清除來(lái)重新計(jì)算奇偶性。
·在子步驟222c,文件系統(tǒng)120標(biāo)記對(duì)應(yīng)的條帶映射項(xiàng)目127以指示第一RAID條帶143被完全轉(zhuǎn)移到備用磁盤141。
在步驟223(沒(méi)有備用磁盤141),存儲(chǔ)系統(tǒng)140把磁盤塊142中的數(shù)據(jù)從故障磁盤141轉(zhuǎn)移到另一個(gè)未故障磁盤141,并且方法200進(jìn)行到流程點(diǎn)230。為了執(zhí)行這個(gè)步驟,存儲(chǔ)系統(tǒng)140執(zhí)行下列的子步驟·在子步驟223a,存儲(chǔ)系統(tǒng)140從磁盤塊142重建數(shù)據(jù)。存儲(chǔ)系統(tǒng)140使用來(lái)自其它磁盤塊142和第一RAID條帶143的數(shù)據(jù)和奇偶性塊。然而,存儲(chǔ)系統(tǒng)140可以忽略第一RAID條帶143中的那些磁盤塊142,對(duì)于該第一RAID條帶143,相關(guān)聯(lián)的零值映射項(xiàng)目125指示磁盤塊142一律地是零。
·在子步驟223b,存儲(chǔ)系統(tǒng)140把數(shù)據(jù)拷貝到新分配的磁盤塊142中。存儲(chǔ)系統(tǒng)140重新計(jì)算原始第一RAID條帶143的奇偶性,假定故障磁盤塊142現(xiàn)在邏輯上是零。
·在子步驟223c,文件系統(tǒng)120標(biāo)記與磁盤塊142相關(guān)的第一RAID條帶143的對(duì)應(yīng)條帶映射項(xiàng)目127,從而指示來(lái)自磁盤塊142的數(shù)據(jù)被轉(zhuǎn)移到未故障磁盤141。文件系統(tǒng)120標(biāo)記故障磁盤塊142的對(duì)應(yīng)零值映射項(xiàng)目125以指示磁盤塊142現(xiàn)在邏輯上是零。
在流程點(diǎn)230,故障磁盤塊142或整個(gè)第一RAID條帶143的轉(zhuǎn)移已經(jīng)完成。系統(tǒng)100重復(fù)轉(zhuǎn)移直到所有已分配的磁盤塊142都已經(jīng)從故障141被轉(zhuǎn)移到備用磁盤141或其它未故障磁盤141。
無(wú)須重新計(jì)算奇偶性的鏡像圖3示出一個(gè)系統(tǒng)框圖,該系統(tǒng)不重新計(jì)算奇偶性就能夠鏡像。
如上所述,當(dāng)重新建立(或最初建立)儲(chǔ)存卷的鏡像拷貝(“卷”有時(shí)在此可用作“系統(tǒng)”的同義詞)時(shí),通過(guò)當(dāng)包括那些未分配塊的條帶被寫(xiě)入時(shí)保證目標(biāo)存儲(chǔ)卷上的未分配塊被設(shè)置為零,目標(biāo)存儲(chǔ)卷(也稱作鏡像存儲(chǔ)卷)可以使用來(lái)自源存儲(chǔ)卷的計(jì)算出的奇偶性。
無(wú)須再計(jì)算奇偶性就能夠鏡像的系統(tǒng)300包括含有源存儲(chǔ)系統(tǒng)305的源系統(tǒng)301、類似于參考圖1描述的系統(tǒng)100和存儲(chǔ)系統(tǒng)140,并且目標(biāo)(或鏡像)系統(tǒng)310包括目標(biāo)存儲(chǔ)系統(tǒng)320,也類似于參考圖1描述的系統(tǒng)100和存儲(chǔ)系統(tǒng)140。源存儲(chǔ)系統(tǒng)305包括一組含有磁盤塊331的源RAID條帶330;目標(biāo)存儲(chǔ)系統(tǒng)320類似地包括一組含有磁盤塊341的目標(biāo)RAID條帶。目標(biāo)RAID條帶340類似于源RAID條帶330,優(yōu)選地,在邏輯上和源RAID條帶330一致。
源系統(tǒng)301和目標(biāo)系統(tǒng)310使用通信鏈路350連接。在優(yōu)選實(shí)施例中,通信鏈路350包括光纖信道或SAN(存儲(chǔ)區(qū)域網(wǎng))。在其它實(shí)施例中,通信鏈路350可以包括LAN(局域網(wǎng))、WAN(廣域網(wǎng))、或其組合,例如互聯(lián)網(wǎng)連接。所屬領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,通信鏈路350可能包括用于把數(shù)據(jù)從源系統(tǒng)301發(fā)送到目標(biāo)系統(tǒng)310的任何技術(shù),并且決不局限于在此描述的具體實(shí)施例。
源RAID條帶330包括一組已分配塊334、至少一個(gè)未分配塊332和一組奇偶性塊333。
當(dāng)重新建立(或最初建立)源存儲(chǔ)系統(tǒng)305和目標(biāo)存儲(chǔ)系統(tǒng)320之間的鏡像關(guān)系時(shí),源系統(tǒng)301從源RAID條帶330選擇一組已分配塊334以發(fā)送到目標(biāo)系統(tǒng)310。在優(yōu)選實(shí)施例中,這些已分配塊334在源系統(tǒng)301從文件系統(tǒng)信息導(dǎo)出,并且只包括那些由源系統(tǒng)301處的文件系統(tǒng)指示為已分配的磁盤塊。
源系統(tǒng)301把已選擇的已分配塊334連同與RAID條帶330相關(guān)的奇偶性塊333一起發(fā)送到目標(biāo)系統(tǒng)310。此外,源系統(tǒng)301置零任何沒(méi)有被預(yù)置零的未分配塊332。目標(biāo)系統(tǒng)310從這些已分配塊334接收數(shù)據(jù)并將它們存儲(chǔ)在其目標(biāo)RAID條帶340中的已分配塊344的對(duì)應(yīng)單元內(nèi)。類似地,目標(biāo)系統(tǒng)310接收相關(guān)聯(lián)的奇偶性塊333并把它們存儲(chǔ)在其目標(biāo)RAID條帶340中的奇偶性塊343的對(duì)應(yīng)單元內(nèi)。
因?yàn)槟繕?biāo)系統(tǒng)310具有邏輯上和源RAID條帶330一致的目標(biāo)RAID條帶340,所以目標(biāo)系統(tǒng)310可以確定它自己所有的未分配塊342在源存儲(chǔ)系統(tǒng)305中是未分配的。目標(biāo)存儲(chǔ)系統(tǒng)320因此可以使用SCSI“寫(xiě)入相同的”命令把所有那些未分配塊342設(shè)置為零。
結(jié)果,在磁盤塊被發(fā)送、接收和存儲(chǔ)之后,目標(biāo)存儲(chǔ)系統(tǒng)320和源存儲(chǔ)系統(tǒng)305基本一致;從而,源存儲(chǔ)系統(tǒng)305和目標(biāo)存儲(chǔ)系統(tǒng)320之間的鏡像關(guān)系被重新建立。
鏡像方法圖4示出無(wú)須重新計(jì)算奇偶性的鏡象方法的處理流程圖。
方法400由源系統(tǒng)301和目標(biāo)(鏡像)系統(tǒng)來(lái)執(zhí)行。源系統(tǒng)包括源存儲(chǔ)系統(tǒng)305和類似于文件系統(tǒng)120的源文件系統(tǒng)(未示出)。目標(biāo)系統(tǒng)類似于目標(biāo)系統(tǒng)310。與方法200相似,盡管方法400被連續(xù)地描述,然而方法400的流程點(diǎn)和步驟可以采用流水線或其它方法由串聯(lián)或并聯(lián)的分離元件來(lái)執(zhí)行,不管異步或同步。同樣類似于方法200,除非其中明確指示,否則方法400沒(méi)有必須用與說(shuō)明書(shū)列出流程點(diǎn)或步驟相同的順序來(lái)執(zhí)行的特定要求。
在流程點(diǎn)410,源系統(tǒng)301和目標(biāo)系統(tǒng)準(zhǔn)備重新建立鏡像關(guān)系。在優(yōu)選實(shí)施例中,源系統(tǒng)301和目標(biāo)系統(tǒng)已經(jīng)通信以便各自達(dá)到鏡像關(guān)系即將被重新建立的狀態(tài)。此外,在優(yōu)選實(shí)施例中,源系統(tǒng)301和目標(biāo)系統(tǒng)已經(jīng)確定將從源系統(tǒng)301被發(fā)送到目標(biāo)系統(tǒng)的磁盤塊的最小集以實(shí)現(xiàn)鏡像的重新建立。一個(gè)用于確定磁盤塊最小集的方法在WO 02/29572A(網(wǎng)絡(luò)儀器公司)中被進(jìn)一步描述,名稱為“Recovery of File System Data in FileServers Mirrored File System Volumes”,于2002年4月11日公布。
在步驟411,源系統(tǒng)301選擇將被發(fā)送到目標(biāo)系統(tǒng)的一組信息。如上所述,只有已分配的磁盤塊需要被發(fā)送。在這個(gè)步驟,被選擇發(fā)送的信息包括(a)條帶信息和(b)奇偶信息。條帶信息描述被發(fā)送的磁盤塊在RAID條帶中怎樣組織。奇偶信息包括為那些RAID條帶計(jì)算的奇偶性。對(duì)于有關(guān)被定義RAID條帶中哪個(gè)塊是未分配塊的信息而言,源系統(tǒng)301明確地發(fā)送那些信息,或者目標(biāo)系統(tǒng)響應(yīng)于條帶信息和它接收的那些磁盤塊的標(biāo)識(shí)來(lái)確定該信息。
在步驟412,源系統(tǒng)301發(fā)送(和目標(biāo)系統(tǒng)接收)已分配的磁盤塊、在步驟411中描述的條帶信息,和在步驟411中描述的奇偶信息。在這個(gè)步驟,源系統(tǒng)301也可以把RAID條帶中沒(méi)有預(yù)置零的未分配塊置零。
在步驟413,目標(biāo)系統(tǒng)把數(shù)據(jù)從已分配的磁盤塊寫(xiě)入它們?cè)谥付ù疟P驅(qū)動(dòng)器及其存儲(chǔ)卷的指定RAID條帶上的指定位置。
在步驟414,目標(biāo)系統(tǒng)把來(lái)自奇偶信息的數(shù)據(jù)寫(xiě)入其存儲(chǔ)卷的指定RAID條帶。
在步驟415,目標(biāo)系統(tǒng)把零值寫(xiě)入其存儲(chǔ)卷的指定RAID條帶中的未分配塊。在優(yōu)選實(shí)施例中,目標(biāo)系統(tǒng)使用SCSI“寫(xiě)入相同的”命令來(lái)把相同數(shù)據(jù)字節(jié)的拷貝(即,零)寫(xiě)入每個(gè)未分配塊的每個(gè)單元;如上所述,這比向?qū)嶋H的磁盤塊寫(xiě)零要快一些,并且占用的文件系統(tǒng)和存儲(chǔ)卷之間的通信帶寬較少。
因?yàn)樵谠聪到y(tǒng)301的未分配塊邏輯上或物理上為零,所以當(dāng)未分配塊被假定為零時(shí)源系統(tǒng)301發(fā)送到目標(biāo)系統(tǒng)的奇偶信息是正確的。因此,目標(biāo)系統(tǒng)可以安全地把未分配塊實(shí)際上設(shè)置為零,同時(shí)使用相同的奇偶信息而無(wú)須再計(jì)算奇偶性。
在流程點(diǎn)420,目標(biāo)系統(tǒng)是源系統(tǒng)301的物理和邏輯拷貝。源系統(tǒng)301和目標(biāo)系統(tǒng)之間的任何文檔記載操作被完成,并且它們之間的鏡像關(guān)系被重新建立。
方法400可以在重新建立或最初建立源存儲(chǔ)卷和目標(biāo)存儲(chǔ)卷之間的鏡像關(guān)系的任何時(shí)候被執(zhí)行,只要在源存儲(chǔ)卷和目標(biāo)存儲(chǔ)卷都使用了等效RAID條帶。
本發(fā)明的通用性本發(fā)明通常適用于這樣的文件系統(tǒng)和存儲(chǔ)系統(tǒng),其中,數(shù)據(jù)被保存在多個(gè)裝置上,并且那些多個(gè)裝置上記錄的至少一些信息可以被丟棄(例如不是文件系統(tǒng)的一部分或可以被逐出高速緩存的高速緩存對(duì)象)。這些應(yīng)用沒(méi)有被具體限制到保存一致性點(diǎn)的文件系統(tǒng),也沒(méi)有被具體限制到RAID存儲(chǔ)系統(tǒng),它們也不一定與在此公開(kāi)的具體應(yīng)用相關(guān)。
在細(xì)讀本申請(qǐng)之后,所屬領(lǐng)域技術(shù)人員將會(huì)清楚,本發(fā)明在其大多數(shù)一般形式中的其它和進(jìn)一步的應(yīng)用。無(wú)須過(guò)度試驗(yàn)或進(jìn)一步發(fā)明,本發(fā)明可以用于這類其它和進(jìn)一步的應(yīng)用。盡管優(yōu)選實(shí)施例在此被公開(kāi),然而許多保持在本發(fā)明概念、范圍和精神之內(nèi)的許多變化是可能的;所屬領(lǐng)域技術(shù)人員在細(xì)讀本申請(qǐng)之后將很清楚這些變化。
·本發(fā)明適用于其中數(shù)據(jù)和元數(shù)據(jù)沒(méi)有在大容量存儲(chǔ)器上被分配固定單元的任何存儲(chǔ)系統(tǒng)。這可以包括文件服務(wù)器、數(shù)據(jù)庫(kù)或網(wǎng)絡(luò)高速緩存、或另一類型的存儲(chǔ)裝置。盡管在優(yōu)選實(shí)施例中,本發(fā)明主要是用于使用RAID存儲(chǔ)系統(tǒng)的文件服務(wù)器,然而此外也沒(méi)有特定要求來(lái)限制本發(fā)明的適用性。
·本發(fā)明適用于其中數(shù)據(jù)可以從冗余信息被重建的任何系統(tǒng);這可以包括任何類型的存儲(chǔ)系統(tǒng),乃至使用至少一些冗余信息的通信系統(tǒng)。盡管在優(yōu)選實(shí)施例中,本發(fā)明主要是用于使用多個(gè)磁盤驅(qū)動(dòng)器和奇偶性的存儲(chǔ)系統(tǒng),然而此外也沒(méi)有特定要求來(lái)限制本發(fā)明的適用性。
·雖然術(shù)語(yǔ)“磁盤塊”已經(jīng)遍及本公開(kāi)內(nèi)容被使用,然而本發(fā)明同樣適用于大容量存儲(chǔ)系統(tǒng)中的其它類型的數(shù)據(jù)塊,比如用于磁帶、光驅(qū)動(dòng)器的數(shù)據(jù)塊等等。
所屬領(lǐng)域技術(shù)人員在細(xì)讀本申請(qǐng)之后將認(rèn)識(shí)到,這些替換實(shí)施例是說(shuō)明性并且絕不是限制性的。
權(quán)利要求
1.一種方法,包括識(shí)別第一群數(shù)據(jù)塊,所述第一群包括能夠保存與所述數(shù)據(jù)塊相關(guān)聯(lián)的冗余信息的塊;確定在所述第一群中是否存在故障的數(shù)據(jù)塊;響應(yīng)于所述確定操作的結(jié)果,從所述的故障數(shù)據(jù)塊重建數(shù)據(jù)并確定是否把所述數(shù)據(jù)發(fā)送到與第二群相關(guān)聯(lián)的數(shù)據(jù)塊,所述第二群至少具有一個(gè)未故障的數(shù)據(jù)塊;通過(guò)邏輯上把所述第一群中的所述故障數(shù)據(jù)塊設(shè)置為選定值,所述第一群的所述冗余信息稍后的計(jì)算可以無(wú)須重建所述數(shù)據(jù)而進(jìn)行。
2.權(quán)利要求1的方法,包括響應(yīng)于關(guān)于所述故障數(shù)據(jù)塊的信息,確定是否制止把數(shù)據(jù)從所述故障數(shù)據(jù)塊發(fā)送到所述第二群,并代之以把所述第二群中的目標(biāo)數(shù)據(jù)塊設(shè)置為所述選定值。
3.權(quán)利要求1的方法,包括在第一磁盤上保存關(guān)于所述故障數(shù)據(jù)塊組的信息,所述信息包括所述故障數(shù)據(jù)塊是否已經(jīng)被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤;和當(dāng)所述全部故障數(shù)據(jù)塊已經(jīng)充分地被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤時(shí),邏輯上從存儲(chǔ)系統(tǒng)除去所述的第一磁盤。
4.權(quán)利要求1的方法,包括識(shí)別訪問(wèn)所述故障數(shù)據(jù)塊的嘗試;響應(yīng)于所述訪問(wèn)嘗試,執(zhí)行所述到目標(biāo)數(shù)據(jù)塊的重建操作;和把所述訪問(wèn)嘗試重定向到所述目標(biāo)數(shù)據(jù)塊。
5.權(quán)利要求4的方法,包括用一個(gè)指示符來(lái)標(biāo)記所述故障數(shù)據(jù)塊,該指示符指示對(duì)所述故障數(shù)據(jù)塊的訪問(wèn)嘗試應(yīng)該被重定向;和響應(yīng)于所述指示符來(lái)執(zhí)行所述重定向操作。
6.一種設(shè)備,包括用于識(shí)別第一群數(shù)據(jù)塊的裝置,所述第一群包括能夠保存與所述數(shù)據(jù)塊相關(guān)聯(lián)的冗余信息的塊;用于確定在所述第一群中是否存在故障數(shù)據(jù)塊的裝置;用于響應(yīng)于所述確定操作的結(jié)果從所述故障數(shù)據(jù)塊重建數(shù)據(jù)的裝置;用于把所述數(shù)據(jù)發(fā)送到與第二群相關(guān)聯(lián)的數(shù)據(jù)塊的裝置,所述第二群至少具有一個(gè)未故障數(shù)據(jù)塊;和用于邏輯上把所述故障數(shù)據(jù)塊設(shè)置為選定值的裝置,從而所述第一群的所述冗余信息稍后的計(jì)算可以無(wú)須重建所述數(shù)據(jù)而進(jìn)行。
7.權(quán)利要求6的設(shè)備,包括用于響應(yīng)于關(guān)于所述故障數(shù)據(jù)塊的信息,可能制止把數(shù)據(jù)從所述故障數(shù)據(jù)塊發(fā)送到所述第二群,并代之以把所述第二群中的目標(biāo)數(shù)據(jù)塊設(shè)置為所述選定值的裝置。
8.權(quán)利要求6的設(shè)備,包括用于在第一磁盤上保存關(guān)于一組所述故障數(shù)據(jù)塊的信息的裝置,所述信息包括所述故障數(shù)據(jù)塊是否已經(jīng)被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤;和當(dāng)所述的全部故障數(shù)據(jù)塊已經(jīng)充分地被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤時(shí),用于邏輯上從存儲(chǔ)系統(tǒng)除去所述第一磁盤的裝置。
9.權(quán)利要求6的設(shè)備,包括用于識(shí)別訪問(wèn)所述故障數(shù)據(jù)塊的嘗試的裝置;響應(yīng)于所述訪問(wèn)嘗試,用于執(zhí)行所述到目標(biāo)數(shù)據(jù)塊的重建操作的裝置;和用于把所述的訪問(wèn)嘗試重定向到所述目標(biāo)數(shù)據(jù)塊的裝置。
10.權(quán)利要求9的設(shè)備,包括用于給所述故障數(shù)據(jù)塊標(biāo)記一個(gè)指示符的裝置,該指示符指示對(duì)所述故障數(shù)據(jù)塊的訪問(wèn)嘗試應(yīng)該被重定向;和用于響應(yīng)于所述指示符來(lái)執(zhí)行所述重定向操作的裝置。
11.一種包括指令的存儲(chǔ)器或大容量存儲(chǔ)器,所述指令能夠由一個(gè)或多個(gè)計(jì)算裝置執(zhí)行,所述指令引導(dǎo)所述一個(gè)或多個(gè)計(jì)算裝置來(lái)識(shí)別第一群數(shù)據(jù)塊,所述第一群包括能夠保存與所述數(shù)據(jù)塊相關(guān)聯(lián)的冗余信息的塊;確定在所述第一群中是否存在故障數(shù)據(jù)塊;響應(yīng)于所述確定指令的結(jié)果,從所述故障數(shù)據(jù)塊重建數(shù)據(jù)并把所述數(shù)據(jù)發(fā)送到與第二群相關(guān)聯(lián)的數(shù)據(jù)塊,所述第二群至少具有一個(gè)未故障數(shù)據(jù)塊;和通過(guò)邏輯上把所述故障數(shù)據(jù)塊設(shè)置為選定值,所述第一群的所述冗余信息稍后的計(jì)算可以無(wú)須重建所述數(shù)據(jù)而進(jìn)行。
12.權(quán)利要求11的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令響應(yīng)于關(guān)于所述故障數(shù)據(jù)塊的信息,可能制止把數(shù)據(jù)從所述故障數(shù)據(jù)塊發(fā)送到所述第二群,并代之以把所述第二群中的目標(biāo)數(shù)據(jù)塊設(shè)置為所述的選定值。
13.權(quán)利要求11的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令在第一磁盤上保存關(guān)于一組所述故障數(shù)據(jù)塊的信息,所述信息包括所述故障數(shù)據(jù)塊是否已經(jīng)被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤;和當(dāng)所述的全部故障數(shù)據(jù)塊已經(jīng)充分地被轉(zhuǎn)移到一個(gè)或多個(gè)第二磁盤時(shí),邏輯上從存儲(chǔ)系統(tǒng)除去所述的第一磁盤。
14.權(quán)利要求11的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令識(shí)別對(duì)所述故障數(shù)據(jù)塊的訪問(wèn)嘗試;響應(yīng)于所述的訪問(wèn)嘗試,執(zhí)行所述指令來(lái)重建目標(biāo)數(shù)據(jù)塊;和把所述訪問(wèn)嘗試重定向到所述目標(biāo)數(shù)據(jù)塊。
15.權(quán)利要求14的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令用指示符來(lái)標(biāo)記所述故障數(shù)據(jù)塊,該指示符指示對(duì)所述故障數(shù)據(jù)塊的訪問(wèn)嘗試應(yīng)該被重定向;和響應(yīng)于所述指示符來(lái)執(zhí)行所述重定向指令。
16.一種操作存儲(chǔ)系統(tǒng)的方法,所述方法包括把選定的數(shù)據(jù)塊設(shè)置為選定值,其中,所述存儲(chǔ)系統(tǒng)進(jìn)行的奇偶性重算量被最小化。
17.權(quán)利要求16的方法,其中,所述設(shè)置操作響應(yīng)于被添加到RAID群的新磁盤。
18.權(quán)利要求16的方法,其中,當(dāng)新磁盤被添加到RAID群時(shí),所述設(shè)置操作被執(zhí)行。
19.權(quán)利要求16的方法,其中,當(dāng)一致性點(diǎn)被產(chǎn)生時(shí),所述設(shè)置操作被執(zhí)行。
20.權(quán)利要求16的方法,其中,當(dāng)寫(xiě)入具有未分配塊的RAID條帶時(shí),所述設(shè)置操作被執(zhí)行。
21.權(quán)利要求16的方法,其中,所述設(shè)置操作響應(yīng)于對(duì)磁盤的寫(xiě)入操作,所述寫(xiě)入操作與包括文件系統(tǒng)未使用的數(shù)據(jù)塊的RAID條帶相關(guān)聯(lián)。
22.權(quán)利要求16的方法,其中,所述設(shè)置操作響應(yīng)于文件系統(tǒng),所述文件系統(tǒng)包括一致性點(diǎn),存儲(chǔ)的數(shù)據(jù)在該一致性點(diǎn)是自相一致的。
23.權(quán)利要求22的方法,其中,所述選定的數(shù)據(jù)塊包括由所述存儲(chǔ)系統(tǒng)保存的數(shù)據(jù)塊的子集,所述子集包括沒(méi)有作為寫(xiě)入所述一致性點(diǎn)到磁盤的操作一部分而被寫(xiě)入的那些數(shù)據(jù)塊。
24.權(quán)利要求16的方法,其中,所述設(shè)置操作響應(yīng)于與所述選定數(shù)據(jù)塊相關(guān)聯(lián)的表,所述表包括一個(gè)指示符,它指示所述選定數(shù)據(jù)塊中的數(shù)據(jù)應(yīng)該在所選擇的未來(lái)時(shí)間被拷貝。
25.權(quán)利要求24的方法,其中,所述被選擇的未來(lái)時(shí)間包括文件系統(tǒng)中的一致性點(diǎn)被寫(xiě)入磁盤的時(shí)間。
26.一種方法,包括識(shí)別第一群數(shù)據(jù)塊,所述第一群包括能夠保存與所述數(shù)據(jù)塊相關(guān)聯(lián)的冗余信息的塊;確定所述冗余信息是否可訪問(wèn);響應(yīng)于所述確定操作的結(jié)果,把數(shù)據(jù)從所述第一群發(fā)送到與一個(gè)或多個(gè)第二群相關(guān)聯(lián)的一組數(shù)據(jù)塊,所述第二群中每個(gè)都具有能夠保存冗余信息的可訪問(wèn)數(shù)據(jù)塊。
27.權(quán)利要求26的方法,其中,所述數(shù)據(jù)發(fā)送步驟包括把數(shù)據(jù)條帶從具有對(duì)應(yīng)奇偶性的磁盤發(fā)送到相同或其它磁盤上的其它條帶。
28.權(quán)利要求26的方法,其中,所述第一群包括RAID條帶。
29.權(quán)利要求26的方法,其中,所述確定操作包括確定包括能夠保存所述冗余信息的所述塊的磁盤是否存在故障。
30.權(quán)利要求26的方法,其中,所述確定操作包括確定能夠保存所述冗余信息的所述塊是否存在故障。
31.權(quán)利要求26的方法,包括接收關(guān)于與所述第一群相關(guān)聯(lián)的所述數(shù)據(jù)塊的信息;響應(yīng)于所述接收操作,只對(duì)所述數(shù)據(jù)塊的子集執(zhí)行所述數(shù)據(jù)發(fā)送操作。
32.權(quán)利要求31的方法,其中,所述關(guān)于所述數(shù)據(jù)塊的信息至少包括下列信息之一哪個(gè)數(shù)據(jù)塊具有已分配數(shù)據(jù),哪個(gè)數(shù)據(jù)塊沒(méi)有已分配數(shù)據(jù),哪個(gè)數(shù)據(jù)塊具有不再使用的數(shù)據(jù)。
33.權(quán)利要求31的方法,其中,所述信息包括哪個(gè)數(shù)據(jù)塊已知為零。
34.權(quán)利要求26的方法,其中,所述發(fā)送操作響應(yīng)于所述數(shù)據(jù)應(yīng)該在未來(lái)時(shí)間被發(fā)送的指示。
35.權(quán)利要求34的方法,其中,所述未來(lái)時(shí)間包括文件系統(tǒng)產(chǎn)生包括來(lái)自所述第一群的所述數(shù)據(jù)的一致性點(diǎn)的時(shí)間。
36.一種包括指令的存儲(chǔ)器或大容量存儲(chǔ)器,所述指令能夠由一個(gè)或多個(gè)計(jì)算裝置執(zhí)行,所述的指令引導(dǎo)所述的一個(gè)或多個(gè)計(jì)算裝置來(lái)識(shí)別第一群數(shù)據(jù)塊,所述的第一群包括能夠保存與所述數(shù)據(jù)塊相關(guān)聯(lián)的冗余信息的塊;確定所述的冗余信息是否可訪問(wèn);響應(yīng)于所述確定指令的結(jié)果,把數(shù)據(jù)從所述的第一群發(fā)送到與一個(gè)或多個(gè)第二群相關(guān)聯(lián)的一組數(shù)據(jù)塊,所述的第二群中每個(gè)都具有能夠保存冗余信息的可訪問(wèn)數(shù)據(jù)塊。
37.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的數(shù)據(jù)發(fā)送指令包括把數(shù)據(jù)條帶從具有對(duì)應(yīng)奇偶性的磁盤發(fā)送到相同或其它磁盤上的其它條帶。
38.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的第一群包括RAID條帶。
39.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的確定指令包括確定包括所述能夠保存所述冗余信息的塊的磁盤是否存在故障的指令。
40.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的確定指令包括確定能夠保存所述冗余信息的所述塊是否存在任何故障的指令。
41.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令用來(lái)接收關(guān)于與所述第一群相關(guān)聯(lián)的所述數(shù)據(jù)塊的信息;響應(yīng)于所述的接收指令,只對(duì)所述數(shù)據(jù)塊的子集執(zhí)行所述的發(fā)送指令。
42.權(quán)利要求41的存儲(chǔ)器或大容量存儲(chǔ)器,其中,關(guān)于所述數(shù)據(jù)塊的信息包括至少下列信息之一哪個(gè)數(shù)據(jù)塊具有已分配數(shù)據(jù),哪個(gè)數(shù)據(jù)塊沒(méi)有已分配數(shù)據(jù),哪個(gè)數(shù)據(jù)塊具有不再使用的數(shù)據(jù)。
43.權(quán)利要求41的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的信息包括哪個(gè)數(shù)據(jù)塊已知為零。
44.權(quán)利要求36的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的發(fā)送指令響應(yīng)于所述數(shù)據(jù)應(yīng)該在未來(lái)時(shí)間被發(fā)送的指示。
45.權(quán)利要求44的方法,其中,所述的未來(lái)時(shí)間包括文件系統(tǒng)產(chǎn)生包括來(lái)自所述第一群的所述數(shù)據(jù)的一致性點(diǎn)的時(shí)間。
46.一種方法,包括識(shí)別一群數(shù)據(jù)塊;從文件系統(tǒng)接收關(guān)于所述數(shù)據(jù)塊的信息;選擇計(jì)算方法,響應(yīng)于所述信息的結(jié)果,減去或重算響應(yīng)于所述數(shù)據(jù)塊的一組相關(guān)聯(lián)的冗余信息;和響應(yīng)于所述選擇行動(dòng)的結(jié)果,使所述冗余信息和所述數(shù)據(jù)塊關(guān)聯(lián)起來(lái)。
47.權(quán)利要求46的方法,其中,所述的選擇步驟包括只選擇被分配的數(shù)據(jù)塊。
48.權(quán)利要求46的方法,其中,所述的接收操作的結(jié)果包括至少下列結(jié)果之一具有已為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有未為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有不再用于所述文件系統(tǒng)的數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量。
49.權(quán)利要求46的方法,其中,所述的數(shù)據(jù)塊群與RAID群相關(guān)聯(lián)。
50.權(quán)利要求46的方法,其中,所述的數(shù)據(jù)塊群和所述的冗余信息與RAID條帶相關(guān)聯(lián)。
51.權(quán)利要求48的方法,其中,所述的計(jì)算方法包括至少下列方法之一通過(guò)減法來(lái)計(jì)算奇偶性、通過(guò)重算來(lái)計(jì)算奇偶性。
52.權(quán)利要求46的方法,其中,所述的接收操作的結(jié)果包括已知具有選定值的所述數(shù)據(jù)塊的數(shù)量。
53.權(quán)利要求52的方法,其中,所述的選定值是零。
54.一種設(shè)備,包括具有一組數(shù)據(jù)塊群的存儲(chǔ)系統(tǒng),每個(gè)所述的數(shù)據(jù)塊群與能夠保存冗余信息的數(shù)據(jù)塊相關(guān)聯(lián),這樣,響應(yīng)于所述群中的至少一些信息和至少一些所述的冗余信息,每個(gè)群中的所述一個(gè)個(gè)別數(shù)據(jù)塊都可以被重建;響應(yīng)于關(guān)于所述數(shù)據(jù)塊的使用的信息的一組信息;和至少一個(gè)電路,連接到所述數(shù)據(jù)塊和所述能夠保存冗余信息的數(shù)據(jù)塊,所述的電路能夠計(jì)算所述的冗余信息,其中,所述的電路至少響應(yīng)于一些所述關(guān)于使用的信息。
55.權(quán)利要求54的設(shè)備,其中,所述關(guān)于使用的信息包括至少下列信息之一具有已為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有未為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有不再用于所述文件系統(tǒng)的所述數(shù)據(jù)塊的數(shù)量。
56.權(quán)利要求54的設(shè)備,其中所述的冗余信息包括奇偶信息;和所述的電路能夠下面各項(xiàng)中的至少一個(gè)通過(guò)減法來(lái)計(jì)算奇偶性,通過(guò)重算來(lái)計(jì)算奇偶性。
57.一種設(shè)備,包括用于識(shí)別一群數(shù)據(jù)塊的裝置;用于從文件系統(tǒng)接收關(guān)于所述數(shù)據(jù)塊的信息的裝置;用于響應(yīng)于所述的確定行動(dòng)的結(jié)果,來(lái)選擇響應(yīng)于所述數(shù)據(jù)塊的一組相關(guān)聯(lián)的冗余信息的計(jì)算方法的裝置;和用于響應(yīng)于所述選擇行動(dòng)的結(jié)果,來(lái)使所述的冗余信息和所述的數(shù)據(jù)塊相關(guān)聯(lián)的裝置。
58.權(quán)利要求57的設(shè)備,其中,選擇裝置包括只選擇被分配了的數(shù)據(jù)塊。
59.權(quán)利要求57的設(shè)備,其中,來(lái)自所述文件系統(tǒng)的所述信息響應(yīng)于至少識(shí)別下列之一的數(shù)據(jù)結(jié)構(gòu)具有已為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊組,具有未為其分配的數(shù)據(jù)的所述數(shù)據(jù)塊組,具有不再用于所述文件系統(tǒng)的所述數(shù)據(jù)塊組。
60.權(quán)利要求57的設(shè)備,包括用于響應(yīng)于所述的選擇裝置來(lái)計(jì)算所述的冗余信息的裝置,所述的計(jì)算裝置包括以下各項(xiàng)中的至少一個(gè)通過(guò)減法計(jì)算奇偶性、通過(guò)重算計(jì)算奇偶性。
61.一種包括指令的存儲(chǔ)器或大容量存儲(chǔ)器,所述的指令能夠由一個(gè)或多個(gè)計(jì)算裝置來(lái)執(zhí)行,所述的指令引導(dǎo)所述的一個(gè)或多個(gè)計(jì)算裝置來(lái)識(shí)別數(shù)據(jù)塊群;接收關(guān)于所述的數(shù)據(jù)塊的信息;響應(yīng)于所述的信息選擇一個(gè)或多個(gè)所述的指令;和響應(yīng)于所述的被選擇指令的執(zhí)行結(jié)果,使冗余信息和所述的群相關(guān)聯(lián)。
62.權(quán)利要求61的存儲(chǔ)器或大容量存儲(chǔ)器,其中,關(guān)于所述數(shù)據(jù)塊的所述信息包括至少下列信息之一具有已分配數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有未分配數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量,具有不再使用數(shù)據(jù)的所述數(shù)據(jù)塊的數(shù)量。
63.權(quán)利要求61的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的數(shù)據(jù)塊群與RAID群相關(guān)聯(lián)。
64.權(quán)利要求61的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的數(shù)據(jù)塊群和所述的冗余信息與RAID條帶相關(guān)聯(lián)。
65.權(quán)利要求61的存儲(chǔ)器或大容量存儲(chǔ)器,其中,所述的選擇指令引導(dǎo)所述的一個(gè)或多個(gè)計(jì)算裝置完成至少下列一個(gè)計(jì)算通過(guò)減法來(lái)計(jì)算奇偶性;通過(guò)重算來(lái)計(jì)算奇偶性。
66.權(quán)利要求61的存儲(chǔ)器或大容量存儲(chǔ)器,其中,關(guān)于所述數(shù)據(jù)塊的所述信息包括已知具有選定值的所述數(shù)據(jù)塊的數(shù)量。
67.一種方法,包括選擇將從源發(fā)送到目標(biāo)的一組數(shù)據(jù)塊;把所述的數(shù)據(jù)塊發(fā)送到所述的目標(biāo);把與所述數(shù)據(jù)塊相關(guān)聯(lián)的奇偶性發(fā)送到所述目標(biāo);通過(guò)在所述目標(biāo)把任何未分配塊設(shè)置為選定值,所述數(shù)據(jù)塊的奇偶性是精確的;從而建立所述源裝置和所述目標(biāo)裝置之間的選定關(guān)系。
68.權(quán)利要求67的方法,包括發(fā)送有關(guān)在存儲(chǔ)卷上組織所述數(shù)據(jù)塊的信息。
69.權(quán)利要求67的方法,其中所述的數(shù)據(jù)塊被組織在一組條帶中,所述的條帶定義所述數(shù)據(jù)塊的被選擇群的奇偶性;和所述的未分配塊包括未給所述數(shù)據(jù)塊關(guān)聯(lián)的所述條帶中的任何塊。
70.權(quán)利要求67的方法,其中所述的數(shù)據(jù)塊組實(shí)質(zhì)上是已經(jīng)不在所述目標(biāo)中的數(shù)據(jù)塊的最小數(shù)。
71.一種包括指令的存儲(chǔ)器或大容量存儲(chǔ)器,所述的指令能夠由一個(gè)或多個(gè)計(jì)算裝置來(lái)執(zhí)行,所述的指令引導(dǎo)所述的一個(gè)或多個(gè)計(jì)算裝置來(lái)選擇從源發(fā)送到目標(biāo)的一組數(shù)據(jù)塊;把所述的數(shù)據(jù)塊發(fā)送到所述的目標(biāo);把與所述數(shù)據(jù)塊相關(guān)聯(lián)的奇偶性發(fā)送到所述目標(biāo);在所述的目標(biāo)把任何未分配塊設(shè)置為選定值,憑此所述數(shù)據(jù)塊的奇偶性是精確的;憑此所述源裝置和所述目標(biāo)裝置之間選定的關(guān)系被建立。
72.權(quán)利要求71的存儲(chǔ)器或大容量存儲(chǔ)器,包括指令其用于發(fā)送關(guān)于在存儲(chǔ)卷上組織所述數(shù)據(jù)塊的信息。
73.權(quán)利要求71的存儲(chǔ)器或大容量存儲(chǔ)器,其中所述的數(shù)據(jù)塊被組織在一組條帶中,所述的條帶定義所述數(shù)據(jù)塊的被選擇群的奇偶性;和所述的未分配塊包括未給所述數(shù)據(jù)塊分配的所述條帶中的任何塊。
74.權(quán)利要求71的存儲(chǔ)器或大容量存儲(chǔ)器,其中所述的數(shù)據(jù)塊組實(shí)質(zhì)上是已經(jīng)不在所述目標(biāo)中的數(shù)據(jù)塊的最小數(shù)。
75.一種設(shè)備,包括用于選擇從源發(fā)送到目標(biāo)的一組數(shù)據(jù)塊的裝置;用于把所述的數(shù)據(jù)塊發(fā)送到所述目標(biāo)的裝置;用于把與所述數(shù)據(jù)塊相關(guān)聯(lián)的奇偶性發(fā)送到所述目標(biāo)的裝置;用于在所述目標(biāo)把任何未分配塊設(shè)置為選定值的裝置,憑此所述數(shù)據(jù)塊的奇偶性是精確的;憑此所述源裝置和所述目標(biāo)裝置之間的選定關(guān)系被建立。
76.權(quán)利要求75的設(shè)備,包括用于發(fā)送關(guān)于在存儲(chǔ)卷上組織所述數(shù)據(jù)塊的信息的裝置。
77.權(quán)利要求75的設(shè)備,其中所述的數(shù)據(jù)塊被組織在一組條帶中,所述的條帶定義所述數(shù)據(jù)塊的被選擇群的奇偶性;和所述的未分配塊包括未給所述數(shù)據(jù)塊分配的所述條帶中的任何塊。
78.權(quán)利要求75的設(shè)備,其中所述的數(shù)據(jù)塊組實(shí)質(zhì)上是已經(jīng)不在所述目標(biāo)中的數(shù)據(jù)塊的最小數(shù)。
79.一種設(shè)備,包括零值映射表,零值映射表包括描述哪些數(shù)據(jù)塊已經(jīng)被置零的一組項(xiàng)目;塊映射表,包括描述哪些數(shù)據(jù)塊由已分配的文件系統(tǒng)數(shù)據(jù)所使用的一組項(xiàng)目;和條帶映射表,包括對(duì)應(yīng)于RAID群中故障磁盤中的一個(gè)或多個(gè)RAID條帶的一組條帶映射項(xiàng)目。
80.權(quán)利要求79的設(shè)備,其中,通過(guò)把所述塊映射表中與已分配數(shù)據(jù)相關(guān)聯(lián)的項(xiàng)目拷貝到所述RAID群中的未故障磁盤,從所述故障磁盤重建數(shù)據(jù)。
81.權(quán)利要求79的設(shè)備,其中,通過(guò)把所述塊映射表中與已分配數(shù)據(jù)相關(guān)聯(lián)的項(xiàng)目組拷貝到不同RAID群中的未故障磁盤,從所述故障磁盤重建數(shù)據(jù)。
82.權(quán)利要求79的設(shè)備,其中,數(shù)據(jù)在下一個(gè)一致性點(diǎn)被重建。
83.權(quán)利要求79的設(shè)備,其中,所述條帶映射表中的所述項(xiàng)目組在重建所述的塊映射表中的項(xiàng)目組后被更新。
84.權(quán)利要求79的設(shè)備,其中,所述條帶映射表中所述項(xiàng)目組中的每個(gè)項(xiàng)目都包括一組與RAID條帶的轉(zhuǎn)移有關(guān)的信息。
85.權(quán)利要求84的設(shè)備,其中,所述的信息組包括與所述RAID條帶相關(guān)聯(lián)的所述數(shù)據(jù)塊轉(zhuǎn)移的目標(biāo)單元。
86.權(quán)利要求79的設(shè)備,其中,所述條帶映射表中所述項(xiàng)目組中的每個(gè)項(xiàng)目都對(duì)應(yīng)于可以從所述故障磁盤刪除的信息。
87.權(quán)利要求79的設(shè)備,其中,所述零值映射表中項(xiàng)目數(shù)量和非零數(shù)據(jù)塊數(shù)量之間的相對(duì)差確定奇偶性是通過(guò)減去所有數(shù)據(jù)塊還是加上所有數(shù)據(jù)塊來(lái)計(jì)算。
全文摘要
當(dāng)磁盤故障(210)時(shí),存儲(chǔ)系統(tǒng)只轉(zhuǎn)移包括已分配數(shù)據(jù)的那些磁盤塊,并在可能的情況下把未分配的磁盤塊視為邏輯上為零。當(dāng)沒(méi)有備用磁盤時(shí),源磁盤塊被邏輯上置零并且重新計(jì)算與源磁盤塊相關(guān)聯(lián)的RAID條帶的奇偶性(223)。當(dāng)存在備用時(shí),備用上的未分配塊在轉(zhuǎn)移時(shí)邏輯上或物理上被置零(222)。故障磁盤的寫(xiě)入操作被重定向到其它未故障磁盤,并且該使用中的磁盤塊的記錄已經(jīng)從而被“轉(zhuǎn)移”到那些其它的未故障磁盤被保存。未使用磁盤塊被提前主動(dòng)置零。使用關(guān)于已分配磁盤塊的信息,并通過(guò)拷貝那些包括已分配數(shù)據(jù)或奇偶性的數(shù)據(jù)塊,以及通過(guò)在鏡像清除那些不包括任何已分配塊的數(shù)據(jù)塊,目標(biāo)鏡像拷貝被創(chuàng)建。
文檔編號(hào)H02H3/05GK1679000SQ03820109
公開(kāi)日2005年10月5日 申請(qǐng)日期2003年6月24日 優(yōu)先權(quán)日2002年6月24日
發(fā)明者S·R·克萊曼, S·H·斯特朗格 申請(qǐng)人:網(wǎng)絡(luò)裝置公司