1. 虚拟机关机状态下,在宿主机运行命令,创建一块新的虚拟硬盘。

    # 20480是20G
    VBoxManage createhd --filename new.vdi --size 20480
  2. 继续在宿主机运行命令,将原来的硬盘克隆到新硬盘上去。

    VBoxManage clonehd old.vdi new.vdi --existing
  3. 完成后进入虚拟机配置将挂载的硬盘换成新的硬盘。old.vdi暂时不要删除,全部成功了再删。
  4. 启动虚拟机。查看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% /
  5. 此时新硬盘扩容的尾部还是未分配的状态,需要给它分配一下。(做这一步之前请做好备份以防万一,之前的old.vdi如果没删除就不用单独备份了,不行可以重来)

    sudo fdisk /dev/sda
  6. 输入p查看分区。
  7. 输入d删除末尾活动状态的分区,也就是当前根目录挂载的分区(博主为sda3),我们想扩展它所以要先卸载它,这一步不会动你的实际文件只是修改分区表。
  8. 然后输入n重新创建这个分区,此时就让你选择分区大小了,会自动识别出我们之前扩容的未利用的部分,所以一路默认值即可。
  9. 然后输入w保存设置并应用。
  10. reboot
  11. 重启后查看df -h发现根目录挂载的卷「/dev/mapper/ubuntu--vg-ubuntu--lv」的可用大小依然没有变化。因为虽然sda3已经扩展开了,但这个卷并不会自己跟着扩展,所以目前依然只占用了sda3的前面那部分空间。
  12. 我们给卷扩展,输入以下命令

    #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.
>
  1. 最后还需要用resize2fs命令扩展文件系统:

    sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
  2. 至此成功扩容,df -h 结果:

    /dev/mapper/ubuntu--vg-ubuntu--lv   19G  7.6G   11G  43% /

总结

  1. 新建VDI(VBoxManage createhd)
  2. 克隆VDI(VBoxManage clonehd)
  3. 删除分区(fdisk)
  4. 重建分区 (fdisk)
  5. 扩展卷(lvextend)
  6. 扩展文件系统(resize2fs)
Last modification:April 20, 2022
If you think my article is useful to you, please feel free to appreciate