如何增加Vagrant VM上的磁盘大小?

我有一个由Vagrant在Ubuntu主机服务器上使用VirtualBox管理的VM。 我的Vagrant框使用Puppetlabs Debian 6.0.7 basebox ,它使用LVM作为其根分区。

默认情况下,磁盘为8GB,这对我来说太小了。 我想要:

  1. 不破坏和重新创建VM的情况下,增加现有磁盘及其上的文件系统的大小。
  2. 配置Vagrant,以便将来为该项目创建一个更大的磁盘。

任何人都可以解释如何做到这一点?

我个人认为附加一个额外的虚拟硬盘并将其安装到正确的安装点会更容易,例如/opt并使用rsync移动你的东西以解决这个问题,毕竟,木偶流浪盒用于测试目的。

原因VBoxManage modifyhd仅适用于本机VDI映像。 但是,流浪基本框基本上是使用VMDK格式导出的OVF / OVA。

请参阅VirtualBox文档

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

增加Vagrant Base Box的磁盘容量

步骤是

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

  2. 使用VBoxManage modifyhd box.vdi --resize 15360resize,将容量增加到15GB。

  3. 但是,这只会更改驱动器容量,之后您必须为guest虚拟机扩展文件系统。 例如,对ext {3,4}使用resize2fs -p -F DEVICE

我已经在我的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脚本的位置如下所示:

 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 < /etc/disk_added_date 

这个脚本适用于centos 6.4盒子,但很容易适应ubuntu。

除了添加磁盘,其他选项包括:

  • 使用带有更大磁盘的盒子,例如opscode bento ,它有40Gb磁盘
  • 使用打包器建立自己的盒子。 您可以使用opscode box packer定义作为起点

我找到了解决此问题的最简单方法:

  • 安装此插件: 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

您可以使用该插件,这将使您能够指定磁盘大小https://github.com/sprotheroe/vagrant-disksize

免责声明:回答最有可能仅适用于使用逻辑卷管理的发行版,例如以下用例适用的rhel:

我一直在使用红帽官方提供的官方Red Hat Enterpise 7.2 vagrant box。

(您需要一个可以免费创建的rhel开发者帐户)

在安装时,我感到困扰的是,只有8GB可用:

 sudo df -h [vagrant@rhel-cdk ~]$ sudo df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-root 8G 2,5G 6,5G 28% / devtmpfs 234M 0 234M 0% /dev tmpfs 245M 0 245M 0% /dev/shm tmpfs 245M 4,3M 241M 2% /run tmpfs 245M 0 245M 0% /sys/fs/cgroup /dev/sda2 297M 134M 164M 45% /boot tmpfs 49M 0 49M 0% /run/user/1000 

正如您所看到的,rhel安装已经消耗了大部分空间。

但是我发现对应于/dev/mapper/VolGroup00-root文件系统的卷组确实有额外的空间(我认为虚拟框的动态分配)

 sudo vgdisplay VolGroup00 --- Volume group --- VG Name VolGroup00 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 11 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 1 Max PV 0 Cur PV 1 Act PV 1 VG Size 39,70 GiB PE Size 4,00 MiB Total PE 10164 Alloc PE / Size 7872 / 30,75 GiB Free PE / Size 2292 / 8,95 GiB VG UUID JBVwpl-13KX-HbQw-FqUa-CA9w-swpF-dF6glm 

因此,剩下要做的唯一事情就是:

a )将逻辑卷的大小增加10G

sudo lvextend -L+10G /dev/VolGroup00/root

b )更新根文件系统,以便它了解此更改

sudo xfs_growfs /dev/mapper/VolGroup00-root

(请注意,至少对于rhel 7.2 resize2fs不适用于此目的)。

之后,我的文件系统可以使用额外的空间:

 sudo df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-root 18G 2,5G 16G 14% / devtmpfs 234M 0 234M 0% /dev tmpfs 245M 0 245M 0% /dev/shm tmpfs 245M 4,3M 241M 2% /run tmpfs 245M 0 245M 0% /sys/fs/cgroup /dev/sda2 297M 134M 164M 45% /boot tmpfs 49M 0 49M 0% /run/user/1000 

…没有干预虚拟机级别

Interesting Posts