使用读取错误模拟故障块设备?

Ste*_*veG 14 linux device device-emulation

我正在寻找一种更简单的方法来测试我的应用程序,以防止在读取某些块时产生i/o读取错误的错误块设备.尝试使用已知坏块的物理硬盘很痛苦,我想找到一个软件解决方案(如果存在的话).

我确实找到了Linux磁盘故障模拟驱动程序,它允许创建一个接口,可以配置为在读取某些范围的块时生成错误,但它适用于2.4 Linux内核并且尚未针对2.6进行更新.

什么是完美的将是一个losetup和循环驱动程序,它还允许您配置它以在尝试从给定的一组块读取时返回读取错误.

Pet*_*des 24

它不是您正在寻找的环回设备,而是设备映射器.

使用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
Run Code Online (Sandbox Code Playgroud)

或者将sdb1部分省略并将"错误"目标作为块0 - 8(而不是sdb1)的设备来制作纯错误磁盘.

另请参阅"RHEL 5逻辑卷管理器管理"中的" 设备映射器"附录.