Ubuntuの公式boxからVagrantでイメージを作成したが、容量が40GBのためディスクサイズが足りなくなりました。
そのため、VMの容量の拡張を行った手順のメモになります。(Vagrantというよりは、VirtualBoxのディスクサイズ拡張の手順です)
※操作を Git Bash
上で行ったため、一部 bash 固有の操作が含まれていますのでご注意下さい
検証環境
今回の検証環境は以下になります。
パッケージ名 | バージョン |
---|---|
Host OS | Windows 7 64bit |
Vagrant | 1.9.1 |
VirtualBox | 5.1.12 r112440 |
base box | ubuntu/trusty64 |
実行手順(簡易版)
- ディスクのフォーマットを vmdk => vdi に変換
- vdi のディスクサイズを拡張
- ディスクフォーマットを vdi => vmdk に変換
- ゲストOSの仮想ディスクを差し替える
- ディスクサイズが拡張されていることを確認する
- 生成したvdiと、変更前の仮想ディスクを管理下から外す
実行手順(詳細)
事前準備
以降の手順は、VBoxManage.exe
が存在しているディレクトリにPATHが通っていることを前提とします。
インストール時の設定によって違いますが、基本的には以下のような場所に存在しているはずです。
C:\Program Files\Oracle\VirtualBox
また、実行前には vagrant halt
等で、VMを停止させて下さい。
今回は、Atlasで公開されている ubuntu/trusty64
をベースとしています。
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 241M 12K 241M 1% /dev
tmpfs 49M 348K 49M 1% /run
/dev/sda1 40G 1.4G 37G 4% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
none 921G 818G 104G 89% /vagrant
1. ディスクのフォーマットを vmdk => vdi に変換
$ VBoxManage.exe clonehd box-disk1.vmdk box-disk1.vdi --format vdi
追記:
今回の例のように ディスクの使用率が少ない場合は変換はすぐ終わりましたが、使用率が高い場合はけっこう時間がかかります。20GB使用しているディスクの場合は、自分の環境だと変換が20~30分ぐらいかかりました。
2. vdi のディスクサイズを拡張
$ VBoxManage.exe modifyhd box-disk1.vdi --resize 81920
数値の単位はMBになります。 Bashの場合は $((80 * 1024))
としたほうがわかりやすいかも。
3. ディスクフォーマットを vdi => vmdk に変換
※vmdkに一応戻してますが、vdiのままでも良いかもしれないです。
$ VBoxManage.exe clonehd box-disk1.vdi box-disk2.vmdk --format vmdk
4. ゲストOSの仮想ディスクを差し替える
$ VBoxManage.exe showvminfo vagrant_ubuntu_server_base_default_1482910721535_34537 | grep ".vmdk"
SATAController (0, 0): C:\Users\XXXX\VirtualBox VMs\vagrant_ubuntu_server_base_default_1482910721535_34537\box-disk1.vmdk (UUID: 39fb6706-24c6-4737-bca9-7ca0490d21c1)
$ VBoxManage.exe storageattach vagrant_ubuntu_server_base_default_1482910721535_34537 --storagectl "SATAController" --port 0 --device 0 --type hdd --medium box-disk2.vmdk
$ VBoxManage.exe showvminfo vagrant_ubuntu_server_base_default_1482910721535_34537 | grep ".vmdk"
SATAController (0, 0): C:\Users\XXXX\VirtualBox VMs\vagrant_ubuntu_server_base_default_1482910721535_34537\box-disk2.vmdk (UUID: 0ed226d7-3cc1-4042-bdb7-15f4e0e7f520)
5. ディスクサイズが拡張されていることを確認する
# vagrant ssh
$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 241M 12K 241M 1% /dev
tmpfs 49M 348K 49M 1% /run
/dev/sda1 79G 1.4G 75G 2% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 5.0M 0 5.0M 0% /run/lock
none 245M 0 245M 0% /run/shm
none 100M 0 100M 0% /run/user
none 921G 819G 103G 89% /vagrant
※1-4の手順で拡張を行った後にパーティションを変更するというような手順がある記事もありましたが、今回自分が行った場合にはバーティションの変更は特にありませんでした。/dev/sda2
などが追加されている場合は、パーティションの変更を行って下さい。
# vagrant halt
確認後は一旦VMを停止させて下さい。
6. 生成したvdiと、変更前の仮想ディスクを管理下から外す
$ VBoxManage.exe closemedium box-disk1.vdi
$ VBoxManage.exe closemedium box-disk1.vmdk
必要なければ上記のファイルは削除しても構いません。
別解
本記事は、既存の仮想ディスクを拡張する方法を記載していますが、拡張ではなく別のディスクを追加したい場合もあるかと思います。その場合は以下の記事などを参照して下さい。
[Vagrant] VirtualBox作成時にストレージを追加 - Qiita
関連
WindowsでVagrantを使用してVM環境を作成する - Qiita
参考
Vagrant(Virtualbox)のディスク(ストレージ)容量を増やす方法 - Qiita
vagrantの既存boxにディスク容量を追加する - Qiita
Vagrantのディスク容量を増やす - 作業ノート