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

StackOverflow https://stackoverflow.com/questions/1870696

  •  18-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Вы ищете не устройство обратной связи, а скорее устройство сопоставления устройств.

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

Страница 7 из Презентация Device mapper (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) чтобы создать чистый диск с ошибкой.

Смотрите также Устройство отображения приложение из "RHEL 5 Администрирование диспетчера логических томов".

Другие советы

Похоже, что было бы неплохо использовать встроенные в Linux возможности для устранения неисправностей.

Блог: http://blog.wpkg.org/2007/11/08/using-fault-injection/
Ссылка: https://www.kernel.org/doc/Documentation/fault-injection/fault-injection.txt

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top