Подтвердить что ты не робот

Имитировать неисправное блочное устройство с ошибками чтения?

Я ищу более простой способ протестировать мое приложение на неисправных блочных устройствах, которые генерируют ошибки чтения ввода-вывода при чтении некоторых блоков. Попытка использовать физический жесткий диск с известными плохими блоками - это боль, и я бы хотел найти программное решение, если оно существует.

Я нашел Linux Simulation Driver, который позволяет создавать интерфейс, который можно настроить для генерации ошибок, когда определенные диапазоны блоков но он предназначен для ядра Linux 2.4 и не обновлен для версии 2.6.

Что было бы идеально, это был бы драйвер losetup и loop, который также позволил бы вам настроить его для возврата ошибок чтения при попытке чтения из заданного набора блоков.

4b9b3361

Ответ 1

Это не устройство петли, которое вы ищете, а скорее устройство-картограф.

Используйте dmsetup для создания устройства, поддерживаемого целью "ошибка". Он появится в /dev/mapper/<name>.

Страница 7 Представление устройства (PDF) имеет именно то, что вы ищете:

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), чтобы создать чистый диск с ошибкой.

См. также Приложение Device Mapper от" RHEL 5 Администрирование диспетчера логических томов ".

Ответ 3

Самый простой способ играть с блочными устройствами - nbd.

Загрузите источники userland из git://github.com/yoe/nbd.git и измените nbd-server.c на провал при чтении или записи в тех областях, в которых вы хотите, чтобы они терпели неудачу, или сбой в управляемом случайном шаблоне или в основном все, что вы хотите.