Невозможно создать нестабильную файловую систему для тестирования
В Ubuntu 14.04, когда я пытаюсь:
sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0'
(или delay
цель), я получаю ошибку:
устройство-маппер: перезагрузить ioctl в тесте не удалось: неверный аргумент
Команда не выполнена
Но когда я использую error
цель это удается.
Как я могу создать устройство "flakey", используя dmsetup
?
2 ответа
Короткий ответ:
Неверный синтаксис (может быть , для старой версии), правильный формат:
'<logical_start_sector> <num_sectors> flakey <dev path> <offset> <up interval> <down interval>'
dev_path
приходит первымНевозможный доступ к смонтированной базовой файловой системе. избежать
mount
:sudo losetup <loop_device> <image_file>
Подробности:
Я получил ту же ошибку, используя цикл файловой системы
~$ sudo mount -o loop image.iso ~/Desktop/rmme0 mount: /dev/loop4 is write-protected, mounting read-only ~$ sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop4' device-mapper: reload ioctl on test failed: Invalid argument Command failed
Это был неправильный синтаксис, так как мог найти ссылку:
linux-doc (пакет): /usr/share/doc/linux-doc/ устройство-сопоставитель / dm-flakey.txt
Table parameters ---------------- <dev path> <offset> <up interval> <down interval> \ [<num_features> [<feature arguments>]] Mandatory parameters: <dev path>: Full pathname to the underlying block-device, or a "major:minor" device-number. <offset>: Starting sector within the device. <up interval>: Number of seconds device is available. <down interval>: Number of seconds device returns errors.
Итак, еще раз с:
~$ sudo dmsetup -v create test --table '0 123 flakey /dev/loop4 0 10 2' device-mapper: reload ioctl on test failed: Device or resource busy Command failed
Найден этот поток: device-mapper: удалить ioctl не удалось: устройство или ресурс занят Команда не выполнена. В итоге это сообщение могло появиться, когда основная файловая система уже смонтирована.
Итак, проверил с разделами жесткого диска
~$ sudo dmsetup create test --table '0 123 flakey /dev/sda1 0 10 2' ~$ file /dev/mapper/test /dev/mapper/test: symbolic link to ../dm-0
Вы можете проверить подробно, используя подробный флаг:
sudo dmsetup -vvv create test --table '0 123 flakey /dev/sda1 0 10 2'
Устройство петли не должно быть установлено, поэтому избегайте использования
mount
создать это. Альтернативный способ, используяlosetup
:sudo losetup /dev/loop4 image.iso sudo dmsetup create test --table '0 123 flakey /dev/loop4 0 10 2'
Протестировано на Xubuntu 16.04 (реальная машина)
Я попытался сделать это на своей предыдущей работе, где я тестировал устройство хранения. Проблема с flakey заключается в том, что он обычно слишком ненадежен в неправильных местах и вызывает слишком грубую ошибку. Вы устанавливаете его на ошибку каждую секунду, что слишком резко для чего-либо, кроме криминалистических инструментов.
Вам нужно указать, как устройство работает некорректно, по умолчанию это тяжелая ошибка, из-за которой вы не можете его использовать, есть два других варианта - drop_writes и поврежден_bio_byte
отбросить записи - все записи не будут выполнены, но чтение выполнено успешно
Поврежденный_bio_byte - это, вероятно, то, что вам нужно, поскольку он допускает более тонкий разрыв, который возможен для инструментов.
Документация для dmflakey находится здесь https://www.kernel.org/doc/Documentation/device-mapper/dm-flakey.txt
например:
Это должно привести к тому, что каждый 32-й байт каждого READ, равный 1, будет равен 0.
sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0 1 corrupt_bio_byte 32 r 1 0'