套用至 SUSE Linux Enterprise Server 12 SP5

7 軟體 RAID 組態

RAID (獨立磁碟容錯陣列,Redundant Array of Independent Disks) 的用途是將數個硬碟分割區組合成一個大型「虛擬」硬碟,以達最佳化效能、資料安全性或是兩者兼具的功能。大部分 RAID 控制器使用 SCSI 通訊協定,因為它可利用比 IDE 通訊協定更有效的方式處理較大量的硬碟,並且更適合指令的平行處理。有部分的 RAID 控制器支援 IDE 或 SATA 硬碟。軟體 RAID 可提供 RAID 系統的優點,卻不需要硬體 RAID 控制器的額外成本。但是這需要一些 CPU 時間,而且有一些記憶體需求,使它不適用於極高效能的電腦。

重要
重要:叢集檔案系統上的 RAID

需要使用叢集多裝置 (叢集 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 時間和記憶體用於寫入操作。

表格 7.1︰ 比較 RAID 5 與 RAID 6

特性

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 裝置中做了說明。

  1. 啟動 YaST 並開啟磁碟分割程式

  2. 如果需要,建立應該與 RAID 組態配合使用的分割區。不要將它們格式化,也不要將分割區類型設定為 0xFD Linux RAID。使用現有分割區時,不需要變更它們的分割區類型 — YaST 會自動變更。如需詳細資訊,請參閱第 12.1 節 「使用 YaST 磁碟分割程式」

    強烈建議您使用儲存在不同硬碟中的分割區,如此可降低當其中一個 (RAID 1 和 5) 損壞時遺失資料的風險,同時又可最佳化 RAID 0 的效能。

    RAID 0 至少需要兩個分割區。RAID 1 只需要兩個分割區,而 RAID 5 至少需要三個分割區。RAID 6 設定至少需要四個分割區。建議您僅使用大小相同的分割區,因為每個節區只能提供相同容量的空間做為最小的分割區。

  3. 在左側面板中,選取 RAID

    右側面板中即會開啟一份現有 RAID 組態的清單。

  4. 在 RAID 頁面的左下方,按一下新增 RAID

  5. 選取 RAID 類型,然後從可用的裝置對話方塊中新增適當數量的分割區。

    您可以選擇為您的 RAID 指定 RAID 名稱。這樣,RAID 的名稱將是 /dev/md/NAME。如需相關資訊,請參閱第 7.2.1 節 「RAID 名稱」

    RAID 5 範例組態
    圖形 7.1︰ RAID 5 範例組態

    下一步繼續。

  6. 選取區塊大小,如果適用,同時選取同位演算法。最佳區塊大小視資料類型和 RAID 類型而定。如需詳細資訊,請參閱https://raid.wiki.kernel.org/index.php/RAID_setup#Chunk_sizes。如需同位演算法的詳細資訊,請使用 man 8 mdadm 搜尋 --layout 選項。如果不確定,請使用預設值。

  7. 選擇磁碟區的角色。您在此處所做的選擇只會影響即將開啟之對話方塊的預設值。它們可以在下一步中變更。如果不確定,請選擇原始磁碟區 (未格式化)

  8. 格式化選項下,選取格式化分割區,然後選取檔案系統選項功能表的內容視檔案系統而定。一般不需要變更預設值。

    掛接選項下,選取掛接分割區,然後選取掛接點。按一下Fstab 選項可為磁碟區新增特殊掛接選項。

  9. 按一下完成

  10. 下一步,確認變更有列出,然後按一下完成

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 Wikihttps://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

列印此頁面