ECS仅支持导入RAW、VHD、QCOW2和VMDK格式的镜像文件。如果您的镜像文件是其他格式,需要转换格式后再导入。本文介绍如何通过开源的转换工具qemu-img转换镜像文件的格式。
约束限制
- qemu-img工具支持RAW、QCOW2、QCOW1、VMDK、VDI、VHD、VHDX或QED格式的镜像相互转换。 
- qemu-img工具不支持直接将ISO镜像转换为RAW、VHD、QCOW2和VMDK格式。 - 如需转换,建议先创建一个虚拟机,并使用ISO镜像来引导虚拟机启动操作系统。然后在虚拟机中安装操作系统,最后将虚拟机的磁盘导出为RAW、VHD、QCOW2和VMDK格式的虚拟磁盘镜像。具体操作,请参见创建虚拟机并安装操作系统(Linux)或者创建虚拟机并安装操作系统(Windows)。 
- 将VHD格式转换为其他格式或者将其他文件格式转换为VHD格式时,需使用 - vpc参数代替VHD格式,否则可能造成qemu-img工具无法识别VHD镜像格式导致转换失败,类似报错信息如下。 
操作步骤
本地为Windows操作系统
您可以按照以下步骤在Windows操作系统上安装qemu-img工具并转换镜像文件格式。
以下操作以Windows Server 2016操作系统为例,不同版本操作系统的操作路径可能不同,请您根据实际环境进行操作。
- 安装qemu-img工具。 - 下载并安装qemu-img工具,以下操作以安装路径是C:\Program Files\qemu为例。 
- 为qemu-img工具配置环境变量。 - 在Windows Server桌面,右键单击  图标,然后单击系统。 图标,然后单击系统。
- 在左侧导航栏,单击高级系统设置。 
- 在系统属性对话框里,单击高级页签,并单击环境变量。 
- 在环境变量对话框里,在系统变量部分找到Path,并单击编辑。如果Path变量不存在,单击新建。  
- 添加系统变量值。 - 编辑系统变量 - 单击新建,添加 - C:\Program Files\qemu变量值。 
- 新建系统变量 - 在变量名处输入 - Path,在变量值处输入- C:\Program Files\qemu。 
 
- 测试环境变量是否配置成功。 - 打开Windows命令行窗口。 
- 运行 - qemu-img --help命令。- 如果回显信息出现qemu-img工具的版本信息,则表示环境变量配置完成。 
 
 
- 转换镜像格式。 - 在命令行窗口运行以下命令,切换到源镜像文件所在目录,例如 - C:\Program Files\ConvertImage。- cd C:\Program Files\ConvertImage
- 运行以下命令,转换镜像文件格式。 - 以下转换命令分别以QCOW2转换为RAW格式、VHD转换为RAW格式为例,请您根据实际镜像格式进行替换。 - QCOW2转换为RAW格式- qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw- 其中: - -f(可选):参数值- qcow2表示源镜像文件的格式是QCOW2。说明- 您也可以省略 - -f及其参数值,直接执行- qemu-img convert -O raw centos.qcow2 centos.raw转换。
- -O(必须大写):参数值依次表示目标镜像格式、源镜像文件名称和目标文件名称。该示例表示将源镜像文件centos.qcow2转换为RAW格式,并指定文件名称为centos.raw。
 - VHD转换为RAW格式- qemu-img convert -f vpc -O raw centos.vhd centos.raw- 其中: - -f(可选):参数值- vpc表示源镜像文件的格式是VHD格式。说明- 您也可以省略 - -f及其参数值,直接执行- qemu-img convert -O raw centos.vhd centos.raw转换。
- -O(必须大写):参数值依次表示目标镜像格式、源镜像文件名称和目标文件名称。该示例表示将源镜像文件centos.vhd转换为RAW格式,并指定文件名称为centos.raw。重要- 如果是将其他格式转换为VHD格式,目标文件格式需使用 - vpc替代。例如将RAW格式转换为VHD格式,示例命令:- qemu-img convert -f raw -O vpc centos.raw centos.vhd。
 
