GUEST OS上でファイルを書き込み一度大きくなったvdiファイルはGUEST OS上でファイルを削除しても小さくはならない。
また、このままだと空き領域部分を0で潰したわけではないので、バックアップ時にvdiを圧縮して保存しようとしても小さくならない。
以下の方法でvdiファイルを小さくする。
まずGUEST OS上でディスクを0埋めする。linuxなら以下を実行。
dd if=/dev/zero of=too_big_file bs=128M
rm too_big_file
ディスクの空きサイズ等によるが、10Gbyteで10分ぐらい。
次にGUEST OSをpoweroffし、HOST OS上で以下を実行。容量によるが、10Gbyteで10分ぐらい?
(2018/08/01)いつの間にかオプションが変更になっていたため更新。
(windowsの場合) "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium disk hogehoge.vdi --compact
(linuxの場合) VBoxManage modifymedium disk hogehoge.vdi --compact
//古いオプション (windowsの場合) "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd hogehoge.vdi --compact
//古いオプション (linuxの場合) VBoxManage modifyhd hogehoge.vdi --compact
これで小さくなったはず。
GUIでできればいいのに…