在 Linux 下使用 RAID(四):建立 RAID 5(條帶化與分散式奇偶校驗)

Babin Lonston發表於2015-08-27

在 RAID 5 中,資料條帶化後儲存在分散式奇偶校驗的多個磁碟上。分散式奇偶校驗的條帶化意味著它將奇偶校驗資訊和條帶化資料分佈在多個磁碟上,這樣會有很好的資料冗餘。

Setup Raid 5 in CentOS

在 Linux 中配置 RAID 5

對於此 RAID 級別它至少應該有三個或更多個磁碟。RAID 5 通常被用於大規模生產環境中,以花費更多的成本來提供更好的資料冗餘效能。

什麼是奇偶校驗?

奇偶校驗是在資料儲存中檢測錯誤最簡單的常見方式。奇偶校驗資訊儲存在每個磁碟中,比如說,我們有4個磁碟,其中相當於一個磁碟大小的空間被分割去儲存所有磁碟的奇偶校驗資訊。如果任何一個磁碟出現故障,我們可以透過更換故障磁碟後,從奇偶校驗資訊重建得到原來的資料。

RAID 5 的優點和缺點

  • 提供更好的效能。
  • 支援冗餘和容錯。
  • 支援熱備份。
  • 將用掉一個磁碟的容量儲存奇偶校驗資訊。
  • 單個磁碟發生故障後不會丟失資料。我們可以更換故障硬碟後從奇偶校驗資訊中重建資料。
  • 適合於面向事務處理的環境,讀操作會更快。
  • 由於奇偶校驗佔用資源,寫操作會慢一些。
  • 重建需要很長的時間。

要求

建立 RAID 5 最少需要3個磁碟,你也可以新增更多的磁碟,前提是你要有多埠的專用硬體 RAID 控制器。在這裡,我們使用“mdadm”包來建立軟體 RAID。

mdadm 是一個允許我們在 Linux 下配置和管理 RAID 裝置的包。預設情況下沒有 RAID 的配置檔案,我們在建立和配置 RAID 後必須將配置檔案儲存在一個單獨的檔案 mdadm.conf 中。

在進一步學習之前,我建議你透過下面的文章去了解 Linux 中 RAID 的基礎知識。

我的伺服器設定

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

這是9篇系列教程的第4部分,在這裡我們要在 Linux 系統或伺服器上使用三個20GB(名為/dev/sdb, /dev/sdc 和 /dev/sdd)的磁碟建立帶有分散式奇偶校驗的軟體 RAID 5。

第1步:安裝 mdadm 並檢驗磁碟

1、 正如我們前面所說,我們使用 CentOS 6.5 Final 版本來建立 RAID 設定,但同樣的做法也適用於其他 Linux 發行版。

# lsb_release -a
# ifconfig | grep inet

Setup Raid 5 in CentOS

CentOS 6.5 摘要

2、 如果你按照我們的 RAID 系列去配置的,我們假設你已經安裝了“mdadm”包,如果沒有,根據你的 Linux 發行版使用下面的命令安裝。

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

3、 “mdadm”包安裝後,先使用fdisk命令列出我們在系統上增加的三個20GB的硬碟。

# fdisk -l | grep sd

Install mdadm Tool in CentOS

安裝 mdadm 工具

4、 現在該檢查這三個磁碟是否存在 RAID 塊,使用下面的命令來檢查。

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

Examine Drives For Raid

檢查 Raid 磁碟

注意: 上面的圖片說明,沒有檢測到任何超級塊。所以,這三個磁碟中沒有定義 RAID。讓我們現在開始建立一個吧!

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

5、 首先,在建立 RAID 前磁碟(/dev/sdb, /dev/sdc 和 /dev/sdd)必須有分割槽,因此,在進行下一步之前,先使用fdisk命令進行分割槽。

# fdisk /dev/sdb
# fdisk /dev/sdc
# fdisk /dev/sdd

建立 /dev/sdb 分割槽

請按照下面的說明在 /dev/sdb 硬碟上建立分割槽。

  • n 建立新的分割槽。
  • 然後按 P 選擇主分割槽。選擇主分割槽是因為還沒有定義過分割槽。
  • 接下來選擇分割槽號為1。預設就是1。
  • 這裡是選擇柱面大小,我們沒必要選擇指定的大小,因為我們需要為 RAID 使用整個分割槽,所以只需按兩次 Enter 鍵預設將整個容量分配給它。
  • 然後,按 P 來列印建立好的分割槽。
  • 改變分割槽型別,按 L可以列出所有可用的型別。
  • t 修改分割槽型別。
  • 這裡使用fd設定為 RAID 的型別。
  • 然後再次使用p檢視我們所做的更改。
  • 使用w儲存更改。

Create sdb Partition

建立 sdb 分割槽

注意: 我們仍要按照上面的步驟來建立 sdc 和 sdd 的分割槽。

建立 /dev/sdc 分割槽

