開発とかでVirtualBoxを利用することが多いです。VirtualBoxのイメージファイルですが、一度ゲストOS側で容量をたくさん使うと、そのファイルたちを削除してもイメージファイルの容量は減りません。イメージファイルはどんどん大きくなるばかりです。この記事ではイメージファイルの容量を圧縮する方法を紹介します。
対象は以下の環境となります。
- ホストOS MacOS
- ゲストOS Linux
■ゼロ埋めする【ゲストOSでの作業】
まずは、ゲストOSを起動してディスクのゼロ埋め作業を行います。ddコマンドを使って、ゼロ埋めされたファイルを作成します。以下のコマンドはディスク容量いっぱいまで/zeroファイルを作成し、その後/zeroファイルを削除するというものです。これで、ゲストOSが利用していないファイルの断片等も全て削除されます。
dd if=/dev/zero of=/zero bs=4k
rm /zero
この作業が済んだら、ゲストOSをシャットダウンします。
■イメージファイルのUUIDを確認する【ホストでの作業】
シャットダウンしたら、以下のコマンドでディスクのUUIDを取得します。VirtualBoxに登録されているディスクイメージの一覧が表示されるので、圧縮したいイメージファイルの[UUID]の部分をコピーしておきます。
vboxmanage list hdds
■圧縮する【ホストでの作業】
最後に圧縮作業です。[UUID]の部分は先程しらべたUUIDを設定してください。これで、しばらく待つとゲストOSが利用していない領域を開放したイメージファイルが完成します。
vboxmanage modifyhd [UUID] --compact
たまに作業すると、ディスク容量が減るのでバックアップ時も楽になるかもしれません。