專利名稱:在raid數據重建和轉移中使用文件系統(tǒng)信息的制作方法
技術領域:
本發(fā)明涉及在RAID數據重建和轉移(migration )中^f吏用文件系統(tǒng)信息。
背景技術:
在計算機系統(tǒng)中保存大量存儲的一個已知方法被稱作RAID("廉價磁 盤冗余陳列")。RAID存儲器包括一個磁盤群,其中至少部分被用來儲存 數據和至少部分被用來存儲與那些數據相關的奇偶信息,其中數據和奇 偶性被分配到多個磁盤。如果那個儲存數據或奇偶性的磁盤塊故障或整 個磁盤都出現(xiàn)故障,則允許RAID存儲系統(tǒng)(從剩余的存儲數據和奇偶信息) 重建原始數據。在被稱作RAID條帶的一組磁盤塊中,數據和奇偶性是彼 此相關的。RAID存儲器的一個已知問題是,如果驅動器出現(xiàn)故障,則RAID存儲 系統(tǒng)不再具有相同的冗余度,而如果希望保存相同的冗余度,則必須對 其做出調整。即,希望RAID存儲系統(tǒng)允許遲些的第二磁盤故障而不造成 數據丟失,但是重建RAID條帶中兩個分離的故障磁盤的數據是不可能 的。為了保存相同的冗余度,RAID存儲系統(tǒng)具有從故障磁盤重建數據到 其上的備用磁盤,或(如果存在足夠的可用空間),則從故障磁盤把數據 轉移到其它磁盤。在后一種情況中,與每個RAID條帶相關的奇偶性必須 響應于所分配數據的移動而被調整。然而,數據重建和奇偶性重算包括 實質性的磁盤驅動器讀寫操作,并且最小化磁盤訪問量和在磁盤和其余的計算機系統(tǒng)之間來回傳送的信息量將是有利的。因此,有利的是提供一個存儲系統(tǒng)(其可能是RA I D存儲系統(tǒng)或另 一類 型的存儲系統(tǒng)),其M數據的可靠性、允許邏輯上刪除故障磁盤、和最 小化計算量、執(zhí)行數據轉移或重建的磁盤存取量,或奇偶性調整量。這 些和其它優(yōu)點在本發(fā)明實施例中被提供,其中,文件系統(tǒng)保存的信息(包 括磁盤塊實際上用于記錄所存儲的數據的相關信息)被用于和移動,以及 奇偶性的重算。本發(fā)明最小化計算和磁盤存取的優(yōu)點也可以用于存儲系 統(tǒng)的 一般操作,以及用于把存儲巻從源存儲系統(tǒng)鏡像到目標存儲系統(tǒng)。發(fā)明內容本發(fā)明提供一個方法和系統(tǒng),其保持數據可靠性、允許邏輯刪除故 障磁盤、和最小化執(zhí)行數據轉移或重建或奇偶性重算所需的計算量和磁 盤存取量。在優(yōu)選實施例中,當執(zhí)行數據重建和轉移,以及奇偶性重算 時,存儲系統(tǒng)使用實質上只和所分配的磁盤塊有關的信息,并忽略未分 配的磁盤塊,未分配的磁盤塊已經被設置為一個預定值,例如零。當磁 盤故障時,存儲系統(tǒng)只轉移故障磁盤上已分配數據的那些磁盤塊,而在 可能的情況下把未分配的磁盤塊視為邏輯上為零。在本發(fā)明的一方面中,文件系統(tǒng)保存的信息識別在故障磁盤上實際被分配的磁盤塊。當有備用磁盤或沒有備用磁盤時,RAID群中的磁盤都 可能出現(xiàn)故障。當磁盤塊將從故障磁盤被轉移而沒有備用磁盤時,那些 磁盤塊從故障磁盤被轉移到RAID群中的其它未故障磁盤,因而減少了 RAID群中的磁盤數量。當那些磁盤塊被遷移時(即,數據被重建和拷貝到 目標磁盤塊上),源磁盤塊邏輯上被設置為零并且與源磁盤塊相關的MID 條帶重新計算奇偶性。 一旦所有已分配磁盤塊都已經從故障磁盤被轉 移,故障磁盤就可以邏輯上從RAID群中除去。當磁盤塊將從故障磁盤被 轉移到備用磁盤時,那些磁盤塊用類似方法被轉移,不同在于,當轉移 的時候,備用磁盤上未分配的存儲塊邏輯上或物理上被設置成選定值 (零)。在本發(fā)明的一方面中,通過重定向寫入操作(預定用于故障磁盤上的 磁盤塊)到其它未故障磁盤,文件系統(tǒng)主動地協(xié)助RAID存儲系統(tǒng)。文件系 統(tǒng)還保持一個記錄,即哪些使用中的磁盤塊已經被這樣"轉移"到那些 其它的未故障磁盤,因而提供了一個指示符,其指示最初保存在故障磁 盤上的存儲數據已經完全被轉移。當寫入磁盤時,文件系統(tǒng)提前主動把 未使用磁盤塊設置為選定值(零),從而在寫入以及遲些寫入的時候最小 化奇偶性的重算量。在優(yōu)選實施例中,至少在下列情況中,文件系統(tǒng)把 未使用磁盤塊設置為零(l)當新磁盤被添加到RAID群時,(2)當包括未 使用磁盤塊的RAID條帶被寫入時。在優(yōu)選實施例中,文件系統(tǒng)保存"一 致性點",其中已存儲的數據被確保首尾一致,并在將一致性點寫入磁 盤時把未4吏用磁盤塊設置為零。在本發(fā)明的一方面中,RAID存儲系統(tǒng)可能使用 一種技術(比如RAID 級別5),其中,奇偶性存儲塊可能在不同的磁盤上被找到。當那些磁盤 之一故障時,文件系統(tǒng)識別與故障磁盤上奇偶信息相關的RAID條帶,并 把整組磁盤塊從那些條帶轉移到其它磁盤,以便把那些全部條帶的奇偶 信息保存在未故障磁盤上。在本發(fā)明的一方面中,存儲系統(tǒng)使用已分配磁盤塊的相關信息來改 進RAID存儲系統(tǒng)執(zhí)行的操作。當寫入任何一個RAID條帶時,存儲系統(tǒng)響 應于磁盤塊被分配而確定通過減去還是重新計算來計算奇偶性更加有 效。在本發(fā)明的一方面中,通過復制(到鏡像拷貝)那些包括已分配數據 和奇偶性的那些存儲塊,和通過清楚(在鏡像拷貝)那些存儲塊不包括任 何已分配數據或奇偶性的存儲塊,存儲巻的目標鏡像拷貝可以使用已分 配磁盤塊相關文件系統(tǒng)信息而被創(chuàng)建。因此,目標存儲巻可以響應于源 存儲巻而被構造,而不需要任何奇偶性重算。本發(fā)明通常適用于文件系統(tǒng)和存儲系統(tǒng),其中,數據被保存在多個 裝置上,和其中,那些多個裝置上的至少一部分記錄信息可以被丟棄(例 如不是文件系統(tǒng)的一部分或可以被逐出高速緩存的高速緩存對象)。這些 應用沒有被具體限制到保存一致性點的文件系統(tǒng),也沒有被具體限制到 RAI D存儲系統(tǒng),它們也沒有局限于與在此公開的專門應用相關的系統(tǒng)。
圖1示出文件系統(tǒng)和RAID存儲系統(tǒng)的框圖,包括在RAID數據重建中使 用文件系統(tǒng)信息。圖2示出包括在RAID數據重建中使用文件系統(tǒng)信息的方法的處理流 程圖。圖3示出 一個系統(tǒng)框圖,該系統(tǒng)不重新計算奇偶性就能夠鏡像。 圖4示出不用重新計算奇偶性的鏡象方法的處理流程圖。
具體實施方式
在此處的說明書中,本發(fā)明的一個優(yōu)選實施例被描述,包括優(yōu)選的 處理步驟和數據結構。所屬領域技術人員在細讀此申請之后將會了解, 本發(fā)明的那些實施例可以使用沒有具體描述的多種其它技術來執(zhí)行,而 不用過度的試驗或進一步發(fā)明,而且這類其它技術將在本發(fā)明的范圍和 精神內。詞匯下列術語涉及或者是指本發(fā)明的方面或其實施例。其中每個術語的 一般意義被定為說明性的而絕不是限制性的。一致性點-通常,這指的是由自相一致的文件系統(tǒng)保存的可識別數 據集,因此它可以被保存在磁盤上而不用擔心一致性點內的數據引用會 導致文件系統(tǒng)誤差。詞組" 一致性點"被定為足夠寬以覆蓋有其自相一致 性的文件系統(tǒng)以及那些原子地自相一致的文件系統(tǒng),該自相一致性由用 于近期改變的一組日志項來保證。磁盤塊-通常,這指的是存儲數據的大容量存儲系統(tǒng)中可配置的部 分。詞組"磁盤塊"被定為足夠寬以覆蓋磁盤上量化或未量化的可分配 空間。文件系統(tǒng)_通常,這指的是直接在存儲系統(tǒng)上管理磁盤塊的任何應 用程序,包括保存命名方案和在大容量存儲器上保存的文件數據之間的 關聯(lián)的系統(tǒng)。詞組"文件系統(tǒng),,被定為足夠寬以覆蓋文件系統(tǒng)的變形, 包括那些直接對磁盤讀寫的系統(tǒng)和那些允許不同的子系統(tǒng)或操作系統(tǒng)其 它部分來讀寫磁盤的系統(tǒng)。存儲系統(tǒng)-通常是用于儲存數據的系統(tǒng),例如在RAID陣列中排列的 一組一個或多個磁盤。存儲系統(tǒng)可以被分成一個或多個巻,每個巻起一 個存儲系統(tǒng)的作用。術語"存儲系統(tǒng),,和"巻"或"存儲巻"可以被可 交換地使用。磁盤塊的遷移-通常,這指的是用于從已被丟失的磁盤塊把數據拷 貝或重建數據到大容量存儲系統(tǒng)不同部分上的任何技術,比如沒有故障 因而可用的磁盤。奇偶性重算-通常,這指的是用于在丟失之后響應于已存儲的數據 重建奇偶信息或其它冗余信息的任何技術,無論是否與其它冗余信息結 合。RAID群-通常,這指的是RAID存儲系統(tǒng)內包括的和RAID存儲系統(tǒng)用 來保存數據冗余性的磁盤組。 一部分系統(tǒng)可能包括RAID存儲系統(tǒng),RAID 存儲系統(tǒng)把它們的磁盤分開成多于一個的RAID群。RAID存儲系統(tǒng)-通常,這指的是用于在大容量存儲系統(tǒng)上保存數據 的任何技術,數據包括一組冗余信息(比如可能的奇偶信息、漢明碼、或 類似實際數據拷貝的其它冗余形式),并響應于丟失提供重建數據的可能 性。RAID條帶-通常,這指的是磁盤塊和冗余信息之間的任何關聯(lián),其 中,磁盤塊和冗余信息是相互依賴的因此至少一部分可以在丟失之后被 重建。重建-通常,這指的是用于在丟失之后響應于冗余信息來重建數據 的任何技術,無論是否與其它已存儲的數據結合。零值映射(zeromap)-通常,這指的是具有一組指示磁盤塊邏輯上或 物理上已經被設置為零的項目的表。條帶映射(stripmap)-通常,這指的是具有一組指示哪些RAID條帶 已經從故障磁盤被轉移的項目的表。本發(fā)明的范圍和精神不受限于任何這些定義,不受限于其中提及的 具體例子,而是打算包括這些和其它術語具體化的最廣泛的概念。系統(tǒng)元件圖1示出文件系統(tǒng)和RAID存儲系統(tǒng)的框圖,包括在RAID數據重建中使 用文件系統(tǒng)信息。系統(tǒng)100包括文件系統(tǒng)120、存儲系統(tǒng)140和上面兩者之間的通信鏈路 160。系統(tǒng)還包括用于運行文件系統(tǒng)120的處理器(未示出)、程序和數據 存儲器(未示出)。文件系統(tǒng)12 0包括一組文件系統(tǒng)信息表l21 ,其指示關于存儲系統(tǒng)14 0 中磁盤塊(不管其是個別的還是成群的)的信息。文件系統(tǒng)信息表121可以 被記錄在存儲器中,或者可以被記錄在存儲系統(tǒng)140被選擇的部分中,或 者其它方式(比如在非易失性存儲器或其它輔助存儲器裝置中),只要即 使存儲系統(tǒng)140丟失了數據,那些文件系統(tǒng)信息表121仍然是文件系統(tǒng)120 可訪問的。文件系統(tǒng)信息表l21中的特定信息進一步被說明如下。存儲系統(tǒng)140包括一組磁盤141,其中每個包括一組磁盤塊142,磁盤 塊142包括數據(存儲在至少一些磁盤塊142內),在RAID條帶組中排列的
磁盤塊142包括至少一些冗余信息(存儲在至少一些磁盤塊142內)。RAID 條帶143被處理,從而使得在任何個別磁盤141上的任何個別磁盤塊142 上的信息與在其它磁盤141上的其它磁盤塊142上的信息相關。如果任何 磁盤塊142乃至整個磁盤141丟失,這允許任何個別磁盤塊142上的信息被 重建或者重新計算。RAID存儲系統(tǒng)在大容量存儲系統(tǒng)的技術領域中是已 知的。通信鏈路160連接文件系統(tǒng)120和存儲系統(tǒng)140,并包括文件系統(tǒng)120 和存儲系統(tǒng)140可用來與磁盤塊142的信息和系統(tǒng)100操作信息的任何技 術。在優(yōu)選實施例中,通信鏈路160包括連接到文件系統(tǒng)120和存儲系統(tǒng) 140的總線。文件系統(tǒng)信息表121包括塊映射(blockmap)表122,塊表122具有 一組塊映射項目123,其指示哪個磁盤塊142被已分配的文件系統(tǒng)數據所 使用。從而,塊映射表122為每個磁盤141上的每個磁盤塊142指示該磁盤 塊142是被文件系統(tǒng)120使用(例如由邏輯"1"值指示)還是不由文件系 統(tǒng)120使用(例如由邏輯"0"值指示)。說明書中所用的"已分配的文 件系統(tǒng)數據"不同于可能由文件系統(tǒng)120保存的任何臨時數據結構,臨時 數據結構可能包括在磁盤上分量。已分配的文件系統(tǒng)數據也不同于可能 由文件系統(tǒng)120保存的文件系統(tǒng)數據的備份拷貝,比如在關于優(yōu)選 "WAFL"文件系統(tǒng)120的公開說明中描述的"瞬態(tài)(snapshot)"數據。文件系統(tǒng)信息表121包括零值映射表124,其具有一組零值映射項目 125,它指示哪個磁盤塊142已經邏輯上或物理上被置零。文件系統(tǒng)信息表l 21包括條帶映射表126,其具有一組條帶映射項目 127,它指示哪個RAID條帶143已經從故障磁盤被轉移。在本發(fā)明的一方 面中,其中,當那些RAID條帶143包括故障磁盤上的奇偶信息時,RAID 條帶14 3被轉移,每個條帶映射項目12 7指出來自整個RAID條帶14 3的磁盤 塊142是否已經被轉移(因為奇偶信息本身不被遷移)。已分配數據的遷移如果磁盤塊l 4 2中的數據被丟失(例如磁盤塊14 2被損壞),或磁盤141 上的所有數據都丟失(例如磁盤故障),存儲系統(tǒng)140能夠重建丟失數據。 然而,對于任何丟失數據并在塊映射表122中被指示沒有任何已分配數據 的磁盤塊142來說,不必為該磁盤塊142重建數據。從而,對于個別的磁 盤塊142,如果丟失但沒有使用,則存儲系統(tǒng)140無須重建任何數據。對
于整個磁盤141,如果丟失,則存儲系統(tǒng)140只須重建當時正在被使用的 磁盤塊142的數據.如果沒有備用磁盤,則文件系統(tǒng)120指示存儲系統(tǒng)140重建已分配磁 盤塊142的數據(即被塊映射表122指示為已分配的磁盤塊142),并把重建 數據拷貝到存儲系統(tǒng)140中相同RAID群中的其它未故障磁盤141上的磁盤 塊142上。在替換實施例中,被重建的數據可以被拷貝到存儲系統(tǒng)140中 不同RAID群中的其它未故障磁盤上。故障磁盤141的磁盤塊142然后不再 被寫入,因此文件系統(tǒng)120將它們視為可用VBN(虛擬塊號)空間中的 "洞"'例如,如果故障磁盤是磁盤#1、 #2、 #3、 #4和#5(奇偶性)中的 磁盤#3,則磁盤#1、 #2、 #3、 tf4的VBN將仍然有效,而磁盤tf3的VBN則無效。 當所有來自故障磁盤141的數據都已經被除去時,故障磁盤141邏輯上或物 理上從RAID群被除去,從而把RAI D群中的磁盤141的數量減少了 1 。所屬領域技術人員將在細讀本申請之后認識到,使用塊映射表l 2 2來 減少數據重建量允許存儲系統(tǒng)140最小化工作量,同時又保存了相同的故 障容許程度。所屬領域技術人員在細讀本申請之后也將認識到,本技術 可以不用過度試驗或新發(fā)明而被應用到已經容許多個故障的RAID系統(tǒng)和 類似RAID的系統(tǒng),比如科貝特(Corbett)或"偶奇的(EVENODD ),,那 些系統(tǒng)。更一般地說,所屬領域技術人員在細讀本申請之后也將認識到, 本技術可以不用過度試驗或新發(fā)明而被應用到沒有其中必須放置數據或 元數據的空間的所有存儲系統(tǒng)。當故障磁盤141上的磁盤塊142的數據被遷移時,存儲系統(tǒng)140邏輯上 清除了 (置零)該磁盤塊142的數據。文件系統(tǒng)120設置對應RAID條帶143 的零值映射項目125。存儲系統(tǒng)140重新計算對應RAID條帶143的奇偶性, 并把重新計算的奇偶性寫入對應RAID條帶143中的奇偶性磁盤141。如果存在備用磁盤,則文件系統(tǒng)120用同樣的方法指示存儲系統(tǒng)140 轉移來自已分配磁盤塊142的數據。對于未分配的磁盤塊142,存儲系統(tǒng) 140寫入另一未故障磁盤141上的對應磁盤塊142,而不嘗試重建來自于未 分配的磁盤塊142的數據。相反地,存儲系統(tǒng)140物理上清除(置零)作為 未分配磁盤塊142轉移目標的磁盤塊142。在優(yōu)選實施例中,文件系統(tǒng)120 指示存儲系統(tǒng)140使用SCSI "寫入相同的(write same)"命令來指導具 有作為轉移目標的磁盤塊142的磁盤141;這節(jié)省了磁盤141的活動和文件 系統(tǒng)120與存儲系統(tǒng)140之間的帶寬。
條帶映射表126包括每個RAID條帶143的一個條帶映射項目127,為 RAID條帶143指示RAID條帶143中的磁盤塊142 (來自故障磁盤141)是否 已經被轉移到另一未故障磁盤141。當它的對應條帶映射項目127指示特 定磁盤塊142已經從故障磁盤141轉移到另一未故障磁盤141時,存儲系統(tǒng) 140能夠在未來的奇偶性重算期間考慮除去特殊的磁盤塊142。更確切地 說,在寫入特定條帶適,存儲系統(tǒng)140通過假定指示的所有磁盤塊142— 律為零來重新計算奇偶性。當條帶映射表126指出所有來自故障磁盤141 的磁盤塊142已經被轉移到其它未故障磁盤141時,文件系統(tǒng)120和存儲系 統(tǒng)140可以邏輯上全面刪除故障磁盤141。訪問請求的重定向文件系統(tǒng)120用重定向請求中幫助存儲系統(tǒng)140訪問故障磁盤141上 的磁盤塊142。在優(yōu)選實施例中,文件系統(tǒng)120包括寫入時拷貝(copy-on-write)技術,其中,所有對磁盤塊142的寫入操作(在任何磁盤141上, 不包括剛才的故障磁盤141)都通過從作為寫操作目標的磁盤塊142拷貝 數據、修改該拷貝和把到目標磁盤塊142的指針調整為指向新修改過的拷 貝。在優(yōu)選實施例中,當產生存儲巻的一致性點時,這些修改被集合到 一起;然而,對于這類集合沒有特殊的要求。如果磁盤141故障或磁盤塊142被損壞,則文件系統(tǒng)120標記它的文件 系統(tǒng)信息表(包括具有臟塊項目的臟塊表)以指示每個被丟失的磁盤塊 142被標記為臟。第一結果是任何對臟磁盤塊142的寫入嘗試將導致寫入 時拷貝操作將被執(zhí)行。第二結果是文件系統(tǒng)120將不遲于下一個一致性 點,作為向磁盤寫入一致性點的一部分而產生磁盤塊142的拷貝。因為用戶對丟失磁盤塊142的請求被重定向,并且因為文件系統(tǒng)120 將不遲于下一個一致性點產生磁盤塊142拷貝,所以存儲系統(tǒng)140可以等 候來自于文件系統(tǒng)120的指令而不需要通過積極地重建丟失的磁盤塊142 來響應。磁盤塊的提前主動置零在某些情況下,文件系統(tǒng)l2O提前主動指示存儲系統(tǒng)14O把整個磁盤 塊142置零,從而允許容易地重算(或不重算)與包含磁盤塊142的條帶相 關的奇偶信息,在優(yōu)選實施例中,文件系統(tǒng)120指示存儲系統(tǒng)140使用SCSI "寫入相同的"命令,如上所述。文件系統(tǒng)l 2 O在至少下列情況中把整個磁盤塊設置為零.當新的磁盤141被添加到RAID群中時,每個RAID條帶143從而被加 寬了 一個磁盤塊l4 2 ,并且每個這類條帶的奇偶性從而響應于新的磁盤塊 142中的數據。文件系統(tǒng)提前主動指示存儲系統(tǒng)140把新的磁盤141中的所 有磁盤塊142設置為零,而不是重新計算任何奇偶信息,從而使奇偶信息 保持不變。奇偶性優(yōu)選地作為RAID條帶143中磁盤塊142的所有數據的模2和來 計算,模2和也被稱作異或運算("XOR")。因此,插入全是零的新磁 盤塊142沒有改變RAID條帶143中的奇偶性。 當包括未分配的磁盤塊142(即,沒有被文件系統(tǒng)120標記為"使用 中"的磁盤塊142)的MID條帶被寫入時,文件系統(tǒng)120提前主動指示存儲 系統(tǒng)140把那些磁盤塊中的數據設置為零。根據實現(xiàn),這允許文件系統(tǒng)120 或存儲系統(tǒng)140,或者系統(tǒng)100的諸如fly-by XOR (快速XOR )子系統(tǒng)之 類的其它組件重新計算那些條帶的奇偶信息,而不用讀取未使用的磁盤 塊142。無須讀取未使用磁盤塊142減少了存儲系統(tǒng)140執(zhí)行的讀取操作 量,并減少了文件系統(tǒng)12 O和存儲系統(tǒng)14 0之間所用的通信帶寬量。.當文件系統(tǒng)120準備向磁盤寫入一致性點時,它通常寫入磁盤141 上的相對大量的磁盤塊142。文件系統(tǒng)120嘗試把那些磁盤塊142集合到整 個RAID條帶143中,因此寫入操作可以盡可能的有效,并且因此奇偶性計 算可以被最小化(被看作已分配數據的每個磁盤塊142的開銷操作)。當寫 入RAID條帶143時,文件系統(tǒng)120指示存儲系統(tǒng)140清除RAID條帶中不是 一致性點一部分的那些磁盤塊142 (并且因此將被文件系統(tǒng)120標記為未 分配的)。這允許奇偶性計算無須讀取那些磁盤塊142就開始進行。奇偶性的有效計算在本發(fā)明的一方面中,RAID存儲系統(tǒng)執(zhí)行的操作響應于目標RAID條 帶143中磁盤塊142的零值映射表125。響應于那些零值映射表125,文件 系統(tǒng)120可以對目標RAID條帶143中的非零磁盤塊的數量進行計數;這允 許文件系統(tǒng)120或存儲系統(tǒng)140在寫入任何個別RAID條帶143時確定,通過 減法來計算奇偶性或通過重算來計算奇偶性是否更有效。存儲系統(tǒng)140可以通過減法來計算奇偶性,即當向磁盤141寫入磁盤 塊142時,存儲系統(tǒng)140可以從相關聯(lián)的奇偶性(用于那些RAID條帶143)奇偶性上。該減法和加法都是逐^^^莫二進行。通過減法來計算奇偶性在
RAID存儲系統(tǒng)的技術領域中是已知的??商鎿Q地,存儲系統(tǒng)140可以通過 加上(模二)那些RAID條帶143的所有磁盤塊142來重新計算奇偶信息。當向磁盤141寫入一組磁盤塊142時,文件系統(tǒng)120確定通過減法計算 奇偶性是否將需要更少的磁盤操作,或從整個RAID條帶143重新計算奇偶 性是否將需要更少的磁盤操作。文件系統(tǒng)l2O可以從零值映射表l24來確 定這個;它可以確定RAID條帶中是否有足夠磁盤塊是零,并且可以因此 徹底地省去奇偶信息的計算。則RAID系統(tǒng)也可以簡單地把條帶14 3中的未 分配塊置零,如果它們沒有被預先置零(由零值映射表指示)。這對于非 WAFL文件系統(tǒng)來說是特別有用的,其中,更可能在條帶中存在未分配塊。奇偶性丟失時的轉移在RAI D級別4系統(tǒng)中,奇偶性被保存在存儲系統(tǒng)14 0中的單個磁盤141 上;即,所有的RAID條帶都在相同的磁盤141上具有它們的奇偶性,其可 能因此被稱為"奇偶性磁盤,,。在RAID級別5系統(tǒng)中,奇偶性分布在存儲 系統(tǒng)140中的多個磁盤141上;即,每個RAID條帶可能在不同的磁盤141 上具有其奇偶性,因此沒有單個的"奇偶性磁盤" 如果RAID級別5系統(tǒng)中的一個磁盤141故障,則那些將故障磁盤141 用于其奇偶性的RAID條帶不再具有奇偶性塊,并且如果它們剩下的磁盤 塊142中的一個或多個丟失數據,則因此受到丟失信息的影響。文件系統(tǒng) 120將那些RAID條帶的磁盤塊142標記為"臟",因此下次一致性點被寫 入磁盤時,那些磁盤塊142被寫入具有有效奇偶性塊的RAID條帶143中的 相同或其它磁盤上的不同單元。結果,RAID條帶143中奇偶性丟失的磁盤 塊142被寫入具有可用奇偶性塊的其它RAID條帶143中的磁盤塊142(不一 定都寫入相同的RAID條帶143)。操作方法圖2示出包括在RAID數據重建中使用文件系統(tǒng)信息的方法的處理流 程圖。方法200由系統(tǒng)100執(zhí)行。盡管方法200被連續(xù)地描述,然而方法200 的流程點和步驟可以用流水線或其它方法由串聯(lián)或并聯(lián)分離元件來執(zhí) 行,不管異步或同步。除非其中明確地指示,否則沒有方法20必須以與 說明書列出的流程點或步驟相同的順序來執(zhí)行的特定要求。已分配數據的轉移在流程點210 ,系統(tǒng)10 0已經檢測到故障磁盤141 。
在步驟211,文件系統(tǒng)12 0標記條帶映射表12 6以指示沒有來自任何 RAID條帶143的磁盤塊142已經從故障磁盤141被遷移。文件系統(tǒng)120還標 記臟塊表以指示故障磁盤141上的所有磁盤塊142都將被當做臟塊。在方 法200中,第一RAID條帶143指的是故障磁盤141上的RAID條帶。第二RAID 條帶143指的是備用或其它未故障磁盤上的RAID條帶。在步驟212,文件系統(tǒng)120接收訪問故障磁盤141上的磁盤塊142之一的用戶請求。因為用戶請求只適用于包括文件數據或者元數據的已分配 數據,所以方法200在流程點220開始從磁盤塊142重建數據。在流程點220,方法200準備從故障磁盤141上的磁盤塊142重建數據。在步驟221,存儲系統(tǒng)140確定是否存在備用磁盤141。如果有,則方 法200進行到步驟222。否則,方法200進行到步驟223。在步驟222 (存在備用磁盤141),存儲系統(tǒng)140把與磁盤塊142相關的 第一RAID條帶143轉移到備用磁盤141,并且方法200進行到流程點230。 為了執(zhí)行這個步驟,存儲系統(tǒng)140執(zhí)行下列的子步驟.在子步驟222a,存儲系統(tǒng)140從磁盤塊142重建數據。存儲系統(tǒng)140 從第一RAID條帶143使用另一個磁盤塊142和奇偶性塊。然而,存儲系統(tǒng) 140可以忽略第一RAID條帶中的那些磁盤塊142,對于該第一RAID條帶, 相關聯(lián)的零值映射項目125指示磁盤塊142—律地是零。.在子步驟222b,存儲系統(tǒng)140從RAID條帶143把數據拷貝到備用磁 盤141上的第二目標RAID條帶143。然而,存儲系統(tǒng)140不拷貝未分配的那 些磁盤塊142,而是使用它們相關聯(lián)的塊映射項目123來拷貝哪一個。通 過使用SCSI"寫入相同的"命令,存儲系統(tǒng)140提前主動清除第二目標MID 條帶143中的那些未分配的塊映射項目123的磁盤塊142。存儲系統(tǒng)140響 應于它對那些磁盤塊142的搶先的清除來重新計算奇偶性。.在子步驟222c,文件系統(tǒng)120標記對應的條帶映射項目1U以指示 第一R AI D條帶14 3被完全轉移到備用磁盤141。在步驟223 (沒有備用磁盤141),存儲系統(tǒng)140把磁盤塊142中的數據 從故障磁盤141轉移到另 一個未故障磁盤141,并且方法2 0O進行到流程點 230。為了執(zhí)行這個步驟,存儲系統(tǒng)140執(zhí)行下列的子步驟.在子步驟223a,存儲系統(tǒng)140從磁盤塊142重建數據。存儲系統(tǒng)140 使用來自其它磁盤塊142和第一RAID條帶143的數據和奇偶性塊。然而, 存儲系統(tǒng)140可以忽略第一RAID條帶143中的那些磁盤塊142,對于該第一 RAID條帶143,相關聯(lián)的零值映射項目125指示磁盤塊142—律地是零。.在子步驟223b,存儲系統(tǒng)140把數據拷貝到新分配的磁盤塊142中。 存儲系統(tǒng)140重新計算原始第一RAID條帶143的奇偶性,假定故障磁盤塊 142現(xiàn)在邏輯上是零。.在子步驟223c,文件系統(tǒng)120標記與磁盤塊142相關的第一RAID條 帶143的對應條帶映射項目127,從而指示來自磁盤塊142的數據被轉移到 未故障磁盤141。文件系統(tǒng)120標記故障磁盤塊142的對應零值映射項目 125以指示磁盤塊142現(xiàn)在邏輯上是零。在流程點230,故障磁盤塊142或整個第一RAID條帶143的轉移已經完 成。系統(tǒng)100重復轉移直到所有已分配的磁盤塊142都已經從故障141被轉 移到備用磁盤141或其它未故障磁盤141。無須重新計算奇偶性的鏡係_圖3示出 一個系統(tǒng)框圖,該系統(tǒng)不重新計算奇偶性就能夠映射。 如上所述,當重新建立(或最初建立)儲存巻的鏡像拷貝("巻"有時 在此可用作"系統(tǒng)"的同義詞)時,通過當包括那些未分配塊的條帶被寫 入時保證目標存儲巻上的未分配塊被設置為零,目標存儲巻(也稱作鏡像存儲巻)可以使用來自源存儲巻的計算出的奇偶性。無須再計算奇偶性就能夠鏡像的系統(tǒng)300包括含有源存儲系統(tǒng)305的 源系統(tǒng)301、類似于參考圖1描述的系統(tǒng)100和存儲系統(tǒng)140,并且目標(或 鏡像)系統(tǒng)310包括目標存儲系統(tǒng)320,也類似于參考圖I描述的系統(tǒng)IOO 和存儲系統(tǒng)140。源存儲系統(tǒng)305包括一組含有磁盤塊331的源RAID條帶 330;目標存儲系統(tǒng)320類似地包括一組含有磁盤塊341的目標RAID條帶。 目標RAID條帶340類似于源RAID條帶330,優(yōu)選地,在邏輯上和源RAID條 帶330—致。源系統(tǒng)3 01和目標系統(tǒng)31 O使用通信鏈路3 5 O連接。在優(yōu)選實施例中, 通信鏈路350包括光纖信道或SAN(存儲區(qū)網絡)。在其它實施例中,通信 鏈路350可以包括LAN(局域網)、WAN(廣域網)、或其組合,例如互聯(lián)網連 接。所屬領域技術人員將認識到,通信鏈路350可能包括用于把數據從源 系統(tǒng)301發(fā)送到目標系統(tǒng)310的任何技術,并且決不局限于在此描述的具 體實施例。源RAID條帶330包括一組已分配存儲塊334、至少一個未分配塊332 和一組奇偶性塊333。
當重新建立(或最初建立)源存儲系統(tǒng)305和目標存儲系統(tǒng)320之間的 鏡^f象關系時,源系統(tǒng)3 01從源RAID條帶3 3 O選擇一組已分配塊3 34以發(fā)送到 目標系統(tǒng)310。在優(yōu)選實施例中,這些已分配塊334在源系統(tǒng)301從文件系 統(tǒng)信息被導出,并且只包括那些由源系統(tǒng)301處的文件系統(tǒng)指示為已分配 的磁盤塊。源系統(tǒng)301把已選擇的已分配塊334連同與RAID條帶330相關的奇偶 性塊333—起發(fā)送到目標系統(tǒng)310。此外,源系統(tǒng)301置零任何沒有被預置 零的未分配塊332。目標系統(tǒng)310從這些已分配塊334接收數據并將它們存 儲在其目標RAID條帶340中的已分配塊344的對應單元內。類似地,目標^奇偶性塊343的對;單元內。
' 、因為目標系統(tǒng)310具有邏輯上和源RAID條帶330—致的目標RAID條 帶340,所以目標系統(tǒng)310可以確定它自己所有的未分配塊342在源存儲系 統(tǒng)305是未分配的。目標存儲系統(tǒng)320因此可以使用SCSI "寫入相同的" 命令把所有那些未分配塊342設置為零。結果,在磁盤塊被發(fā)送、接收和存儲之后,目標存儲系統(tǒng)320和源存 儲系統(tǒng)305基本一致;從而,源存儲系統(tǒng)305和目標存儲系統(tǒng)320之間的鏡 像關系被重新建立。鏡像方法圖4示出無須重新計算奇偶性的鏡象方法的處理流程圖。 方法4 00由源系統(tǒng)3 01和目標(鏡像)系統(tǒng)來執(zhí)行,源系統(tǒng)包括源存儲 系統(tǒng)305和類似于文件系統(tǒng)120的源文件系統(tǒng)(未示出)。目標系統(tǒng)類似于 目標系統(tǒng)310。與方法200相似,盡管方法400被連續(xù)地描述,然而方法400 的流程點和步驟可以采用流水線或其它方法由串聯(lián)或并聯(lián)的分離元件來 執(zhí)行,不管異步或同步。同樣類似于方法200,除非其中明確指示,否則 方法4 0O沒有必須用與說明書列出流程點或步驟相同的順序來執(zhí)行的特 定要求。在流程點410,源系統(tǒng)301和目標系統(tǒng)準備重新建立鏡像關系。在優(yōu) 選實施例中,源系統(tǒng)3Ol和目標系統(tǒng)已經通信以便各自達到鏡像關系即將 被重新建立的狀態(tài)。此外,在優(yōu)選實施例中,源系統(tǒng)301和目標系統(tǒng)已經 確定將從源系統(tǒng)301被發(fā)送到目標系統(tǒng)的磁盤塊的最小集以實現(xiàn)鏡像的 重新建立。 一個用于確定磁盤塊最小集的方法在WO 02/29572A(網g器
公司)中被進一步描述,名稱為"Recovery of File System Data in File Servers Mirrored File System Volumes",于2002年4月11日公布。在步驟411,源系統(tǒng)301選擇將被發(fā)送到目標系統(tǒng)的一組信息。如上 所述,只有已分配的磁盤塊需要被發(fā)送。在這個步驟,被選擇發(fā)送的信 息包括(a)條帶信息和(b)奇偶信息。條帶信息描述被發(fā)送的磁盤塊在 RAID條帶中怎樣組織.奇偶信息包括為那些RAID條帶計算的奇偶性。對 于有關被定義RAID條帶中哪個塊是未分配塊的信息而言,源系統(tǒng)301明確 地發(fā)送那些信息,或者目標系統(tǒng)響應于條帶信息和它接收的那些磁盤塊 的標識來確定該信息。在步驟412,源系統(tǒng)301發(fā)送(和目標系統(tǒng)接收)已分配的磁盤塊、在 步驟411中描述的條帶信息,和在步驟411中描述的奇偶信息。在這個步 驟,源系統(tǒng)301也可以把RAID條帶中沒有預置零的未分配塊置零。在步驟413,目標系統(tǒng)把數據從已分配的磁盤塊寫入它們在指定磁盤 驅動器及其存儲巻的指定RAID條帶上的指定位置。在步驟414,目標系統(tǒng)把來自奇偶信息的數據寫入其存儲巻的指定 RAID條帶。在步驟415 ,目標系統(tǒng)把零值寫入其存儲巻的指定RA I D條帶中的未分 配塊。在優(yōu)選實施例中,目標系統(tǒng)使用SCSI "寫入相同的"命令來把相 同數據字節(jié)的拷貝(即,零)寫入每個未分配塊的每個單元;如上所述, 這比向實際的磁盤塊寫零要快一些,并且占用的文件系統(tǒng)和存儲巻之間 的通信帶寬較少。因為在源系統(tǒng)301的未分配塊邏輯上或物理上為零,所以當未分配塊 被假定為零時源系統(tǒng)301發(fā)送到目標系統(tǒng)的奇偶信息是正確的。因此,目 標系統(tǒng)可以安全地把未分配塊實際上設置為零,同時使用相同的奇偶信 息而無須再計算奇偶性。在流程點420,目標系統(tǒng)是源系統(tǒng)301的物理和邏輯拷貝。源系統(tǒng)301 和目標系統(tǒng)之間的任何文檔記載操作被完成,并且它們之間的鏡像關系 被重新建立。方法400可以在重新建立或最初建立源存儲巻和目標存儲巻之間的 鏡像關系的任何時候被執(zhí)行,只要在源存儲巻和目標存儲巻都使用了等 效RAID條帶。本發(fā)明的通用性
本發(fā)明通常適用于這樣的文件系統(tǒng)和存儲系統(tǒng),其中,數據被保存 在多個裝置上,并且那些多個裝置上記錄的至少一些信息可以被丟棄(例 如不是文件系統(tǒng)的一部分或可以被逐出高速緩存的高速緩存對象)。這些 應用沒有被具體限制到保存一致性點的文件系統(tǒng),也沒有被具體限制到RAID存儲系統(tǒng),它們也不一定與在此公開的具體應用相關。在細讀本申請之后,所屬領域技術人員將會清楚,本發(fā)明在其大多 數一般形式中的其它和進一步的應用。無須過度試驗或進一步發(fā)明,本 發(fā)明可以用于這類其它和進一步的應用。盡管優(yōu)選實施例在此被公開,然而許多保持在本發(fā)明概念、范圍和精神之內的許多變化是可能的;所屬領域技術人員在細讀本申請之后將很清楚這些變化。 本發(fā)明適用于其中數據和元數據沒有在大容量存儲器上被分配固 定單元的任何存儲系統(tǒng)。這可以包括文件服務器、數據庫或網絡高速緩 存、或另一類型的存儲裝置。盡管在優(yōu)選實施例中,本發(fā)明主要是用于使用RAID存儲系統(tǒng)的文件服務器,然而此外也沒有特定要求來限制本發(fā) 明的適用性。 本發(fā)明適用于其中數據可以從冗余信息被重建的任何系統(tǒng);這可以包括任何類型的存儲系統(tǒng),乃至使用至少 一些冗余信息的通信系統(tǒng)。 盡管在優(yōu)選實施例中,本發(fā)明主要是用于使用多個磁盤驅動器和奇偶性 的存儲系統(tǒng),然而此外也沒有特定要求來限制本發(fā)明的適用性。 雖然術語"磁盤塊"已經遍及本公開內容被使用,然而本發(fā)明同 樣適用于大容量存儲系統(tǒng)中的其它類型的數據塊,比如用于磁帶、光驅 動器的數據塊等等。所屬領域技術人員在細讀本申請之后將認識到,這些替換實施例是 說明性并且絕不是限制性的。
權利要求
1.一個方法,包括識別第一群數據塊,所述的第一群數據塊包括能夠保存與所述第一群數據塊相關聯(lián)的奇偶信息的塊;確定所述奇偶信息是否可訪問;如果所述確定操作指示所述奇偶信息不可訪問,發(fā)送所述第一群的可訪問數據到與一個或多個第二群相關聯(lián)的一組數據塊,所述第二群中每個都具有能夠保存奇偶信息的可訪問數據塊。
2. 權利要求1的方法,其中,所述數據發(fā)送步驟包括把數據條帶從具有對應奇偶性的磁盤發(fā)送到相同或其它磁盤上的其它條帶。
3. 權利要求1的方法,其中,所述第一群包括RAID條帶。
4. 權利要求1的方法,其中,所述確定操作包括確定包括能夠保存 所述奇偶信息的所述塊的磁盤是否存在故障。
5. 權利要求1的方法,其中,所述確定操作包括確定能夠保存所述 奇偶信息的所述塊是否存在故障。
6. 權利要求1的方法,其中,所述發(fā)送操作響應于所述數據應該在 未來時間被發(fā)送的指示。
7. 權利要求6的方法,其中,所述未來時間包括文件系統(tǒng)產生包括 來自所述第 一群的所述數據的 一致性點的時間。
8. —種耦合到存儲數據塊的RAID群的設備,該設備包括 數據存儲設備和能夠訪問該數據存儲設備的處理器;其中,該處理器在數據存儲設備上保存關于數據塊的信息,該信 息包括零值映射表,零值映射表包括描述哪些數據塊已經被置零的一組 項目;塊映射表,包括描述哪個數據塊由已分配的文件系統(tǒng)數據所使用 的一組項目;和條帶映射表,包括對應于RAID群中故障盤的已經遷移至所述RAID 群中的未故障盤的一個或多個RAID條帶的一組條帶映射表項目。
9. 權利要求8的設備,其中,所述條帶映射表中所述項目組中的每 個項目都包括一組與RAID條帶的遷移有關的信息。
10. 權利要求9的設備,其中,所述的信息組包括與所述RAID條帶相關聯(lián)的所述數據塊遷移的目標位置。
11. 權利要求8的設備,其中,所述零值映射表中項目數量和非零 數據塊數量之間的相對差確定奇偶性是通過減去所有數據塊還是加上 所有數據塊來計算。
全文摘要
提供一種在RAID數據重建和轉移中使用文件系統(tǒng)信息的方法。當磁盤故障(210)時,存儲系統(tǒng)只轉移包括已分配數據的那些磁盤塊,并在可能的情況下把未分配的磁盤塊視為邏輯上為零。當沒有備用磁盤時,源磁盤塊被邏輯上置零并且重新計算與源磁盤塊相關聯(lián)的RAID條帶的奇偶性(223)。當存在備用時,備用上的未分配塊在遷移時邏輯上或物理上被置零(222)。故障磁盤的寫入操作被重定向到其它未故障磁盤,并且該使用中的磁盤塊的記錄已經從而被“轉移”到那些其它的未故障磁盤被保存。未使用磁盤塊被提前主動置零。使用關于已分配磁盤塊的信息,并通過拷貝那些包括已分配數據或奇偶性的數據塊,以及通過在鏡像清除那些不包括任何已分配塊的數據塊,目標鏡像拷貝被創(chuàng)建。
文檔編號G06F11/00GK101154174SQ200710141929
公開日2008年4月2日 申請日期2003年6月24日 優(yōu)先權日2002年6月24日
發(fā)明者S·H·斯特朗格, S·R·克萊曼 申請人:網絡裝置公司