kvm镜像分为raw和qcow2 两种,目前生产使用的基本是都是qcow2,有比较多的功能,这里不叙述。比较重要的一点是分配给qcow2镜像的空间,不会立即占用,而是用多少算多少,这个特性大大的提高了存储资源利用率。
日常qcow2管理,比较常见的是空间扩容、空间清理,但是不支持缩容。
1、空间扩容
1、镜像扩容,增加100G空间
qemu-img resize vmname.img +100G
2、 查看镜像信息,可以看到镜像大小已经改变
qemu-img info vmname.img
3、登录kvm机器,安装growpart
yum install -y cloud-utils-growpart
4、 将新增的空间,扩容至指定的分区,重启kvm
growpart /dev/vda 1
reboot
5、 重新定义大小
xfs文件系统:xfs_growfs /dev/vda1
ext4文件系统: resize2fs /dev/vda1
至此可以通过df -h 看到目标分区容量已经增加。
2、空间清理
如果我们有一个qcow2镜像文件空间为100G,初始状态下,改镜像在宿主机上仅占用几kb的空间。
而当你日志文件等用完了这100G ,镜像文件在宿主机上也在占用了100G,即使你清理掉了文件,空间也不会被释放。我们需要
对镜像文件,进行一次转换,以便回收空间资源。首先要关闭虚拟机,然后执行镜像转换操作。
qemu-img convert -f qcow2 -O qcow2 template.imgbak template.img
转换完成后,可以看到template.img 在宿主机上占用的空间,为在kvm主机里占用的实际空间大小。这大大的节省了空间资源。