電源故障/隨機重啟後如何檢查 mdadm RAID5 完整性
所以我目前正在建構一個連接到我的家庭伺服器的 mdadm RAID5 陣列。硬體是帶有 Mediasonic Probox 4 托架外殼的 Odroid N2 SBC。該陣列目前正在重建,並且已經持續了幾天,但正在穩步移動。我正在使用帶有舊版 4.9.180 核心的 armbian 拉伸。
昨晚,我正在使用系統(但不是驅動器)並且正在對不同 USB 驅動器上的文件執行校驗和。N2 的 USB 驅動程序中目前存在一個未解決的錯誤,該錯誤會因高 I/O 活動而加劇。N2 隨後在昨晚 11 點 40 分左右死亡。
N2 幾乎立刻就回來了,直到早上我才注意到。但是,mdadm 陣列重建在 75% 時暫停。我恢復了重建,並且進展順利,但我想確保我沒有對新陣列造成持久的傷害。
是否有任何 mdadm 實用程序可用於確認奇偶校驗數據中沒有錯誤?陣列上沒有文件系統,所以我認為在這種情況下我不能使用 fsck
(一旦目前重建完成,)您可以執行檢查:
mdadm --wait /dev/mdX # wait for rebuild to finish mdadm --action=check /dev/mdX # or if mdadm is too old: echo check > /sys/block/mdX/md/sync_action
然後觀看
mismatch_cnt
:watch cat /sys/block/mdX/md/mismatch_cnt
只要它保持為 0,奇偶校驗就可以了。
另請參閱
man md
,SCRUBBING AND MISMATCHES
。A count of mismatches is recorded in the sysfs file md/mismatch_cnt. This is set to zero when a scrub starts and is incremented whenever a sector is found that is a mismatch. md normally works in units much larger than a single sector and when it finds a mismatch, it does not determine exactly how many actual sectors were affected but simply adds the number of sectors in the IO unit that was used. So a value of 128 could simply mean that a single 64KB check found an error (128 x 512bytes = 64KB).
這個過程將與重建本身一樣長……因為它基本上與重建做同樣的事情。有關進度,請參閱
/proc/mdstat
。也可以只測試一個特定的區域——如果你只想檢查 75% 左右——但它更複雜,因為(我認為)沒有命令選項
mdadm
。您可以設置md/sync_min
,md/sync_max
來確定一個範圍(預設範圍0-max
覆蓋整個設備)。如果您希望 parity 是固定的,而不是純粹的資訊
check
,請使用repair
which fix parity。但是,您必須確保數據正確,並且奇偶校驗不正確。否則,如果您可以辨識出具有不正確數據的單個磁碟(無論是數據還是奇偶校驗),您必須刪除該磁碟並將其添加為新磁碟並再次重建。不幸的是,為不匹配處理確定正確的行動方案可能非常複雜……