我正在寻找一种更简便的方法来针对有故障的块设备测试我的应用程序,这些设备在读取某些块时会产生I / O读取错误。尝试使用具有已知坏块的物理硬盘驱动器很痛苦,我想找到一种软件解决方案(如果存在)。
我确实找到了Linux磁盘故障模拟驱动程序,该驱动程序允许创建一个接口,该接口可以配置为在读取某些范围的块时生成错误,但是它是针对2.4 Linux内核的,而尚未针对2.6更新。
最好是一个lostup and loop驱动程序,该驱动程序还允许您将其配置为在尝试从给定的一组块读取时返回读取错误。
它不是您要查找的环回设备,而是设备映射器。
使用dmsetup创建的“错误”目标支持的设备。它将显示在中/dev/mapper/<name>。
dmsetup
/dev/mapper/<name>
设备映射器演示文稿(PDF)的第7页完全符合您的要求:
dmsetup create bad_disk << EOF 0 8 linear /dev/sdb1 0 8 1 error 9 204791 linear /dev/sdb1 9 EOF
或省去sdb1零件,将“错误”目标作为块0-8(而不是sdb1)的设备制成纯错误磁盘。
sdb1
另请参见“ RHEL 5逻辑卷管理器管理”中的设备映射器附录。