ddコマンドでHDDのデータを消す

HDDのデータを消すために、ddコマンドで乱数を3回書き込む。まず入力について、以下のURLが参考になる。

/dev/random vs /dev/urandom « Onkar Joshi's blog

HDDを消すためなら、/dev/urandomを使うべきである。

そして、そのままddコマンドを実行すると、そんなに早くはないため、バッファーサイズを設定しようと思う。試しに、バッファーサイズ100Mで乱数ファイルを作成してみたら、以下のワーニングメッセージが表示された。

$ dd if=/dev/urandom of=test bs=100M count=2
dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
0+2 records in
0+2 records out
67108862 bytes (67 MB, 64 MiB) copied, 0.623157 s, 108 MB/s

実際に作成されたファイルも67MBしかなかった。

ワーニングメッセージ通りiflag=fullblockを追加してみたら、思う通りに動いてくれた。

$ dd if=/dev/urandom of=test bs=100M count=2 iflag=fullblock
2+0 records in
2+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 1.81342 s, 116 MB/s 

このオプションを使って、HDDのデータを消してみた。バッファーサイズを1Gにしてみた。オプションなしのときよりはるかに はやかった気がする。最終的なコマンドは以下になる(要root権限)。

# dd if=/dev/urandom of=/dev/sda bs=1G iflag=fullblock