在 Linux 下使用 RAID(五):安裝 RAID 6(條帶化雙分散式奇偶校驗)

Babin Lonston發表於2015-08-31

RAID 6 是 RAID 5 的升級版,它有兩個分散式奇偶校驗,即使兩個磁碟發生故障後依然有容錯能力。在兩個磁碟同時發生故障時,系統的關鍵任務仍然能執行。它與 RAID 5 相似,但效能更健壯,因為它多用了一個磁碟來進行奇偶校驗。

在之前的文章中,我們已經在 RAID 5 看了分散式奇偶校驗,但在本文中,我們將看到的是 RAID 6 雙分散式奇偶校驗。不要期望比其他 RAID 有更好的效能,除非你也安裝了一個專用的 RAID 控制器。在 RAID 6 中,即使我們失去了2個磁碟,我們仍可以透過更換磁碟,從校驗中構建資料,然後取回資料。

Setup RAID 6 in CentOS

在 Linux 中安裝 RAID 6

要建立一個 RAID 6,一組最少需要4個磁碟。RAID 6 甚至在有些組中會有更多磁碟,這樣將多個硬碟捆在一起,當讀取資料時,它會同時從所有磁碟讀取,所以讀取速度會更快,當寫資料時,因為它要將資料寫在條帶化的多個磁碟上,所以效能會較差。

現在,很多人都在討論為什麼我們需要使用 RAID 6,它的效能和其他 RAID 相比並不太好。提出這個問題首先需要知道的是,如果需要高容錯性就選擇 RAID 6。在每一個用於資料庫的高可用性要求較高的環境中,他們需要 RAID 6 因為資料庫是最重要,無論花費多少都需要保護其安全,它在影片流環境中也是非常有用的。

RAID 6 的的優點和缺點

  • 效能不錯。
  • RAID 6 比較昂貴,因為它要求兩個獨立的磁碟用於奇偶校驗功能。
  • 將失去兩個磁碟的容量來儲存奇偶校驗資訊(雙奇偶校驗)。
  • 即使兩個磁碟損壞,資料也不會丟失。我們可以在更換損壞的磁碟後從校驗中重建資料。
  • 讀效能比 RAID 5 更好,因為它從多個磁碟讀取,但對於沒有專用的 RAID 控制器的裝置寫效能將非常差。

要求

要建立一個 RAID 6 最少需要4個磁碟。你也可以新增更多的磁碟,但你必須有專用的 RAID 控制器。使用軟體 RAID 我們在 RAID 6 中不會得到更好的效能,所以我們需要一個物理 RAID 控制器。

如果你新接觸 RAID 設定,我們建議先看完以下 RAID 文章。

我的伺服器設定

作業系統 :  CentOS 6.5 Final
IP 地址    :  192.168.0.228
主機名    :  rd6.tecmintlocal.com
磁碟 1 [20GB]  :  /dev/sdb
磁碟 2 [20GB]  :  /dev/sdc
磁碟 3 [20GB]  :  /dev/sdd
磁碟 4 [20GB]  :  /dev/sde

這是9篇系列教程的第5部分,在這裡我們將看到如何在 Linux 系統或者伺服器上使用四個 20GB 的磁碟(名為 /dev/sdb、 /dev/sdc、 /dev/sdd 和 /dev/sde)建立和設定軟體 RAID 6 (條帶化雙分散式奇偶校驗)。

第1步:安裝 mdadm 工具,並檢查磁碟

1、 如果你按照我們最進的兩篇 RAID 文章(第2篇和第3篇),我們已經展示瞭如何安裝mdadm工具。如果你直接看的這篇文章,我們先來解釋下在 Linux 系統中如何使用mdadm工具來建立和管理 RAID,首先根據你的 Linux 發行版使用以下命令來安裝。

# yum install mdadm     [在 RedHat 系統]
# apt-get install mdadm     [在 Debain 系統]

2、 安裝該工具後,然後來驗證所需的四個磁碟,我們將會使用下面的fdisk命令來檢查用於建立 RAID 的磁碟。

# fdisk -l | grep sd

Check Hard Disk in Linux

在 Linux 中檢查磁碟

3、 在建立 RAID 磁碟前,先檢查下我們的磁碟是否建立過 RAID 分割槽。

