跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 儲存管理指南 / 軟體 RAID / 軟體 RAID 組態
適用範圍 SUSE Linux Enterprise Server 15 SP2

7 軟體 RAID 組態

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

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

需要使用叢集多裝置 (叢集 MD) 來設定叢集檔案系統下的軟體 RAID。請參閱 《SUSE Linux Enterprise 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 會自動變更。如需詳細資訊,請參閱第 10.1 節 「使用進階磁碟分割程式」

    強烈建議您使用儲存在不同硬碟中的分割區,如此可降低當其中一個 (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. 下一步,確認變更有列出,然後按一下完成

重要
重要:磁碟上的 RAID

雖然使用分割程式可以在磁碟 (而不是分割區) 的頂層建立 RAID,但出於多個原因,我們不建議使用此方法。不支援在此類 RAID 上安裝開機載入程式,因此您需要使用獨立的裝置進行開機。諸如 fdiskparted 之類的工具在此類 RAID 上無法正常工作,不清楚 RAID 特定設定的人員在使用這些工具時,可能會做出錯誤的診斷或執行錯誤的動作。

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

tux > 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