因此,我目前正在构建一个附加到我的家庭服务器的 mdadm RAID5 阵列。硬件是 Odroid N2 SBC,附有 Mediasonic Probox 4 托架外壳。该阵列目前正在重建,已经进行了数天,但进展稳定。我正在将 armbianstretch 与旧版 4.9.180 内核一起使用。
昨晚,我正在使用系统(但不是驱动器)并对另一个 USB 驱动器上的文件运行校验和。目前,N2 的 USB 驱动程序中存在一个未解决的错误,该错误会因高 I/O 活动而加剧。 N2随后于昨晚11点40分左右死亡。
N2 几乎立刻就回来了,直到早上我才注意到。但是,mdadm 阵列重建在 75% 时暂停。我恢复了重建,进展顺利,但我想确保我没有对新阵列造成持久损害。
是否有任何 mdadm 实用程序可以用来确认奇偶校验数据中没有错误?阵列上没有文件系统,因此我认为在这种情况下不能使用 fsck
答案1
(当前重建完成后,)您可以运行检查:
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
覆盖整个设备)。
如果您希望固定奇偶校验,check
请使用repair
修复奇偶校验,而不是纯粹提供信息。但是您必须确保数据正确且奇偶校验不正确。否则,如果您可以识别出单个磁盘包含不正确的数据(无论是数据还是奇偶校验),则必须删除该磁盘并将其添加为新磁盘并再次重建。
不幸的是,确定不匹配处理的正确行动方案可能相当复杂......