给KVM虚拟机ubuntu系统扩容,用图形界面 gparted 工具是很容易了,但受限于宿主机内存不足,无法运行图形界面,因此需用命令行方式解决。
然而查找了很多网上的教程,扩容完 /dev/vda 之后,就直接 lvextend 扩容逻辑卷。我使用后依然没有扩容效果。
其实上述两个操作之间需要补充扩容物理卷和格式化操作。此文将记录完整过程。
扩容前磁盘使用状态
扩容操作过程
1. 运行虚拟机,在宿主机上给虚拟机镜像扩容
命令:
cd /var/lib/libvirt/images/
virsh start ubuntu20.04-worker
virsh blockresize --path /var/lib/libvirt/images/ubuntu20.04-worker.qcow2 --size 40G ubuntu20.04-worker
2. 进入虚拟机中进行扩容操作
1)使用 fdisk -l 查看磁盘空间,可以看到 /dev/vda 设备已经扩到40G,其中已分配的有25G :
2)使用 growpart /dev/vda 3 命令扩容磁盘设备,之后再次查看磁盘/dev/vda 设备已经分配了40G:
尽管 /dev/vda3 已经扩容,但根目录是挂载在 /dev/mapper/ubuntu--vg-ubuntu--lv 分区的,而它是位于 /dev/vda3 中的,但是为什么到现在还是23G呢?使用 lsblk 命令可以看到,目前 /dev/vda3 中增加的磁盘空间并未格式化成 lvm 类型,因此 ubuntu--vg-ubuntu--lv 分区依然是23G。接着使用 pvs 命令看到物理卷的可用区间是0。
因此我们需要先让新增的空间变成物理卷认可的空间,然后才能给 /dev/mapper/ubuntu--vg-ubuntu--lv 分区扩容:
3)使用 pvresize /dev/vda3 命令将新增的磁盘空间添加到物理卷中,接着再用 pvs 查看,现在可以看到 PFree 已经不是0了:
4)扩容逻辑卷 ubuntu--vg-ubuntu--lv ,并使用 resize2fs 格式化:
命令:
lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
扩容后磁盘使用状态: