ECS仅支持导入RAW、VHD和QCOW2格式的镜像文件。如果您的镜像文件是其他格式,需要转换格式后再导入。本文介绍如何通过开源的转换工具qemu-img转换镜像文件的格式。
约束限制
qemu-img工具支持RAW、QCOW2、QCOW1、VMDK、VDI、VHD、VHDX或QED格式的镜像相互转换。
qemu-img工具不支持直接将ISO镜像转换为RAW、VHD和QCOW2格式。
如需转换,建议先创建一个虚拟机,并使用ISO镜像来引导虚拟机启动操作系统。然后在虚拟机中安装操作系统,最后将虚拟机的磁盘导出为RAW、VHD和QCOW2格式的虚拟磁盘镜像。具体操作,请参见创建虚拟机并安装操作系统(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官网。