虚拟机关机状态下,在宿主机运行命令,创建一块新的虚拟硬盘。
# 20480是20G VBoxManage createhd --filename new.vdi --size 20480
继续在宿主机运行命令,将原来的硬盘克隆到新硬盘上去。
VBoxManage clonehd old.vdi new.vdi --existing
- 完成后进入虚拟机配置将挂载的硬盘换成新的硬盘。old.vdi暂时不要删除,全部成功了再删。
启动虚拟机。查看sudo fdisk -l可以看到sda已经是20G了,可是df -h查看根目录挂载的卷「/dev/mapper/ubuntu--vg-ubuntu--lv」的可用大小却没有变化。
/dev/mapper/ubuntu--vg-ubuntu--lv 9.0G 7.6G 863M 91% /
此时新硬盘扩容的尾部还是未分配的状态,需要给它分配一下。(做这一步之前请做好备份以防万一,之前的old.vdi如果没删除就不用单独备份了,不行可以重来)
sudo fdisk /dev/sda
- 输入p查看分区。
- 输入d删除末尾活动状态的分区,也就是当前根目录挂载的分区(博主为sda3),我们想扩展它所以要先卸载它,这一步不会动你的实际文件只是修改分区表。
- 然后输入n重新创建这个分区,此时就让你选择分区大小了,会自动识别出我们之前扩容的未利用的部分,所以一路默认值即可。
- 然后输入w保存设置并应用。
- reboot
- 重启后查看df -h发现根目录挂载的卷「/dev/mapper/ubuntu--vg-ubuntu--lv」的可用大小依然没有变化。因为虽然sda3已经扩展开了,但这个卷并不会自己跟着扩展,所以目前依然只占用了sda3的前面那部分空间。
我们给卷扩展,输入以下命令
#19G表示扩展后的空间,也可以写+10G这种形式表示增加10G sudo lvextend -L 19G /dev/mapper/ubuntu--vg-ubuntu--lv
> 提示扩展已经成功:Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.11 GiB (2332 extents) to 19.00 GiB (4864 extents).
> Logical volume ubuntu-vg/ubuntu-lv successfully resized.
>
最后还需要用resize2fs命令扩展文件系统:
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
至此成功扩容,df -h 结果:
/dev/mapper/ubuntu--vg-ubuntu--lv 19G 7.6G 11G 43% /
总结
- 新建VDI(VBoxManage createhd)
- 克隆VDI(VBoxManage clonehd)
- 删除分区(fdisk)
- 重建分区 (fdisk)
- 扩展卷(lvextend)
- 扩展文件系统(resize2fs)