linux – 问:MDADM mismatch_cnt> 0.有什么方法可以确定哪些块存在分歧?

好的.在例行擦洗之后,我的MDADM RAID5报告mismatch_cnt = 16.据我所知,这意味着虽然没有设备报告读取错误,但有16个块,数据和奇偶校验不同意.

问题1:可以获得这些块的列表吗?

问题2:假设#1是可能的,假设底层文件系统是EXT4,有没有办法识别哪些文件与这些块相关联?

我确实有近线备份,在一个理想的世界中,我可以根据备份数据区分实时阵列,找到任何已经被静默损坏的文件.但现实是回想起6TB的备份数据既昂贵又费时.知道在哪里寻找和恢复什么将大大简化事情.

(我应该注意,我只使用’check’选项运行RAID scrub.使用’repair’选项运行scrub似乎非常危险,因为MDADM只知道数据或奇偶校验错误但它不知道哪个.因此,似乎有50%的可能性MDADM猜错并重建不正确的数据.因此我希望知道哪些文件可能受到影响,以便我可以从备份中恢复它们,如有必要)

任何建议都非常感谢!

解决方法

对不起,’check’确实会在遇到错误时写回数组 – 请参阅 https://www.apt-browse.org/browse/ubuntu/trusty/main/amd64/mdadm/3.2.5-5ubuntu4/file/usr/share/doc/mdadm/README.checkarray

‘check’ is a read-only operation,even though the kernel logs may suggest
otherwise (e.g. /proc/mdstat and several kernel messages will mention
“resync”). Please also see question 21 of the FAQ.

If,however,while reading,a read error occurs,the check will trigger the
normal response to read errors which is to generate the ‘correct’ data and try
to write that out – so it is possible that a ‘check’ will trigger a write.
However in the absence of read errors it is read-only.

…所以收集您正在寻找的数据可能已经太晚了,抱歉.

从长远来看,值得注意的是RAID5(以及6和1)没有针对比特腐烂的保护,这可能是您遇到的情况.
当一张光盘中的数据变坏时,他们无法确定哪些数据是好的还是坏的.我建议计划迁移到一个文件系统,用于校验每个光盘,如btrfs或zfs.

(RAID-5确实不应该用于新部署 – 真的不应该是原始光盘容量超过2TB的地方 – 见http://www.zdnet.com/article/why-raid-5-stops-working-in-2009/)

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...