a-stormのblog

日々の出来事等、とりとめのないことなど、できるだけ色々と書いていこうと思います

HDDを完全消去する(dd / shred)

2020-01-31 18:22:33 | コンピュータ

最近のHDDは大容量にになっていて消去に時間がかかるので、一挙に全部やるのではなく、分割して少しづつやる方法。

 

<ポイント>

・大容量HDDをパーティション分割して、パーティション事に削除する。

・パーティション削除は、ddコマンドで、status=progress オプションをつけ、進捗が分かるようにする

・ddの速度アップのためbsの値を大きめに調整する(128Mとか)

 

(1)gparted等で、ハードディスクをパーティションで分割する。

例えば、1000GBなら、200GBx5パーティション等。

/dev/sdb1

/dev/sdb2

/dev/sdb3

/dev/sdb4

/dev/sdb5

ができる。

 

(2)ddコマンドでパーティションを1づつ削除する。statusオプションをつけ進捗状況が分かるようにする。

# dd if=/dev/urandom of=/dev/sdb1 bs=128M status=progress

 

上記では乱数(/dev/urandomを指定していますが、ゼロ(/dev/zero)でもいいでしょう。

/dev/randomは乱数生成に厳密性を高めるため、マシンのエントロピーをたくさん必要とするため、HDD消去の目的には不向きです。

(時間がかかりすぎる、書き込む乱数の品質を高めてもしょうがない)

 

bsの値は小さすぎてもダメ、大きすぎてもダメ、何度かトライしてみて下さい。

 

パーティション分割が難しい場合は、ブロックするサイズを1024Mとかにして(わかりやすように)

・seek=ブロック数 で開始ブロックを指定

・count=個数 で書き込むブロック数を指定

するのでも良いでしょう。

(全体が何ブロックあって、開始位置と、個数を指定して、計画的にやる。面倒ですが)

 

■その後、ddは速度が出ない(遅い)ことが判明。

報告書

https://digitalforensic.jp/home/act/products/data_report/

低レベルな機能ゆえ、ddが一番シンプルで速そうだが、そうでもないようだ。原因を考えてみたが、/dev/zeroや/dev/urandom のシステムコールがボトルネックになってるんだろうか?

Windowsのcipherコマンドを利用する手もあるが、途中の進捗状況が分からないのは頂けない。求める要件は、

・消去速度が速いこと

・途中の進捗状況が分かる事

・パーティション事に消去出来れば、大容量HDDを分割消去できる。

 

速度が速いのは、DBAN, shred あたりのようだ。

shredを使って、乱数の1回書込みで十分なので、

# shred -v -n 1 /dev/sdd

とかで十分っぽい

-v: 途中詳細を表示させる

-n 1: 乱数書込み回数=1回

今のところ、DBANか、shred が一番速い。

後日、時間を測ってみる。


最新の画像もっと見る

コメントを投稿