ドライブにランダムデータを入れるときに、GNU shred が dd よりも速いのはなぜですか?

ドライブにランダムデータを入れるときに、GNU shred が dd よりも速いのはなぜですか?

廃棄前にハードドライブを安全に消去する際に、同じコンピューターと同じドライブを使用するdd if=/dev/urandom of=/dev/sdaと数時間しかかからないのに対し、ほぼ丸一日かかることに気付きました。shred -vf -n 1 /dev/sda

これはどうして可能なのでしょうか? ボトルネックとなっているのは の出力が限られていることだと思います/dev/urandom。shred は よりもランダム性が低く、単一の目的にのみ十分な (つまり、より効率的な) 疑似乱数ジェネレータを使用しているのでしょうかurandom?

答え1

細断する内部の疑似乱数ジェネレータを使用する

デフォルトでは、これらのコマンドは少量のエントロピーで初期化された内部疑似乱数ジェネレータを使用しますが、--random-source=file オプションを使用して外部ソースを使用するように指示できます。ファイルに十分なバイトが含まれていない場合はエラーが報告されます。

たとえば、デバイスファイル/dev/urandomランダムデータのソースとして使用できます。通常、このデバイスはデバイスドライバーやその他のソースからの環境ノイズをエントロピープールに収集し、そのプールを使用してランダムビットを生成します。プールのデータが不足している場合は、デバイスは内部プールを再利用して、暗号的に安全な疑似乱数ジェネレータを使用してより多くのビットを生成します。ただし、このデバイスは大量のランダムデータ生成用に設計されていないことに注意してください。 比較的遅い

ランダムデータが、シングルパスゼロ(またはその他のバイト値) によって、以前のコンテンツが隠されます。

ドライブを安全に廃止するには、大きな磁石と大きなハンマーを使用します。

答え2

ddむしろ、より小さなチャンクを使用してデータを書き込むことによって発生すると思われます。dd if=... of=... bs=(1<<20)パフォーマンスが向上するかどうか試してみてください。

関連情報