【VirtualBox】可変サイズの仮想ディスクを圧縮。

理化学研究所のあのお(ぼ)方の騒動を見ていて、今更ながらに
「ああ、何かしら作業を行った時には、こまめに作業手順のメモを残しておいたほうが絶対に得策だよなぁ…」
と思った次第。

こういう偶にしかやらない作業の手順ってすぐ忘れてしまって、その度にネットで検索すれば事足りるのだけれど、時々参照していたページが消えていて\(^o^)/な状況に陥ることもありますのでね。

で、本題。

VritualBoxで、可変サイズで作製した仮想ディスクの未使用領域を綺麗にして、サイズをコンパクトにする手順のメモ。

うちの環境は、

  • ホストOS:Windows 7
  • ゲストOS:Ubuntu 14.04

まずはゲスト側での作業。ざっくり言うと「ディスクの空き領域をゼロで埋める」という操作を行うのだけれど、手順としては「ファイルサイズがディスクの空き容量と同じでデータ内容がゼロのファイルを作成 → すかさずそのファイルを削除」という感じ。

端末を開いて、

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

でOK。

ただし、ゲストOSを複数パーティションに分けて運用している場合には、各パーティションそれぞれでこの作業を行う必要があります。圧縮操作をしたのに、あれ、全然サイズが小さくならない…というときは多分これ。例えば Ubuntu で /(ルート)と /home を別パーティションに分けているときは、上記の操作に加えて、

$ cd /
$ sudo dd if=/dev/zero of=zero bs=4k
$ sudo rm zero

も行わないと、/ パーティション内を綺麗にできないですね。

さて、未使用領域をゼロで満たしたらゲストOSをシャットダウン。ホスト側での作業です。

うちのホストはWindows 7なので、コマンドプロンプトを起動して VBoxManage.exe を使ってごにょごにょします。おそらく VBoxManage コマンドにパスが通っていないので、まずはVirtualBoxをインストールしたフォルダに移動。
インストール時にカスタマイズしていなければ、通常は、
 c:\Program Files\Oracle\VirtualBox
あたりにある筈なので、コマンドプロンプトで

> cd c:\Program Files\Oracle\VirtualBox

を実行して当該フォルダに移動します。で、

> VBoxManage modifyhd 仮想マシン名 --compact

を実行。「仮想マシン名」 であって 「仮想ディスク名」 ではないので注意が必要です。マシン名がスペースを含む場合は、名前を "" で囲めば大丈夫。

上記の方法でエラーが出る場合は、仮想マシン名のところを .vdi ファイル名にしてみます。d:\vbox\ubuntu.vdi だったら以下のような具合。

> VBoxManage modifyhd d:\vbox\ubuntu.vdi --compact

あとは、

0%...10%...20%...30%...40%...50%...

…と、作業が進行してゆくのを眺めておけばよいのです。

カテゴリ: