「Tiny Core Linux 7をUSBメモリにインストール」で作ったTiny Core Linuxでddを使ったHDDのデータ消去です。
※最初はddを使えば簡単に消去できると思ったのですが、思ったよりも面倒だったのと、いまいち安心感が得られないので、「shredを使った消去」や「Secure Erase」での消去をオススメいたします。
ISOファイルをUSBに書き込んだり吸いだしたりと何かと重宝するddですが、if=
に/dev/urandomを指定すればランダムな値を書き込むことができますので以下のようにすればデータ消去のようなことが行えます。
$ dd if=/dev/urandom of=/dev/sda
ddは進捗状況が分からなくて不安という場合はpvを使えば進捗状況を表示させることができます。tce-loadを使ってpvをインストールします。
$ tce-load -wi pv
以下のように実行すれば、進捗状況が表示されます。
$ cat /dev/urandom | pv | dd of=/dev/sda
1.5MB 0:00:03 [5.32MB/s] [ <=> ]
しかし実際に実行してみると80GのHDDで7時間…遅すぎです。デフォルトのブロックサイズが512なので増やせば速くなるらしいのですが、試してみても6時間ほどかかります。
$ cat /dev/urandom | pv | dd of=/dev/sda bs=1M
0+19526730 records in
0+19526729 out
80026361856 bytes (74.5GB) copied, 23204.176893 seconds, 3.3 MB/s
74.5GiB 6:26:48 [3.29MiB/s] [<=> ]
$ cat /dev/urandom | pv | dd of=/dev/sda bs=128M
0+19526903 records in
0+19526902 out
80026361856 bytes (74.5GB) copied, 23202.622147 seconds, 3.3 MB/s
74.5GiB 6:26:46 [3.29MiB/s] [<=> ]
ふと消去中のディスクランプの点滅にムラがあるように感じたので、試しに/dev/zeroと比較してみると/dev/urandomが凄く遅い事が分かりました。/dev/urandomがボトルネックになっている可能性がありそうです。
$ dd if=/dev/zero of=/dev/null bs=128M count=1
1+0 records in
1+0 records out
134217728 bytes (134 MB) copied, 0.101867 s, 1.3 GB/s
$ dd if=/dev/urandom of=/dev/null bs=128M count=1
1+0 records in
1+0 records out
134217728 bytes (134 MB) copied, 15.6794 s, 8.6 MB/s
試しに/dev/zeroでゼロクリアしてみると…
$ cat /dev/zero | pv | dd of=/dev/sda
74.5GiB 2:14:57 [9.42MiB/s] [<=> ]
156301489+0 records in
156301488+0 out
80026361856 bytes (80GB) copied, 8098.61 s, 9.9 MB/s
$ cat /dev/zero | pv | dd of=/dev/sda bs=1M
74.5GiB 0:36:04 [35.3MiB/s] [<=> ]
2782+585345 records in
2782+585344 out
80026361856 bytes (80GB) copied, 2176.6 s, 36.9 MB/s
$ cat /dev/zero | pv | dd of=/dev/sda bs=16M
74.5GiB 0:36:04 [35.3MiB/s] [<=> ]
0+535302 records in
0+535301 out
80026361856 bytes (80GB) copied, 2171.42 s, 36.9 MB/s
/dev/urandomよりもかなり速い結果となりました。またブロックサイズも1M程度指定してあげると速くなるようです。それで良いんだかという別の問題は残りますが…