基于Linux环境快速导入镜像文件
操作场景
本节指导您基于Linux操作系统环境完成镜像文件快速导入,推荐使用云平台的EulerOS云服务器作为转换镜像格式和生成位表文件的环境。
Linux操作系统环境下,建议使用qemu-img-hw工具进行镜像格式转换。
前提条件
- 请确保镜像文件已完成初始化配置,详情请参考表2,根据镜像文件的操作系统类型来选择。
- 已在管理控制台创建EulerOS操作系统的弹性云服务器,并确保云服务器已绑定弹性公网IP。
- 已在管理控制台创建OBS桶。
操作步骤
- 上传镜像文件至云服务器。
- 获取镜像转换工具(qemu-img-hw.zip)和位表文件生成工具(createMF.zip),并上传至云服务器,然后解压工具包。
- 使用qemu-img-hw工具转换镜像格式。
- 进入qemu-img-hw存放目录,以存放在“/usr/qemu-img-hw”为例:
- 执行以下命令修改权限:
- 执行qemu-img-hw命令将镜像文件转为zvhd2或raw格式(推荐转为zvhd2格式)。
./qemu-img-hw convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件}
以将“image01.qcow2”格式文件转换成“image01.zvhd2”格式为例:
./qemu-img-hw convert -p -O zvhd2 image01.qcow2 image01.zvhd2
- 使用CreateMF.jar工具生成位表文件。
- 使用s3cmd工具上传文件至OBS桶。
- 安装s3cmd工具。
- 配置s3cmd工具。
s3cmd --configure Access Key: 输入AK Secret Key: 输入SK Default Region: 输入所在Region S3 Endpoint: 可参考OBS的Endpoint DNS-style bucket+hostname:port template for accessing a bucket: 输入带桶名的Server地址,例如mybucket.obs.myclouds.com Encryption password: 不填,直接按回车 Path to GPG program: 不填,直接按回车 Use HTTPS protocol: 是否使用HTTPS,Yes/No HTTP Proxy server name: 代理地址,连接云平台需要连外网(如不需要直接回车) HTTP Proxy server port: 代理端口,连接云平台需要连外网(如不需要直接回车) Test access with supplied credentials? y (如果显示:Success. Your access key and secret key worked fine :-) 则表示连接成功) Save settings? y(是否保存配置)
配置完成后,信息会保存在用户目录下“/root/.s3cfg”,如果还想修改,可以重新执行s3cmd --configure命令,或者直接编辑.s3cfg文件(执行vi .s3cfg命令进行编辑)。
- 使用s3cmd命令上传zvhd2格式镜像文件到OBS桶,或者上传raw格式镜像文件及其位表文件到OBS桶。
s3cmd put image01.zvhd2 s3://mybucket/
.mf位表文件必须和其对应的raw格式镜像文件在同一个OBS桶中。
- 注册私有镜像。
您可以通过控制台方式、API接口方式,将转换后的zvhd2或raw文件注册为私有镜像。
方法一:通过控制台创建私有镜像
以外部镜像文件创建系统盘镜像为例:
- 登录IMS控制台。
- 根据界面要求填写如下信息:
包含“镜像类型和来源”和“配置信息”两个信息块,各参数说明参见表2和表3。
图1 镜像类型和来源
表2 镜像类型和来源参数说明 参数
说明
取值样例
区域
不同区域的云服务产品之间内网互不相通;请就近选择靠近您业务的区域,可减少网络时延,提高访问速度。
-
创建方式
私有镜像按创建方式划分可分为两种,分别为创建私有镜像和导入私有镜像。
导入私有镜像
镜像类型
包含操作系统或业务数据、预装的公共应用以及用户的私有应用的镜像,仅用户个人可见。
私有镜像包括系统盘镜像、数据盘镜像、ISO 镜像和整机镜像,其中:
- 系统盘镜像:只包含用户运行业务所需的操作系统、应用软件的镜像。系统盘镜像可以用于创建云服务器,迁移用户业务到云。
- 数据盘镜像:只包含用户业务数据的镜像。数据盘镜像可以用于创建云硬盘,将用户的业务数据迁移到云上。
- ISO 镜像:将外部镜像的ISO文件注册到云平台的私有镜像。ISO镜像是特殊的镜像,只能发放用作临时过渡的云服务器。
- 整机镜像:也叫全镜像,包含用户运行业务所需的操作系统、应用软件和业务数据的镜像。整机镜像基于差量备份制作,相比同样磁盘容量的系统盘镜像和数据盘镜像,创建效率更高。
系统盘镜像
选择镜像文件
镜像文件需要转换为zvhd2或raw格式并完成镜像优化。从列表中选择转换为zvhd2或raw文件的桶,再选择对应的镜像文件。如果是raw格式镜像文件,需要确保同名位表文件已上传。
说明:镜像文件格式转换、生成位表文件等操作请参考快速导入镜像文件创建私有镜像。
xxx.zvhd2
快速通道
选择zvhd2或raw格式的镜像文件时出现,快速通道功能可快速完成镜像制作,并且支持大文件上传(不超过1TB)。如果您已提前准备好符合要求的镜像文件,请勾选“开启快速通道”,然后勾选“镜像文件准备”后的确认信息。
-
图2 配置信息

