web-dev-qa-db-ja.com

テスト用のflakeyファイルシステムを作成できません

Ubuntu 14.04では、次のことを試みます。

Sudo dmsetup create test --table '0 123 flakey 1 0 /dev/loop0'

(またはdelayターゲット)、エラーが表示されます:

device-mapper:テスト時のioctlのリロードに失敗しました:引数が無効です
コマンドが失敗しました

しかし、errorターゲットを使用すると、成功します。

dmsetupを使用して「flakey」デバイスを作成するにはどうすればよいですか?

4

簡潔な答え:

  • 間違った構文( 古いバージョンの場合 )、正しい形式:

    '<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(実機)でテスト済み

2
user.dz

ストレージアプライアンスをテストしていた以前の仕事でこれを試しました。フレイキーの問題は、通常、間違った場所ではフレークが多すぎて、過酷なエラーが発生することです。 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'
0
Amias