操作场景
如果外部镜像文件大小大于128GB,可以使用快速导入镜像文件功能进行导入。
约束与限制
- 快速导入镜像文件功能仅支持raw和zvhd2格式镜像文件。
- 若镜像文件格式为raw和zvhd2以外的格式,可以使用qemu-img-ctc工具转换镜像格式。
- 镜像文件大小不能超过1TB。
导入方案
请根据您的镜像文件格式来选择合适的导入方案:
- 若文件格式为 zvhd2 ,则导入方案为:镜像文件优化> 上传至OBS桶 > 在云平台注册
- 若文件格式为 raw ,则导入方案为:镜像文件优化> 生成镜像文件的位表文件 > 将镜像文件和位表文件一同上传至OBS桶 > 在云平台注册
- 若文件为zvhd2和raw以外的格式,导入时区分以下两种情况:
- 镜像文件优化> 转换镜像文件格式为zvhd2 > 将镜像文件上传至OBS桶 > 在云平台注册
- 镜像文件优化> 转换镜像文件格式为raw,并生成镜像文件的位表文件 > 将镜像文件和位表文件一同上传至OBS桶 > 在云平台注册
快速导入也称大文件导入。大文件在导入时依赖延迟加载特性,zvhd2格式已支持该特性;raw格式不支持,需要依赖位表文件,因此在上传时,需要连同位表文件一起上传。
镜像文件优化的指导参考:优化私有镜像(Windows)或者优化私有镜像(Linux),根据镜像文件的操作系统类型来选择。
资源和成本规划
资源 | 资源说明 | 成本说明 |
---|---|---|
qemu-img | 是一款开源的转换镜像格式的工具。获取方式:https://qemu.weilnetz.de/w64/ | 免费 |
qemu-img-ctc | 是一款基于开源工具qemu-img 2.3.0版本做的镜像格式转换工具。获取方式:https://ecs-hy.obs.cn-gz1.ctyun.cn/qemu-img-ctc/ | 免费 |
CreateMF.jar | 是一款生成位表文件的工具。获取方式:https://ecs-hy.obs.cn-gz1.ctyun.cn/CreateMF/ | 免费 |
资源 | 资源说明 | 成本说明 |
---|
导入流程
本节以外部镜像文件格式为zvhd2和raw以外的场景为例,介绍基于Linux和Windows操作系统环境的完整导入流程。
转换镜像格式时,Linux操作系统可以使用qemu-img-ctc,也可以使用开源工具qemu-img,Windows操作系统仅可使用开源工具qemu-img。
快速导入工具中包含三个子工具,分别实现两项功能:qemu-img-ctc / qemu-img(镜像格式转换)、CreateMF.jar(生成位表文件)。
- 基于Linux操作系统环境
推荐使用云平台的HCE服务器作为操作的环境,流程如下图所示。
详细操作请参见快速导入镜像文件(基于Linux环境)。
- 基于Windows操作系统环境
推荐使用Windows系统本地PC作为操作的环境,流程如下图所示。
开源镜像转换工具qemu-img不支持将镜像文件转换为zvhd2格式,因此需要转换为raw格式,再使用CreateMF.jar生成位表文件。
详细操作请参见快速导入镜像文件(基于Windows环境)。
快速导入镜像文件(基于Linux环境)
操作场景
本节指导您基于Linux操作系统环境完成镜像文件快速导入,推荐使用云平台的HCE云服务器作为转换镜像格式和生成位表文件的环境。
Linux操作系统环境下,建议使用qemu-img-ctc工具进行镜像格式转换。
前提条件
- 已完成镜像文件优化,详细操作请参考优化私有镜像(Windows)或优化私有镜像(Linux);同时需要确保镜像文件符合Linux 操作系统的镜像文件限制中的限制条件。
请根据镜像文件的操作系统类型来选择所参考内容。
- 已在管理控制台创建HCE操作系统的弹性云服务器,并确保云服务器已绑定弹性公网IP。
- 已在管理控制台创建OBS桶。
操作步骤
-
上传镜像文件至云服务器。
- 本地主机为Linux系统:
通过scp命令将镜像文件上传至云服务器。以将“image01.qcow2”文件上传至云服务器的“/usr/”目录下为例。
scp /var/image01.qcow2 root@xxx.xxx.xx.xxx:/usr/
其中,xxx.xxx.xx.xxx为云服务器的弹性公网IP。 - 本地主机为Windows系统:
使用文件传输工具(例如WinSCP)将镜像文件上传至云服务器。
- 本地主机为Linux系统:
-
获取镜像转换工具(qemu-img-ctc.rar)和位表文件生成工具(CreateMF.zip),并上传至云服务器,然后解压工具包。
-
使用qemu-img-ctc工具转换镜像格式。
- 进入qemu-img-ctc存放目录,以存放在“/usr/qemu-img-ctc”为例:
cd /usr/qemu-img-ctc - 执行以下命令修改权限:
chmod +x qemu-img-ctc - 执行qemu-img-ctc命令将镜像文件转为zvhd2或raw格式(推荐转为zvhd2格式)。
qemu-img-ctc命令格式:
./qemu-img-ctc convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件}
以将“image01.qcow2”格式文件转换成“image01.zvhd2”格式为例:
./qemu-img-ctc convert -p -O zvhd2 image01.qcow2 image01.zvhd2
若转换后为zvhd2格式文件,请执行步骤5。
若转换后为raw格式文件,请使用CreateMF.jar工具,生成raw格式镜像文件的位表文件。请执行步骤4。
- 进入qemu-img-ctc存放目录,以存放在“/usr/qemu-img-ctc”为例:
-
使用CreateMF.jar工具生成位表文件。
- 请确保当前云服务器已安装jdk。
执行以下命令查看是否已安装jdk:
source /etc/profile
java -version
如果回显信息中显示java版本信息,证明当前云服务器已安装jdk。 - 执行以下命令进入CreateMF.jar程序所在的目录。
cd /usr/CreateMF - 执行以下命令生成位表文件。
java -jar CreateMF.jar /原raw文件路径 /生成的mf文件路径
例如:
java -jar CreateMF.jar image01.raw image01.mf
- 请确保当前云服务器已安装jdk。
-
使用s3cmd工具上传文件至OBS桶。
-
安装s3cmd工具。
若云服务器已安装该工具可跳过此步骤,直接按照步骤b配置s3cmd:- 执行以下命令,安装setuptools。
yum install python-setuptools - 执行以下命令,安装wget。
yum install wget - 执行以下命令,获取s3cmd软件包。
wget https://github.com/s3tools/s3cmd/archive/master.zip
mv master.zip s3cmd-master.zip - 执行以下命令,安装s3cmd。
unzip s3cmd-master.zip
cd s3cmd-master
python setup.py install
- 执行以下命令,安装setuptools。
-
配置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系统盘镜像。注意操作系统必须要和镜像文件所含的操作系统一致。
系统盘大小必须大于镜像文件的大小。
通过qemu-img-ctc工具可查询镜像文件大小:qemu-img-ctc info test.zvhd2
方法二:通过API方式创建私有镜像
您可以通过接口POST /v2/cloudimages/quickimport/action,实现镜像文件快速导入功能。
-
附录1:qemu-img-ctc常用命令
- 镜像文件格式转换:qemu-img-ctc convert -p -O {目标镜像格式} {待转换镜像文件} {目标镜像文件}
上述命令中各参数对应的说明如下:
-p:标识转换的进度条
-O:(必须是大写)后面的参数为转换出来的镜像格式 + 源镜像文件名称 + 目标镜像文件名称
示例:将qcow2格式转为zvhd2格式
qemu-img-ctc convert -p -O zvhd2 test.qcow2 test.zvhd2 - 查询镜像文件信息:qemu-img-ctc info {镜像文件}
示例:qemu-img-ctc info test.zvhd2 - 查看帮助:qemu-img-ctc -help
附录2:执行qemu-img-ctc常见报错
- 问题描述:
执行qemu-img-ctc命令时回显信息如下:
解决方法:
执行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
make
make install
../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
-
问题描述:
执行qemu-img-ctc命令时回显信息如下:./qemu-img-ctc: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
解决方法:请先执行命令yum install libaio
快速导入镜像文件(基于Windows环境)
操作场景
本节指导您基于Windows操作系统环境完成镜像文件快速导入,推荐使用Windows系统本地PC作为转换镜像格式和生成位表文件的环境。
Windows操作系统环境下,必须使用开源qemu-img工具进行镜像格式转换,qemu-img支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed格式的镜像的相互转换,因此需要转换为raw格式,再使用CreateMF.jar工具生成位表文件。
前提条件
- 已完成镜像文件优化,详细操作请参考优化私有镜像(Windows)或优化私有镜像(Linux);同时需要确保镜像文件符合Windows操作系统的镜像文件限制中的限制条件。
根据镜像文件的操作系统类型来选择所参考内容。
- 已在管理控制台创建OBS桶,并下载OBS Browser+工具。
操作步骤
-
安装开源镜像转换工具qemu-img。
-
通过cmd命令进入qemu-img安装目录,执行qemu-img命令将镜像文件转换为raw格式。
以将“image.qcow2”格式文件转换成“image.raw”格式为例:
qemu-img convert -p -O raw image.qcow2 image.raw -
使用CreateMF.jar工具生成位表文件。
- 获取工具并解压。
请联系管理员获取工具。 - 请确保当前环境已安装jdk。
可通过CreateMF如下方法验证:
打开cmd.exe,执行java -version,若显示java版本信息,证明已安装jdk。 - 进入.jar程序所在的路径。
以将CreateMF.jar程序下载到“D:/test”目录为例,执行以下命令进入CreateMF.jar程序所在的路径:
D:
cd test - 执行以下命令,生成raw格式镜像文件对应的位表文件。
java -jar CreateMF.jar D:/image01.raw D:/image01.mf
注意生成的.mf位表文件和raw格式镜像文件必须是相同名称。例如镜像文件名称为:image01.raw,那么生成的位表文件名称为:image01.mf。
- 获取工具并解压。
-
使用OBS Browser+工具上传文件至OBS桶。
必须将raw格式镜像文件及其位表文件上传至同一OBS桶。 -
注册私有镜像。
您可以通过控制台方式、API接口方式,将转换后的zvhd2或raw文件注册为私有镜像。方法一:通过控制台创建私有镜像
-
登录IMS控制台。
- 登录管理控制台。
- 选择“计算 > 镜像服务”。
进入镜像服务页面。
-
单击右上角的“创建私有镜像”。
-
在“创建方式”区域,选择镜像的创建方式为“导入私有镜像”。
-
在“镜像类型”区域,选择镜像类型为“系统盘镜像”或“数据盘镜像”。
-
镜像源选择“镜像文件”,从列表中选择转换为zvhd2或raw文件的桶,再选择转换后的镜像文件。如果是raw格式镜像文件,需要确保同名位表文件已上传。
-
勾选快速通道栏的“开启快速通道”,并确认已优化镜像文件,然后勾选“镜像文件准备”栏的内容。
-
根据界面提示填写配置信息。
具体的配置参数说明,请参见通过外部镜像文件创建Windows系统盘镜像。
注意操作系统必须要和镜像文件所含的操作系统一致。
系统盘大小必须大于镜像文件的大小。
通过qemu-img-ctc工具可查询镜像文件大小:
qemu-img-ctc info test.zvhd2
方法二:通过API方式创建私有镜像
您可以通过接口POST /v2/cloudimages/quickimport/action,实现镜像文件快速导入功能。
-