准备vmware导出的ovf镜像
[root@localhost ~]# ll
total 3472056
-rw-------. 1 root root 1448 Sep 15 19:40 anaconda-ks.cfg
-rw-r--r-- 1 root root 3488363008 Sep 18 02:10 Temp_Centos-disk1.vmdk
安装kvm虚拟化及virt-manager
[root@localhost ~]# yum install qemu-kvm qemu-kvm-tools libvirt qemu-kvm libvirt bridge-utils virt-manager qemu-kvm-tools xorg-x11-xauth tigervnc-server vnc device-mapper-libs libguestfs-winsupport -y
windows系统镜像转换需安装驱动
[root@localhost ~]# rpm -ivh https://fedorapeople.org/groups/virt/virtio-win/repo/stable/virtio-win-0.1.171-1.noarch.rpm
创建kvm存储池(用来提供vmdk镜像存储)
[root@localhost ~]# systemctl start libvirtd
[root@localhost ~]# mkdir -p /app/vmfs
[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /app/vmfs
Pool vmdisk defined
[root@localhost ~]# virsh pool-build vmdisk
Pool vmdisk built
[root@localhost ~]# virsh pool-autostart vmdisk
Pool vmdisk marked as autostarted
[root@localhost ~]# virsh pool-start vmdisk
Pool vmdisk started
使用virt-manager里的工具virt-v2v进行转换qcow2
[root@localhost ~]# virt-v2v -i disk Temp_Centos-disk1.vmdk -o libvirt -os vmdisk -of qcow2
注意:如果转换中途失败或者报错可以加参数-v -x看过程
[root@localhost ~]# virt-v2v -v -x -i disk Temp_Centos-disk1.vmdk -o libvirt -os vmdisk -of qcow2
转换之前需关闭selinux,将其设置成disable
转换后可以查看qcow2文件大小居然有12G。(原因是因为镜像空间有碎片,这里压缩一下就好了)
[root@localhost ~]# cd /app/vmfs/
[root@localhost vmfs]# du -lh Temp_Centos-disk1-sda
12G Temp_Centos-disk1-sda
推荐virt-sparsify,它的磁盘碎片压缩比例可以达到95%以上,比qemu-img强太多
[root@localhost vmfs]# virt-sparsify --compres Temp_Centos-disk1-sda CentOS7.9-x86-KVM.qcow2
压缩后只有1.4G,至此整个vmware镜像转qcow2过程完成。