boxのファイルサイズはできるだけ小さい方が扱いやすいので、box作成の前に不要なファイルなどを削除したりしてサイズを小さくします。 その後、boxを作成します。
不要ファイルの削除
boxサイズをできるだけ小さくするため、不要ファイルを削除します。
-
yumのキャッシュ
yumのキャッシュが /var/cache/yum にあります。 削除前に確認すると以下のようになっていました。
# du -sh /var/cache/yum 43M /var/cache/yum
削除は、yum clean all で行えます。
# yum clean all 読み込んだプラグイン:fastestmirror リポジトリーを清掃しています: base extras updates すべて掃除しています Cleaning up list of fastest mirrors
ログや一時ファイルなどの削除
以下を確認して必要がないログや一時ファイルを削除します。
- /var/log/
- /tmp/
- /var/tmp/
- /usr/local/src/
boxサイズの最小化
パッケージ化する直前に仮想ハードディスクをゼロで埋めて、ゼロで埋まったファイルを削除します。 こうすることで、フラグメンテーションの問題が解決され、圧縮率が上がります。
# dd if=/dev/zero of=/EMPTY bs=1M上記を実行すると、ディスクの空き領域を全てゼロで埋め尽くし、以下のようになります。
dd: writing `/EMPTY': デバイスに空き領域がありません 46840+0 records in 46839+0 records out 49114673152 bytes (49 GB) copied, 106.461 s, 461 MB/sこのあと、ゼロで埋め尽くされたファイルを削除すると、ディスク領域の効率化が最適になります。
# rm -f /EMPTY
終了後、仮想マシンを停止します。
# shutdown -h now
box作成
boxの作成は、vagrant packageコマンドで行います。対象の仮想マシンが停止している状態で以下のようにコマンドを実行します。
vagrant package --base [VirtualBoxの仮想マシン名] --output [boxファイル名]
以下では、VirtualBoxの仮想マシン"centos66"から、ファイル名が"centos_6.6_minimal.box"のboxファイルを作成しています。
D:\work> vagrant package --base "centos66" --output centos_6.6_minimal.b l.box [centos66] Clearing any previously set forwarded ports... [centos66] Creating temporary directory for export... [centos66] Exporting VM... [centos66] Compressing package to: D:/work/centos_6.6_minimal.box