在Vagrant的虚拟机上,如何增加磁盘大小?

分享于 

3分钟阅读

ubuntu

  繁體

参见virtualBox Docs

--resize x选项(x是所需的新总空间,以兆字节为单位)允许你更改现有镜像的容量;这将调整虚拟磁盘的逻辑大小,而不会太大地影响物理大小。 [37]这目前仅适用于VDI和VHD格式,并且仅适用于动态分配的变体,并且只能用于扩展(而不是缩小)容量。

增加Vagrant Base Box的磁盘容量

步骤是

为了能够调整HDD的大小,您必须先将其转换为VDI,例如,VBoxManage clonehd in.vmdk out.vdi --format VDI 然后重新连接(使用GUI更容易)。

使用调整大小VBoxManage modifyhd box.vdi --resize 15360 这会增加15GB的容量。

但这只改变了驱动器的容量,以后必须扩展客户端的文件系统,例如使用resize2fs -p -F DEVICE 对于ext {3 ,4}。


自动在Vagrantfile中添加磁盘:


Vagrant.configure("2") do |config|


 ...


 file_to_disk = File.realpath("." ).to_s +"/disk.vdi"



 if ARGV[0] =="up" && ! File.exist?(file_to_disk) 


 puts"Creating 5GB disk #{file_to_disk}."


 vb.customize [


 'createhd', 


 '--filename', file_to_disk, 


 '--format', 'VDI', 


 '--size', 5000 * 1024 # 5 GB


 ] 


 vb.customize [


 'storageattach', :id, 


 '--storagectl', 'SATA Controller', 


 '--port', 1, '--device', 0, 


 '--type', 'hdd', '--medium', 


 file_to_disk


 ]


 ...


 config.vm.provision"shell", path:"scripts/add_new_disk.sh"


 ...


end



其中add_new_disk.sh shell script如下所示:


set -e


set -x



if [ -f /etc/disk_added_date ]


then


 echo"disk already added so exiting."


 exit 0


fi



sudo fdisk -u /dev/sdb <<EOF


n


p


1



t


8e


w


EOF



pvcreate /dev/sdb1


vgextend VolGroup /dev/sdb1


lvextend /dev/VolGroup/lv_root


resize2fs /dev/VolGroup/lv_root



date > /etc/disk_added_date



这个脚本是针对centos 6.4的,但是也适合ubuntu。


还有一个解决这个问题的最简单方法:

安装此插件:vagrant plugin install vagrant-disksize

编辑Vagrantfile

Vagrant.configure('2') do |config| ... config.vm.box = 'ubuntu/xenial64' config.disksize.size = '50GB' ... end

  • vagrant halt
  • vagrant up