開発部のS.Kです。 VirtualBoxで仮想マシンをエクスポートするときの、ちょっとしたテクニックを紹介したいと思います。
概要
VirtualBoxで仮想マシンを作成して、色々なアプリケーションをインストールしてからエクスポートすると、他の環境でもすぐにその環境が使えて便利です。 しかし、OSをインストールしてアプリケーションも追加した後の仮想マシンをそのままエクスポートすると、かなり大きなファイルサイズになってしまいます。 場合によっては数十GBにもなり、流石にここまでファイルサイズが大きいと扱いにくて大変です。
ですがこれに少し工夫をすることで、エクスポートファイルのサイズを最小限にすることが出来ます。 今回は、そのテクニックを紹介します。
前提条件
- VirtualBoxで仮想マシンを構築していること
- 仮想マシンのストレージを可変サイズにしていること
仕組み
エクスポートファイルの中身の大半は、仮想ハードディスクです。 これをいかに小さく出来るかがポイントになります。 可変サイズの仮想ストレージを使っていると、保存領域が不足したときに、上限に達するまで少しずつ自動で拡張されていきます。 しかし、拡張は自動で行われても、縮小は自動で行われず、その後に空き領域が十分に出来てもそのままになります。 この状態でエクスポートすると、本当は使っていない領域の分までエクスポートされ、ファイルサイズが大きくなってしまいます。
縮小を行うコマンドは用意されており、手動で実行は出来ます。 ただし、これを使う場合は事前に未使用領域を0埋めしておく必要があります。 なので、まずは未使用領域を0埋めして、その後に仮想ストレージの縮小コマンドを実行することで、仮想ストレージを最小サイズにすることが出来ます。
手順
まずは、仮想マシンにログインして、空き領域を0埋めするために以下のコマンドを実行します。
$ sudo dd if=/dev/zero of=zero bs=4k $ sudo rm zero
これを実行すると、空き容量と同じサイズのzero
というファイルが作られ、直後に削除されます。
zero
は中身に全て0
が入力されたバイナリデータです。
これを空き領域いっぱいに作成してから消すことで、空き領域全てに0
が書き込まれます。
この後、仮想マシンをシャットダウンして、ホストマシンで以下のコマンドを実行します。
VBoxManage.exe modifyhd "仮想ストレージのuuid" --compact
実行すると、0
で埋められた未使用領域を開放して、仮想ストレージのファイルサイズを縮小してくれます。
実行前後で仮想ストレージファイルを比べると、ファイルサイズが減っていることが分かると思います。
最後に、この状態で仮想マシンのエクスポートを行います。 問題なければ、最小限のサイズで仮想マシンがエクスポートされるはずです。
まとめ
仮想マシンを最小サイズでエクスポートする方法を紹介しました。 それほど大きな手間も掛からないため、仮想マシンをエクスポートするときは、常に行っても良いと思います。