В Ubuntu 14.04, когда я пытаюсь:
sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0'
(или delay
target), я получаю ошибку:
device-mapper: перезагрузите ioctl при тестировании fail: Недопустимый аргумент
Команда не выполнена
Но когда я использую цель error
, она успешно выполняется.
Как я могу создать «нестабильное» устройство, используя dmsetup
?
Неправильный синтаксис (может быть это, был для более старой версии), правильный формат:
'<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 (пакет): /usr/share/doc/linux-doc/device-mapper/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
Найденный этим потоком: картопостроитель устройства: удалите отказавший 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 (реальная машина)
я пытался делать это в своем предыдущем задании, где я тестировал устройство хранения. Проблема с хлопьевидным состоит в том, что это является обычно слишком хлопьевидным в неправильных местах и вызывает слишком резкую ошибку. У Вас есть он набор к ошибке каждая вторая секунда, которая слишком резка для чего-либо кроме судебных инструментов.
необходимо указать, как устройство является хлопьевидным, значение по умолчанию к серьезной ошибке, которая является тем, что препятствует тому, чтобы Вы использовали его, существует две других опции - drop_writes, и записи отбрасывания corrupt_bio_byte
- приведут все записи к сбою, но чтения успешно выполняются
, corrupt_bio_byte - вероятно, в чем Вы нуждаетесь, поскольку это допускает более тонкую поломку, которая возможна для инструментов обработать.
документация для dmflakey здесь https://www.kernel.org/doc/Documentation/device-mapper/dm-flakey.txt
, например:
Это должно генерировать, вызывают каждый 32-й байт каждого ЧТЕНИЯ, которое было 1, чтобы быть 0
sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0 1 corrupt_bio_byte 32 r 1 0'