在Linux下使用RAID(四):創(chuàng)建RAID 5
在 RAID 5 中,數(shù)據(jù)條帶化后存儲(chǔ)在分布式奇偶校驗(yàn)的多個(gè)磁盤上。分布式奇偶校驗(yàn)的條帶化意味著它將奇偶校驗(yàn)信息和條帶化數(shù)據(jù)分布在多個(gè)磁盤上,這樣會(huì)有很好的數(shù)據(jù)冗余。
在 Linux 中配置 RAID 5
對(duì)于此 RAID 級(jí)別它至少應(yīng)該有三個(gè)或更多個(gè)磁盤。RAID 5 通常被用于大規(guī)模生產(chǎn)環(huán)境中,以花費(fèi)更多的成本來提供更好的數(shù)據(jù)冗余性能。
什么是奇偶校驗(yàn)?
奇偶校驗(yàn)是在數(shù)據(jù)存儲(chǔ)中檢測錯(cuò)誤最簡單的常見方式。奇偶校驗(yàn)信息存儲(chǔ)在每個(gè)磁盤中,比如說,我們有4個(gè)磁盤,其中相當(dāng)于一個(gè)磁盤大小的空間被分割去存儲(chǔ)所有磁盤的奇偶校驗(yàn)信息。如果任何一個(gè)磁盤出現(xiàn)故障,我們可以通過更換故障磁盤后,從奇偶校驗(yàn)信息重建得到原來的數(shù)據(jù)。
RAID 5 的優(yōu)點(diǎn)和缺點(diǎn)
- 提供更好的性能。
- 支持冗余和容錯(cuò)。
- 支持熱備份。
- 將用掉一個(gè)磁盤的容量存儲(chǔ)奇偶校驗(yàn)信息。
- 單個(gè)磁盤發(fā)生故障后不會(huì)丟失數(shù)據(jù)。我們可以更換故障硬盤后從奇偶校驗(yàn)信息中重建數(shù)據(jù)。
- 適合于面向事務(wù)處理的環(huán)境,讀操作會(huì)更快。
- 由于奇偶校驗(yàn)占用資源,寫操作會(huì)慢一些。
- 重建需要很長的時(shí)間。
要求
創(chuàng)建 RAID 5 最少需要3個(gè)磁盤,你也可以添加更多的磁盤,前提是你要有多端口的專用硬件 RAID 控制器。在這里,我們使用“mdadm”包來創(chuàng)建軟件 RAID。
mdadm 是一個(gè)允許我們?cè)?Linux 下配置和管理 RAID 設(shè)備的包。默認(rèn)情況下沒有 RAID 的配置文件,我們?cè)趧?chuàng)建和配置 RAID 后必須將配置文件保存在一個(gè)單獨(dú)的文件 mdadm.conf 中。
在進(jìn)一步學(xué)習(xí)之前,我建議你通過下面的文章去了解 Linux 中 RAID 的基礎(chǔ)知識(shí)。
我的服務(wù)器設(shè)置
操作系統(tǒng) : CentOS 6.5 Final
IP 地址 : 192.168.0.227
主機(jī)名 : rd5.tecmintlocal.com
磁盤 1 [20GB] : /dev/sdb
磁盤 2 [20GB] : /dev/sdc
磁盤 3 [20GB] : /dev/sdd
這是9篇系列教程的第4部分,在這里我們要在 Linux 系統(tǒng)或服務(wù)器上使用三個(gè)20GB(名為/dev/sdb, /dev/sdc 和 /dev/sdd)的磁盤建立帶有分布式奇偶校驗(yàn)的軟件 RAID 5。
第1步:安裝 mdadm 并檢驗(yàn)磁盤
1、 正如我們前面所說,我們使用 CentOS 6.5 Final 版本來創(chuàng)建 RAID 設(shè)置,但同樣的做法也適用于其他 Linux 發(fā)行版。
# lsb_release -a
# ifconfig | grep inet
CentOS 6.5 摘要
2、 如果你按照我們的 RAID 系列去配置的,我們假設(shè)你已經(jīng)安裝了“mdadm”包,如果沒有,根據(jù)你的 Linux 發(fā)行版使用下面的命令安裝。
# yum install mdadm [在 RedHat 系統(tǒng)]
# apt-get install mdadm [在 Debain 系統(tǒng)]
3、 “mdadm”包安裝后,先使用fdisk
命令列出我們?cè)谙到y(tǒng)上增加的三個(gè)20GB的硬盤。
# fdisk -l | grep sd
安裝 mdadm 工具
#p#
4、 現(xiàn)在該檢查這三個(gè)磁盤是否存在 RAID 塊,使用下面的命令來檢查。
# mdadm -E /dev/sd[b-d]
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd # 或
檢查 Raid 磁盤
注意: 上面的圖片說明,沒有檢測到任何超級(jí)塊。所以,這三個(gè)磁盤中沒有定義 RAID。讓我們現(xiàn)在開始創(chuàng)建一個(gè)吧!
第2步:為磁盤創(chuàng)建 RAID 分區(qū)
5、 首先,在創(chuàng)建 RAID 前磁盤(/dev/sdb, /dev/sdc 和 /dev/sdd)必須有分區(qū),因此,在進(jìn)行下一步之前,先使用fdisk
命令進(jìn)行分區(qū)。
# fdisk /dev/sdb
# fdisk /dev/sdc
# fdisk /dev/sdd
創(chuàng)建 /dev/sdb 分區(qū)
請(qǐng)按照下面的說明在 /dev/sdb 硬盤上創(chuàng)建分區(qū)。
- 按
n
創(chuàng)建新的分區(qū)。 - 然后按
P
選擇主分區(qū)。選擇主分區(qū)是因?yàn)檫€沒有定義過分區(qū)。 - 接下來選擇分區(qū)號(hào)為1。默認(rèn)就是1。
- 這里是選擇柱面大小,我們沒必要選擇指定的大小,因?yàn)槲覀冃枰獮?RAID 使用整個(gè)分區(qū),所以只需按兩次 Enter 鍵默認(rèn)將整個(gè)容量分配給它。
- 然后,按
P
來打印創(chuàng)建好的分區(qū)。 - 改變分區(qū)類型,按
L
可以列出所有可用的類型。 - 按
t
修改分區(qū)類型。 - 這里使用
fd
設(shè)置為 RAID 的類型。 - 然后再次使用
p
查看我們所做的更改。 - 使用
w
保存更改。
創(chuàng)建 sdb 分區(qū)
注意: 我們?nèi)砸凑丈厦娴牟襟E來創(chuàng)建 sdc 和 sdd 的分區(qū)。
創(chuàng)建 /dev/sdc 分區(qū)
現(xiàn)在,通過下面的截圖給出創(chuàng)建 sdc 和 sdd 磁盤分區(qū)的方法,或者你可以按照上面的步驟。
# fdisk /dev/sdc
創(chuàng)建 sdc 分區(qū)
#p#
創(chuàng)建 /dev/sdd 分區(qū)
# fdisk /dev/sdd
創(chuàng)建 sdd 分區(qū)
6、 創(chuàng)建分區(qū)后,檢查三個(gè)磁盤 sdb, sdc, sdd 的變化。
# mdadm --examine /dev/sdb /dev/sdc /dev/sdd
# mdadm -E /dev/sd[b-c] # 或
檢查磁盤變化
注意:在上面的圖片中,磁盤的類型是 fd。
7、 現(xiàn)在在新創(chuàng)建的分區(qū)檢查 RAID 塊。如果沒有檢測到超級(jí)塊,我們就能夠繼續(xù)下一步,在這些磁盤中創(chuàng)建一個(gè)新的 RAID 5 配置。
Check Raid on Partition
*在分區(qū)中檢查 RAID *
第3步:創(chuàng)建 md 設(shè)備 md0
8、 現(xiàn)在使用所有新創(chuàng)建的分區(qū)(sdb1, sdc1 和 sdd1)創(chuàng)建一個(gè) RAID 設(shè)備“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、 創(chuàng)建 RAID 設(shè)備后,檢查并確認(rèn) RAID,從 mdstat 中輸出中可以看到包括的設(shè)備的 RAID 級(jí)別。
# cat /proc/mdstat
驗(yàn)證 Raid 設(shè)備
如果你想監(jiān)視當(dāng)前的創(chuàng)建過程,你可以使用watch
命令,將 cat /proc/mdstat
傳遞給它,它會(huì)在屏幕上顯示且每隔1秒刷新一次。
# watch -n1 cat /proc/mdstat
監(jiān)控 RAID 5 構(gòu)建過程
Raid 5 過程概要
10、 創(chuàng)建 RAID 后,使用以下命令驗(yàn)證 RAID 設(shè)備
# mdadm -E /dev/sd[b-d]1
驗(yàn)證 Raid 級(jí)別
注意:因?yàn)樗@示三個(gè)磁盤的信息,上述命令的輸出會(huì)有點(diǎn)長。
#p#
11、 接下來,驗(yàn)證 RAID 陣列,假定包含 RAID 的設(shè)備正在運(yùn)行并已經(jīng)開始了重新同步。
# mdadm --detail /dev/md0
驗(yàn)證 RAID 陣列
第4步:為 md0 創(chuàng)建文件系統(tǒng)
12、 在掛載前為“md0”設(shè)備創(chuàng)建 ext4 文件系統(tǒng)。
# mkfs.ext4 /dev/md0
創(chuàng)建 md0 文件系統(tǒng)
13、 現(xiàn)在,在/mnt
下創(chuàng)建目錄 raid5,然后掛載文件系統(tǒng)到 /mnt/raid5/ 下,并檢查掛載點(diǎn)下的文件,你會(huì)看到 lost+found 目錄。
# mkdir /mnt/raid5
# mount /dev/md0 /mnt/raid5/
# ls -l /mnt/raid5/
14、 在掛載點(diǎn) /mnt/raid5 下創(chuàng)建幾個(gè)文件,并在其中一個(gè)文件中添加一些內(nèi)容然后去驗(yàn)證。
# 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
掛載 RAID 設(shè)備
15、 我們需要在 fstab 中添加條目,否則系統(tǒng)重啟后將不會(huì)顯示我們的掛載點(diǎn)。編輯 fstab 文件添加條目,在文件尾追加以下行。掛載點(diǎn)會(huì)根據(jù)你環(huán)境的不同而不同。
# vim /etc/fstab
/dev/md0 /mnt/raid5 ext4 defaults 0 0
自動(dòng)掛載 RAID 5
16、 接下來,運(yùn)行mount -av
命令檢查 fstab 條目中是否有錯(cuò)誤。
# mount -av
檢查 Fstab 錯(cuò)誤
第5步:保存 Raid 5 的配置
17、 在前面章節(jié)已經(jīng)說過,默認(rèn)情況下 RAID 沒有配置文件。我們必須手動(dòng)保存。如果此步中沒有跟隨不屬于 md0 的 RAID 設(shè)備,它會(huì)是一些其他隨機(jī)數(shù)字。
所以,我們必須要在系統(tǒng)重新啟動(dòng)之前保存配置。如果配置保存它在系統(tǒng)重新啟動(dòng)時(shí)會(huì)被加載到內(nèi)核中然后 RAID 也將被加載。
# mdadm --detail --scan --verbose >> /etc/mdadm.conf
保存 RAID 5 配置
注意:保存配置將保持 md0 設(shè)備的 RAID 級(jí)別穩(wěn)定不變。
第6步:添加備用磁盤
18、 備用磁盤有什么用?它是非常有用的,如果我們有一個(gè)備用磁盤,當(dāng)我們陣列中的任何一個(gè)磁盤發(fā)生故障后,這個(gè)備用磁盤會(huì)進(jìn)入激活重建過程,并從其他磁盤上同步數(shù)據(jù),這樣就有了冗余。
更多關(guān)于添加備用磁盤和檢查 RAID 5 容錯(cuò)的指令,請(qǐng)閱讀下面文章中的第6步和第7步。
結(jié)論
在這篇文章中,我們已經(jīng)看到了如何使用三個(gè)磁盤配置一個(gè) RAID 5 。在接下來的文章中,我們將看到如何故障排除并且當(dāng) RAID 5 中的一個(gè)磁盤損壞后如何恢復(fù)。