使用mdadm管理RAID陣列
mdadm 是多磁盤(pán)和設(shè)備管理 的縮寫(xiě)。它是一個(gè)命令行工具,可用于管理 Linux 上的軟件 RAID 陣列。本文概述了使用它的基礎(chǔ)知識(shí)。
以下 5 個(gè)命令是你使用 mdadm 的基礎(chǔ)功能:
- 創(chuàng)建 RAID 陣列:
mdadm --create /dev/md/test --homehost=any --metadata=1.0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1
- 組合(并啟動(dòng))RAID 陣列:
mdadm --assemble /dev/md/test /dev/sda1 /dev/sdb1
- 停止 RAID 陣列:
mdadm --stop /dev/md/test
- 刪除 RAID 陣列:
mdadm --zero-superblock /dev/sda1 /dev/sdb1
- 檢查所有已組合的 RAID 陣列的狀態(tài):
cat /proc/mdstat
功能說(shuō)明
mdadm –create
上面的創(chuàng)建命令除了 -create
參數(shù)自身和設(shè)備名之外,還包括了四個(gè)參數(shù):
1、–homehost
:
默認(rèn)情況下,mdadm
將你的計(jì)算機(jī)名保存為 RAID 陣列的屬性。如果你的計(jì)算機(jī)名與存儲(chǔ)的名稱(chēng)不匹配,則陣列將不會(huì)自動(dòng)組合。此功能在共享硬盤(pán)的服務(wù)器群集中很有用,因?yàn)槿绻鄠€(gè)服務(wù)器同時(shí)嘗試訪問(wèn)同一驅(qū)動(dòng)器,通常會(huì)發(fā)生文件系統(tǒng)損壞。名稱(chēng) any
是保留字段,并禁用 -homehost
限制。
2、 –metadata
:
-mdadm
保留每個(gè) RAID 設(shè)備的一小部分空間,以存儲(chǔ)有關(guān) RAID 陣列本身的信息。 -metadata
參數(shù)指定信息的格式和位置。1.0
表示使用版本 1 格式,并將元數(shù)據(jù)存儲(chǔ)在設(shè)備的末尾。
3、–level
:
-level
參數(shù)指定數(shù)據(jù)應(yīng)如何在底層設(shè)備之間分布。級(jí)別 1
表示每個(gè)設(shè)備應(yīng)包含所有數(shù)據(jù)的完整副本。此級(jí)別也稱(chēng)為磁盤(pán)鏡像。
4、–raid-devices
:
-raid-devices
參數(shù)指定將用于創(chuàng)建 RAID 陣列的設(shè)備數(shù)。
通過(guò)將 -level=1
(鏡像)與 -metadata=1.0
(將元數(shù)據(jù)存儲(chǔ)在設(shè)備末尾)結(jié)合使用,可以創(chuàng)建一個(gè) RAID1 陣列,如果不通過(guò) mdadm 驅(qū)動(dòng)訪問(wèn),那么它的底層設(shè)備會(huì)正常顯示。這在災(zāi)難恢復(fù)的情況下很有用,因?yàn)榧词剐孪到y(tǒng)不支持 mdadm 陣列,你也可以訪問(wèn)該設(shè)備。如果程序需要在 mdadm 可用之前以只讀訪問(wèn)底層設(shè)備時(shí)也很有用。例如,計(jì)算機(jī)中的 UEFI 固件可能需要在啟動(dòng) mdadm 之前從 ESP 讀取引導(dǎo)加載程序。
mdadm –assemble
如果成員設(shè)備丟失或損壞,上面的組合命令將會(huì)失敗。要強(qiáng)制 RAID 陣列在其中一個(gè)成員丟失時(shí)進(jìn)行組合并啟動(dòng),請(qǐng)使用以下命令:
# mdadm --assemble --run /dev/md/test /dev/sda1
其他重要說(shuō)明
避免直接寫(xiě)入底層是 RAID1 的設(shè)備。這導(dǎo)致設(shè)備不同步,并且 mdadm 不會(huì)知道它們不同步。如果你訪問(wèn)了在其他地方被修改了設(shè)備的某個(gè) RAID1 陣列,則可能導(dǎo)致文件系統(tǒng)損壞。如果你在其他地方修改 RAID1 設(shè)備并需要強(qiáng)制陣列重新同步,請(qǐng)從要覆蓋的設(shè)備中刪除 mdadm 元數(shù)據(jù),然后將其重新添加到陣列,如下所示:
# mdadm --zero-superblock /dev/sdb1
# mdadm --assemble --run /dev/md/test /dev/sda1
# mdadm /dev/md/test --add /dev/sdb1
以上用 sda1 的內(nèi)容完全覆蓋 sdb1 的內(nèi)容。
要指定在計(jì)算機(jī)啟動(dòng)時(shí)自動(dòng)激活的 RAID 陣列,請(qǐng)創(chuàng)建 /etc/mdadm.conf
配置。
有關(guān)詳細(xì)信息,請(qǐng)查看手冊(cè)頁(yè):
$ man mdadm
$ man mdadm.conf
本系列的下一篇文章將展示如何將現(xiàn)有的單磁盤(pán) Linux 系統(tǒng)變?yōu)殓R像磁盤(pán)安裝,這意味著即使其中一個(gè)硬盤(pán)突然停止工作,系統(tǒng)仍將繼續(xù)運(yùn)行!