- 获取转换后的镜像文件。 - 转换后的镜像文件保存在源镜像文件所在的目录下,本示例为 - C:\Program Files\ConvertImage,您可以前往该目录获取。
- 您也可以运行 - qemu-img info <目标文件名称>命令查看转换后的镜像文件的详细信息。 
 
 
本地为Linux操作系统
您可以按照以下步骤在Linux操作系统上安装qemu-img工具并转换镜像文件格式。
以下操作以Alibaba Cloud Linux 3及Ubuntu操作系统为例进行镜像格式转换。不同操作系统版本可能会有区别,请您根据实际环境进行操作。
- 运行以下命令,安装qemu-img工具。 - Alibaba Cloud Linux 3 - sudo yum install qemu-img说明- 如果在安装qemu-img时报错,且没有明确提示缺少哪些依赖库,您可以根据cloud-init的requirements.txt文件里显示的库,并运行 - sudo pip install -r requirements.txt命令安装所有依赖库。
- Ubuntu - sudo apt-get install qemu-utils说明- 如果出现 - Unable to locate package qemu-utils错误,请重新运行以下命令安装qemu-img工具。- sudo apt-get update #更新包列表 sudo apt-get install qemu-utils #安装qemu-img工具
 
- 运行以下命令,转换镜像文件格式。 - 以下转换命令分别以QCOW2转换为RAW格式、VHD转换为RAW格式为例,请您根据实际镜像格式进行替换。 - QCOW2转换为RAW格式- qemu-img convert -f qcow2 -O raw centos.qcow2 centos.raw- 其中: - -f(可选):参数值- qcow2表示源镜像文件的格式是QCOW2。说明- 您也可以省略 - -f及其参数值,直接执行- qemu-img convert -O raw centos.qcow2 centos.raw转换。
- -O(必须大写):参数值依次表示目标镜像格式、源镜像文件名称和目标文件名称。该示例表示将源镜像文件centos.qcow2转换为RAW格式,并指定文件名称为centos.raw。
 - VHD转换为RAW格式- qemu-img convert -f vpc -O raw centos.vhd centos.raw- 其中: - -f(可选):参数值- vpc表示源镜像文件的格式是VHD格式。说明- 您也可以省略 - -f及其参数值,直接执行- qemu-img convert -O raw centos.vhd centos.raw转换。
- -O(必须大写):参数值依次表示目标镜像格式、源镜像文件名称和目标文件名称。该示例表示将源镜像文件centos.vhd转换为RAW格式,并指定文件名称为centos.raw。重要- 如果是将其他格式转换为VHD格式,目标文件格式需使用 - vpc替代。例如将RAW格式转换为VHD格式,示例命令:- qemu-img convert -f raw -O vpc centos.raw centos.vhd。
 
- 获取转换后的镜像文件。 - 转换后的镜像文件保存在源镜像文件所在的目录下,您可以前往该目录获取。 
- 您也可以运行 - qemu-img info <目标文件名称>命令查看转换后的镜像文件的详细信息。 
 
后续步骤
镜像文件格式完成转换后,您需要将镜像文件上传至OSS Bucket,以便后续导入自定义镜像。具体操作,请参见上传镜像文件至OSS。
相关文档
- qemu-img是用于创建、转换和管理虚拟机镜像的命令行工具。它是QEMU(Quick EMUlator)项目的一部分,除了转换镜像格式以外,还支持创建镜像、调整虚拟机镜像大小等多种功能。更多信息,请参见QEMU官网。 
- qemu-img工具本身并不直接支持OVA (Open Virtualization Appliance) 和OVF (Open Virtualization Format) 格式。因为qemu-img工具主要针对磁盘映像文件的创建、转换和管理,而OVA和OVF是虚拟化软件包封装格式,它们包括配置文件、描述文件以及磁盘映像。OVA和OVF格式由DMTF (Distributed Management Task Force) 维护。更多信息,请参见DMTF官网。