# mdadm -E /dev/sd[b-e]
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd /dev/sde # 或

Check Raid on Disk

在磁碟上檢查 RAID 分割槽

注意: 在上面的圖片中,沒有檢測到任何 super-block 或者說在四個磁碟上沒有 RAID 存在。現在我們開始建立 RAID 6。

第2步:為 RAID 6 建立磁碟分割槽

4、 現在在 /dev/sdb, /dev/sdc, /dev/sdd/dev/sde上為 RAID 建立分割槽,使用下面的 fdisk 命令。在這裡,我們將展示如何在 sdb 磁碟建立分割槽,同樣的步驟也適用於其他分割槽。

建立 /dev/sdb 分割槽

# fdisk /dev/sdb

請按照說明進行操作,如下圖所示建立分割槽。

  • n建立新的分割槽。
  • 然後按 P 選擇主分割槽。
  • 接下來選擇分割槽號為1。
  • 只需按兩次Enter鍵選擇預設值即可。
  • 然後,按 P 來列印建立好的分割槽。
  • L,列出所有可用的型別。
  • t 去修改分割槽。
  • 鍵入 fd 設定為 Linux 的 RAID 型別,然後按回車確認。
  • 然後再次使用p檢視我們所做的更改。
  • 使用w儲存更改。

Create sdb Partition

建立 /dev/sdb 分割槽

建立 /dev/sdc 分割槽

# fdisk /dev/sdc

Create sdc Partition

建立 /dev/sdc 分割槽

建立 /dev/sdd 分割槽

# fdisk /dev/sdd

Create sdd Partition

建立 /dev/sdd 分割槽

建立 /dev/sde 分割槽

# fdisk /dev/sde

Create sde Partition

建立 /dev/sde 分割槽

5、 建立好分割槽後,檢查磁碟的 super-blocks 是個好的習慣。如果 super-blocks 不存在我們可以按前面的建立一個新的 RAID。

# mdadm -E /dev/sd[b-e]1    
# mdadm --examine /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 # 或

Check Raid on New Partitions

*在新分割槽中檢查 RAID *

第3步:建立 md 裝置(RAID)

6、 現在可以使用以下命令建立 RAID 裝置md0 (即 /dev/md0),並在所有新建立的分割槽中應用 RAID 級別,然後確認 RAID 設定。

# mdadm --create /dev/md0 --level=6 --raid-devices=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
# cat /proc/mdstat

Create Raid 6 Device

建立 Raid 6 裝置

7、 你還可以使用 watch 命令來檢視當前建立 RAID 的程式,如下圖所示。

# watch -n1 cat /proc/mdstat

Check Raid 6 Process

檢查 RAID 6 建立過程

8、 使用以下命令驗證 RAID 裝置。

# mdadm -E /dev/sd[b-e]1

注意::上述命令將顯示四個磁碟的資訊,這是相當長的,所以沒有擷取其完整的輸出。

9、 接下來,驗證 RAID 陣列,以確認重新同步過程已經開始。

# mdadm --detail /dev/md0

Check Raid 6 Array

檢查 Raid 6 陣列

第4步:在 RAID 裝置上建立檔案系統

10、 使用 ext4 為/dev/md0建立一個檔案系統,並將它掛載在 /mnt/raid6 。這裡我們使用的是 ext4,但你可以根據你的選擇使用任意型別的檔案系統。

# mkfs.ext4 /dev/md0

Create File System on Raid

在 RAID 6 上建立檔案系統

11、 將建立的檔案系統掛載到 /mnt/raid6,並驗證掛載點下的檔案,我們可以看到 lost+found 目錄。

# mkdir /mnt/raid6
# mount /dev/md0 /mnt/raid6/
# ls -l /mnt/raid6/

12、 在掛載點下建立一些檔案,在任意檔案中新增一些文字並驗證其內容。

# touch /mnt/raid6/raid6_test.txt
# ls -l /mnt/raid6/
# echo "tecmint raid setups" > /mnt/raid6/raid6_test.txt
# cat /mnt/raid6/raid6_test.txt

Verify Raid Content

驗證 RAID 內容

13、 在 /etc/fstab 中新增以下條目使系統啟動時自動掛載裝置,作業系統環境不同掛載點可能會有所不同。

