快速导入镜像文件(基于Linux环境)
操作场景
本节指导您基于Linux操作系统环境完成镜像文件快速导入,推荐使用云平台的EulerOS云服务器作为转换镜像格式和生成位表文件的环境。
Linux操作系统环境下,建议使用qemu-img-hw工具进行镜像格式转换。
前提条件
- 已完成镜像文件优化,详细操作请参考优化过程(Windows)或优化过程(Linux);同时需要确保镜像文件符合表2或表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控制台。
- 单击右上角的“创建私有镜像”。
- 在“镜像类型和来源”区域,创建方式选择“导入私有镜像”,镜像类型选择“系统盘镜像”或“数据盘镜像”。
- 从列表中选择转换为zvhd2或raw文件的桶,再选择转换后的镜像文件。如果是raw格式镜像文件,还需要选择位表文件。
- 勾选快速通道栏的“开启快速通道”,并确认已优化镜像文件,然后勾选“镜像文件准备”栏的内容。
- 根据界面提示填写配置信息。
具体的配置参数说明,请参见注册镜像(Linux)。
方法二:通过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