如何使用qemu-img将VMDK磁盘转换为QCOW2格式且避免精简置备磁盘膨胀
如何使用qemu-img将VMDK磁盘转换为QCOW2格式且避免精简置备磁盘膨胀
我之前也碰到过一模一样的问题——把vSphere上的精简置备VMDK转成KVM/QEMU的QCOW2时,磁盘总会莫名膨胀成全容量,折腾了好一阵才搞明白正确的操作方式,分享给你:
前期准备
在转换之前,我会先从vSphere导出OVA或者OVF文件,确保磁盘已经完成合并(consolidated),这样能避免后续转换出现不必要的问题。
关于qemu-img参数的困惑
一开始我也被qemu-img --help里的-c选项搞懵了:文档说它是给“qcow”用的,但又同时提到了qcow2,分不清到底适不适用;而且明明qcow2本身就支持精简置备,为啥默认转换会膨胀?后来实际测试才搞清楚,这个选项确实能作用在qcow2上。
正确的转换命令
经过测试,能避免磁盘膨胀的正确命令是:
qemu-img convert -cpf vmdk -O qcow2 <source-file> <output-file>
每个参数的作用:
-c:启用压缩功能,核心是把磁盘里的零块转换成精简置备的空块,这样输出的QCOW2大小就和原VMDK差不多,不会膨胀-p:显示转换进度,这个非常重要——转换大磁盘耗时很久,有进度条就不会误以为程序卡住而中途取消-f:明确指定输入文件格式为vmdk-O:指定输出文件格式为qcow2
额外小贴士
- 转换前记得给虚拟机装好对应驱动:Linux原生支持VirtIO,Windows需要提前安装VirtIO驱动,不然转换后可能启动异常
- 如果转换后虚拟机启动有问题,可以调整目标hypervisor的存储总线,比如换成SCSI、SATA、VirtIO、NVMe等,总能找到合适的选项
备注:内容来源于stack exchange,提问作者Vita
相关产品推荐
相关产品推荐

