在美國服務(wù)器上運行的RAID冗余陣列獨立磁盤(pán)是一種常用的數據存儲技術(shù),通過(guò)組合多個(gè)硬盤(pán)驅動(dòng)器來(lái)提供更高的數據可靠性和容錯能力。然而即使使用了RAID,美國服務(wù)器數據仍然有可能因為硬件故障、配置錯誤或其他問(wèn)題而丟失。下面美聯(lián)科技小編將來(lái)詳細介紹在美國服務(wù)器Linux系統中,當RAID出現故障時(shí)如何恢復和重建數據。
一、RAID故障的癥狀
在開(kāi)始之前,我們需要了解RAID故障的一些常見(jiàn)癥狀,這些癥狀可能包括:
- 系統無(wú)法識別RAID陣列
- RAID狀態(tài)顯示為失敗或降級
- 數據訪(fǎng)問(wèn)速度變慢或無(wú)法訪(fǎng)問(wèn)
- 硬盤(pán)發(fā)出異常噪音或完全不工作
二、RAID 測試方案
在進(jìn)一步討論之前,請確保美國服務(wù)器已經(jīng)配置好了 RAID 1 陣列。此外,如果 SELinux 設置為 enforcing 模式,需要將相應的標簽添加到掛載 RAID 設備的目錄中。否則,當試圖掛載時(shí),則會(huì )碰到警告信息,那么需要通過(guò)以下命令來(lái)解決:
restorecon -R /mnt/raid1。
三、配置 RAID 監控
美國服務(wù)器存儲設備損壞的原因很多,盡管固態(tài)硬盤(pán)大大減少了這種情況發(fā)生的可能性,但也有可能會(huì )隨時(shí)發(fā)生問(wèn)題,需要準備好替換發(fā)生故障的部分,并確保數據的可用性和完整性。
首先建議的是,雖然可以通過(guò)查看 /proc/mdstat 來(lái)檢查 RAID 的狀態(tài),但有一個(gè)更好和更節省時(shí)間的方法,就是使用監控 + 掃描模式運行 mdadm,它將警報通過(guò)電子郵件發(fā)送到一個(gè)預定義的收件人。
設置操作,在 /etc/mdadm.conf 添加以下行:
MAILADDR user@<domain or localhost>
要讓 mdadm 運行在監控 + 掃描模式中,以 root 用戶(hù)添加以下 crontab 條目:
@reboot /sbin/mdadm --monitor --scan –oneshot
默認情況下,mdadm 每隔60秒會(huì )檢查 RAID 陣列,如果發(fā)現問(wèn)題將發(fā)出警報,可以通過(guò)添加 --delay 選項到crontab 條目上面,后面跟上秒數,來(lái)修改默認行為,例如添加--delay 1800,則意味著(zhù)間隔30分鐘。
最后,確保已經(jīng)安裝了一個(gè)郵件用戶(hù)代理MUA),如mutt或者mailx,否則將不會(huì )收到任何警報。一般設置完畢,在一分鐘內就會(huì )看到 mdadm 發(fā)送的警報。
四、模擬和更換發(fā)生故障的 RAID 存儲設備
為了給 美國服務(wù)器RAID 陣列中的存儲設備模擬一個(gè)故障,下面將使用 --manage 和 --set-faulty 選項,如下所示:
# mdadm --manage --set-faulty /dev/md0 /dev/sdc1
這將導致 /dev/sdc1 被標記為 faulty
更重要的是,看看是不是收到了同樣的警報郵件,在這種情況下,需要從軟件 RAID 陣列中刪除該設備:
# mdadm /dev/md0 --remove /dev/sdc1
然后,可以直接從機器中取出,并將其使用備用設備來(lái)取代,/dev/sdd 中類(lèi)型為 fd 的分區是以前創(chuàng )建的:
# mdadm --manage /dev/md0 --add /dev/sdd1
幸運的是,該系統會(huì )使用剛才添加的磁盤(pán)自動(dòng)重建陣列,可以通過(guò)標記 /dev/sdb1 為 faulty 來(lái)進(jìn)行測試,從陣列中取出后,并確認 tecmint.txt 文件仍然在 /mnt/raid1 是可訪(fǎng)問(wèn)的:
# mdadm --detail /dev/md0
# mount | grep raid1
# ls -l /mnt/raid1 | grep tecmint
# cat /mnt/raid1/tecmint.txt
這樣添加 /dev/sdd1 到陣列中來(lái)替代 /dev/sdc1,數據的重建是系統自動(dòng)完成的,不需要干預。
還有一個(gè)備用設備可以操作,這樣更換故障的設備就可以在瞬間完成了。要做到這一點(diǎn),要先重新添加 /dev/sdb1 和 /dev/sdc1:
1)# mdadm --manage /dev/md0 --add /dev/sdb1
2)# mdadm --manage /dev/md0 --add /dev/sdc1
五、從冗余丟失中恢復數據
如前所述,當一個(gè)磁盤(pán)發(fā)生故障時(shí), mdadm 將自動(dòng)重建數據。如果是陣列中的2個(gè)磁盤(pán)都故障的情況,通過(guò)標記 /dev/sdb1 和 /dev/sdd1 為 faulty:
1)# umount /mnt/raid1
2)# mdadm --manage --set-faulty /dev/md0 /dev/sdb1
3)# mdadm --stop /dev/md0
4)# mdadm --manage --set-faulty /dev/md0 /dev/sdd1
如果此時(shí)嘗試以同樣的方式重新創(chuàng )建陣列就,或使用 --assume-clean 選項,可能會(huì )導致數據丟失,因此建議不要使用。
可以試著(zhù)從 /dev/sdb1 恢復數據,例如,在一個(gè)類(lèi)似的磁盤(pán)分區/dev/sde1上使用 ddrescue,注意這需要執行前在/dev/sde 上創(chuàng )建一個(gè) fd 類(lèi)型的分區:
# ddrescue -r 2 /dev/sdb1 /dev/sde1
到現在為止,還沒(méi)有觸及的 /dev/sdb 和 /dev/sdd,它們的分區是 RAID 陣列的一部分?,F在,讓我們使用 /dev/sde1 和 /dev/sdf1 來(lái)重建陣列:
# mdadm --create /dev/md0 --level=mirror --raid-devices=2 /dev/sd[e-f]1
注意,在真實(shí)的情況下,需要使用與原來(lái)的陣列中相同的設備名稱(chēng),即設備失效后替換的磁盤(pán)的名稱(chēng)應該是 /dev/sdb1 和 /dev/sdc1。
在本文中,小編是選擇了使用額外的設備來(lái)重新創(chuàng )建全新的磁盤(pán)陣列,是為了避免與原來(lái)的故障磁盤(pán)混淆。當被問(wèn)及是否繼續寫(xiě)入陣列時(shí),鍵入 Y,然后按 Enter鍵,陣列被啟動(dòng),也可以查看它的進(jìn)展:
# watch -n 1 cat /proc/mdstat
當這個(gè)過(guò)程完成后,就能夠重新訪(fǎng)問(wèn) RAID 的數據,最后再確認一下RAID數據。還有一點(diǎn)需要記住,這種技術(shù)是一種存儲解決方案,不能取代備份。
通過(guò)以上步驟,你可以在美國服務(wù)器上的Linux系統中恢復和重建并能夠能夠重新訪(fǎng)問(wèn) RAID 的數據。請注意,數據恢復是一個(gè)復雜的過(guò)程,可能需要專(zhuān)業(yè)的技術(shù)支持。在操作之前,請確保已備份所有重要數據,并謹慎操作。
|