VisualBox的动态分配差分存储,并不是磁盘满了就会自动扩容,只是不管你分配给它多少,它都以实际的大小动态的去占宿主机的磁盘空间而已,所以当磁盘满了,你就需要手动扩容
为了安全起见先把自己的虚拟机做一个备份
宿主机定位到virtualBox的目录下,打开命令行
# 查看所有的磁盘
VBoxManage list hdds
# 终端输出 找到你需要扩容的硬盘
D:\\Program Files\\Oracle\\VirtualBox>VBoxManage list hdds
UUID: 3c8c6190-3e14-4d3d-8350-3ccd172a8a18
Parent UUID: base
State: created
Type: normal (base)
Location: C:\\Users\\luacloud\\VirtualBox VMs\\WindowsXP\\Win7.vdi
Storage format: VDI
Capacity: 25600 MBytes
UUID: f1b38e0c-be0d-4ab5-9364-3dc4b56b0caa
Parent UUID: base
State: inaccessible
Type: normal (base)
Location: E:\\VBOX\\Win7.vdi
Storage format: VDI
Capacity: 0 MByte
#修改磁盘空间 这里切记要关闭虚拟机
VBoxManage modifyhd [UUID|或者xxx.vdi的绝对路径] --resize [int][单位默认是 mb e.g. 1024==>1024mb==>10G]
# 我的修改
VBoxManage modifyhd 3c8c6190-3e14-4d3d-8350-3ccd172a8a18 --resize 4096
# 成功后输出
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
然后进入虚拟机
# 修复磁盘信息
parted -l
输入fix回车 我在这里虚拟机暂停了,取消暂停继续就行
# 新建分区 当然你的硬盘不一定是sda,具体情况请具体分析
fdisk /dev/sda
n
然后一路回车
# 查看逻辑卷组
vgs
# 把新建的分区添加的逻辑卷组
vgextend [卷组名] dev/sda[上面新建的分区号]
# 扩容逻辑卷 /dev/mapper/ubuntu--vg--ubuntu--lv 是我虚拟机上的逻辑卷
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
# 更新文件系统
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
这一步操作后,我的虚拟机又暂停了 ,取消暂停继续
# 查看是否更新成功
df -Th
最后一步resize2fs /dev/mapper/ubuntu–vg-ubuntu–lv 我报了错
resize2fs: Permission denied to resize filesystem
原因是因为我有很多快照,导致了文件系统不一致,尝试用备份的虚拟机再备份一次,先删除掉之前的快照,只保留最近的快照,然后再从VBoxManage modifyhd … --resize …重来一次,问题就解决了。
本文介绍了VirtualBox动态分配差分存储的工作原理,当磁盘空间不足时需要手动扩容。步骤包括备份虚拟机、在宿主机命令行操作、进入虚拟机并尝试resize2fs命令。遇到权限问题可能因快照导致文件系统不一致,解决方案是删除快照并重新调整硬盘大小。
1280

被折叠的 条评论
为什么被折叠?



