專利名稱:獨立磁盤冗余陣列5擴展方法及裝置的制作方法
技術領域:
本發(fā)明涉及獨立》茲盤冗余陣列(RAID, Redundant Array of Independent Disks)技術領域,具體涉及RAID5擴展方法及裝置。
背景技術:
RAID簡稱為"磁盤陣列",RAID技術已廣泛應用于數據存儲的各種 場合,它的原理是利用多個硬盤的組合連成一個陣列,實現以快速、準確和 安全的方式來讀寫磁盤數據,從而達到提高數據讀寫速度和安全性的一種手 段;當一塊或多塊磁盤出現故障時,數據能夠依靠其它的磁盤計算出來,從 而不會造成數據的丟失。
其中RAID5最為常見,RAID5陣列是由不少于3塊》茲盤組成的一個陣 列,它以條帶的方式向陣列中的磁盤寫數據,以XOR檢驗為冗余方式,奇 偶校驗數據均勾存放在陣列中的各個磁盤上,對各個數據磁盤的訪問為異步 操作。這樣,任何一個硬盤損壞,都可以根據其它硬盤上的奇偶校驗位來重 建損壞的數據。其中,奇偶校驗數據由每個條帶中的數據位使用XOR運算 得出,這樣在一個磁盤發(fā)生損壞時,可以通過條帶中的數據位和奇偶校驗位 使用XOR運算來還原丟失的數據。
以下對RAID中常用的幾個概念進行說明
條帶又稱為Stripe;是陣列的不同分區(qū)上的位置相關的分塊的集合, 是組織不同分區(qū)上條塊的單位。
分區(qū)又稱為Extent;是一個磁盤上的地址連續(xù)的存儲塊。 一個磁盤可 以劃分為多個分區(qū),每個分區(qū)可以大小不等,有時也稱為邏輯磁盤。
分塊又稱為Strip;將一個分區(qū)分成多個大小相等的、地址相鄰的塊,這些塊稱為分塊。分塊通常被認為是條帶的元素。虛擬磁盤以分塊為單位將 虛擬/磁盤的地址映射到成員-茲盤的地址。
XOR運算即異或運算,用于奇偶校驗,通常用符號" "表示,其運算 規(guī)則為
0 0=0, 0同0異或,結果為0 0 1 = 1, 0同1異或,結果為1 1 0=1, 1同0異或,結果為1 1 1=0, 1同1異或,結果為0 另A B=C <=> A C=B <=> B @ OA
圖1給出了現有的RAID5陣列存儲數據的過程,如圖1所示,RAID5 陣列由3塊磁盤Diskl 3組成,有6個數據塊需要寫入RAID5,數據塊分 成3個條帶寫入磁盤中,其中P1、 P2、 P3數據塊是奇偶校驗數據,分別由 每個條帶中的數據塊使用XOR運算得出P1=A B, P2=C D, P3=E F。 假設Diskl損壞,那么條帶1中的數據塊A,可以由B @ Pl得出;條帶3 中的數據塊E,可以由P3SE得出。
由以上可以得知,若RAID5陣列中有n塊硬盤,則硬盤的利用率為 (n-iyn,因為校驗數據需要使用 一塊硬盤的空間。
目前,擴展RAID5陣列的存儲空間需要插入硬盤,且需要對整個陣列 上的數據進行數據遷移和數據同步。數據遷移是由RAID的性質決定的,一 旦插入新》茲盤,由于重新生成條帶、重新分配地址,所以也必須重新進行數 據遷移;需要進行數據同步是因為新條帶的數據遷移完成之后,每個條帶中 原有的校驗數據還沒有更新,所以需要重新對每個新條帶進行校驗數據計 算,對整個RAID陣列重新計算校驗數據的過程也稱為同步。圖2給出了 RAID5陣列擴展時的數據遷移和數據同步過程,如圖2所示,設原始RAID5 陣列如圖1所示,現在需要將石更盤Disk4插入該RAID5陣列中,貝'J:
首先,重新計算條帶,原來每個條帶由3個分塊組成,插入Disk4后, 每個條帶變?yōu)樗膫€分塊,相應地,需要對每個條帶中的數據塊進行遷移,需要遷移的數據塊有C、 D、 E、 F,其中,數據塊C由條帶2中的Disk2遷 移至條帶1的Disk4,數據塊D由條帶2中的Disk3遷移至Diskl,數據塊E 由條帶3中的Diskl遷移至條帶2中的Disk2,數據塊F由條帶3中的Disk3 遷移至條帶2中的Disk3。
其次,數據塊遷移完成后,需要重新計算每個條帶的奇偶校驗數據P,, 如條帶l的Pl,- A B C,條帶2的P2、 D E F。
現有的RAID5陣列擴展時的數據遷移和數據同步機制的缺點如下
一、 數據遷移和同步速度慢,時間長,影響業(yè)務的運行。由于遷移時需 要對整個RAID5中的數據進行遷移,時間要比重新建陣列的時間長很多。
二、 對存儲系統性能影響大。遷移時,需要對每個條帶上的數據進行遷 移操作,遷移完成之后還需要對每個新條帶進行XOR運算來進行同步,嚴 重影響系統性 能。
發(fā)明內容
本發(fā)明提供RAID5擴展方法及裝置,以避免RAID5擴展時的數據遷移過 程,降低RAID5擴展時的系統資源消耗。 本發(fā)明的技術方案是這樣實現的 一種RAID5擴展方法,該方法包括
發(fā)現有新磁盤插入RAID5,為該新磁盤的每個條帶的分塊分配地址,該地 址在RAID5的原磁盤的所有分塊的地址之后,以使得數據先被寫入原磁盤,原 i茲盤寫滿后再寫入新》茲盤;
當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據。 所述當新^磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據 包括
當發(fā)現有新磁盤插入RAID5時,重新計算RAID5的每個條帶的奇偶校驗 數據;且,
當有數據寫入新石茲盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。所述當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據
包括
當發(fā)現有新》茲盤插入RAID5時,對于RAID5的每個條帶,若該條帶中至 少有一個原磁盤分塊已寫入數據,則重新計算該條帶的奇偶校賒數據;且,
當有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。
所述為該新^磁盤的每個條帶的分塊分配地址進一步包括將該新^磁盤的所 有分塊都初始化為0;
所述當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據 包括當有數據寫入新一磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數 據。
一種RAID5擴展裝置,該裝置包括
數據同步模塊,發(fā)現有新磁盤插入RAID5,為該新》茲盤的每個條帶的分塊 分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后,以使得數據先被 寫入原-茲盤,原/磁盤寫滿后再寫入新》茲盤;
奇偶校驗模塊,當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇 偶校驗數據。
所述數據同步模塊包括地址分配模塊和初始化模塊,其中 地址分配模塊,發(fā)現有新磁盤插入RAID5,為該新萬茲盤的每個條帶的分塊 分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后;
初始化模塊,發(fā)現有新磁盤插入RAID5,將該新磁盤的所有分塊都初始化
為0;
且,所述奇偶校驗模塊在發(fā)現有數據寫入新磁盤的分塊時,重新計算該 分塊所在條帶的奇偶校驗數據。
與現有技術相比,本發(fā)明中,發(fā)現有新磁盤插入RAID5時,為該新磁 盤的每個條帶的分塊分配地址,該地址在RAID5的原^磁盤的所有分塊的地 址之后,以使得數據先被寫入原磁盤,原磁盤寫滿后再寫入新磁盤;當新磁 盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據。本發(fā)明在擴展RAID5時,優(yōu)先保證了業(yè)務的連續(xù)性,可以實現即插即用;無需進行數 據遷移,降低了系統資源消耗。
另外,本發(fā)明實施例中,發(fā)現有新磁盤插入RAID5時,進一步將該新 磁盤的所有分塊都初始化為0,這樣無需重新計算各條帶的奇偶校驗數據, 不會對系統性能產生影響,且兼具冗余性。
圖1為現有的RAID5陣列存儲數據的過程圖2為現有的RAID5陣列擴展時的數據遷移和數據同步過程示例圖3為本發(fā)明實施例一提供的RAID5擴展流程圖4為本發(fā)明實施例二提供的RAID5擴展流程圖5-1為本發(fā)明實施例提供的RAID5擴展應用示例圖一;
圖5-2為本發(fā)明實施例提供的RAID5擴展應用示例圖二;
圖5-3為本發(fā)明實施例提供的RAID5擴展應用示例圖三。
具體實施例方式
本發(fā)明的核心思想是當有新磁盤插入RAID5時,數據先寫入RAID5 的原磁盤中,原磁盤寫滿后再寫入新磁盤中,以避免數據遷移。 下面結合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。 圖3為本發(fā)明實施例一提供的RAID5擴展流程圖,如圖3所示,其具 體步驟如下
步驟301:發(fā)現在RAID5中插入新石茲盤,為該新》茲盤的每個條帶的分 塊分配地址,每個分塊的地址在RAID5的原磁盤的所有分塊的地址之后。
例如新磁盤的第一個分塊地址為原磁盤的最后一個分塊的地址+N獲 得,N為正整數,新磁盤的后續(xù)分塊的地址依次遞加。將新磁盤的每個條帶 的分塊的地址設置在原磁盤的所有分塊的地址之后,是為了使得當有數據 寫入時,若原磁盤未滿,該數據會被先寫入原磁盤,原磁盤滿后,數據才會被寫入新/磁盤。
步驟302:發(fā)現有數據塊寫入新^i盤的分塊中,重新計算該分塊所在條 帶的奇偶校驗數據。
在本實施例中,當發(fā)現RAID5中插入新磁盤時,由于新磁盤中的每個 分塊通常都不為0,因此,可對RAID5的每個條帶的奇偶校驗數據進行更新, 更新方法有兩種
一種是,當發(fā)現RAID5中插入新磁盤時,對RAID5的所有條帶都重新 計算一次奇偶校驗數據。此后,當有數據寫入某個條帶時,無論是寫入該條 帶的原磁盤分塊還是新磁盤分塊,都需要重新計算該條帶的奇偶校驗數據。
另一種是,當發(fā)現RAID5中插入新磁盤時,對于RAID5的每個條帶, 判斷該條帶的所有原磁盤分塊中,是否至少有一個分塊已有數據寫入,若是, 重新計算該條帶的奇偶校驗數據;否則,不需重新計算該條帶的奇偶校驗數 據。且,此后,當有數據寫入某個條帶時,無論是寫入該條帶的原磁盤分塊 還是新磁盤分塊,都需要重新計算該條帶的奇偶校驗數據。
圖4為本發(fā)明實施例二提供的RAID5擴展流程圖,如圖4所示,其具 體步驟如下
步驟401:發(fā)現在RAID5中插入新》茲盤,為該新》茲盤的每個條帶的分 塊分配地址,每個分塊的地址在RAID5的原;茲盤的所有分塊的地址之后。 步驟402:將新》茲盤的所有分塊都初始化為0。
將新f茲盤的所有分塊都初始化為0,這是利用了 XOR的一個特性0 與任何數的異或結果都為該數本身。這樣,在插入新磁盤后,在沒有數據寫 入新磁盤的分塊時,就無需對該分塊所在條帶的奇偶校驗數據進行修改。
通過步驟401 -402, RAID5的數據同步已經完成,之后,若有新數據 寫入,則若原磁盤未滿,該數據會寫入原磁盤中,若原磁盤已滿,則該數據 會寫入新》茲盤中。
步驟403:發(fā)現有數據塊寫入新磁盤的分塊中,重新計算該分塊所在條 帶的奇偶校驗數據。圖3所示步驟301 ~ 302、圖4所述步驟401 ~ 403的#1行主體可為RAID5 中的f茲盤控制單元。
圖5為應用本發(fā)明實施例二的一個具體例子
如圖5-1所示,初始時,RAID5由3塊磁盤diskl ~ 3組成,有兩個數 據塊A、 B被寫入條帶l,其中,A被寫入Diskl, B被寫入Disk2,條帶1 的校驗塊Pl位于Disk3上,設Diskl 3的最后一個分塊的地址為12。
之后,如圖5 - 2所示,新磁盤Disk4被插入RAID5,為Disk4的每個 條帶的分塊分配地址,其中,條帶1的分塊的地址為100,條帶2的分塊的 地址為101,依此類推。然后,將Disk4的所有條帶的分塊都初始化為0。
如圖5-3所示,當此后有數據塊要寫入時,按照分塊的地址,該數據 塊會先被寫入Diskl 3, Diskl-3寫滿后,再寫入Disk4,且當數據塊寫入 Disk4的分塊后,要重新計算該分塊所在條帶的奇偶校驗數據如Pl,= A@B I。
以下給出本發(fā)明實施例一提供的RAID5擴展裝置,該裝置主要包括 數據同步模塊和奇偶校驗模塊,其中
數據同步模塊當發(fā)現有新磁盤插入RAID5時,為該新磁盤的每個條帶的 分塊分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后,以使得數據 先被寫入原磁盤,原磁盤寫滿后再寫入新磁盤。
奇偶校驗模塊當發(fā)現有新磁盤插入RAID5時,重新計算RAID5的每個 條帶的奇偶校驗數據;且,當有數據寫入新磁盤的分塊時,重新計算該分塊所 在條帶的奇偶校驗數據?;蛘?,
當發(fā)現有新磁盤插入RAID5時,對于RAID5的每個條帶,若該條帶中至 少有一個原磁盤分塊已寫入數據,則重新計算該條帶的奇偶校驗數據;且,當 有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。
以下給出本發(fā)明實施例二提供的RAID5擴展裝置,該裝置也主要包括 數據同步模塊和奇偶校驗模塊,其中數據同步模塊又可包括地址分配模 塊和初始化模塊,各模塊的功能如下地址分配模塊發(fā)現有新磁盤插入RAID5,為該新磁盤的每個條帶的分塊分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后。
初始化模塊發(fā)現有新磁盤插入RAID5,將該新磁盤的所有分塊都初始化為0。
奇偶校驗模塊當有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。
以上所述僅為本發(fā)明的過程及方法實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1、一種獨立磁盤冗余陣列RAID5擴展方法,其特征在于,該方法包括發(fā)現有新磁盤插入RAID5,為該新磁盤的每個條帶的分塊分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后,以使得數據先被寫入原磁盤,原磁盤寫滿后再寫入新磁盤;當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據。
2、 如權利要求1所述的方法,其特征在于,所述當新磁盤的分塊有數據時, 重新計算該分塊所在條帶的奇偶校驗數據包括當發(fā)現有新磁盤插入RAID5時,重新計算RAID5的每個條帶的奇偶校驗 數據;且,當有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。
3、 如權利要求1所述的方法,其特征在于,所述當新磁盤的分塊有數據時, 重新計算該分塊所在條帶的奇偶校-險數據包括當發(fā)現有新磁盤插入RAID5時,對于RAID5的每個條帶,若該條帶中至 少有一個原》茲盤分塊已寫入數據,則重新計算該條帶的奇偶校驗數據;且,當有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數據。
4、 如權利要求l所述的方法,其特征在于,所述為該新磁盤的每個條帶的 分塊分配地址進一步包括將該新磁盤的所有分塊都初始化為0;所述當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據 包括當有數據寫入新磁盤的分塊時,重新計算該分塊所在條帶的奇偶校驗數 據。
5、 一種RAID5擴展裝置,其特征在于,該裝置包括 數據同步模塊,發(fā)現有新磁盤插入RAID5,為該新磁盤的每個條帶的分塊分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后,以使得數據先被 寫入原磁盤,原磁盤寫滿后再寫入新磁盤;奇偶校驗模塊,當新-磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據。
6、如權利要求5所述的裝置,其特征在于,所述數據同步模塊包括地址 分配模塊和初始化模塊,其中地址分配模塊,發(fā)現有新磁盤插入RAID5,為該新^磁盤的每個條帶的分塊 分配地址,該地址在RAID5的原》茲盤的所有分塊的地址之后;初始化模塊,發(fā)現有新磁盤插入RAID5,將該新磁盤的所有分塊都初始化為0;且,所述奇偶校驗模塊在發(fā)現有數據寫入新磁盤的分塊時,重新計算該分 塊所在條帶的奇偶校驗數據。
全文摘要
本發(fā)明公開了獨立磁盤冗余陣列5擴展方法及裝置。方法包括發(fā)現有新磁盤插入RAID5,為該新磁盤的每個條帶的分塊分配地址,該地址在RAID5的原磁盤的所有分塊的地址之后;當新磁盤的分塊有數據時,重新計算該分塊所在條帶的奇偶校驗數據。本發(fā)明降低了RAID5擴展時的系統資源消耗。
文檔編號G06F3/06GK101482802SQ20091007815
公開日2009年7月15日 申請日期2009年2月18日 優(yōu)先權日2009年2月18日
發(fā)明者余劍聲, 策 孫, 陳乾業(yè) 申請人:杭州華三通信技術有限公司