現在,透過下面的截圖給出建立 sdc 和 sdd 磁碟分割槽的方法,或者你可以按照上面的步驟。

# fdisk /dev/sdc

Create sdc Partition

建立 sdc 分割槽

建立 /dev/sdd 分割槽

# fdisk /dev/sdd

Create sdd Partition

建立 sdd 分割槽

6、 建立分割槽後,檢查三個磁碟 sdb, sdc, sdd 的變化。

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

Check Partition Changes

檢查磁碟變化

注意: 在上面的圖片中,磁碟的型別是 fd。

7、 現在在新建立的分割槽檢查 RAID 塊。如果沒有檢測到超級塊,我們就能夠繼續下一步,在這些磁碟中建立一個新的 RAID 5 配置。

Check Raid on Partition

*在分割槽中檢查 RAID *

第3步:建立 md 裝置 md0

8、 現在使用所有新建立的分割槽(sdb1, sdc1 和 sdd1)建立一個 RAID 裝置“md0”(即 /dev/md0),使用以下命令。

# mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
# mdadm -C /dev/md0 -l=5 -n=3 /dev/sd[b-d]1   # 或

9、 建立 RAID 裝置後,檢查並確認 RAID,從 mdstat 中輸出中可以看到包括的裝置的 RAID 級別。

# cat /proc/mdstat

Verify Raid Device

驗證 Raid 裝置

如果你想監視當前的建立過程,你可以使用watch命令,將 cat /proc/mdstat 傳遞給它,它會在螢幕上顯示且每隔1秒重新整理一次。

# watch -n1 cat /proc/mdstat

Monitor Raid Process

監控 RAID 5 構建過程

Raid 5 Process Summary

Raid 5 過程概要

10、 建立 RAID 後,使用以下命令驗證 RAID 裝置

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

Verify Raid Level

驗證 Raid 級別

注意: 因為它顯示三個磁碟的資訊,上述命令的輸出會有點長。

11、 接下來,驗證 RAID 陣列,假定包含 RAID 的裝置正在執行並已經開始了重新同步。

# mdadm --detail /dev/md0

Verify Raid Array

驗證 RAID 陣列

第4步:為 md0 建立檔案系統

12、 在掛載前為“md0”裝置建立 ext4 檔案系統。

# mkfs.ext4 /dev/md0

Create md0 Filesystem

建立 md0 檔案系統

13、 現在,在/mnt下建立目錄 raid5,然後掛載檔案系統到 /mnt/raid5/ 下,並檢查掛載點下的檔案,你會看到 lost+found 目錄。

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

14、 在掛載點 /mnt/raid5 下建立幾個檔案,並在其中一個檔案中新增一些內容然後去驗證。

# touch /mnt/raid5/raid5_tecmint_{1..5}
# ls -l /mnt/raid5/
# echo "tecmint raid setups" > /mnt/raid5/raid5_tecmint_1
# cat /mnt/raid5/raid5_tecmint_1
# cat /proc/mdstat

Mount Raid 5 Device

掛載 RAID 裝置

15、 我們需要在 fstab 中新增條目,否則系統重啟後將不會顯示我們的掛載點。編輯 fstab 檔案新增條目,在檔案尾追加以下行。掛載點會根據你環境的不同而不同。

# vim /etc/fstab

/dev/md0                /mnt/raid5              ext4    defaults        0 0

Raid 5 Automount

自動掛載 RAID 5

16、 接下來,執行mount -av命令檢查 fstab 條目中是否有錯誤。

# mount -av

Check Fstab Errors

檢查 Fstab 錯誤

第5步:儲存 Raid 5 的配置

17、 在前面章節已經說過,預設情況下 RAID 沒有配置檔案。我們必須手動儲存。如果此步中沒有跟隨不屬於 md0 的 RAID 裝置,它會是一些其他隨機數字。

所以,我們必須要在系統重新啟動之前儲存配置。如果配置儲存它在系統重新啟動時會被載入到核心中然後 RAID 也將被載入。

# mdadm --detail --scan --verbose >> /etc/mdadm.conf

Save Raid 5 Configuration

儲存 RAID 5 配置

注意:儲存配置將保持 md0 裝置的 RAID 級別穩定不變。

第6步:新增備用磁碟

18、 備用磁碟有什麼用?它是非常有用的,如果我們有一個備用磁碟,當我們陣列中的任何一個磁碟發生故障後,這個備用磁碟會進入啟用重建過程,並從其他磁碟上同步資料,這樣就有了冗餘。

更多關於新增備用磁碟和檢查 RAID 5 容錯的指令,請閱讀下面文章中的第6步和第7步。

結論

在這篇文章中,我們已經看到了如何使用三個磁碟配置一個 RAID 5 。在接下來的文章中,我們將看到如何故障排除並且當 RAID 5 中的一個磁碟損壞後如何恢復。


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

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

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

相關文章