使っています不良ブロックディスク上のすべてのデータを破壊的に消去するには、次のコマンドを使用します。
badblocks -wsp 0 /dev/sdb1
このオプションをパスすると-p 0
、1 回だけパスされるだろうと期待しましたが、複数のパスが取得されます。
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done
Testing with pattern 0xff: done
Reading and comparing: 19.01% done, 7:43:47 elapsed. (0/0/0 errors)
マニュアルページを読むと、オプション自体に 4 つのパスが含まれていることがわかります-w
。
-w 書き込みモード テストを使用します。このオプションを使用すると、badblocks はデバイスのすべてのブロックにいくつかのパターン (0xaa、0x55、0xff、0x00) を書き込み、すべてのブロックを読み取って内容を比較することにより、不良ブロックをスキャンします。このオプションは -n オプションと組み合わせることはできません。これらは相互に排他的です。
これは私のニーズには過剰です。単一の破壊パスを実現する方法はありますか?
答え1
マニュアルページをさらに読んでみると、問題は解決しました。オプション-w
の説明からわかるように、確かに 1 回のパスが実行されます。-p
デフォルトは 0 で、最初のパスの後に badblocks が終了することを意味します。
パスは 4 つのテスト パターンで構成されます。
-w 書き込みモード テストを使用します。このオプションを使用すると、badblocks はデバイスのすべてのブロックにいくつかのパターン (0xaa、0x55、0xff、0x00) を書き込み、すべてのブロックを読み取って内容を比較することで不良ブロックをスキャンします。
パターンは-t
オプションを使用して上書きできます:
-t test_pattern ディスク ブロックに読み込まれる (および書き込まれる) テスト パターンを指定します。test_pattern は、0 から ULONG_MAX-1 までの数値、またはブロックがランダム ビット パターンで埋められることを指定する「random」という単語のいずれかになります。読み取り/書き込み (-w) および非破壊 (-n) モードの場合、必要なテスト パターンごとに -t オプションを指定して、1 つ以上のテスト パターンを指定できます。読み取り専用モードでは、1 つのパターンのみを指定でき、「random」を指定することはできません。パターンを使用した読み取り専用テストでは、指定されたパターンが以前にディスクに書き込まれていることが前提となります。そうでない場合、多数のブロックが検証に失敗します。複数のパターンを指定した場合、すべてのブロックが 1 つのパターンでテストされてから、次のパターンに進みます。
コマンドと出力の例:
# badblocks -wsvt 0 /dev/sdz
Checking for bad blocks in read-write mode
From block 0 to 488386583
Testing with pattern 0x00: done
Reading and comparing: done
Pass completed, 0 bad blocks found. (0/0/0 errors)
答え2
エラーを探すのではなく、データを破壊することが目的であれば、次のようにすればよい。
dd if=/dev/zero of=/dev/sdX status=progress
ここで、X はターゲット デバイスの文字です。
しかし、ディスク上のデータが本当に心配な場合は、dd を複数回実行したり、wipe や shred などの他のツールを使用したり、badblocks に任せたりすることができます。すべては、データの削除に費やす時間次第です。