Title here
Summary here
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。