vagrantでboxファイル圧縮 [ProviderがVirtualBoxの場合]

1. 仮想マシン上で以下を実行

$ sudo su -
# umount /vagrant
# yum clean all
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY

2. 仮想マシンをシャットダウン

$ vagrant halt

3. VirutalBoxのファイルを形式をvmdk から vdiに変更したり諸々

# VirtualBoxのHDDファイルがある場所を探す.
$ vboxmanage list vms
$ vboxmanage showvminfo 

# HDDファイルがある場所へ移動する
$ cd ~/VirtualBox VMs/test-app

# vmdk -> vdi
$ vboxmanage clonehd test-app.vmdk test-app.vdi --format vdi

# vdi形式のファイルを圧縮
$ vboxmanage modifyhd test-app.vdi compact

# 作成したvdiをvmdkに変換する
## ファイル名を前のvmdkファイルと別にする必要性がある。
$ vboxmanage clonehd test-app.vdi test-app-compact.vmdk --format vmdk

# 前のvmdkファイルを取り外し、圧縮したvmdkファイルを接続する。
# VirtualBoxのGUIでやるのが簡単なため割愛。

4. vagrant の boxファイルを作成 (これより前に圧縮したvmdkで動作するかどうか確認するほうが無難)

# vagrant package --out test-app.box