7 軟體 RAID 組態 #
RAID (獨立磁碟容錯陣列,Redundant Array of Independent Disks) 的用途是將數個硬碟分割區組合成一個大型「虛擬」硬碟,以達最佳化效能、資料安全性或是兩者兼具的功能。大部分 RAID 控制器使用 SCSI 通訊協定,因為它可利用比 IDE 通訊協定更有效的方式處理較大量的硬碟,並且更適合指令的平行處理。有部分的 RAID 控制器支援 IDE 或 SATA 硬碟。軟體 RAID 可提供 RAID 系統的優點,卻不需要硬體 RAID 控制器的額外成本。但是這需要一些 CPU 時間,而且有一些記憶體需求,使它不適用於極高效能的電腦。
需要使用叢集多裝置 (叢集 MD) 來設定叢集檔案系統下的軟體 RAID。請參閱 https://documentation.suse.com/sle-ha-12/html/SLE-HA-all/cha-ha-cluster-md.html 上的 High Availability Extension 文件。
SUSE Linux Enterprise 可讓您選擇將幾個硬碟組合為一個軟 RAID 系統。RAID 一詞是表示將數個硬碟結合成 RAID 系統的一些策略,每個都有不同的目標、優點及特色。這些變化通常稱為 RAID 層級。
7.1 瞭解 RAID 層級 #
本節說明通用 RAID 層級 0、1、2、3、4、5 以及巢狀 RAID 層級。
7.1.1 RAID 0 #
此層級將每個檔案的區塊分散於多個磁碟,以提升您的資料存取效能。實際上,它不是真的 RAID,因為它不提供資料備份,但是此類型系統的名稱 RAID 0 已經成為標準。使用 RAID 0,就可將兩個以上的磁碟聚集在一起。效能非常好,但是如果其中一個硬碟錯誤,RAID 系統便會損毀而且資料會遺失。
7.1.2 RAID 1 #
此層級對資料提供足夠的安全性,因為資料是以 1:1 複製到另一個硬碟。這就是所謂的硬碟鏡像。如果其中一個磁碟損毀,另一個鏡像複製磁碟上有其內容的複本。如果所有其他磁碟都受到損害,但有一個可用,就不會危害到資料。但是,如果未偵測到損毀的情況,則損毀的資料也可能會鏡射到正確的磁碟,因而造成資料損毀。在複製過程中的寫入效能比使用單一磁碟存取時稍差一些 (慢了百分之十到二十),但是讀取存取卻較任何一般實體硬碟快得多,因為資料已複製,因此可以平行掃描。一般而言,可以說 RAID 1 比單一磁碟的讀取異動率快了將近兩倍,而且與單一磁碟的寫入異動率幾乎相同。
7.1.3 RAID 2 與 RAID 3 #
這些都不是一般的 RAID 實作。「層級 2」在是位元層級分割資料,而不是在區塊層級。「層級 3」提供具有專用同位磁碟的位元層級分割,但是無法同時服務多個要求。這兩個層級都很少使用。
7.1.4 RAID 4 #
「層級 4」提供與「層級 0」類似的區塊層級分割,並且結合專用的同位磁碟。在資料磁碟失敗時,會使用同位資料建立替代的磁碟。不過,同位磁碟可能造成寫入存取的瓶頸。儘管如此,有時還是會使用「層級 4」。
7.1.5 RAID 5 #
RAID 5 是在「層級 0」與「層級 1」之間效能和備用方面最佳的折衷方法。硬碟空間等於使用的磁碟數減一。使用 RAID 0 可將資料分布至各個硬碟。在其中一個分割區上建立的同位區塊是基於安全性考量。它們以 XOR 互相連結,使得系統失敗時,能夠藉由對應的同位區塊重新建構內容。使用 RAID 5,不會有一個以上的硬碟同時失敗。如果一個硬碟出現故障,必須立即更換以避免資料遺失的風險。
7.1.6 RAID 6 #
RAID 6 從本質上說是 RAID 5 的延伸,它透過使用另一獨立的分散式同位規劃 (雙同位) 允許額外容錯。即使在資料復原過程中兩個硬碟都發生故障,系統也能繼續運作,且不遺失資料。
在多個磁碟機同時發生故障的情況下,RAID 6 可提供極高的資料容錯能力。它能夠處理兩個裝置的遺失,不會遺失資料。相應地,它需要 N+2 個磁碟機來儲存 N 個磁碟機的重要資料。至少需要四個裝置。
在正常模式以及有一個硬碟發生故障的模式下,RAID 6 的效能比 RAID 5 略低,但相差不多。處於雙磁碟機故障模式下時,其速度會變得很慢。RAID 6 組態需要將相當多的 CPU 時間和記憶體用於寫入操作。
特性 |
RAID 5 |
RAID 6 |
---|---|---|
裝置數量 |
N+1,最小值為 3 |
N+2,最小值為 4 |
同位元 |
分散式,單一 |
分散式,兩個 |
效能 |
對寫入與重建有中等程度的影響 |
對連續寫入的影響比 RAID 5 要大 |
容錯 |
一個元件裝置發生故障 |
兩個元件裝置發生故障 |
7.1.7 巢狀和複雜 RAID 層級 #
現已開發出其他的 RAID 層級,如 RAIDn、RAID 10、RAID 0+1、RAID 30 和 RAID 50。有些是硬體廠商所建立的專用實作。建立 RAID 10 組態的範例可在第 9 章 「建立軟體 RAID 10 裝置」中找到。
7.2 使用 YaST 進行軟體 RAID 組態 #
YaST 軟體 RAID 組態可以透過 YaST 進階磁碟分割程式完成。這個磁碟分割工具還可讓您編輯和刪除現有分割區,以及建立應該與軟體 RAID 一起使用的新分割區。下列指示適用於設定 RAID 層級 0、1、5 和 6。設定 RAID 10 組態的方法在第 9 章 「建立軟體 RAID 10 裝置」中做了說明。
啟動 YaST 並開啟
。如果需要,建立應該與 RAID 組態配合使用的分割區。不要將它們格式化,也不要將分割區類型設定為 第 12.1 節 「使用 YaST 磁碟分割程式」。
。使用現有分割區時,不需要變更它們的分割區類型 — YaST 會自動變更。如需詳細資訊,請參閱強烈建議您使用儲存在不同硬碟中的分割區,如此可降低當其中一個 (RAID 1 和 5) 損壞時遺失資料的風險,同時又可最佳化 RAID 0 的效能。
RAID 0 至少需要兩個分割區。RAID 1 只需要兩個分割區,而 RAID 5 至少需要三個分割區。RAID 6 設定至少需要四個分割區。建議您僅使用大小相同的分割區,因為每個節區只能提供相同容量的空間做為最小的分割區。
在左側面板中,選取
。右側面板中即會開啟一份現有 RAID 組態的清單。
在 RAID 頁面的左下方,按一下
。選取
,然後從 對話方塊中 適當數量的分割區。您可以選擇為您的 RAID 指定
。這樣,RAID 的名稱將是/dev/md/NAME
。如需相關資訊,請參閱第 7.2.1 節 「RAID 名稱」。圖 7.1︰ RAID 5 範例組態 #按
繼續。選取https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes。如需同位演算法的詳細資訊,請使用
,如果適用,同時選取 。最佳區塊大小視資料類型和 RAID 類型而定。如需詳細資訊,請參閱man 8 mdadm
搜尋--layout
選項。如果不確定,請使用預設值。選擇磁碟區的
。您在此處所做的選擇只會影響即將開啟之對話方塊的預設值。它們可以在下一步中變更。如果不確定,請選擇 。在
下,選取 ,然後選取 。 功能表的內容視檔案系統而定。一般不需要變更預設值。在
下,選取 ,然後選取掛接點。按一下 可為磁碟區新增特殊掛接選項。按一下
。按
,確認變更有列出,然後按一下 。
7.2.1 RAID 名稱 #
依預設,軟體 RAID 裝置使用遵循 mdN
模式的數值名稱,其中 N
是數字。因此,可以使用 /dev/md127
形式來存取它們,並且在 /proc/mdstat
和 /proc/partitions
中,它們也被列為 md127
,但使用這些名稱不大方便。SUSE Linux Enterprise Server 提供了兩種方法來解決此問題︰
- 提供指向裝置的具名連結
當您透過 YaST 或在指令行上使用
mdadm --create '/dev/md/
NAME' 來建立 RAID 裝置時,可以選擇為 RAID 裝置指定一個名稱。裝置名稱仍然是mdN
,但系統會建立一個連結/dev/md/NAME
︰tux >
ls -og /dev/md total 0 lrwxrwxrwx 1 8 Dec 9 15:11 myRAID -> ../md127裝置在
/proc
下仍列為md127
。- 提供具名裝置
如果指向裝置的具名連結不足以滿足您設定的要求,請執行下列指令將 CREATE names=yes 一行新增至
/etc/mdadm.conf
︰sudo echo "CREATE names=yes" >> /etc/mdadm.conf
如此,系統將使用類似
myRAID
的名稱做為「實際的」裝置名稱。您不但可以採用/dev/myRAID
形式存取裝置,它們在/proc
下也會列為myRAID
。請注意,這只適用於在變更組態檔案之後設定的 RAID。作用中的 RAID 將繼續使用mdN
名稱,直到被停止並被重新組合為止。警告:不相容的工具可能並非所有工具都支援具名 RAID 裝置。如果某個工具需要 RAID 裝置命名為
mdN
,它將無法識別具名裝置。
7.3 軟體 RAID 疑難排解 #
檢查 /proc/mdstat
檔案以確定 RAID 分割區是否已損毀。磁碟出現故障時,請關閉 Linux 系統並使用以相同方式磁碟分割的新硬碟來更換損壞的硬碟。然後重新啟動系統,並輸入 mdadm /dev/mdX --add /dev/sdX
指令。使用特定的裝置識別碼取代 X
。這會自動將硬碟整合到 RAID 系統中,並將其完全重構 (適用於 RAID 0 以外的所有 RAID 層級)。
雖然您可以在重建期間存取所有資料,但是在完全重建 RAID 之前,可能會遇到一些效能問題。
7.3.1 修復故障磁碟之後進行復原 #
RAID 陣列中的磁碟可能會出於多種原因而發生故障。下面列出了最常見的原因︰
磁碟媒體出現問題。
磁碟機控制器發生故障。
與磁碟的連接斷開。
在發生磁碟媒體或控制器故障時,需要更換或維修裝置。如果未在 RAID 中設定熱備件,則需要手動干預。
對於後一種情況,可以在修復連接 (可能會自動修復) 之後,使用 mdadm
指令自動重新加入發生故障的裝置。
md
/mdadm
不能可靠地判斷磁碟故障的原因,它會臆測發生了嚴重的磁碟錯誤,並一直將任何有故障的裝置視為有故障,直到明確獲知該裝置可靠。
在某些情況下 (例如,儲存裝置包含內部 RAID 陣列),連接問題往往是裝置發生故障的原因。在這種情況下,您可以告知 mdadm
,在裝置出現後,可以放心地使用 --re-add
自動重新加入該裝置。為此,您可以將以下行新增到 /etc/mdadm.conf
中︰
POLICY action=re-add
請注意,僅當 udev
規則導致 mdadm -I DISK_DEVICE_NAME
在自發性出現的任何裝置上執行 (預設行為),並且已設定 write-intent 點陣圖 (預設已設定) 時,才會在裝置重新出現後自動重新加入該裝置。
如果您希望此規則只會套用至某些裝置而不會套用至其他一些裝置,可以將 path=
選項新增到 /etc/mdadm.conf
中的 POLICY
行,以限制為只對所選裝置執行非預設動作。可以使用萬用字元來識別裝置群組。如需詳細資訊,請參閱 man 5 mdadm.conf
。
7.4 更多資訊 #
位於下列位置的 HOWTO 中提供了軟 RAID 的組態說明及更多詳細資料:
Linux RAID Wiki︰https://raid.wiki.kernel.org/
/usr/share/doc/packages/mdadm/Software-RAID.HOWTO.html
檔案中的The Software RAID HOWTO (軟體 RAID HOWTO)
此外,您還可參考 Linux RAID 郵寄清單,如 http://marc.info/?l=linux-raid 上的 linux-raid。