前二天,突然之間電腦就上不了網路。重開機之後發現,開機時沒有辦法 Mount Root Disk.
我的 Root Disk 是用 Raid1 + XFS 做的, 硬碟的規劃是
md1 : 100M etx3 booting 用
md2: 40G xfs Root File System 用
md3: 4G swap
md4: /home
用 kubuntu 7.04 開機之後, 檢查了一下, 看起來像是 xfs 系統亂掉, 所以就做一次 xfs_repair /dev/md2, 不過要清掉一些 LOG, 所以下的是 xfs_repair -L /dev/md2
第一次重開機是成功的, 但是跑一小時時間會 I/O Error,
所以我又開起來, mount 起來看系統有沒有問題?
檢查的結果是 xfs_repair 之後,所有的程式都沒有問題,看起來就不是 glibc 死掉,感覺像是 xfs 掛了。不過這時候我並沒有證據是 xfs 死掉造成的.
就這樣重覆修修開開, 終於有一次注意到, 開機時死掉的訊息有一段是
“XFS internal error XFS_WANT_CORRUPTED_RETURN”
查了一下, 網路上的資料不多(還能被我碰上實在不簡單), 有人說是減少檔案數目就可以, 其他的網頁到是沒有講到解決方案.
我做過減少數量, xfs_check and xfs_repair, 重新 format filesystem 都無效.
最後失望之餘, 改用 ext3, 發現還是 mount 不起來, 這就讓我懷疑了, 到底是那一塊出問題?
後來在檢查 mdadm -D /dev/md2 時, 發現 persistence : no block persistent.
再檢查 mdadm -D /dev/sda2, /dev/sdb2 , 都找不到 raid block, 但是 mdadm -D /dev/md1 雖然是 persistence: no block persistent, 但是 Disk 部份是找得到 Raid 的 Super Block .
這應該就是原因了, 檢查了一下, 重新 create 一次 raid1 device 就沒有問題了.
個人猜想原因可能是 xfs 系統大亂, 影響到 /dev/md1 /dev/md2 /dev/md3 等等 file system, 但是從 raid 的 super block 也被破壞等跡像來看, 可能是 Linux 內 xfs 和 Raid 配合有問題所致. 不過個人急著上線, 所以無法驗証.
我用 xfs + Linux raid 有數年的經驗, 沒有一次像這樣災情這麼嚴重, 前前後後花了將近 8 小時去找出問題並修復, 還好資料並沒有毀損, 不過經歷這次經驗, 以後會對 xfs 有戒心了.
以下是相關修復指令, 備用.
強迫安裝
# lftp ftp.twaren.net
>cd ubuntu/pool/main/m/madm
>get mdadm_2.6.3-xxxxx.deb
# dpkg -i –force-all madm_2.6.3-xxxxxxx.deb
重建 Raid
# mdadm –build /dev/md2 –level=2 –raid-devices=2 /dev/sd[ab]2
重新 Create Raid
# mdadm –create /dev/md2 –level=2 –raid-devices=2 /dev/sd[ab]2
cail
请教,你重建了RAID1,怎么能够“還好資料並沒有毀損”?是不是先前有备份?
richliu
當然是有備份, 這一次 Raid1 雖然有問題, 但是 xfs 還是可以修復的. 所以先備份過再重建.
不過即使是這樣, 我也是定期有做 Offline 備份的.