Ubuntu 14.04では、次のことを試みます。
Sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0'
(またはdelay
ターゲット)、エラーが表示されます:
device-mapper:テスト時のioctlのリロードに失敗しました:引数が無効です
コマンドが失敗しました
しかし、error
ターゲットを使用すると、成功します。
dmsetup
を使用して「flakey」デバイスを作成するにはどうすればよいですか?
間違った構文( 古いバージョンの場合 )、正しい形式:
'<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/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
このスレッドが見つかりました: device-mapper:remove ioctl failed:Device or resource busy Command failed 。基になるファイルシステムが既にマウントされている場合、メッセージが発生する可能性がありました。
だから、ハードディスクのパーティションでチェック
~$ 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(実機)でテスト済み
ストレージアプライアンスをテストしていた以前の仕事でこれを試しました。フレイキーの問題は、通常、間違った場所ではフレークが多すぎて、過酷なエラーが発生することです。 1秒おきにエラーが発生するように設定しているため、フォレンジックツール以外には過酷です。
デバイスのフレーク方法を指定する必要があります。デフォルトはハードエラーであり、これが使用を妨げています。他に2つのオプションがあります-drop_writesとcorrupt_bio_byte
ドロップ書き込み-すべての書き込みは失敗しますが、読み取りは成功します
corrupt_bio_byte-ツールが処理できる微妙な破損を可能にするため、おそらく必要なものです。
Dmflakeyのドキュメントはこちら https://www.kernel.org/doc/Documentation/device-mapper/dm-flakey.txt
例えば:
これにより、1であった各READの32バイトごとに0になる原因が生成されます。
Sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0 1 corrupt_bio_byte 32 r 1 0'