您當(dāng)前位置: 主頁(yè) > IT服務(wù) > 數(shù)據(jù)恢復(fù)服務(wù) >
當(dāng)一個(gè)磁盤(pán)發(fā)生故障時(shí)如何重建軟件 RAID 陣列并且不會(huì)丟失數(shù)據(jù)。
如果 SELinux 設(shè)置為 enforcing 模式,需要將相應(yīng)的標(biāo)簽添加到掛載 RAID 設(shè)備的目錄中。(網(wǎng)絡(luò)外包公司)
啟用 SELinux 時(shí) RAID 掛載錯(cuò)誤
通過(guò)以下命令來(lái)解決:
# restorecon -R /mnt/raid1
配置 RAID 監(jiān)控存儲(chǔ)設(shè)備損壞的原因很多(盡管固態(tài)硬盤(pán)大大減少了這種情況發(fā)生的可能性),但不管是什么原因,可以肯定問(wèn)題隨時(shí)可能發(fā)生,你需要準(zhǔn)備好替換發(fā)生故障的部分,并確保數(shù)據(jù)的可用性和完整性。
首先,可以查看 /proc/mdstat 來(lái)檢查 RAID 的狀態(tài),但有一個(gè)更好的和節(jié)省時(shí)間的方法,使用監(jiān)控 + 掃描模式運(yùn)行 mdadm,它將警報(bào)通過(guò)電子郵件發(fā)送到一個(gè)預(yù)定義的收件人。
要這樣設(shè)置,在 /etc/mdadm.conf 添加以下行:
MAILADDR user@
我自己的設(shè)置如下:
監(jiān)控 RAID 并使用電子郵件進(jìn)行報(bào)警
要讓 mdadm 運(yùn)行在監(jiān)控 + 掃描模式中,以 root 用戶添加以下 crontab 條目:
@reboot /sbin/mdadm --monitor --scan --oneshot
默認(rèn)情況下,mdadm 每隔60秒會(huì)檢查 RAID 陣列,如果發(fā)現(xiàn)問(wèn)題將發(fā)出警報(bào)。你可以通過(guò)添加 --delay 選項(xiàng)到crontab 條目上面,后面跟上秒數(shù),來(lái)修改默認(rèn)行為(例如,--delay 1800意味著30分鐘)。
最后,確保安裝了一個(gè)郵件用戶代理(MUA),如mutt 或 mailx。否則,將不會(huì)收到任何警報(bào)。
在一分鐘內(nèi),我們就會(huì)看到 mdadm 發(fā)送的警報(bào)。
模擬和更換發(fā)生故障的 RAID 存儲(chǔ)設(shè)備為了給 RAID 陣列中的存儲(chǔ)設(shè)備模擬一個(gè)故障,我們將使用 --manage 和 --set-faulty 選項(xiàng),如下所示:
# mdadm --manage --set-faulty /dev/md0 /dev/sdc1
這將導(dǎo)致 /dev/sdc1 被標(biāo)記為 faulty,我們可以在 /proc/mdstat 看到:
在 RAID 存儲(chǔ)設(shè)備上模擬問(wèn)題
更重要的是,讓我們看看是不是收到了同樣的警報(bào)郵件:
RAID 設(shè)備故障時(shí)發(fā)送郵件警報(bào)
在這種情況下,你需要從軟件 RAID 陣列中刪除該設(shè)備:
# mdadm /dev/md0 --remove /dev/sdc1
然后,你可以直接從機(jī)器中取出,并將其使用備用設(shè)備來(lái)取代(/dev/sdd 中類型為 fd 的分區(qū)是以前創(chuàng)建的):
# mdadm --manage /dev/md0 --add /dev/sdd1
幸運(yùn)的是,該系統(tǒng)會(huì)使用我們剛才添加的磁盤(pán)自動(dòng)重建陣列。我們可以通過(guò)標(biāo)記 /dev/sdb1 為 faulty 來(lái)進(jìn)行測(cè)試,從陣列中取出后,并確認(rèn) tecmint.txt 文件仍然在 /mnt/raid1 是可訪問(wèn)的:
# mdadm --detail /dev/md0# mount | grep raid1# ls -l /mnt/raid1 | grep tecmint# cat /mnt/raid1/tecmint.txt
確認(rèn) RAID 重建
上面圖片清楚的顯示,添加 /dev/sdd1 到陣列中來(lái)替代 /dev/sdc1,數(shù)據(jù)的重建是系統(tǒng)自動(dòng)完成的,不需要干預(yù)。
雖然要求不是很嚴(yán)格,有一個(gè)備用設(shè)備是個(gè)好主意,這樣更換故障的設(shè)備就可以在瞬間完成了。要做到這一點(diǎn),先讓我們重新添加 /dev/sdb1 和 /dev/sdc1:(電腦維護(hù)外包)
# mdadm --manage /dev/md0 --add /dev/sdb1# mdadm --manage /dev/md0 --add /dev/sdc1
取代故障的 Raid 設(shè)備
從冗余丟失中恢復(fù)數(shù)據(jù)如前所述,當(dāng)一個(gè)磁盤(pán)發(fā)生故障時(shí), mdadm 將自動(dòng)重建數(shù)據(jù)。但是,如果陣列中的2個(gè)磁盤(pán)都故障時(shí)會(huì)發(fā)生什么?讓我們來(lái)模擬這種情況,通過(guò)標(biāo)記 /dev/sdb1 和 /dev/sdd1 為 faulty:
# umount /mnt/raid1# mdadm --manage --set-faulty /dev/md0 /dev/sdb1# mdadm --stop /dev/md0# mdadm --manage --set-faulty /dev/md0 /dev/sdd1
此時(shí)嘗試以同樣的方式重新創(chuàng)建陣列就(或使用 --assume-clean 選項(xiàng))可能會(huì)導(dǎo)致數(shù)據(jù)丟失,因此不到萬(wàn)不得已不要使用。
讓我們?cè)囍鴱?/dev/sdb1 恢復(fù)數(shù)據(jù),例如,在一個(gè)類似的磁盤(pán)分區(qū)(/dev/sde1 - 注意,這需要你執(zhí)行前在/dev/sde 上創(chuàng)建一個(gè) fd 類型的分區(qū))上使用 ddrescue:
# ddrescue -r 2 /dev/sdb1 /dev/sde1
恢復(fù) Raid 陣列
請(qǐng)注意,到現(xiàn)在為止,我們還沒(méi)有觸及 /dev/sdb 和 /dev/sdd,它們的分區(qū)是 RAID 陣列的一部分。
現(xiàn)在,讓我們使用 /dev/sde1 和 /dev/sdf1 來(lái)重建陣列:
# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1
請(qǐng)注意,在真實(shí)的情況下,你需要使用與原來(lái)的陣列中相同的設(shè)備名稱,即設(shè)備失效后替換的磁盤(pán)的名稱應(yīng)該是 /dev/sdb1 和 /dev/sdc1。(it外包)
在本文中,我選擇了使用額外的設(shè)備來(lái)重新創(chuàng)建全新的磁盤(pán)陣列,是為了避免與原來(lái)的故障磁盤(pán)混淆。
當(dāng)被問(wèn)及是否繼續(xù)寫(xiě)入陣列時(shí),鍵入 Y,然后按 Enter。陣列被啟動(dòng),你也可以查看它的進(jìn)展:
# watch -n 1 cat /proc/mdstat
當(dāng)這個(gè)過(guò)程完成后,你就應(yīng)該能夠訪問(wèn) RAID 的數(shù)據(jù):
艾銻無(wú)限是中國(guó)領(lǐng)先IT外包服務(wù)商,專業(yè)為企業(yè)提供IT運(yùn)維外包、電腦維護(hù)、網(wǎng)絡(luò)維護(hù)、網(wǎng)絡(luò)布線、辦公設(shè)備維護(hù)、服務(wù)器維護(hù)、數(shù)據(jù)備份恢復(fù)、門禁監(jiān)控、網(wǎng)站建設(shè)等多項(xiàng)IT服務(wù)外包,服務(wù)熱線:400-650-7820 聯(lián)系電話:010-62684652 咨詢QQ1548853602 地址:北京市海淀區(qū)北京科技會(huì)展2號(hào)樓16D,用心服務(wù)每一天,為企業(yè)的發(fā)展提升更高的效率,創(chuàng)造更大的價(jià)值。
更多的IT外包信息盡在艾銻無(wú)限http://www.richjn.cn
相關(guān)文章
|
||||||