9 建立軟體 RAID 10 裝置 #
本章說明如何設定巢狀和複雜 RAID 10 裝置。RAID 10 裝置由巢狀的 RAID 1 (鏡像) 和 RAID 0 (分割) 陣列組成。巢狀 RAID 可以設定為分割的鏡像 (RAID 1+0) 或鏡像的等量磁碟區 (RAID 0+1)。複雜 RAID 10 設定支援更高的資料備援層級,因而還結合了鏡像和等量磁碟區及額外的資料安全性。
9.1 使用 mdadm
建立巢狀 RAID 10 裝置 #
巢狀 RAID 裝置由 RAID 陣列構成,它使用其他 RAID 陣列取代實體磁碟做為其基本元素。此組態的目標是提高 RAID 的效能和容錯能力。YaST 不支援設定巢狀 RAID 層級,但您可以使用 mdadm
指令列工具來設定。
根據巢狀的順序,可以設定兩個不同的巢狀 RAID。本文使用了下列術語:
RAID 1+0:: 首先建立 RAID 1 (鏡像) 陣列,然後再結合以形成 RAID 0 (分割) 陣列。
RAID 0+1:: 首先建立 RAID 0 (分割) 陣列,然後再結合以形成 RAID 1 (鏡像) 陣列。
下表描述 RAID 10 巢狀化為 1+0 與 0+1 的優點和缺點。假設使用的儲存物件位於不同的磁碟,且每個物件都有專屬的 I/O 功能。
RAID 層級 |
描述 |
效能與容錯 |
---|---|---|
10 (1+0) |
使用 RAID 1 (鏡像) 陣列建立 RAID 0 (分割) |
RAID 1+0 提供高層級的 I/O 效能、資料備援及磁碟容錯。因為 RAID 0 中的每個成員裝置都是個別鏡像的,所以只要發生故障的磁碟處於不同的鏡像複製,這些故障磁碟都可進行容錯,且保持資料可用。 可以選擇性為每個基礎鏡像複製陣列設定備用,或者為服務所有鏡像複製的備用群組設定所用備用。 |
10 (0+1) |
使用 RAID 0 (分割) 陣列建立 RAID 1 (鏡像) |
RAID 0+1 提供高層級的 I/O 效能和資料備援,但容錯能力略低於 RAID 1+0。如果同側鏡像複製中的多個磁碟發生故障,則另一側的鏡像複製仍可用。但是,如果兩側鏡像複製中的磁碟同時發生故障,則會遺失所有資料。 此解決方案的磁碟容錯能力低於 1+0 解決方案,但如果要執行維護操作或維護其他位置的鏡像複製,則可使鏡像複製的一側完全處於離線狀態,此時仍可擁有儲存裝置的完整功能。同樣地,如果兩個位置之間斷開連接,則每個位置都可獨立進行操作。但如果分割經過鏡像處理的區段,則上述說法不正確,因為鏡像複製的管理處於較低層級。 如果裝置發生故障,則位於那側的鏡像複製將失敗,因為 RAID 1 不具容錯能力。建立新 RAID 0 以取代發生故障的那一側,然後重新同步鏡像複製。 |
9.1.1 使用 mdadm 建立巢狀 RAID 10 (1+0) #
建立巢狀 RAID 1+0 的方法是:建立兩個或更多 RAID 1 (鏡像) 裝置,然後將其做為元件裝置用於 RAID 0。
如果需要管理與裝置的多個連接,您必須在設定 RAID 裝置之前設定多重路徑 I/O。如需更多資訊,請參閱第 18 章 「管理裝置的多重路徑 I/O」。
此節的程序使用下表顯示的裝置名稱。請確保將裝置名稱修改為自己裝置的名稱。
Raw 裝置 |
RAID 1 (鏡像) |
RAID 1+0 (分割的鏡像) | ||
---|---|---|---|---|
|
|
| ||
|
|
開啟終端機。
如果需要,使用 parted 之類的磁碟分割程式建立四個大小相同的 0xFD Linux RAID 分割區。
建立兩個軟體 RAID 1 裝置,每個 RAID 裝置使用兩個不同的裝置。在命令提示字元下,輸入下列兩個指令:
>
sudo
mdadm --create /dev/md0 --run --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 sudo mdadm --create /dev/md1 --run --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1建立巢狀 RAID 1+0 裝置。在命令提示符處,使用您在上一步中建立的軟體 RAID 1 裝置輸入以下指令:
>
sudo
mdadm --create /dev/md2 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/md0 /dev/md1預設區塊大小為 64 KB。
在 RAID 1+0 裝置
/dev/md2
上建立檔案系統,例如 XFS 檔案系統:>
sudo
mkfs.xfs /dev/md2如果要使用其他檔案系統,請修改指令。
編輯
/etc/mdadm.conf
檔案,如果它不存在,則建立該檔案 (例如執行sudo vi /etc/mdadm.conf
來建立)。新增下列幾行 (如果該檔案存在,則第一行可能已存在)。DEVICE containers partitions ARRAY /dev/md0 UUID=UUID ARRAY /dev/md1 UUID=UUID ARRAY /dev/md2 UUID=UUID
每個裝置的 UUID 可以透過以下指令來擷取:
>
sudo
mdadm -D /dev/DEVICE | grep UUID編輯
/etc/fstab
檔案,為 RAID 1+0 裝置/dev/md2
新增對應項目。以下範例顯示了採用 XFS 檔案系統並以/data
為掛接點的 RAID 裝置的項目。/dev/md2 /data xfs defaults 1 2
掛接 RAID 裝置:
>
sudo
mount /data
9.1.2 使用 mdadm 建立巢狀 RAID 10 (0+1) #
建立巢狀 RAID 0+1 的方法是:建立兩到四個 RAID 0 (分割) 裝置,然後將其進行鏡像處理並做為元件裝置用於 RAID 1。
如果需要管理與裝置的多個連接,您必須在設定 RAID 裝置之前設定多重路徑 I/O。如需更多資訊,請參閱第 18 章 「管理裝置的多重路徑 I/O」。
在此組態中,無法為基礎 RAID 0 裝置指定備用裝置,因為 RAID 0 不能容許裝置遺失。如果鏡像一側的裝置發生故障,您必須建立取代的 RAID 0 裝置,然後將其新增至鏡像。
此節的程序使用下表顯示的裝置名稱。請確保將裝置名稱修改為自己裝置的名稱。
Raw 裝置 |
RAID 0 (分割) |
RAID 0+1 (鏡像的分割) | ||
---|---|---|---|---|
|
|
| ||
|
|
開啟終端機。
如果需要,使用 parted 之類的磁碟分割程式建立四個大小相同的 0xFD Linux RAID 分割區。
建立兩個軟體 RAID 0 裝置,每個 RAID 0 裝置使用兩個不同的裝置。在命令提示字元下,輸入下列兩個指令:
>
sudo
mdadm --create /dev/md0 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/sdb1 /dev/sdc1 sudo mdadm --create /dev/md1 --run --level=0 --chunk=64 \ --raid-devices=2 /dev/sdd1 /dev/sde1預設區塊大小為 64 KB。
建立巢狀 RAID 0+1 裝置。在命令提示符處,使用您在上一步中建立的軟體 RAID 0 裝置輸入以下指令:
>
sudo
mdadm --create /dev/md2 --run --level=1 --raid-devices=2 /dev/md0 /dev/md1在 RAID 1+0 裝置
/dev/md2
上建立檔案系統,例如 XFS 檔案系統:>
sudo
mkfs.xfs /dev/md2如果要使用其他檔案系統,請修改指令。
編輯
/etc/mdadm.conf
檔案,如果它不存在,則建立該檔案 (例如執行sudo vi /etc/mdadm.conf
來建立)。新增下列幾行 (如果該檔案存在,則第一行可能也已存在)。DEVICE containers partitions ARRAY /dev/md0 UUID=UUID ARRAY /dev/md1 UUID=UUID ARRAY /dev/md2 UUID=UUID
每個裝置的 UUID 可以透過以下指令來擷取:
>
sudo
mdadm -D /dev/DEVICE | grep UUID編輯
/etc/fstab
檔案,為 RAID 1+0 裝置/dev/md2
新增對應項目。以下範例顯示了採用 XFS 檔案系統並以/data
為掛接點的 RAID 裝置的項目。/dev/md2 /data xfs defaults 1 2
掛接 RAID 裝置:
>
sudo
mount /data
9.2 建立複雜 RAID 10 #
YaST (以及帶 --level=10
選項的 mdadm
) 可建立單一複雜軟體 RAID 10,它結合了 RAID 0 (等量分割) 與 RAID 1 (鏡像) 的功能。所有資料區塊的多個複本按照分割原則分佈於多個裝置之上。元件裝置的大小應相同。
複雜 RAID 10 與巢狀 RAID 10 (1+0) 的用途相似,但有以下幾處差異:
特性 |
複雜 RAID 10 |
巢狀 RAID 10 (1+0) |
---|---|---|
裝置數量 |
允許元件裝置的數量為偶數或奇數 |
要求元件裝置的數量為偶數 |
元件裝置 |
視為單一 RAID 裝置進行管理 |
視為巢狀 RAID 裝置進行管理 |
等量磁區 |
在元件裝置近配置或遠配置中發生分割。 遠配置提供根據磁碟機數量 (而非 RAID 1 配對的數量) 調整的連續讀取輸送量。 |
分割跨元件裝置連續發生 |
多個資料複本 |
兩個或更多複本,最多為陣列中的裝置數 |
每個鏡像複製區段上的複本 |
熱備用裝置 |
單一備用可用於所有元件裝置 |
為每個基礎鏡像複製陣列設定備用,或者為服務所有鏡像複製的備用群組設定所用備用。 |
9.2.1 複雜 RAID 10 中的裝置和複本數量 #
設定複雜 RAID 10 陣列時,您必須指定每個資料區塊的所需複本數。複本的預設數量是 2,但該值可以是介於 2 與陣列中裝置數量的數字。
必須至少使用與指定的複本數量相同的元件裝置。但是,RAID 10 陣列中的元件裝置數不必是每個資料區塊複本數量的倍數。有效的儲存大小為裝置數量除以複本數量。
例如,如果您為使用 5 個元件裝置建立的陣列指定兩個複本,兩個不同的裝置上都會儲存每個區塊的一個複本。則所有資料的一個複本的有效儲存大小是元件裝置大小的 5/2 或 2.5 倍。
9.2.2 配置 #
複雜 RAID 10 設定支援 3 種不同的配置,這些配置定義在磁碟上安排資料區塊的方式。可用配置有近 (預設值)、遠和偏移。它們具有不同的效能特性,因此選擇適合您工作負載的配置很重要。
9.2.2.1 近配置 #
使用近配置,資料區塊的複本被分割到不同元件裝置上鄰近位置。即一個資料區塊的多個複本位於不同裝置中偏移值類似的位置。近配置是 RAID 10 的預設配置。例如,如果使用奇數數量的元件裝置和兩個資料複本,某些複本可能是裝置中的一個區塊。
複雜 RAID 10 之近配置的讀與寫效能與磁碟機數量超過其半數的 RAID 0 相似。
具有偶數數量的磁碟和兩個複本的近配置:
sda1 sdb1 sdc1 sde1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9
具有奇數數量的磁碟和兩個複本的近配置:
sda1 sdb1 sdc1 sde1 sdf1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12
9.2.2.2 遠配置 #
遠配置將資料分割到所有磁碟機的較前部分,然後將資料的另一複本分割到所有磁碟機的較後部分,確保區塊的所有複本位於不同的磁碟機。第二組值啟始於元件磁碟機的中間部分。
使用遠配置,複雜 RAID 10 的讀取效能與超出其全部磁碟機數量的 RAID 0 相似,但寫入效能大大低於 RAID 0,因為需要進行更多的磁碟機頭搜尋。遠配置最適用於讀密集型操作,如唯讀檔案伺服器。
RAID 10 的寫入速度與其他鏡像 RAID 類型相似 (例如 RAID 1 和使用近配置的 RAID 10),因為該檔案系統的升級程式會以一種比 raw 寫入更佳的方式排程寫入操作。使用遠配置的 RAID 10 非常適合鏡像寫入應用程式。
具有偶數數量的磁碟和兩個複本的遠配置:
sda1 sdb1 sdc1 sde1 0 1 2 3 4 5 6 7 . . . 3 0 1 2 7 4 5 6
具有奇數數量的磁碟和兩個複本的遠配置:
sda1 sdb1 sdc1 sde1 sdf1 0 1 2 3 4 5 6 7 8 9 . . . 4 0 1 2 3 9 5 6 7 8
9.2.2.3 偏移配置 #
偏移配置會複製等量磁碟區,以便指定區塊的多個副本以連續偏移配置在連續的磁碟機上。實際上,會複製每個等量磁碟區,且各副本會按一個裝置進行偏移。如果使用適當的大型區塊大小,此方式應可為遠配置提供類似的讀取特性,但是寫入特性略低。
具有偶數數量的磁碟和兩個複本的偏移配置:
sda1 sdb1 sdc1 sde1 0 1 2 3 3 0 1 2 4 5 6 7 7 4 5 6 8 9 10 11 11 8 9 10
具有奇數數量的磁碟和兩個複本的偏移配置:
sda1 sdb1 sdc1 sde1 sdf1 0 1 2 3 4 4 0 1 2 3 5 6 7 8 9 9 5 6 7 8 10 11 12 13 14 14 10 11 12 13
9.2.2.4 使用 YaST 和 mdadm 指定複本數和配置 #
可以在 YaST 的--layout
參數來指定複本數和配置。接受的值如下:
nN
對於近配置指定
n
並以複本數取代 N。n2
是預設值,用於未設定配置和複本數的情況。fN
對於遠配置指定
f
並以複本數取代 N。oN
對於偏移配置指定
o
並以複本數取代 N。
YaST 會自動提供
參數的所有可能的值供您選擇。9.2.3 使用 YaST 磁碟分割程式建立複雜 RAID 10 #
啟動 YaST 並開啟磁碟分割程式。
如果需要,建立應該與 RAID 組態配合使用的分割區。不要將它們格式化,也不要將分割區類型設定為 第 10.1 節 「使用。 」
。使用現有分割區時,不需要變更它們的分割區類型 — YaST 會自動變更。如需詳細資訊,請參閱RAID 10 至少需要四個分割區。強烈建議您使用儲存在不同硬碟上的分割區,以降低當其中一個損壞時遺失資料的風險。建議您僅使用大小相同的分割區,因為每個節區只能提供相同容量的空間做為最小的分割區。
在左側面板中,選取
。右側面板中即會開啟一份現有 RAID 組態的清單。
在 RAID 頁面的左下方,按一下
。在
下,選取 。您可以選擇為您的 RAID 指定
。這樣,RAID 的名稱將是/dev/md/NAME
。如需詳細資訊,請參閱第 7.2.1 節 「RAID 名稱」。在
清單中,選取所需的 分割區,然後按一下 以將它們移至 清單。(選擇性) 按一下
以指定 RAID 陣列中各磁碟的偏好順序。對於新增磁碟順序很重要的 RAID 類型 (例如 RAID 10),您可以指定將使用裝置的順序。這將確保一半的陣列在一個磁碟子系統上,另一半陣列在另一個磁碟子系統上。例如,如果一個磁碟子系統失敗,系統將從第二個磁碟子系統繼續執行。
依次選取每個磁碟,然後按一下其中一個
按鈕 (其中 X 是要指定給磁碟的字母)。可用的類別有 A、B、C、D 和 E,但是大多數情況下,只需要較少的類別 (例如,僅需 A 和 B)。以這種方式指定所有可用的 RAID 磁碟。可以按 Ctrl 或 Shift 鍵選取多個裝置。也可以在選定裝置上按一下滑鼠右鍵,然後從網路位置功能表中選擇適當的類別。
選取其中一個排序選項來指定裝置的順序:
先對類別 A 的所有裝置排序,然後對類別 B 的所有裝置排序,依此類推。例如: ::
AABBCC
。先對類別 A 的第一個裝置排序,接著對類別 B 的第一個裝置排序,依此類推對所有指定了裝置的後續類別排序。之後,接著對類別 A、B 等的第二個裝置排序,依次類推。沒有類別的所有裝置將排在裝置清單的末尾。例如: ::
ABCABC
。模式檔案:: 選取包含多行的現有檔案,其中每一行都是一個正規表示式和一個類別名稱 (
"sda.* A"
).所有符合該正規表示式的裝置都會指定給該行的指定類別。規則運算式會依次與核心名稱 (/dev/sda1
)、udev 路徑名稱 (/dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0-part1
) 和 udev ID (dev/disk/by-id/ata-ST3500418AS_9VMN8X8L-part1
) 進行比對。如果裝置名稱與多個正規表示式相符,則由第一個相符項決定其類別。在對話方塊底部,按一下
以確認順序。
按
。在
下,指定 和 ,然後按 。對於 RAID 10,同位選項包括 n (近)、f (遠) 和 o (偏移)。數字表示每個資料區塊的所需複本數。預設值為 2。如需更多資訊,請參閱第 9.2.2 節 「配置」。
將檔案系統與掛接選項新增至 RAID 裝置,然後按一下
。按
。驗證要進行的變更,然後按一下
以建立 RAID。
9.2.4 使用 mdadm 建立複雜 RAID 10 #
此節的程序使用下表顯示的裝置名稱。請確保將裝置名稱修改為自己裝置的名稱。
Raw 裝置 |
RAID 10 |
---|---|
|
|
開啟終端機。
如果需要,使用 parted 之類的磁碟分割程式至少建立四個大小相同的 0xFD Linux RAID 分割區。
輸入以下指令建立 RAID 10。
>
sudo
mdadm --create /dev/md3 --run --level=10 --chunk=32 --raid-devices=4 \ /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1請務必根據您的設定調整
--raid-devices
的值和分割區清單。該指令會建立具有近配置和兩個複本的陣列。若要變更這兩個值中的任何一個,請依照第 9.2.2.4 節 「使用 YaST 和 mdadm 指定複本數和配置」所述使用
--layout
。在 RAID 10 裝置
/dev/md3
上建立檔案系統,例如 XFS 檔案系統:>
sudo
mkfs.xfs /dev/md3如果要使用其他檔案系統,請修改指令。
編輯
/etc/mdadm.conf
檔案,如果它不存在,則建立該檔案 (例如執行sudo vi /etc/mdadm.conf
來建立)。新增下列幾行 (如果該檔案存在,則第一行可能也已存在)。DEVICE containers partitions ARRAY /dev/md3 UUID=UUID
裝置的 UUID 可以透過以下指令來擷取:
>
sudo
mdadm -D /dev/md3 | grep UUID編輯
/etc/fstab
檔案,為 RAID 10 裝置/dev/md3
新增對應的項目。以下範例顯示了採用 XFS 檔案系統並以/data
為掛接點的 RAID 裝置的項目。/dev/md3 /data xfs defaults 1 2
掛接 RAID 裝置:
>
sudo
mount /data