使用 qemu-img convert 可以把 raw 格式的 openwrt.img 转换为 qcow2 格式,并输出为 vm-101-disk-1.qcow2。示例命令如下:
qemu-img convert -f raw -O qcow2 openwrt.img vm-101-disk-1.qcow2命令参数说明
qemu-img convert:qemu-img 工具的核心功能,用于转换磁盘镜像格式。-f raw:指定输入文件的格式为 raw。raw 格式是最简单的磁盘镜像格式,它只是磁盘扇区的原始拷贝,没有额外的元数据。-O qcow2:指定输出文件的格式为 qcow2。qcow2 是一种高级的磁盘镜像格式,支持诸如压缩、加密、快照等功能,可以节省磁盘空间并提高性能。使用 qcow2 通常是虚拟化环境下的良好选择。openwrt.img:输入文件的名称。这里是一个 OpenWrt 系统的磁盘镜像文件。vm-101-disk-1.qcow2:输出文件的名称。vm-101可能是虚拟机 ID,disk-1可能是磁盘编号,qcow2 格式的文件后缀名为.qcow2。
转换行为与注意事项
- 转换过程中,
qemu-img会读取openwrt.img的所有数据,然后将其写入vm-101-disk-1.qcow2。 - 转换完成后,
openwrt.img文件仍然存在,不会被删除。 - qcow2 格式支持稀疏文件,这意味着如果
openwrt.img中包含大量未使用的空间,vm-101-disk-1.qcow2文件的大小可能会比openwrt.img小。
转换为 qcow2 时的可选优化
- 预分配:如果需要指定 qcow2 镜像的预分配模式,可以使用
-o preallocation=metadata(仅预分配元数据)或-o preallocation=full(完全预分配空间)选项。前者可以加快创建速度,后者可以避免后续运行时动态分配空间带来的性能影响。 - 压缩:在转换大型镜像时,可以考虑使用
-c选项启用压缩,进一步减少输出文件的大小。例如:qemu-img convert -f raw -O qcow2 -c openwrt.img vm-101-disk-1.qcow2。但是,压缩会增加 CPU 负载。 - 加密:如果需要对 qcow2 镜像进行加密,可以使用
-o encryption=on选项,并设置密码。
其他格式转换为 qcow2
要将其他格式转换为 qcow2,需要使用 qemu-img convert 命令,并根据原始镜像文件的格式调整 -f 选项的值。例如:
- vmdk 转换为 qcow2:
qemu-img convert -f vmdk -O qcow2 input.vmdk output.qcow2 - vdi 转换为 qcow2:
qemu-img convert -f vdi -O qcow2 input.vdi output.qcow2 - iso 转换为 qcow2(不推荐,通常直接使用 iso 启动虚拟机):
qemu-img convert -f raw -O qcow2 input.iso output.qcow2(ISO 镜像通常被视为 raw 格式的只读镜像)
-f 选项指定输入文件的格式。常见格式包括 vmdk(VMware 虚拟磁盘)、vdi(VirtualBox 虚拟磁盘)、raw(原始磁盘镜像)、iso(光盘镜像)等。需要根据实际情况替换 input.vmdk、input.vdi、input.iso 为输入文件名,并替换 output.qcow2 为希望的输出文件名。
此外,也可以根据需要添加 -c 选项启用压缩,或使用 -o preallocation 选项指定预分配模式。例如:qemu-img convert -f vmdk -O qcow2 -c -o preallocation=metadata input.vmdk output.qcow2。确保已经安装了 QEMU 工具包,并且 qemu-img 命令可以在系统中使用。如果遇到权限问题,可能需要以管理员身份运行命令。
qcow2 转换为其他格式
要将 qcow2 转换为其他格式,同样使用 qemu-img convert 命令,但需要调整 -O 选项来指定目标格式。例如:
- 转换为 raw 格式:
qemu-img convert -f qcow2 -O raw input.qcow2 output.img - 转换为 vmdk 格式:
qemu-img convert -f qcow2 -O vmdk input.qcow2 output.vmdk - 转换为 vdi 格式:
qemu-img convert -f qcow2 -O vdi input.qcow2 output.vdi
其中,-f qcow2 指定输入文件格式为 qcow2,-O 选项指定输出文件的格式。input.qcow2 是 qcow2 镜像文件名,output.img、output.vmdk、output.vdi 则是想要转换成的目标格式的文件名。
示例中,将 qcow2 转回 raw 格式:
qemu-img convert -f qcow2 -O raw vm-101-disk-1.qcow2 openwrt-new.img或者转换为 VMware 使用的 vmdk 格式:
qemu-img convert -f qcow2 -O vmdk vm-101-disk-1.qcow2 my-vm.vmdk需要注意的是:
- 转换后,原始的 qcow2 文件不会被删除。
- 根据目标格式的不同,转换后的文件大小可能会有所变化。
- 某些格式可能不支持 qcow2 的所有特性(例如快照、压缩),转换时会丢失这些特性。
- 转换为 ISO 镜像通常不是一个直接的操作。可以将 qcow2 镜像挂载到虚拟机上,然后使用虚拟机内的工具创建 ISO 镜像。
核心转换逻辑与小结
命令的基本结构为:
qemu-img convert -f [源格式] -O [目标格式] [源文件名] [目标文件名]
-f(format):明确指定输入文件的格式。-O(Output format):明确指定期望的输出文件的格式。
qemu-img convert 是用于不同虚拟磁盘镜像格式之间相互转换的工具。从其他格式转换为 qcow2 是常见应用场景之一;qcow2 格式因其支持快照、动态扩展(稀疏文件可以节省存储空间)、压缩和加密等高级特性,在 Proxmox VE (PVE)、KVM 等虚拟化环境中是常用格式。无论是 raw、vmdk(VMware)还是 vdi(VirtualBox)格式,转换到 qcow2 的方法都遵循上述基本结构,只需正确设置 -f 参数即可。
从 qcow2 转换为其他格式同样直接,只需将 qcow2 作为源格式,并指定需要的其他格式为目标格式即可。这在需要将虚拟机迁移到不支持 qcow2 的平台(如某些版本的 VMware ESXi 或 VirtualBox)时非常有用。在转换到 qcow2 格式时,还可以利用 -c 压缩、-o preallocation=... 预分配、-o encryption=on 加密等选项来优化结果。综合来看,qemu-img convert 提供了灵活且强大的机制,用于在几乎所有主流虚拟磁盘格式之间进行双向转换;掌握核心参数 -f 和 -O 的用法,并了解 -c 和 -o 等高级选项,即可应对各种虚拟化场景下的磁盘管理需求。
一起交流
分享你的思考,让讨论更进一步。