專利名稱:一種增加獨立磁盤冗余陣列冗余性的方法及裝置的制作方法
技術領域:
本發(fā)明涉及獨立磁盤冗余陣列(RAID, Redundant Array of Independent Disks)技術領域,具體涉及一種增加RAID冗余性的方法及裝置。
背景技術:
RAID技術已廣泛應用于數據存儲的各種場合。RAID由多個磁盤聚合在 一起,能夠在提供大容量的同時,提供更高的訪問速度和更好的可用性。其中, RAID中的磁盤稱為該RAID的成員磁盤。以下簡單介紹RAID的相關概念
分區(qū)(Extent),是一個磁盤上的地址連續(xù)的存儲塊。 一個磁盤可以劃分 為多個分區(qū),每個分區(qū)可以大小相等。分區(qū)有時也稱為邏輯磁盤。
分塊(Strip),將一個分區(qū)分成多個大小相等的、地址相鄰的塊,這些塊 稱為分塊。分塊通常被認為是條帶的元素。虛擬磁盤以分塊為單位,將虛擬磁 盤的地址映射到成員磁盤的地址。
條帶(Stripe ),是RAID的不同分區(qū)上的位置相關的分塊(Strip )的集合, 是組織不同分區(qū)上條塊的單位。條帶大小等于分塊大小乘以成員磁盤數目。
RAID架構中,采用條帶化技術實現了條帶內數據讀寫的并發(fā)處理。條帶 化技術中,將條帶中各個分塊的邏輯地址分別映射到不同磁盤中的物理磁盤扇 區(qū)位置(即物理地址)。從業(yè)務層來看,讀寫操作是針對每個條帶上的分塊進 行的。業(yè)務層不關心磁盤上的具體數據存儲扇區(qū)。從業(yè)務端來看,條帶中各個 分塊中存儲著相應的數據,這些數據實際存儲的扇區(qū)位置可以根據分塊的邏輯 地址所對應的物理地址來確定。按照實現原理的不同,RAID可以分為不同的 級別(有時也稱作類型)。其中,常用的有第O級別的RAID (RAID 0)、第l 級別的(RAID 1 )、第5級別的(RAID 5 )、第6級別的RAID ( RAID 6 )和 第10級別的RAID ( RAID 10 )等。
其中,RAID O代表了所有RAID級別中最高的存儲性能。RAIDO提高存儲性能的原理是把連續(xù)的數據分散到多個磁盤上存取。這樣,系統(tǒng)的數據請求 就可以被多個磁盤并行的執(zhí)行,每個磁盤執(zhí)行屬于它自己的那部分數據請求。 這種數據上的并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性
能。RAIDO的缺點是不提供數據冗余,用戶數據損壞后無法得到恢復。
RAID 5的每個條帶含有1個分塊的校驗位,該校驗位對條帶中其他數據 分塊中的數據進行奇偶校驗以提供冗余保護。當一塊磁盤損壞時,可以通過校 驗位與其他磁盤中的數據進行奇偶校驗運算來重建丟失的數據。校驗位數據通 過由每個條帶中的數據位使用異或運算(XOR)得出,這樣在一個磁盤發(fā)生 損壞時,可以通過條帶中的數據位和校驗位使用異或運算來還原丟失的那部分 數據。圖1示出了 RAID 5的數據存儲過程。圖1中的RAID 5陣列由^茲盤1 ~ 3共3塊磁盤組成,需要寫入RAID 5的有6塊數據塊,這樣分成3個條帶寫 入磁盤中,其中Pl P3所示的數據塊是奇偶校驗數據,分別由每個條帶中的 數據塊異或運算得出Pl=數據塊Ae數據塊B, P2=數據塊C④數據塊D, P3=數據塊Ee數據塊F, " "表示異或運算。這樣,假設磁盤1損壞,那 么條帶1中的數據塊A,還可以由(數據塊BSP1)運算得出。
RAID 10是RAID 1和RAID 0的結合,也稱為RAID ( 0+1 ),對數據先做 鏡像然后做條帶化,既提高了系統(tǒng)的讀寫性能,又提供了數據冗余保護,RAID 10的f茲盤空間利用率和RAID 1是一樣的,為50% 。 RAID10適用于既有大量 的數據需要存儲,又對數據安全性有嚴格要求的領域,比如金融,證券領域等。
在實際RAID使用中經常會遇到這樣的情況在業(yè)務起始階段,用戶往往 僅關注存儲設備的存儲性能,因此采用沒有冗余能力的RAID 0。但隨著業(yè)務 的不斷運行,陣列中存儲的數據量越來越大,這些數據的重要性也就愈發(fā)突出, 此時用戶希望能夠對數據進行冗余保護。在這種情況下,為了給陣列增加冗余 性,需要進行陣列級別的轉換,以增加陣列的冗余性。例如,將無校驗位的 RAID 0轉化成有一個才交驗位的RAID 5,將一個校驗位的RAID 5轉換成有兩 個校驗位的RAID 6等。
現有技術中是通過在原有陣列的成員磁盤基礎上直接進行陣列轉換,來增 加陣列的冗余性。以RAID 0陣列轉換到RAID 5為例,圖2示出了 一個具體 的RAID 0陣列,包括磁盤1 ~ 4共4個成員石茲盤,該RAID陣列中每個條帶有4個分塊。圖3是按照現有技術對圖2的RAID 0轉換后所得到的RAID 5 的示意圖。在由RAID 0轉換為RAID5的過程中,每個條帶中需要空出一個 分塊來存放該條帶的校驗位數據(如圖3中的PI ~ P8 )。比較圖2和圖3,可 以看出,按照現有技術的處理方式,需要對RAID中大量的分塊數據進行遷移, 每個條帶中各個分塊的數據都發(fā)生了遷移,因此,現有技術在實現增加RAID 冗余性時,所需遷移的數據量非常大,因此陣列轉換所需時間也比較長。并且, 由于每個條帶需要添加相應的分塊來存放?!€位,從而導致轉換后的條帶數目 增加,陣列的有效存儲空間也將會減小1/N (N為成員磁盤的數目),嚴重時 還可能會導致轉換后的存儲空間不足,進而導致原有數據丟失或者轉換失敗。
發(fā)明內容
本發(fā)明實施例所要解決的技術問題是提供一種增加RAID冗余性的方法 及裝置,在增加RAID冗余性的處理過程中減少所需遷移的數據量,加快RAID 陣列的轉換速度,并能夠避免現有技術中因冗余性增加而造成RAID存儲空間 不足的問題。
為解決上述技術問題,本發(fā)明實施例提供方案如下 一種增加獨立磁盤冗余陣列RAID冗余性的方法,包括 步驟A,在原成員磁盤的基礎上,為RAID增加新成員磁盤; 步驟B,對所述RAID中的每個條帶逐個執(zhí)行以下處理從當前條帶中選 擇一個分塊作為遷移分塊,將該遷移分塊從原成員磁盤中的原物理地址處遷移 到新成員^f茲盤中的新物理地址處,并保存該遷移分塊的邏輯地址和所述新物理 地址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗 位數據保存在所迷原物理地址處,并創(chuàng)建當前條帶的校驗位的邏輯地址,并將 當前條帶的校驗位的邏輯地址映射到所述原物理地址。 優(yōu)選地,上迷方法中,所述步驟B包括 步驟B1,選擇RAID中的第1個條帶作為當前條帶; 步驟B2,從當前條帶中選擇一個分塊作為遷移分塊; 步驟B3,將所述遷移分塊的數據遷移到所述新成員磁盤,并根據遷移后一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位數據保存在 所述原物理地址處;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗 位的邏輯地址映射到所述原物理地址;
步驟B4,判斷當前條帶是否為所述RAID中的最后一個條帶,若是,則 結束流程;否則,選擇下一個條帶作為當前條帶并返回步驟B2。
優(yōu)選地,上述方法中,所述步驟B2包括判斷上一個條帶中的遷移分塊 的序號m是否小于所迷原成員磁盤的數目若是,則選擇當前條帶中序號為 m+l的分塊作為所述遷移分塊;否則,選擇當前條帶中序號為1的分塊作為 所述遷移分塊。
優(yōu)選地,上述方法中,所述步驟B2包括
步驟B21,判斷上一個條帶中的遷移分塊的序號m是否小于所述原成員 磁盤的數目若是,則選擇當前條帶中序號為m + 1的分塊作為所述遷移分塊, 并進入步驟B3;否則,進入步驟B22;
步驟B22,計算當前條帶的校驗位,將計算得到的校驗位數據保存在所述 新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗位的 邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗位數據在 所述新成員磁盤中的保存地址;以及,判斷當前條帶是否為所述RAID中的最 后一個條帶,若是,則結束流程,否則,選擇下一個條帶作為當前條帶,并選 擇該下一個條帶中序號為1的分塊作為該下一個條帶中的遷移分塊,并進入步 驟B3。
優(yōu)選地,上述方法中,在所述步驟B之后,所述方法還包括接收對所 述RAID的讀請求,并在所述讀請求對應的讀取分塊為所述遷移分塊時,根據 所述讀取分塊的邏輯地址和所述第一映射關系,確定所述讀取分塊的物理地 址,并根據所述讀取分塊的物理地址,從所述新成員石茲盤中讀取數據。
優(yōu)選地,上述方法中,所述步驟B中,所述新物理地址在所述新成員磁 盤中的扇區(qū)位置,與所述原物理地址在所述RAID成員磁盤中的扇區(qū)位置相 同。
優(yōu)選地,上述方法中,所述RAID是第1級別的RAID或第0級別的RAID, 所述步驟B中,所迷計算當前條帶的校驗位為根據第5級別的RAID中條帶校驗位的生成算法,計算當前條帶的校驗位;
或者,所述RAID是第5級別的RAID,所述步驟B中,所述計算當前條 帶的校驗位為根據第6級別的RAID中條帶校驗位的生成算法,計算當前條 帶的校驗位。
本發(fā)明實施例還提供了一種增加獨立磁盤冗余陣列RAID冗余性的裝置, 所述RAID包括多個聚合在一起的原成員磁盤,該裝置包括磁盤增加單元和 冗余性增加單元;
所述》茲盤增加單元,用于在原成員石茲盤的基礎上,為所述RAID增加新成 員磁盤;
所述冗余性增加單元,用于對所述RAID中的每個條帶逐個執(zhí)行以下處 理從當前條帶中選擇一個分塊作為遷移分塊,將該遷移分塊從原成員磁盤中 的原物理地址處遷移到新成員磁盤中的新物理地址處,并保存該遷移分塊的邏 輯地址和所述新物理地址之間的第一映射關系;以及,計算當前條帶的校驗位, 將計算得到的校驗位數據保存在所述原物理地址處,并創(chuàng)建當前條帶的校驗位 的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到所述原物理地址。
優(yōu)選地,上述裝置中,所述冗余性增加單元包括第一選擇子單元、第二選 擇子單元、處理子單元和判斷子單元; 所述第一選擇子單元,用于選擇RAID中的第l個條帶作為當前條帶;
所述第二選擇子單元,用于從當前條帶中選擇一個分塊作為遷移分塊,并 觸發(fā)所述處理子單元;
所述處理子單元,用于將所述遷移分塊的數據遷移到所述新成員磁盤,并 根據遷移后的所述新物理地址,保存所述遷移分塊的邏輯地址和所述新物理地 址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位 數據保存在所述原物理地址處;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前 條帶的校驗位的邏輯地址映射到所述原物理地址;
所述判斷子單元,用于判斷當前條帶是否為所述RAID中的最后一個條 帶,若是,則冗余性增加完成;否則,選擇下一個條帶作為當前條帶并觸發(fā)所 述第二選擇子單元。
優(yōu)選地,上述裝置中,所述第二選擇單元,還用于判斷上一個條帶中的遷移分塊的序號m是否小于原成員磁盤的數目若是,則選擇當前條帶中序號 為m+l的分塊作為所述遷移分塊;否則,選擇當前條帶中序號為1的分塊作 為所述遷移分塊。
優(yōu)選地,上述裝置中,所述第二選擇單元包括判斷模塊和處理模塊;其中,
所述判斷模塊,用于判斷上一個條帶中的遷移分塊的序號m是否小于所 述原成員磁盤的數目若是,則選擇當前條帶中序號為m+1的分塊作為所述 遷移分塊,并觸發(fā)所述處理子單元;否則,觸發(fā)所述處理模塊;
所述處理模塊,用于計算當前條帶的校驗位,將計算得到的校驗位數據保 存在所述新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的 校驗位的邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗 位數據在所述新成員磁盤中的保存地址;以及,判斷當前條帶是否為所述RAID 中的最后一個條帶,若是,則冗余性增加完成,否則,選擇下一個條帶作為當 前條帶,并選擇該下一個條帶中序號為1的分塊作為該下一個條帶中的遷移分 塊,并觸發(fā)所述處理子單元。
優(yōu)選地,上述裝置中,還包括
讀取控制單元,用于接收到對所述RAID的讀請求,并在所述讀請求對應 的讀取分塊為所述遷移分塊時,根據所述讀取分塊的邏輯地址和所述第一映射 關系,確定所述讀取分塊的物理地址,并根據所述讀取分塊的物理地址,從所 述新成員磁盤中讀取數據。
優(yōu)選地,上述裝置中,所述新物理地址在所述新成員磁盤中的扇區(qū)位置, 與所述原物理地址在所述RAID成員^f茲盤中的扇區(qū)位置相同。
優(yōu)選地,上述裝置中,所述RAID是第1級別的RAID或第0級別的RAID, 所述冗余性增加單元,還用于根據第5級別的RAID中條帶校驗位的生成算法, 計算當前條帶的校驗位;
或者,所述RAID是第5級別的RAID,所述冗余性增加單元,還用于根 據第6級別的RAID中條帶校驗位的生成算法,計算當前條帶的校驗位。
從以上所述可以看出,本發(fā)明實施例提供的增加RAID冗余性的方法及裝 置,通過增加新成員磁盤,使得陣列轉換后的RAID的每個條帶中的分塊得以 增加,并利用增加的分塊,來保存從原成員磁盤中遷移處理的分塊數據,并利用遷移之后空出來的空間保存條帶的校驗位,從而無需對條帶中的每個分塊都 進行遷移。相對于現有技術,本發(fā)明實施例大大降低了遷移數據量,顯著提高 了陣列轉換速度,快速地實現了增加陣列冗余性。由于遷移前后條帶數目相同, 因此,本發(fā)明實施例不會產生因冗余性增加而導致存儲空間不足的問題。
圖1為現有技術中RAID5的數據存儲示意圖; 圖2為現有技術的一種RAIDO陣列的示意圖3為現有技術對圖2的RAID 0轉換處理所得到的RAID 5的示意圖; 圖4為本發(fā)明實施例所述增加RAID冗余性的方法的流程圖; 圖5為圖4中的步驟43的分解示意圖6為本發(fā)明實施例中增加冗余性之后的RAID的一種結構示意圖; 圖7為本發(fā)明實施例中增加冗余性之后的RAID的另 一種結構示意圖; 圖8為本發(fā)明實施例中遷移分塊的判斷示意圖; 圖9為本發(fā)明實施例所述增加RAID冗余性的裝置的結構示意圖。
具體實施例方式
本發(fā)明實施例在為RAID增加冗余性的處理過程中,通過為該RAID增加 新成員磁盤,將該RAID的條帶中的分塊遷移到新成員磁盤中,并利用該分塊 的原物理地址保存該條帶的校驗位數據,從而無需對條帶中的每個分塊都進行 遷移,大大減少了陣列轉換過程中需要遷移的數據量,提高了陣列轉換速度。 以下結合附圖,通過具體實施例對本發(fā)明作進一步的說明。
在為RAID增加冗余性時,本實施例首先在原成員磁盤的基礎上,為該 RAID增加一個新成員》茲盤,然后對該RAID的每個條帶逐個進行以下的處理
對所述RAID中的每個條帶逐個執(zhí)行以下處理從當前條帶中選擇一個分 塊作為遷移分塊,將該遷移分塊從原成員磁盤中的原物理地址處遷移到新成員 磁盤中的新物理地址處,并保存該遷移分塊的邏輯地址和所述新物理地址之間 的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位數據保 存在所述原物理地址處,并創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到所述原物理地址。
這樣,通過增加一個新成員磁盤,使得陣列轉換后的RAID的每個條帶中 的分塊數目增l。利用該增加的分塊,來保存從原成員磁盤中遷移處理的分塊 數據,從而每個條帶只需要遷移一個分塊的數據,相對于現有技術對每個分塊 都進行遷移,本實施例大大降低了遷移數據量,因此可以顯著提高陣列轉換速 度,快速地增加陣列冗余性。由于遷移前后條帶數目相同,因此,本實施例不 會產生因冗余性增加而導致存儲空間不足的問題。
圖4為本發(fā)明所述增加RAID冗余性的方法的流程示意圖。如圖4所示, 該方法包括有以下步驟
步驟41,在原成員》茲盤的基礎上,為RAID增加新成員^f茲盤.
步驟42,選擇該RAID中的第1個條帶作為當前條帶。
步驟43,從當前條帶中選擇一個分塊作為遷移分塊。
步驟44,將當前條帶中的遷移分塊的數據遷移到所述新成員磁盤,并根 據遷移后的所述新物理地址,保存當前條帶中的遷移分塊的邏輯地址和所述新 物理地址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的 校驗位數據保存在當前條帶的遷移分塊遷移之前的原物理地址處;創(chuàng)建當前條 帶的校驗位的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到當前條帶的 遷移分塊遷移之前的原物理地址。
步驟45,判斷當前條帶是否為所述RAID中的最后一個條帶,若是,則 進入步驟46;否則,進入步驟47.
步驟46,結束本流程。
步驟47,選擇下一個條帶作為當前條帶,然后返回步驟43。 上式步驟44中,創(chuàng)建當前條帶的校驗位的邏輯地址時,所創(chuàng)建的邏輯地 址可以選取一個數值較大的邏輯地址,以避免校驗位的邏輯地址與數據分塊的 地址相重復。并且,通過將當前條帶的校驗位的邏輯地址映射到當前條帶的遷 移分塊遷移之前的原物理地址,這樣,當有數據寫入當前條帶時,能夠根據映 射關系找到校驗位的實際存儲的物理地址,以進行相應的數據校驗。
當按照上述流程對RAID中的所有條帶處理完畢之后,如果RAID中還存 在有沒有數據的部分陣列空間,則可以根據轉換后的RAID級別,按照正常的陣列編址方式(如按照RAID 5陣列編址方式),對剩余空間進行邏輯地址的 分配,這樣就完成了整個RAID的轉換過程。
上述流程中,是按照RAID中條帶的先后順序,分別對各個條帶進行處理。 但本發(fā)明并不受限于各個條帶處理的先后順序,例如,還可以從RAID中最后 一個條帶開始,按照從后往前的順序,對RAID中的各個條帶進行所述處理; 還可以從RAID的中間部分的某個條帶開始,按照預定的順序對各個條帶進行 處理??傊?,只要能夠對RAID中的所有條帶均執(zhí)行完上述處理即可。較佳的, 步驟44中,所述新物理地址在所述新成員石茲盤中的扇區(qū)位置,可以與所述原 物理地址在所述RAID成員磁盤中的扇區(qū)位置相同。
上述步驟43中,選擇遷移分塊的具體方式可以有多種,可以按照各種預 定規(guī)則,從當前條帶中選取所述遷移分塊。例如可以是判斷上一個條帶中的 遷移分塊的序號m是否小于原成員磁盤的數目若是,則選擇當前條帶中序 號為1的分塊作為所述遷移分塊;否則,選擇當前條帶中序號為m+1的分塊 作為所述遷移分塊。此時,對圖2的RAID陣列進行處理后所得到的RAID 陣列如圖6所示。圖6中的RAID陣列包括有》茲盤1 ~ 5共5個成員》茲盤,其 中,磁盤1 ~ 4為原成員磁盤,磁盤5為本流程所增加的新成員磁盤;P1 ~ P6 分別表示各個條帶的校驗位,均分別在原成員磁盤上。與圖2相比,可以看出, RAID陣列中每個條帶僅需遷移一個分塊,從而陣列轉換的速度會比較快。并 且,遷移前后陣列中的條帶數目并沒有增加,因此避免了現有技術中因冗余性 增加而造成RAID存儲空間不足的問題。
常見的RAID5陣列中,校驗位是均勻地分布在各個成員磁盤上。為此, 本實施例還可以對上述流程的步驟43作進一步的改進,此時,如圖5所示, 上述步驟43具體可以包括
步驟431,判斷上一個條帶中的遷移分塊的序號m是否小于原成員磁盤的 數目若是,進入步驟432;否則,進入步驟433;
步驟432,從當前條帶中選擇序號為m+1的分塊作為遷移分塊,并進入 步驟44;
步驟433,計算當前條帶的校驗位,將計算得到的校驗位數據保存在所述 新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗位數據在
所述新成員^t盤中的保存地址,然后進入步驟434;
步驟434,判斷當前條帶是否為所述RAID中的最后一個條帶,若是,進 入步驟435;否則,進入步驟436;
步驟435,結束本流程;
步驟436,選擇下一個條帶作為當前條帶,并選擇該下一個條帶中序號為 1的分塊作為該下一個條帶中的遷移分塊,并進入步驟44。
上述步驟431中,如果當前條帶是RAID中的第1個條帶,則直接選擇當 前條帶中的第1個分塊作為遷移分塊,然后進入步驟44。按照圖5所示的改 進流程,對圖2的RAID陣列進行處理后所得到的RAID陣列如圖7所示。 圖7中,各個條帶的校驗位均勻分布在包括新成員磁盤在內的各個磁盤上。
從以上所述可以看出,本發(fā)明實施例實現了增加RAID冗余性,具體可應 用于將RAID 0轉換為RAID 5、將RAID 1轉換為RAID 5,以及將RAID 5轉 換為RAID 6。本實施例還可以應用于將RAID 10中的一個或兩個RAID 0陣 列轉換為RAID 5。在增加RAID冗余性的過程中,根據轉換后的RAID的級 別,確定條帶校驗位的生成算法,進而根據該生成算法,計算每個條帶的校驗 位。例如,在將RAID 0或RAID 1轉換為RAID 5時,每個條帶的校-瞼位是對 該條帶中的數據分塊進行異或運算得到的。
在RAID冗余性增加完成之后,當接收到對該RAID的讀請求,且該讀請 求對應的讀取分塊為某個條帶中的遷移分塊時,根據所述讀取分塊的邏輯地址 和所述第一映射關系,確定所述讀取分塊的物理地址,并根據所述讀取分塊的 物理地址,從所述新成員磁盤中讀取數據。具體的,如何判斷某個讀取分塊是 否為遷移分塊,則可以根據上述步驟43中選取遷移分塊的預定規(guī)則,確定條 帶中的遷移分塊。
例如,如圖8所示,圖8中左側為RAID 0,右側是按照上述步驟431 ~ 436的改進流程,轉換得到的RAID5。假設RAID 0中所有條帶中的分塊依次 編號,如l、 2、 3......,此時,則判斷某個讀取分塊是否為遷移分塊的判斷條
件為該讀取分塊滿足下述表達式
X% (NxN,) =1+N, (Y-l),其中,Y為一正整數,且1《Y《N。上述表達式中,X為讀取分塊的編號,N為RAID的原成員磁盤的數目, N,為加入新成員磁盤后的RAID的成員磁盤數目,%表示取模運算。
對應于圖8, N=4, N, = 5,因此,1 + N, ( Y - 1 )的耳又值為1、 6、 11、 16,即當讀取分塊的分塊編號對20進行取模運算后的結果為1、 6、 11或16 時,該讀取分塊為遷移分塊。
以上實施例通過增加一個新成員磁盤,為每個條帶增加了一個校驗位,使 得RAID的冗余度增1。當然,本實施例還可以增加更多的新成員磁盤,如2 個或者更多的新成員^f茲盤。在由沒有冗余性的RAIDO轉換為具有兩個冗余度 的RAID6時,可以分2次實現陣列轉換,每次增加1個新成員磁盤,首先, 由RAID 0轉換為RAID 5,再由RAID 5轉換為RAID 6,并且每次轉換的具 體流程與圖4所示流程相類似,此處不再贅述。
本實施例還提供了 一種增加RAID冗余性的裝置,所述RAID包括多個聚 合在一起的原成員磁盤。如圖9所示,該裝置包括磁盤增加單元和冗余性增 力口單元;其中,
所述磁盤增加單元,用于在原成員磁盤的基礎上,為所述RAID增加新成 員磁盤;
所述冗余性增加單元,用于對所述RAID中的每個條帶逐個執(zhí)行以下處 理從當前條帶中選擇一個分塊作為遷移分塊,將該遷移分塊從原成員磁盤中 的原物理地址處遷移到新成員^t盤中的新物理地址處,并保存該遷移分塊的邏 輯地址和所述新物理地址之間的第一映射關系;以及,計算當前條帶的校驗位, 將計算得到的校驗位數據保存在所述原物理地址處,并創(chuàng)建當前條帶的校驗位 的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到所述原物理地址;
讀取控制單元,用于接收到對所述RAID的讀請求,并在所述讀請求對應 的讀取分塊為所述遷移分塊時,根據所述讀取分塊的邏輯地址和所述第一映射 關系,確定所述讀取分塊的物理地址,并根據所述讀取分塊的物理地址,從所 述新成員磁盤中讀取數據。
優(yōu)選地,所述新物理地址在所述新成員磁盤中的扇區(qū)位置,與所述原物理 地址在所述RAID成員磁盤中的扇區(qū)位置相同。在所述RAID是第1級別的 RAID或第0級別的RAID時,所述冗余性增加單元,還用于根據第5級別的RAID中條帶校驗位的生成算法,計算當前條帶的校驗位;在所述RAID是第
5級別的RAID時,所述冗余性增加單元,還用于根據第6級別的RAID中條
帶校驗位的生成算法,計算當前條帶的校驗位。
優(yōu)選地,上述冗余性增加單元具體可以包括第一選擇子單元、第二選擇
子單元、處理子單元和判斷子單元;其中,
所述第一選擇子單元,用于選擇RAID中的第l個條帶作為當前條帶; 所述第二選擇子單元,用于從當前條帶中選擇一個分塊作為遷移分塊,并
觸發(fā)所述處理子單元;
所述處理子單元,用于將所述遷移分塊的數據遷移到所述新成員磁盤,并 根據遷移后的所述新物理地址,保存所述遷移分塊的邏輯地址和所述新物理地 址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位 數據保存在所述原物理地址處;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前 條帶的校驗位的邏輯地址映射到所述原物理地址;
所述判斷子單元,用于判斷當前條帶是否為所述RAID中的最后一個條 帶,若是,則冗余性增加完成;否則,選擇下一個條帶作為當前條帶并觸發(fā)所 述第二選擇子單元。
優(yōu)選地,上述第二選擇單元,還可以用于判斷上一個條帶中的遷移分塊的 序號m是否小于原成員磁盤的數目若是,則選擇當前條帶中序號為m+1 的分塊作為所述遷移分塊;否則,選擇當前條帶中序號為1的分塊作為所述遷 移分塊。
另夕卜,優(yōu)選地,上述第二選擇單元又可以包括判斷模塊和處理模塊;其中, 所述判斷模塊,用于判斷上一個條帶中的遷移分塊的序號m是否小于所 述原成員磁盤的數目若是,則選擇當前條帶中序號為m+1的分塊作為所述 遷移分塊,并觸發(fā)所述處理子單元;否則,觸發(fā)所述處理模塊;
所述處理模塊,用于計算當前條帶的校驗位,將計算得到的校驗位數據保 存在所述新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的 校驗位的邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗 位數據在所述新成員磁盤中的保存地址;判斷當前條帶是否為所述RAID中的 最后一個條帶,若是,則冗余性增加完成,否則,選擇下一個條帶作為當前條帶,并選擇該下一個條帶中序號為1的分塊作為該下一個條帶中的遷移分塊, 并觸發(fā)所述處理子單元。
綜上所述,本發(fā)明實施例提供的增加RAID冗余性的方法及裝置,通過向 新增加的成員^f茲盤遷移數據分塊,減少了陣列轉換的數據遷移量,提高了陣列 轉換速度。
以上所述僅是本發(fā)明的實施方式,應當指出,對于本技術領域的普通技術 人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進和潤飾,這些 改進和潤飾也應視為本發(fā)明的保護范圍。
權利要求
1.一種增加獨立磁盤冗余陣列RAID冗余性的方法,其特征在于,包括步驟A,在原成員磁盤的基礎上,為RAID增加新成員磁盤;步驟B,對所述RAID中的每個條帶逐個執(zhí)行以下處理從當前條帶中選擇一個分塊作為遷移分塊,將該遷移分塊從原成員磁盤中的原物理地址處遷移到新成員磁盤中的新物理地址處,并保存該遷移分塊的邏輯地址和所述新物理地址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位數據保存在所述原物理地址處,并創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到所述原物理地址。
2. 如權利要求1所述的方法,其特征在于,所述步驟B包括 步驟B1,選擇RAID中的第1個條帶作為當前條帶; 步驟B2,從當前條帶中選擇一個分塊作為遷移分塊;步驟B3,將所述遷移分塊的數據遷移到所述新成員磁盤,并根據遷移后 的所述新物理地址,保存所述遷移分塊的邏輯地址和所述新物理地址之間的第 一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位數據保存在 所述原物理地址處;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗 位的邏輯地址映射到所述原物理地址;步驟B4,判斷當前條帶是否為所述RAID中的最后一個條帶,若是,則 結束流程;否則,選擇下一個條帶作為當前條帶并返回步驟B2。
3. 如權利要求2所述的方法,其特征在于,所述步驟B2包括判斷上一 個條帶中的遷移分塊的序號m是否小于所述原成員磁盤的數目若是,則選 擇當前條帶中序號為m+1的分塊作為所述遷移分塊;否則,選擇當前條帶中 序號為1的分塊作為所述遷移分塊。
4. 如權利要求2所述的方法,其特征在于,所述步驟B2包括步驟B21,判斷上一個條帶中的遷移分塊的序號m是否小于所述原成員 磁盤的數目若是,則選擇當前條帶中序號為m + 1的分塊作為所述遷移分塊, 并進入步驟B3;否則,進入步驟B22;步驟B22,計算當前條帶的校驗位,將計算得到的校驗位數據保存在所述新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的校驗位的 邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗位數據在 所述新成員磁盤中的保存地址;以及,判斷當前條帶是否為所述RAID中的最 后一個條帶,若是,則結束流程,否則,選擇下一個條帶作為當前條帶,并選 擇該下一個條帶中序號為1的分塊作為該下一個條帶中的遷移分塊,并進入步 驟B3。
5. 如權利要求1所述的方法,其特征在于,在所述步驟B之后,所述方 法還包括接收對所述RAID的讀請求,并在所述讀請求對應的讀取分塊為所 述遷移分塊時,根據所述讀取分塊的邏輯地址和所述第一映射關系,確定所述 讀取分塊的物理地址,并根據所述讀取分塊的物理地址,從所述新成員磁盤中 讀取數據。
6. 如權利要求1所述的方法,其特征在于,所述步驟B中,所述新物理 地址在所述新成員石茲盤中的扇區(qū)位置,與所述原物理地址在所述RAID成員石茲 盤中的扇區(qū)位置相同。
7. 如權利要求1所述的方法,其特征在于,所述RAID是第1級別的RAID或第0級別的RAID,所述步驟B中,所 述計算當前條帶的校驗位為根據第5級別的RAID中條帶校驗位的生成算法, 計算當前條帶的校驗位;或者,所述RAID是第5級別的RAID,所述步驟B中,所述計算當前條 帶的校驗位為根據第6級別的RAID中條帶校驗位的生成算法,計算當前條 帶的校驗位。
8. —種增加獨立磁盤冗余陣列RAID冗余性的裝置,所述RAID包括多 個聚合在一起的原成員磁盤,其特征在于,該裝置包括磁盤增加單元和冗余 寸生i曽力口單元;所述磁盤增加單元,用于在原成員磁盤的基礎上,為所述RAID增加新成 員磁盤;所述冗余性增加單元,用于對所述RAID中的每個條帶逐個執(zhí)行以下處 理從當前條帶中選擇一個分塊作為遷移分塊,將該遷移分塊從原成員磁盤中 的原物理地址處遷移到新成員^i盤中的新物理地址處,并保存該遷移分塊的邏輯地址和所述新物理地址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位數據保存在所述原物理地址處,并創(chuàng)建當前條帶的校驗位 的邏輯地址,并將當前條帶的校驗位的邏輯地址映射到所述原物理地址。
9. 如權利要求7所述的裝置,其特征在于,所述冗余性增加單元包括第 一選擇子單元、第二選擇子單元、處理子單元和判斷子單元;所述第一選擇子單元,用于選擇RAID中的第l個條帶作為當前條帶;所述第二選擇子單元,用于從當前條帶中選擇一個分塊作為遷移分塊,并 觸發(fā)所述處理子單元;所述處理子單元,用于將所述遷移分塊的數據遷移到所述新成員磁盤,并 根據遷移后的所述新物理地址,保存所述遷移分塊的邏輯地址和所述新物理地 址之間的第一映射關系;以及,計算當前條帶的校驗位,將計算得到的校驗位 數據保存在所述原物理地址處;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前 條帶的校驗位的邏輯地址映射到所述原物理地址;所述判斷子單元,用于判斷當前條帶是否為所述RAID中的最后一個條 帶,若是,則冗余性增加完成;否則,選擇下一個條帶作為當前條帶并觸發(fā)所 述第二選擇子單元。
10. 如權利要求9所述的裝置,其特征在于,所述第二選擇單元,還用于判斷上一個條帶中的遷移分塊的序號m是否 小于原成員磁盤的數目若是,則選擇當前條帶中序號為m+1的分塊作為所 述遷移分塊;否則,選擇當前條帶中序號為1的分塊作為所述遷移分塊。
11. 如權利要求9所述的裝置,其特征在于,所述第二選擇單元包括判斷 模塊和處理模塊;其中,所述判斷模塊,用于判斷上一個條帶中的遷移分塊的序號m是否小于所 述原成員磁盤的數目若是,則選擇當前條帶中序號為m+1的分塊作為所述 遷移分塊,并觸發(fā)所述處理子單元;否則,觸發(fā)所述處理模塊;所述處理模塊,用于計算當前條帶的校驗位,將計算得到的校驗位數據保 存在所述新成員磁盤中;創(chuàng)建當前條帶的校驗位的邏輯地址,并將當前條帶的 校驗位的邏輯地址映射到第二物理地址,所述第二物理地址是當前條帶的校驗 位數據在所述新成員磁盤中的保存地址;以及,判斷當前條帶是否為所述RAID中的最后一個條帶,若是,則冗余性增加完成,否則,選擇下一個條帶作為當 前條帶,并選擇該下一個條帶中序號為1的分塊作為該下一個條帶中的遷移分 塊,并觸發(fā)所述處理子單元。
12. 如權利要求8所述的裝置,其特征在于,還包括 讀取控制單元,用于接收到對所述RAID的讀請求,并在所述讀請求對應的讀取分塊為所述遷移分塊時,根據所述讀取分塊的邏輯地址和所述第一映射 關系,確定所述讀取分塊的物理地址,并根據所述讀取分塊的物理地址,從所 述新成員磁盤中讀取數據。
13. 如權利要求8所述的裝置,其特征在于,所述新物理地址在所述新成 員磁盤中的扇區(qū)位置,與所述原物理地址在所述RAID成員磁盤中的扇區(qū)位置 相同。
14. 如權利要求8所述的裝置,其特征在于,所述RAID是第1級別的RAID或第0級別的RAID,所述冗余性增加單 元,還用于根據第5級別的RAID中條帶校驗位的生成算法,計算當前條帶的 校驗位;或者,所述RAID是第5級別的RAID,所述冗余性增加單元,還用于根 據第6級別的RAID中條帶校驗位的生成算法,計算當前條帶的校驗位。
全文摘要
本發(fā)明提供了一種增加獨立磁盤冗余陣列冗余性的方法及裝置。所述方法通過增加新成員磁盤,使得陣列轉換后的RAID的每個條帶中的分塊得以增加,并利用增加的分塊,來保存從原成員磁盤中遷移處理的分塊數據,并利用遷移之后空出來的空間保存條帶的校驗位,從而無需對條帶中的每個分塊都進行遷移。按照本發(fā)明,可以在增加RAID冗余性的處理過程中減少所需遷移的數據量,加快RAID陣列的轉換速度,并能夠避免現有技術中因冗余性增加而造成RAID存儲空間不足的問題。
文檔編號G06F3/06GK101587425SQ20091008665
公開日2009年11月25日 申請日期2009年6月16日 優(yōu)先權日2009年6月16日
發(fā)明者迪 周, 策 孫 申請人:杭州華三通信技術有限公司