• 沒有找到結果。

通过 qemu-img 工具转换镜像格式

操作场景

华为云支持导入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2 格式镜像文件。其他镜像文件,需要转换格式后再导入。本节操作指导您使用开源 qemu-img工具转换镜像格式。

背景信息

● qemu-img镜像格式转换工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi 或qed社区格式的镜像的相互转换。

● zvhd和zvhd2是云服务内部自研格式,qemu-img工具无法识别这两种格式的镜像 文件。如需将镜像文件转换为这两种格式,请使用自研qemu-img-hw工具,详细 指导参见通过qemu-img-hw工具转换镜像格式。

● vhd格式镜像在执行命令转换格式时请使用vpc代替,否则可能造成qemu-img工 具无法识别镜像格式。

例如,将CentOS 6.9镜像的vhd格式转换为qcow2格式,请执行如下命令:

qemu-img convert -p -f vpc -O qcow2 centos6.9.vhd centos6.9.qcow2

本地为 Windows 操作系统

1. 安装qemu-img。

a. 下载qemu-img安装包至本地:https://qemu.weilnetz.de/w64/。

b. 双击setup文件安装qemu-img,以下操作以安装路径为“D:\Program Files

\qemu”为例。

2. 配置环境变量。

a. 选择“开始 > 计算机”,右键单击“属性”。

b. 单击“高级系统设置”。

c. 在“系统属性”对话框里,单击“高级 > 环境变量"。

d. 在环境变量对话框里,在系统变量部分找到Path,并单击“编辑”。在“变 量值”里,添加“D:\Program Files\qemu”,不同的变量值之间以“;”分 隔。

说明

如果没有Path变量请新建,并补充Path的变量值为“D:\Program Files\qemu”。

e. 单击“确定”,保存修改。

3. 验证安装成功。

单击“开始 > 运行”,输入“cmd”后按回车键,在“cmd”窗口输入qemu-img --help,如回显信息中出现qemu-运行”,输入“cmd”后按回车键,在“cmd”窗口输入qemu-img工具的版本信息,即表示安装成功。

4. 转换镜像格式。

a. 在“cmd”窗口输入如下命令切换文件目录,以安装目录为“D:\Program Files\qemu”为例。

d:

cd D:\Program Files\qemu

b. 执行如下命令转换镜像文件格式,以转换vmdk格式为qcow2格式的镜像为 例。

qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2

# qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2 (100.00/100%)

c. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

qemu-img info centos6.9.qcow2 回显信息如下所示:

# qemu-img info centos6.9.qcow2 image: centos6.9.qcow2

file format: qcow2

virtual size: 1.0G (1073741824 bytes) disk size: 200K

cluster_size: 65536

Format specific information:

compat: 1.1 lazy refcounts: false

本地为 Linux 操作系统

1. 安装qemu-img。

– Ubuntu、Debian系列操作系统,请执行如下命令:

apt install qemu-img

– CentOS、Red Hat、Oracle系列操作系统,请执行如下命令:

yum install qemu-img

– SUSE、openSUSE系列操作系统,请执行如下命令:

zypper install qemu-img 2. 执行如下命令,验证安装成功。

qemu-img -v

如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。以 CentOS 7为例,回显信息如下所示:

[root@CentOS7 ~]# qemu-img -v

qemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellard usage: qemu-img command [command options]

QEMU disk image utility Command syntax:

check [-q] [-f fmt] [--output=ofmt] [-r [leaks | all]] [-T src_cache] filename create [-q] [-f fmt] [-o options] filename [size]

commit [-q] [-f fmt] [-t cache] filename compare [-f fmt] [-F fmt] [-T src_cach]

3. 转换镜像格式,以CentOS 7操作系统中转换vmdk格式为qcow2格式的镜像为例。

a. 执行如下命令转换镜像文件格式。

qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2

[root@CentOS7 home]# qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2

(100.00/100%)

b. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

qemu-img info centos6.9.qcow2 回显信息如下所示:

[root@CentOS7 home]# qemu-img info centos6.9.qcow2 image: centos6.9.qcow2

file format: qcow2

