ddを使用してランダムデータを書き込むとディスクパーティションが作成されるのはなぜですか?


11

ddコマンドを実行する前に、コマンドlsblkは以下の出力を返しました。

NAME              MAJ:MIN  RM   SIZE    RO TYPE  MOUNTPOINT
sda               8:0       0    931.5G  0  disk  

コマンドdd if=/dev/urandom of=/dev/sda conv=fsync status=progressが実行されます。ただし、デバイスは電力を失い、シャットダウンします。電源が回復すると、コマンドlsblkは次の出力を返します。

NAME              MAJ:MIN     RM   SIZE    RO TYPE  MOUNTPOINT
    sda           8:0          0   931.5G  0  disk 
      sda2        8:2          0   487.5G  0  disk

@RuiFRibeiro-類推に感謝しますが、dd特にコマンドがディスクを消去することを意図している場合、なぜパーティションになるのかは明確ではありませんか?
2019年

1
一致:停電に関連している可能性は非常に低いです。デバイスにランダムデータを書き込みます。このランダムデータの一部は最初の数ブロックに行きました、これはパーティションテーブルが存在する場所です。おそらくパーティションを定義することになりました。
ctrl-alt-delor

file /dev/sda*and の結果を投稿できますsudo fdisk -l /dev/sda*か?
phuclv

@phuclv-プロセスを開始しても、出力はまだ価値がありますか?
やる気

1
@Motivated dd目的は、ディスクを消去すること自体ではないことに注意してください。ランダムデータをディスクに書き込むと、ランダムな結果が生成される可能性があります。
jjmontes

回答:


20

いくつかの可能性:

  • Linuxは多くの異なるパーティションテーブルタイプをサポートしますが、その一部はごく少数のマジックバイトを使用するため、ランダムデータ(*)を誤認識しやすくなります(したがって、「有効な」パーティションテーブルをランダムに生成できます)。

  • 一部のパーティションテーブルタイプには、ディスクの最後にもバックアップがあり(特にGPT)、ドライブの開始がランダムガベージに置き換えられた場合にそれを検出できます。

  • デバイスは正常に動作せず、データの書き込みが完了する前に切断されたか、古いデータを返し続けるため、パーティションテーブルは存続します。これはUSBスティックで発生する場合があります。

  • ...

(*)ランダムなデータを含む1000個のファイルを作成し、何が表示されるかを確認します。

$ truncate -s 8K {0001..1000}
$ shred -n 1 {0001..1000}
$ file -s {0001..1000} | grep -v data
0099: COM executable for DOS
0300: DOS executable (COM)
0302: TTComp archive, binary, 4K dictionary
0389: Dyalog APL component file 64-bit level 1 journaled checksummed version 192.192
0407: COM executable for DOS
0475: PGP\011Secret Sub-key -
....

ドライブをランダムに細断する目的は、古いデータを完全に消滅させることです。その後、ドライブが空の未使用の状態で元の状態に保たれるという保証はありません。

それを達成するためにゼロワイプでフォローアップするのが一般的です。LVMを使用している場合、LVMが作成するLVの最初のいくつかのセクターをゼロにするのは正常なことであり、古いデータが干渉しないようにします。

wipefsファイルシステムとパーティションテーブルのメタデータを削除するために使用できる、古いマジックバイト署名を削除するための専用ユーティリティ()もあります。


デバイスは、以前はATA Secure Eraseコマンドを使用して消去されていました。これにより、次のようなデータが削除されると思います。1.回復不能2.パーティション情報が残っていない。これが当てはまる場合、ddコマンドを実行しているときに、割り込み時にランダムデータが生成されると、データがパーティションテーブルのようになる可能性があるということですか?また、これらはSATAハードディスク(非SSD)です。
意欲的な

5
ランダムデータはどのようなものでもかまいません。それがランダムであることの意味です。あなたは無限の猿の定理に精通していますか?それは、十分に大量のサルがランダムにタイプライターで長い時間タイプする場合、ある時点で別のサルがシェイクスピアの完全な作品を作成すると述べています。MBRパーティションテーブルは非常に小さく(64バイトのみ)、チェックサムや検証がなく、非常に高密度の形式です。64バイトのランダムな文字列が有効なパーティションテーブルを作成する可能性が高くなります。他のパーティションテーブルフォーマットも同様に単純です。
ヨルグWミットタグ

はい、パーティションテーブルは64バイトのみです(最後に)パーティションタイプは1バイトのみで、エントリは合法的または連続的である必要があります。したがって、MBRの最初のクラスター/セクター/ 512バイトをゼロにすることは賢明です。また、予想外のブート動作を望んでいない可能性は低いですが、それでもリスクはあります。
mckenzm

18

ここに見られるように、MBR(マスターブートレコード)は比較的単純です。https://en.wikipedia.org/wiki/Master_boot_record

使用する/dev/urandomと、いつでもパーティションテーブルのようなものを作成できます。解決策は、パーティションテーブル領域をゼロで埋めてdev/urandom、残りに使用することです。

また、Linuxは、トリガーされる可能性のある他の追加のディスクフォーマットもサポートしているため、ランダムデータでいっぱいになると「無効な」パーティションが表示されます。


13

512バイトのコレクションをマスターブートレコードとして定義するの0x55 0xAAは、最後に値が存在することです。この/dev/urandomような値を生成する可能性は65,536分の1 です。可能性はあまり高くありませんが、同様にありそうもないことが常に発生します。

Apple Partition Mapなどの他のパーティションテーブルには、同様に短いシグネチャがあります。代わりに、それらの1つを生成した可能性があります。)


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.