这是个老问题,而且也并不限于Vagrant box环境,实际上对于Virtualbox环境来讲是通用的。
针对Vagrant – Ubuntu 环境
最简单的办法适用于Ubuntu虚拟机。Virtualbox – Ubuntu虚拟环境在这方面最为省心。下面用Vagrant box的序列来讲解如果超简便地随心所欲扩容。
假定你已经创建了Vagrant下的Ubuntu虚拟机实例:
vagrant init ubuntu/xenial vagrant up vagrant ssh
当虚拟机启动时,你会查看到ubuntu的box所带来的是一个10GB的系统盘,现在我们要扩容它到40GB,首先还是进到Vagrantfile所在的目录用 vagrant halt
关机,然后在virtualbox app的界面中选中对应的虚拟机,进入设置-存储页面,找到vmdk磁盘镜像文件所在的位置,然后用命令行进入那个文件夹,例如:`$HOME/VirtualBox VMs/demovm_osdd_1496389870606_49381/ubuntu-xenial-16.04-cloudimg.vdi` ,现在我们开始调整镜像文件:
VBoxManage clonehd ubuntu-xenial-16.04-cloudimg.vmdk ubuntu-xenial-16.04-cloudimg.vdi -format VDI VBoxManage modifyhd ubuntu-xenial-16.04-cloudimg.vdi --resize 40000
现在我们建立了一个原镜像文件的副本,但是是vdi格式,并且调整了镜像的尺寸,整个过程耗时不多,非常有效。
下面就是在virtualbox中该虚拟机的设置-存储页面中,用新的vdi副本替换vmdk的镜像文件就行了。
然后就可以vagrant up && vagrant ssh进入虚拟机,检查一下,你的 / 已经40GB了。
这是很爽的一次体验,我也没想到现在比以前easy的多了。
[补充]
然而,这并没有最后完成工作,你还需要下载gparted的光盘iso,并在这个虚拟机中以gparted iso引导后进行分区的resizing才能真的完成扩容。好在gparted的分区调整非常简单和快速,所以这里不再赘述了。
把前面扩容的虚拟机导出为box
vagrant package --output ubuntu-xenial-40g.box
使用这个新的box
vagrant box add ubuntu-xenial-40g.box --name ubuntu-xenial-40g mkdir u16-40 && cd $_ vagrant init 'ubuntu-xenial-40g' vagrant up
OK. 这篇文章先结束了。