web-dev-qa-db-ja.com

dd if = / dev / zero of = / dev / sdaは既存のパーティションテーブルを一掃しますか?

# dd if=/dev/zero of=/dev/sdaは既存のパーティションテーブルを一掃しますか?

それとも、その逆ですか、つまり

# fdisk /dev/sdag(GPTの場合)

/dev/zeroによって書かれたゼロを一掃しますか?

13
tilikoom

dd if=/dev/zero of=/dev/sdaは既存のパーティションテーブルを消去しますか?

はい、パーティションテーブルはドライブの最初の部分にあるため、上書きすると破壊されます。そのddを実行すると、ドライブ全体が上書きされます(そのため、かなり時間がかかります)。

dd bs=512 count=50 if=/dev/zero of=/dev/sdaのようなもので、MBRパーティションテーブルやプライマリGPTを含む最初の50セクターを上書きできます。少なくともWikipediaによると GPTにはドライブの最後にパーティションテーブルの2次コピーがあります なので、ドライブのヘッドの一部だけを上書きするだけでは不十分な場合があります。

(ただし、ddを使用する必要はありません。head -c10000 /dev/zero > /dev/sdaまたはcat /bin/ls > /dev/sdaでも同じ効果があります。)

fdisk /dev/sda g(GPTの場合)は、/ dev/zeroによって書き込まれたゼロを消去しますか?

また、はい(変更を保存した場合)。

(ただし、タイトルのフレージングは​​混乱を招くだけであり、/dev/zero自体は通常のストレージよりもdo何もしません。)

23
ilkkachu

パーティションテーブルは最初の方に格納されています1 (論理的2)ディスクデバイス。

その領域を何か(/dev/zeroからのゼロまたはその他のデータ)で上書きすると、パーティションテーブルが意味不明なものに置き換えられるため、デバイスのパーティションがどこから始まるのかがはっきりしなくなります。
ただし、ディスク全体をスキャンして、ファイルシステムの始まりを示す「マジックバイト」を特定することもできます。

逆に、fdisk(またはその他のパーティション分割ツール)を使用して新しいパーティションテーブルを作成すると、ツールはディスクの最初の数バイトを上書きして、その新しいテーブルを格納します。

ディスクへの始まりは1つしかないので、最後に行うことはそこに「固定」されます。

ただし、一部のパーティションテーブルフォーマット(GPTなど)は、バックアップコピーをさまざまな場所(たとえば、GPTのディスクの最後)に保持し、そこからパーティション情報の一部を復元できることに注意してください。

1:例 MBRの最初の512バイト または GPTの最初と最後の17408バイト
2:ドライブは内部で論理ブロックを物理メディアのさまざまな部分に再マッピングできますが、そのマッピングはオペレーティングシステムからは見えません(重要ではありません)。

10
n.st