やることは以下のコマンドを実行するだけなのだが、
VBoxManage modifyhd hogehoge.vdi --compact
その前準備として出来るだけ全てのセクタを0で埋めた方がよい。ググってみると、
init 1 #シングルユーザモードに切り替え
cat /dev/zero >o
として0でうめたファイルを作ってから削除するのが主流らしい。
確かに手っ取り早く、実践的なのだが、より完璧を目指すならちゃんとファイルシステムの空きブロックを一つ一つ消したい。(手元の実験では0.15%程度の空きブロックが0fillされていなかった)
と言うことでそんなツールを作ってみた。
http://syunei.dip.jp/~akira/deldfree.tar.gz
make #コンパイル
./deldfree /dev/ada1s1a #コールドランで、状況チェックだけ
./deldfree /dev/ada1s1a -f #実際に処理するときは最後に-fをつける
ただ、このツールはマウントされていないファイルシステムにしか実行できないので
現実的には、作業用の仮想環境があって、そこに処理対象のHDDを追加で繋いでやるのが楽だとは思う。そこでそんなVirtualbox用イメージも作ってみた
http://saifes.dip.jp/~akira/freebsd_rescue.ova
パスワード無しでrootでログインして使う。/root/deldfree/以下に当該ツールがはいっているので、それを対象のディスクにかけてやればいい。
補足
かなり趣味に走ったツールです。0.15%をけちるよりは、作業の楽さをとったほうが一般には良いとおもいますよ。多分。
あとswapパーティションの0 fillも忘れずに。
補足2:高速化のためには?
わざわざ最初に読み込んで0かどうかチェックしてますが、これはどれくらい減ったか確認できるようにするためだけです。多分空きブロックに何が書いてあろうが問答無用で0fillするほうが速いです。
0 件のコメント:
コメントを投稿