admin 发表于 2022-3-28 09:33:11

kvm虚机导出文件后,精简文件用于openstack镜像

KVM下的导出操作
执行镜像文件导出操作前,虚拟机必须要是处于关机状态

针对raw格式虚拟磁盘文件精简导出

#cp --sparse=always vm500G.raw vm500G-new.raw   //--sparse=always稀疏拷贝,忽略全0数据#qemu-img convert -c -f raw -O qcow2 vm500G.raw vm500G.qcow2针对原本就是qcow2格式的虚拟磁盘文件精简导出#qemu-img convert -c -O qcow2 vm500G.qcow2 vm500G-mini.qcow2
实测导出数据大小对比raw文件实际大小disk size: 5.8GB
直接导出qcow2镜像大小: 4.5GB
全置零后导出qcow2镜像大小: 2.2GB

admin 发表于 2022-3-28 09:34:59

那么有没有办法只导出当前虚拟机内实际占用的有效数据呢?将所有已经删除了的文件和其对应的磁盘block块都忽略掉,不要导出到我们的镜像文件中,以最大程度缩减导出来的文件体积!

方法就是在导出镜像之前,先在虚拟机系统的内部,对所有未使用,以及所有剩余可使用的磁盘空间进行全面置零填充操作,可以简单理解为将当前所有未存储有效数据的block(含已删除的文件block)全都进行写0覆盖,然后再进行镜像压缩导出,就可以忽略所有这些无用的数据空间了;

虚拟机内部写零操作

#dd if=/dev/zero of=/null.dat   //创建一个全0的大文件,占满所有的剩余磁盘空间,需要很久时间
#rm -f /null.dat                //删除这个文件
页: [1]
查看完整版本: kvm虚机导出文件后,精简文件用于openstack镜像