问:MDADM mismatch_cnt>0。有什么方法可以确定哪些块不一致?


12

好的。经过例行清理之后,我的MDADM RAID5报告了mismatch_cnt =16。据我所知,这意味着尽管没有设备报告读取错误,但有16个块的数据和奇偶校验不一致。

问题1:能否获得这些区块的列表?

问题2:假设基础文件系统是EXT4,则可能存在#1,是否有办法识别与这些块关联的文件?

我确实有近线备份,并且在理想情况下,我可以将实时阵列与备份数据进行比较,以找到已被静默损坏的任何文件。但是现实是,召回6TB备份数据既昂贵又费时。知道在哪里寻找和恢复什么将大大简化事情。

(我应该注意,我只使用'check'选项运行RAID scrub。使用'repair'选项运行scrub似乎非常危险,因为MDADM只知道数据或奇偶校验是错误的,但不知道是哪一个。因此,MDADM似乎有50%的机会猜错并重建不正确的数据。因此,我希望知道哪些文件可能受到影响,以便在需要时可以从备份中还原它们。

任何建议,不胜感激!


检查dmesg还是/ var / log / syslog?
psusi

你好 据我所知,洗涤器记录到syslog的唯一消息是开始消息和停止消息。没有记录有关不匹配的消息。
arcasinky

请参阅icheck+ ncheckdebugfs以基于扇区偏移量识别文件。
sch

我尝试为扇区号添加日志记录。现在我想弄清楚下一步该怎么做:unix.stackexchange.com/questions/266432/…–
彼得·科德斯

2
我不知道磁盘有问题,但请检查磁盘。使用smartmontools软件包对每个磁盘执行此操作(smartctl -a /dev/sda以此类推),或使用其他任何方法对每个磁盘运行简短的SMART测试并打印完整的报告。其中一个很可能快要死了,并且要触发一个整体SMART健康警报,这需要很严重的麻烦。
后台打印程序

Answers:


1

抱歉,“检查”确实在遇到错误时确实会写回阵列-请参阅https://www.apt-browse.org/browse/ubuntu/trusty/main/amd64/mdadm/3.2.5-5ubuntu4/file /usr/share/doc/mdadm/README.checkarray

即使内核日志可能另外建议,“ check”也是只读操作(例如/ proc / mdstat和一些内核消息将提及“重新同步”)。另请参阅常见问题解答中的问题21。

但是,如果在读取时发生读取错误,则检查将触发对读取错误的正常响应,从而生成“正确的”数据并尝试将其写出-因此,“检查”可能会触发写。但是,在没有读取错误的情况下,它是只读的。

...所以收集您要查找的数据可能已经为时已晚,抱歉。

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

(RAID-5确实不应该在新的部署中使用-并且在每个原始磁盘的容量都超过2TB的地方也确实不应该-参见http://www.zdnet.com/article/why-raid-5-停止工作于2009 /

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.