1. 不要ファイルの削除
  2. boxサイズの最小化
    • box作成

      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