# vim /etc/fstab

/dev/md0                /mnt/raid6              ext4    defaults        0 0

Automount Raid 6 Device

自動掛載 RAID 6 裝置

14、 接下來,執行mount -a命令來驗證 fstab 中的條目是否有錯誤。

# mount -av

Verify Raid Automount

驗證 RAID 是否自動掛載

第5步:儲存 RAID 6 的配置

15、 請注意,預設情況下 RAID 沒有配置檔案。我們需要使用以下命令手動儲存它,然後檢查裝置/dev/md0的狀態。

# mdadm --detail --scan --verbose >> /etc/mdadm.conf
# cat /etc/mdadm.conf
# mdadm --detail /dev/md0

Save Raid 6 Configuration

儲存 RAID 6 配置

Check Raid 6 Status

檢查 RAID 6 狀態

第6步:新增備用磁碟

16、 現在,已經使用了4個磁碟,並且其中兩個作為奇偶校驗資訊來使用。在某些情況下,如果任意一個磁碟出現故障,我們仍可以得到資料,因為在 RAID 6 使用雙奇偶校驗。

如果第二個磁碟也出現故障,在第三塊磁碟損壞前我們可以新增一個​​新的。可以在建立 RAID 集時加入一個備用磁碟,但我在建立 RAID 集合前沒有定義備用的磁碟。不過,我們可以在磁碟損壞後或者建立 RAID 集合時新增一塊備用磁碟。現在,我們已經建立好了 RAID,下面讓我演示如何新增備用磁碟。

為了達到演示的目的,我已經熱插入了一個新的 HDD 磁碟(即 /dev/sdf),讓我們來驗證接入的磁碟。

# ls -l /dev/ | grep sd

Check New Disk

檢查新磁碟

17、 現在再次確認新連線的磁碟沒有配置過 RAID ,使用 mdadm 來檢查。

# mdadm --examine /dev/sdf

Check Raid on New Disk

在新磁碟中檢查 RAID

注意: 像往常一樣,我們早前已經為四個磁碟建立了分割槽,同樣,我們使用 fdisk 命令為新插入的磁碟建立新分割槽。

# fdisk /dev/sdf

Create sdf Partition

為 /dev/sdf 建立分割槽

18、 在 /dev/sdf 建立新的分割槽後,在新分割槽上確認沒有 RAID,然後將備用磁碟新增到 RAID 裝置 /dev/md0 中,並驗證新增的裝置。

# mdadm --examine /dev/sdf
# mdadm --examine /dev/sdf1
# mdadm --add /dev/md0 /dev/sdf1
# mdadm --detail /dev/md0

Verify Raid on sdf Partition

在 sdf 分割槽上驗證 Raid

Add sdf Partition to Raid

*新增 sdf 分割槽到 RAID *

Verify sdf Partition Details

驗證 sdf 分割槽資訊

第7步:檢查 RAID 6 容錯

19、 現在,讓我們檢查備用驅動器是否能自動工作,當我們陣列中的任何一個磁碟出現故障時。為了測試,我將一個磁碟手工標記為故障裝置。

在這裡,我們標記 /dev/sdd1 為故障磁碟。

# mdadm --manage --fail /dev/md0 /dev/sdd1

Check Raid 6 Fault Tolerance

檢查 RAID 6 容錯

20、 讓我們檢視 RAID 的詳細資訊,並檢查備用磁碟是否開始同步。

# mdadm --detail /dev/md0

Check Auto Raid Syncing

檢查 RAID 自動同步

哇塞! 這裡,我們看到備用磁碟啟用了,並開始重建程式。在底部,我們可以看到有故障的磁碟 /dev/sdd1 標記為 faulty。可以使用下面的命令檢視程式重建。

# cat /proc/mdstat

Raid 6 Auto Syncing

RAID 6 自動同步

結論:

在這裡,我們看到了如何使用四個磁碟設定 RAID 6。這種 RAID 級別是具有高冗餘的昂貴設定之一。在接下來的文章中,我們將看到如何建立一個巢狀的 RAID 10 甚至更多。請繼續關注。


via: http://www.tecmint.com/create-raid-6-in-linux/

作者:Babin Lonston 譯者:strugglingyouth 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章