答案1
我找到了解决这个问题的最简单方法:
安装此插件:
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
- 注意:这不适用于
vagrant reload
- 注意:这不适用于
答案2
我个人认为,连接一个额外的虚拟硬盘并将其安装到适当的安装点会更容易,例如/opt
,将您的内容移过来rsync
以解决这个问题,毕竟,puppet vagrant boxes 是为了测试目的。
原因:VBoxManage modifyhd
仅适用于原生 VDI 映像。但是,vagrant 基础框基本上使用 OVF/OVAVMDK
格式导出。
该
--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}。
答案3
我已经自动将磁盘添加到我的 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 <<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。
除了添加磁盘之外,其他选项包括:
- 使用带有更大磁盘的盒子,例如opscode 便当有 40Gb 磁盘
- 使用构建自己的盒子打包机. 您可以使用 opscode 框包装器定义作为起点
答案4
您可以使用插件,它可以让您指定磁盘大小 https://github.com/sprotheroe/vagrant-disksize