仮想ディスクの圧縮

仮想ディスクの作成の際に「可変サイズのストレージ」にすることをおススメしています

「可変サイズのストレージ」にすると、作成時のイメージファイルは非常に小さなサイズですが、仮想マシンのディスクの使用量によりイメージファイルも大きくなっていき、最終的には指定したディスクサイズまでイメージファイルは巨大化します。

しかし巨大化した仮想ディスク内のファイルを整理し、削除してもイメージファイルが小さくなることはありません。
一度イメージファイルの領域を広げてしまうと未使用分の領域も確保されたままになり、通常は元には戻せなくなります。

しかしVBoxManageコマンドで、未使用分の領域を削除して仮想ディスクのサイズを圧縮することが出来ます。

仮想ディスクを圧縮する

仮想ディスクの空き領域を0で埋める

OSがファイルを削除する場合、実際にはファイルのインデックス情報を削除するだけで、ファイルの実体は削除されません。

圧縮する前に仮想ディスクの空き領域を0で埋める必要があります。

Windowsではマイクロソフトから空き領域を0で上書きするsdeleteツールが無料で提供されているので、これを利用します。

コマンドプロンプトを起動し-zオプションでsdeleteを実行します。

> sdelete -z C:

Linuxの場合はddコマンドを実行します。

$ dd if=/dev/zero of=zero bs=4k; \rm zero

ディスクのUUIDを取得する

次にVboxManageコマンドで圧縮する仮想ディスのUUIDを取得します。

Windowsの場合:
> VBoxManage.exe list hdds 
Linuxの場合:
$ vboxmanage list hdds

仮想ディスクの圧縮

VBoxManageコマンドで仮想ディスクを圧縮します。

> vboxmanage modifyhd [UUID] --compact
VirtualBox Command Line Management Interface Version 3.2
(C) 2005-2010 Oracle Corporation, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

>

使われなくなったディスクスペースが開放され、仮想ディスクのイメージファイルのサイズが少なくなります。