qcow2磁盘

qcow2的磁盘大小是动态的,即只占用实际使用的空间,而不是预分配的空间。这样可以节省空间,但是会降低性能。

磁盘收缩

已经占用的空间可以通过qemu-img info disk.qcow2查看。即使文件系统内删除了文件,磁盘映像占用的空间也不会减少。

处理方式有:
使用qemu-img convert转换格式,或者使用qemu-img resize调整大小。 还有一种方式是使用virt-sparsify工具,它会将磁盘中的空洞清空,然后重新分配磁盘。

sudo apt-get install guestfs-tools
sudo virt-sparsify --in-place disk.qcow2

调整大小的命令如下:

qemu-img resize disk.qcow2 30G

磁盘动态扩容

这里使用的案例是一个虚拟机名为debian,使用的官方下载的debian-12-nocloud-amd64.qcow2磁盘映像,默认根分区大小就2.6G,运行中扩容到10G

virsh blockresize debian /var/lib/libvirt/images/debian-12-nocloud-amd64.qcow2 10G

此时在虚拟机内fdisk查看磁盘容量增加,分区大小未变。

接着调整分区大小,正好映像中/dev/vda1是最后一个分区。

growpart /dev/vda 1

此时分区已经到9.7G,但是挂载的文件系统并没有增加。

resize2fs /dev/vda1

此时,已经扩容到9.7G了,已使用2.6G,可用6.7G。