virtual size: 1.0G (1073741824 bytes) disk size: 200K

cluster_size: 65536

Format specific information:

compat: 1.1 lazy refcounts: false

典型应用举例

用户从VMware平台导出一个pre-allocated格式的镜像文件(pre-allocated格式是 VMDK monolithic Flat子格式类型),pre-allocated格式镜像依赖2个文件

“xxxx.vmdk”和“xxxx-flat.vmdk”(“xxxx.vmdk”是一个配置文件,“xxxx-flat.vmdk”是实际数据文件),这两种格式的镜像文件不能直接导入到云平台,需提 前转换成通用的vmdk或qcow2格式才能导入。

以下以镜像文件格式为centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk为例,通过 qemu-img工具转换镜像格式。

1. 执行如下命令,查询镜像文件的详细信息。

ls -lh centos6.9-64bit*

qemu-img info centos6.9-64bit.vmdk qemu-img info centos6.9-64bit-flat.vmdk 回显信息如下所示:

[root@CentOS7 tmp]# ls -lh centos6.9-64bit*

-rw-r--r--. 1 root root 10G Jun 13 05:30 centos6.9-64bit-flat.vmdk -rw-r--r--. 1 root root 327 Jun 13 05:30 centos6.9-64bit.vmdk [root@CentOS7 tmp]# qemu-img info centos6.9-64bit.vmdk image: centos6.9-64bit.vmdk

file format: vmdk

virtual size: 10G (10737418240 bytes) disk size: 4.0K

Format specific information:

cid: 3302005459 parent cid: 4294967295 create type: monolithicFlat extents:

[0]:

virtual size: 10737418240

filename: centos6.9-64bit-flat.vmdk format: FLAT

[root@CentOS7 tmp]# qemu-img info centos6.9-64bit-flat.vmdk image: centos6.9-64bit-flat.vmdk

file format: raw

virtual size: 10G (10737418240 bytes) disk size: 0

说明

从回显信息中看出,centos6.9-64bit.vmdk文件的格式为vmdk,centos6.9-64bit-flat.vmdk文件的格式为raw,在执行镜像格式转换命令时,源镜像文件必须使用 centos6.9-64bit.vmdk(详见步骤3)。

2. 执行如下命令,查看pre-allocated格式的镜像文件的相关配置信息。

cat centos6.9-64bit.vmdk 回显信息如下所示:

[root@CentOS7 tmp]# cat centos6.9-64bit.vmdk

# Disk DescriptorFile version=1

CID=c4d09ad3 parentCID=ffffffff

createType="monolithicFlat"

# Extent description

RW 20971520 FLAT "centos6.9-64bit-flat.vmdk" 0

# The Disk Data Base

#DDB

ddb.virtualHWVersion = "4"

ddb.geometry.cylinders = "20805"

ddb.geometry.heads = "16"

ddb.geometry.sectors = "63"

ddb.adapterType = "ide"

3. 将centos6.9-64bit-flat.vmdk和centos6.9-64bit.vmdk放在同一个目录下,执行如 下命令,通过qemu-img工具转换镜像格式为qcow2。

[root@CentOS7 tmp]# qemu-img convert -p -f vmdk -O qcow2 centos6.9-64bit.vmdk centos6.9-64bit.qcow2

(100.00/100%)

4. 执行如下命令,查询转换后的qcow2格式镜像文件的详细信息。

qemu-img info centos6.9-64bit.qcow2 回显信息如下所示:

[root@CentOS7 tmp]# qemu-img info centos6.9-64bit.qcow2 image: centos6.9-64bit.qcow2

file format: qcow2

virtual size: 10G (10737418240 bytes) disk size: 200K

cluster_size: 65536

Format specific information:

compat: 1.1

scp /var/image01.qcow2 root@xxx.xxx.xx.xxx:/usr/

其中,xxx.xxx.xx.xxx为云服务器的弹性公网IP。

– 本地主机为Windows系统:

使用文件传输工具(例如WinSCP)将镜像文件上传至云服务器。

2. 获取qemu-img-hw工具并上传至云服务器,然后解压工具包。

相關文件