qcow2是kvm/qemu生态中最常用的虚拟磁盘格式,支持快照、稀疏存储和压缩等特性,可通过qemu-img在vmdk、vhdx、raw等格式间高效转换,转换时需注意元数据丢失、兼容性参数及转换后校验。

QCOW2 是 KVM/QEMU 生态中最常用的虚拟磁盘格式,支持快照、稀疏存储和压缩等特性。它本身不是“终点”,而是可进可出的中间枢纽——你可以把它转成其他格式用于迁移,也能从其他格式转成 QCOW2 用于本地部署。
核心工具始终是 qemu-img,它预装在大多数 Linux 发行版(如 CentOS/RHEL、Ubuntu/Debian、麒麟等)的 qemu-utils 或 qemu-img 包中,无需额外编译。
✅ 把其他格式转成 QCOW2
这是最常见需求,比如把物理磁盘镜像、ISO 安装盘、VMware 的 VMDK 或 Hyper-V 的 VHDX 转为可直接启动的 QCOW2。
命令通用结构:
qemu-img convert -f -O qcow2
-
-f显式指定源格式(推荐),避免自动识别出错 -
-O(大写字母 O)固定表示输出格式 - 源文件保留,新文件单独生成(不覆盖)
常见转换示例:
-
RAW → QCOW2(如 dd 备份的磁盘镜像)
qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2
-
VMDK → QCOW2(从 VMware 导出的虚拟机)
qemu-img convert -f vmdk -O qcow2 vmware-disk.vmdk kvm-disk.qcow2
-
VHDX → QCOW2(Hyper-V 导出)
qemu-img convert -f vhdx -O qcow2 win10.vhdx win10.qcow2
-
ISO → QCOW2(仅创建空盘,非安装镜像)
注意:ISO 是只读安装介质,不能直接
convert成可启动系统盘。正确做法是先创建 QCOW2 空盘,再用virt-install安装:qemu-img create -f qcow2 os-install.qcow2 20G virt-install --name myvm --ram 2048 --vcpus 2 \ --disk path=os-install.qcow2,format=qcow2 \ --cdrom /path/to/ubuntu-22.04.iso \ --network network=default --graphics vnc
✅ 把 QCOW2 转成其他格式
用于跨平台迁移或云平台导入(如腾讯云要求 VHD/RAW,VMware 要 VMDK):
-
QCOW2 → RAW
qemu-img convert -f qcow2 -O raw ubuntu.qcow2 ubuntu.raw
-
QCOW2 → VMDK(供 VMware/VirtualBox 使用)
qemu-img convert -f qcow2 -O vmdk app.qcow2 app.vmdk
-
QCOW2 → VHDX(供 Hyper-V)
qemu-img convert -f qcow2 -O vhdx server.qcow2 server.vhdx
⚠️ 提示:QCOW2 含有元数据(如快照链、加密信息),转出时这些特性会丢失。若原盘有快照,建议先
qemu-img snapshot -d删除或qemu-img commit合并后再转换。
✅ 转换后必须做的两件事
-
检查新镜像完整性
qemu-img info target.qcow2
确认
file format: qcow2、virtual size正确、无报错。 -
更新虚拟机配置(如果替换原有磁盘)
使用virsh edit <vm-name></vm-name>修改<disk></disk>部分:<source file="/var/lib/libvirt/images/target.qcow2"></source><driver name="qemu" type="qcow2"></driver>
保存退出后重启虚拟机生效。
✅ 小技巧提升效率与安全性
-
加
-p参数显示进度条(尤其大文件时很实用)qemu-img convert -p -f raw -O qcow2 big.img disk.qcow2
-
加
-c启用压缩(减小体积,适合传输,但略微影响 I/O 性能)qemu-img convert -c -f raw -O qcow2 src.raw dst.qcow2
-
使用
--object和-o设置高级选项(如 L2 缓存大小、lazy refcounts)qemu-img convert -f raw -O qcow2 -o lazy_refcounts=on,cluster_size=2M src.raw dst.qcow2
不复杂但容易忽略











