我正在寻找一种更简单的方法来针对在读取某些 block 时生成 i/o 读取错误的故障 block 设备测试我的应用程序。尝试使用具有已知坏 block 的物理硬盘驱动器是一种痛苦,如果存在的话,我想找到一种软件解决方案。
我确实找到了 Linux Disk Failure Simulation Driver它允许创建一个接口(interface),该接口(interface)可以配置为在读取特定范围的 block 时生成错误,但它适用于 2.4 Linux 内核并且尚未针对 2.6 进行更新。
完美的是一个 losetup 和循环驱动程序,它还允许您将其配置为在尝试从给定的一组 block 中读取时返回读取错误。
最佳答案
您要找的不是环回设备,而是设备映射器。
使用 dmsetup
创建一个由“错误”目标支持的设备。它将显示在 /dev/mapper/<name>
中.
Device mapper presentation (PDF) 的第 7 页正是您要找的东西:
dmsetup create bad_disk << EOF
0 8 linear /dev/sdb1 0
8 1 error
9 204791 linear /dev/sdb1 9
EOF
或者省略 sdb1
部分并将“错误”目标作为 block 0 - 8 的设备(而不是 sdb1
)以制作纯错误磁盘。
另见 The Device Mapper “RHEL 5 的附录 逻辑卷管理器管理”。
还有一个 flakey
目标 - linear
的组合和 error
有时会成功。还有一个delay
故意延迟测试。
关于linux - 模拟有读取错误的故障 block 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870696/