如何让Linux软件RAID1检测光盘损坏?

前端之家收集整理的这篇文章主要介绍了如何让Linux软件RAID1检测光盘损坏?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是噩梦般的日子之一:在 Linux SW-RAID1上运行的虚拟化服务器运行的VM在看似随机代码块中展示随机错误.

在调试时,我发现文件在每次运行时都会给出不同的md5sums.深入挖掘我发现:构成RAID1镜像的原始磁盘分区包含2位差异和大约1位差异.一个光盘上有9个扇区完全为空,另一个光盘上有数据填充.

显然,Linux从镜像集的不确定选择的光盘中返回一个扇区.因此,有时相同的扇区返回OK,有时会损坏返回.

docs说:

RAID cannot and is not supposed to guard against data corruption on the media. Therefore,it doesn’t make any sense either,to purposely corrupt data (using dd for example) on a disk to see how the RAID system will handle that. It is most likely (unless you corrupt the RAID superblock) that the RAID layer will never find out about the corruption,but your filesystem on the RAID device will be corrupted.

谢谢.那会帮我睡觉. : – /

有没有办法让Linux至少通过使用扇区校验和或类似的东西来检测这种损坏?这会在RAID5设置中被检测到吗?这是我希望我使用ZFS还是btrfs(一旦没有超级管理员功能就可以使用)的那一刻?

编辑:I am not alone.

解决方法

您可以强制检查(例如)md0
echo "check" > /sys/block/md0/md/sync_action

您可以使用检查测试的状态

cat /sys/block/md0/md/sync_action

当它返回检查检查正在运行,一旦它返回空闲你就可以做

cat /sys/block/$dev/md/mismatch_cnt

查看不匹配计数是否为零.无论如何,许多发行版都会自动执行此检查,例如每周为您运行,就像大多数工业硬件RAID在后台持续运行一样(它们通常称之为“RAID擦除”),而阵列则处于空闲状态.请注意,根据fedora的自动检查文件中的注释,内核中的RAID1写入是无缓冲的,因此即使对于健康的阵列,如果安装了阵列,则不匹配计数也可能为非零.

因此,在VM停机时通过执行此检查来停止阵列,如果可能的话,可能是个好主意.

我补充说,当他们这样说时我同意这些文件

RAID cannot and is not supposed to
guard against data corruption on the
media

RAID应该防止设备完全失效;防止存储设备元素中的增量随机故障是错误检查和块重新映射的工作,这可能最好在控制器本身中完成.我很高兴文档警告人们RAID的局限性,特别是如果它是在片状设备上实现的话.我发现对驱动器进行频繁的smartctl运行状况检查可以帮助我保持在驱动器之上,驱动器开始显示导致不同步镜像的错误.

猜你在找的Linux相关文章