表3 配置信息参数说明 参数
说明
取值样例
进行后台自动化配置
勾选后,后台系统将会对镜像文件进行相关检查及优化,具体包括哪些操作请参见“通过镜像文件注册私有镜像过程中,系统会对镜像做哪些修改?”。
-
进行自动化签名
可选参数,勾选后,系统将采用签名方式创建私有镜像,以确保镜像数据的可靠性。
- 签名密钥名称:请在下拉列表中选择使用的密钥。如果没有,请登录DEW控制台,创建密钥。详细请参考如何对导入的私有镜像进行自动化签名?
- 签名密钥ID:使用的密钥ID。 说明:
- 镜像签名后,该镜像不能共享。
- 各区域支持镜像自动化签名功能以控制台为准。
-
镜像用途
表示此镜像用来创建弹性云服务器或裸金属服务器,取值为分为“ECS系统盘镜像”和“BMS系统盘镜像”。
ECS系统盘镜像
架构类型
根据待注册的镜像文件的架构类型,选择“x86”或“ARM”。
说明:- 当系统识别的镜像文件架构类型与您设置的架构类型不一致时,以系统识别的架构类型为准。
- 当系统不能识别镜像文件的架构类型时,以您设置的架构类型为准。
x86
启动方式
可选参数。此选项需用户确认待注册镜像文件本身的启动方式,并通过此选项告知云平台,以便于云平台完成镜像文件启动方式的相关配置。请选择正确的启动方式,否则,使用该镜像创建的弹性云服务器无法启动。
启动方式取值为“BIOS”和“UEFI”,两者的区别请参见“UEFI启动方式与BIOS启动方式有哪些区别?”。
支持UEFI启动方式的操作系统版本请参见“支持UEFI启动方式的操作系统版本”。
说明:镜像文件为ARM架构类型时,仅支持UEFI启动方式。
BIOS
操作系统
为保证镜像的正常创建和使用,请确保选择的操作系统与镜像文件的操作系统类型一致。未选择时,系统会自动识别镜像文件的操作系统。
说明:- 系统识别的镜像文件操作系统与用户设置的操作系统不同时,以系统识别的操作系统为准。
- 系统不能识别镜像文件的操作系统时,以用户选择的操作系统为准。
- 用户选择或系统识别的镜像文件操作系统与实际不一致时,可能会对由此镜像文件最终创建的弹性云服务器的性能产生影响。
-
许可证类型
支持使用自带许可证(BYOL)。如果您已有相应操作系统的授权许可证,创建弹性云服务器后可直接使用已有许可证,无需重新申请。该参数仅在操作系统为Windows时可见。
-
系统盘
设置系统盘容量,范围为40-1024GB,请确保输入的大小不小于源主机镜像文件的系统盘大小。
说明:如果上传使用vhd格式的镜像是通过qemu-img或者其他工具转换生成的,设置系统盘容量时请参考为什么VHD格式的镜像上传失败,任务中心查看报错为外部镜像文件的系统盘容量大于用户设置的系统磁盘容量?进行检查。
-
数据盘
您还可以增加多块数据盘随系统盘镜像一起创建,需要事先制作好数据盘镜像文件。该功能一般适用于将其他平台的虚拟机及其数据盘一起迁移至本平台。
操作方法:单击
图标增加一块数据盘,设置数据盘容量,然后单击“选择镜像文件”,从列表中先选择保存镜像文件的桶,再选择对应的数据盘镜像文件。说明:最多添加3块数据盘。
-
名称
设置一个便于您识别的镜像名称。
-
加密
可选参数,如果需要加密镜像,请勾选“KMS加密”并从密钥列表中选择需要使用的密钥名称。勾选“KMS加密”后,系统会为用户创建默认密钥“ims/default”。您也可以从密钥列表中选择需要使用的密钥名称。
加密镜像详情请参考创建加密镜像。
-
企业项目
该参数针对企业用户使用。如需使用该功能,请联系客服申请开通。
企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理,默认项目为default。
请从下拉列表中选择所在的企业项目。更多关于企业项目的信息,请参见进入企业中心。
default
标签
可选参数,为镜像设置标签键和标签值,便于识别和管理。建议在TMS中创建预定义标签。创建预定义标签请参考:创建预定义标签。
说明:如您的组织已经设定了镜像的相关标签策略,则需按照标签策略规则为私有镜像添加标签。标签如果不符合标签策略的规则,则可能会导致私有镜像标签创建失败,请联系组织管理员了解标签策略详情。
- 每个标签由键值对组成,标签的key的长度不超过36个字符,value的长度不超过43个字符。key不能为空或空白字符串,value不能为空,但可以是空白字符串。
- 单个镜像最多添加10个标签。
-
描述
可选参数,对镜像进行描述。
-
协议
-
单击“下一步”,根据界面提示,确认镜像规格,单击“提交”。
- 返回私有镜像列表,等待镜像状态变为“正常”,注册成功。
如果在创建过程中添加了数据盘,将同时生成系统盘镜像和数据盘镜像,数据盘镜像个数由您所添加的数据盘数量而定,不超过3个。
根据镜像文件大小不同,将镜像文件注册为私有镜像所使用的时间不同,请耐心等待。
方法二:通过API方式创建私有镜像
您可以通过接口POST /v2/cloudimages/quickimport/action,实现镜像文件快速导入功能。
该接口的具体调用方法,请参见“镜像文件快速导入”。
附1:qemu-img-hw常用命令
- 镜像文件格式转换:
qemu-img-hw convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件}上述命令中各参数对应的说明如下:
-p:标识转换的进度条
-O:(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标镜像文件名称
示例:将qcow2格式转为zvhd2格式
qemu-img-hw convert -p -O zvhd2 test.qcow2 test.zvhd2
- 查询镜像文件信息:
qemu-img-hw info {镜像文件}示例:
qemu-img-hw info test.zvhd2
- 查看帮助:
qemu-img-hw -help
附2:执行qemu-img-hw常见报错
- 问题描述: 执行qemu-img-hw命令时回显信息如下:
./qemu-img-hw: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qemu-img-hw)
解决方法:
执行strings /lib64/libc.so.6 | grep GLIBC查看GLIBC版本,若由于版本过低造成,可安装高版本即可。依次执行下述命令:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz tar -xvf glibc-2.15.tar.gz tar -xvf glibc-ports-2.15.tar.gz mv glibc-ports-2.15 glibc-2.15/ports mkdir glibc-build-2.15 cd glibc-build-2.15 ../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
此命令若报错“configure: error: no acceptable C compiler found in $PATH”,请先执行:yum -y install gcc
make make install
- 问题描述:
./qemu-img-hw: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:
请先执行命令
yum install libaio
- 问题描述:
./qemu-img-hw: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory
解决方法:执行openssl version查看当前openssl版本是否大于1.0,若版本大于1.0,需要安装1.0版本。
请依次执行下述命令:
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_0_2k/openssl-1.0.2k.tar.gz tar -xvf openssl-1.0.2k.tar.gz cd openssl-1.0.2k ./config -d shared --prefix=/tmp/openssl(安装目录,可自定义) make make install cp /tmp/openssl/lib/libcrypto.so.1.0.0 /usr/lib64/libcrypto.so.10使用完成后,如不需要/usr/lib64/libcrypto.so.10文件,可自行删除。