VirtualBox が 3.x の頃は、標準の VDI 形式の仮想ディスクを拡張しようと思っても VirtualBox 単体では不可能で、VMDK 形式に変換してから他のツールでサイズを変更する等手間がかかったが、最新の 4.0.x 系 (4.0.12 で確認) では VBoxManage コマンドが強化され、modifyhd サブ・コマンドに追加されたオプション "--resize" で拡張できるようになっている。

ところが先日、VirtualBox 上の仮想マシン (以下 VM) の仮想ディスクを拡張する機会が訪れたので同コマンドを使ってみたところ、

> VBoxManage modifyhd <ORIGINAL_VDI> --resize <NEW_SIZE>
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

と失敗してしまった。

調べてみると、どうやら "--resize" オプションが有効なのは可変サイズ (Dynamically expanding storage) の VDI または VHD 形式で、今回失敗した固定サイズ (Fixed-size storage) ではダメらしい。また (上限を小さくする) 縮小もできない。

可変サイズの仮想ディスクは親機内で断片化しやすい上にパフォーマンス面でもオーバーヘッドがあるため、親機のディスク容量に余裕がある限り、個人的にはあまり使いたくない。そこで次のように「固定サイズ VDI を可変サイズ VDI に変換」 → 「サイズを変更」 → 「可変サイズ VDI を固定サイズ VDI に変換」と、3段階で拡張した。もちろん可変サイズ VDI で問題ない場合は、変換し直す必要はない。

・固定サイズ → 可変サイズに変換
> VBoxManage clonehd <FIXED_VDI> <DYNAMIC_VDI> --format VDI --variant Standard

・仮想ディスクを拡張
> VBoxManage modifyhd <DYNAMIC_VDI> --resize <NEW_SIZE> ← サイズは MB で指定 (例: 10GB = 10240)

・可変サイズ → 固定サイズに変換
> VBoxManage clonehd <DYNAMIC_VDI> <NEW_FIXED_VDI> --format VDI --variant Fixed

後は VirtualBox の GUI で VM のストレージを差し替え、VM の OS 上でファイル・システムを拡張して完了。

ひとまずこれで VirtualBox 単体で固定サイズ VDI の拡張ができたことになるが、いかんせん時間がかかる。そう頻繁に行うわけではないとは言え、今後のバージョンで固定サイズ VDI を直接拡張できるようになることを期待したい。

Leave a Reply

*