質問: Vagrant + VirtualBox で、 ubuntu (`ubuntu/trusty64`) をインストールしました。 この box を `vagrant up` した際に作成される VM のルートボリュームのサイズは 40G です。これはいろいろと物足りないので、拡張したいと考えました。 これを実現する方法はありますか?
回答: 以下の手順でできます。 ※はじめにバックアップ (`vagrant package`) をとっておくことを推奨します。 ### VM の場所などを特定する 以下で特定できます。 ``` # vm の一覧を表示 VBoxManage list vms # 上で表示された vm のうち、詳細を見たい vm を指定。 # SATAControler: みたいなものが、下記で使う仮想ディスクへのパス VBoxManage showvminfo ubuntu64_default_1491551785012_65723 ``` ### vmdk を vdi に変換し、サイズを変更する。 vmdk はボリュームのリサイズが (少なくとも VirtualBox からでは)できないので、まず vdi 形式に変換します。 ``` # 上で特定した VM のディレクトリに移動する。 cd ${vm_dir} # e.g. ~/VirtualBox VMs/ubuntu64_default_1491551785012_65723/ # ディスク情報を確認 VBoxManage showhdinfo ./box-disk1.vmdk # ディスクフォーマットを変換しながら clone VBoxManage clonehd ./box-disk1.vmdk clone-disk1.vdi --format vdi # ディスクをリサイズ (81920MB == 80G) VBoxManage modifyhd ./clone-disk1.vdi --resize 81920 ``` ### ディスクをアタッチする ここの作業は、VM のストレージ設定がどのような構成になっているかに依存します。 ポイントは、もともとのボリュームファイルを新しいボリュームファイル置き換えるように、設定すること。 基本的に GUI から操作してこの設定は達成できる様子です。 ``` # 今回作業していた VM では、 SATA コントローラーからルートボリュームだけがアタッチされている構成であった。 # この場合は以下のコマンドで実行可能。 # vm_name: e.g. ubuntu64_default_1491551785012_65723 VBoxManage storageattach ${vm_name} --storagectl "SATAController" --port 0 --device 0 --type hdd --medium clone-disk1.vdi # 確認 VBoxManage showhdinfo ./clone-disk1.vdi ``` ### VM を再起動する ``` cd ${vagrantfile_folder} vagrant up ```