对ECS实例大于ITiB的磁盘制作镜像文件并导出
应用场景
通过IMS管理控制台导出镜像时,仅支持1TiB以内大小的磁盘制作镜像后导出,对于超过1TiB,则需要用户手动制作镜像文件并上传到obs桶。本文档指导用户对ECS实例上大于ITiB的磁盘,制作镜像文件并导出。
资源和成本规划
| 资源 | 资源说明 | 成本说明 |
|---|---|---|
| Linux系统的ECS实例(1个) | 用于挂载需要制作镜像的磁盘,以及执行制作镜像文件的命令。 | 具体费用信息请以控制台实际显示为准。 |
| 磁盘快照(1个) | 为保证业务正常运行,需要为导出的目标磁盘创建磁盘快照,并基于快照创建新的磁盘用于制作镜像文件。 | |
| 磁盘(2个) |
| |
| EIP(1个) | 用于访问公网,下载以及安装qemu-img工具和obsutil工具。 | |
| OBS桶(1个) | 用于存放最终生成的镜像文件。 | |
| qemu-img | 制作镜像文件的开源工具。 | 免费 |
| obsutil | 将文件上传到obs桶的工具。 |
镜像文件上传完成后,请及时删除新创建的ECS实例、磁盘快照、新建磁盘以及EIP资源,避免资源闲置产生额外费用。
前提条件
操作流程
本文以导出ECS实例上的数据盘为例,具体流程如下图所示:
- 为要导出的目标磁盘创建磁盘快照。如何创建磁盘快照,具体操作请参见步骤一:为要导出的目标磁盘创建磁盘快照。
- 基于目标磁盘的快照创建一个名称为volume-data的新磁盘。如何使用快照创建磁盘,具体操作请参见步骤二:基于目标磁盘的快照创建名称为volume-data的新磁盘。
- 新建ECS实例并安装qemu-img工具和obsutil工具,具体操作请参见步骤三:新建ECS实例并安装qemu-img工具和obsutil工具。
- 将2中基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上,具体操作请参见步骤四:将基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上。
- 给新创建的ECS实例新增磁盘名称为volume-export的空白磁盘并初始化磁盘,具体操作请参见步骤五:为ECS实例新增volume-export磁盘并初始化磁盘。
- 制作镜像文件,具体操作请参见步骤六:制作镜像文件。
- 上传镜像文件至obs桶,具体操作请参见步骤七:上传镜像文件至obs桶。
步骤一:为要导出的目标磁盘创建磁盘快照
为了保证业务正常运行,强烈建议您给要导出的目标磁盘创建快照,并基于快照创建新的磁盘用以制作镜像文件。
- 登录ECS控制台。
- 单击目标ECS实例名称,进入ECS详情页。
- 单击“磁盘”页签,为要导出的目标磁盘创建快照。
- 确认磁盘配置信息,单击“立即创建”。
步骤三:新建ECS实例并安装qemu-img工具和obsutil工具
- 购买ECS实例。
- 使用VNC方式登录Linux弹性云服务器。
- 选择要登录的弹性云服务器,单击“操作”列下的“远程登录”。
- 在弹出的“登录Linux弹性云服务器”窗口中,选择“其他登录方式”下的“VNC登录”,单击“立即登录”。
- 根据界面提示,输入弹性云服务器密码。如果出现“Welcome to Huawei Cloud Service”,表示成功登录云服务器。
- 安装qemu-img工具。
- CentOS系列操作系统,请执行如下命令,其他Linux操作系统请参考本地为Linux操作系统安装qemu-img工具步骤指导。
yum install -y qemu-img
- 执行如下命令,验证是否安装成功。
qemu-img -V
如回显信息中出现qemu-img工具的版本信息和帮助手册,即表示安装成功。以CentOS 8.2为例,回显信息如下所示:

- CentOS系列操作系统,请执行如下命令,其他Linux操作系统请参考本地为Linux操作系统安装qemu-img工具步骤指导。
- 安装obsutil工具。
- 执行wget命令下载obsutil工具。
wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
- 执行以下解压命令。
tar -xzvf obsutil_linux_amd64.tar.gz
- 列举obsutil目录。“x.x.x”表示obsutil的版本号。
ll dr-x------ 2 root root 4096 Jan 5 2024 obsutil_linux_amd64_x.x.x -rw------- 1 root root 3845484 Mar 27 17:05 obsutil_linux_amd64.tar.gz
- 进入obsutil所在目录。“x.x.x”表示obsutil的版本号。
cd obsutil_linux_amd64_x.x.x
- 执行以下命令,为obsutil增加可执行权限。
chmod 755 obsutil
您必须为obsutil增加可执行权限,否则会在查询obsutil版本号时出现No such file or directory报错。
- 继续在目录中执行以下命令,如果能顺利返回obsutil版本号,说明安装成功。
./obsutil version obsutil version:5.7.9, obssdk version:3.24.12 operating system:linux, arch:amd64
- 执行wget命令下载obsutil工具。
步骤四:将基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上
- 登录ECS控制台,进入弹性云服务器列表页面。
- 单击待挂载云硬盘的弹性云服务器的名称。系统跳转至该弹性云服务器详情页面。
- 选择“磁盘”页签,并单击“挂载磁盘”。系统跳转至“挂载磁盘”页面。
- 根据界面提示,勾选目标磁盘(磁盘名称为volume-data),并指定该磁盘作为数据盘。
- 单击“确定”。挂载成功后,在弹性云服务器详情页的“云硬盘”页签,即可看到新挂载的磁盘信息。
步骤五:为ECS实例新增volume-export磁盘并初始化磁盘
为ECS新实例新增一块空磁盘,磁盘名称为volume-export,磁盘大小与原始磁盘大小一致,用于存放最终生成的镜像文件。
- 新增volume-export磁盘。
- 使用VNC方式登录Linux弹性云服务器。
- 选择要登录的弹性云服务器,单击“操作”列下的“远程登录”。
- 在弹出的“登录Linux弹性云服务器”窗口中,选择“其他登录方式”下的“VNC登录”,单击“立即登录”。
- 根据界面提示,输入弹性云服务器密码。如果出现“Welcome to Huawei Cloud Service”,表示成功登录云服务器。
- 初始化新创建的空白磁盘。
磁盘分区、文件系统、挂载目录等无特殊要求,本示例挂载的新建目录为:/export-image。
- 确认磁盘列表。
- 初始化磁盘,依次执行如下命令。
fdisk /dev/vdc n p 1
- 输入“n”,按“Enter”,新建分区。
- 输入“p”,按“Enter”,选择分区类型为主分区。
- 输入“1”,按“Enter”,选择主分区编号。此处以选择“1”为例。
- 按“Enter”,选择分区起始地址。
- 按“Enter”,选择分区结束地址。
- 输入“w”,按“Enter”,系统会自动将分区结果写入分区表中,完成分区创建。
- 格式化文件系统,执行如下命令。
mkfs -t ext4 /dev/vdc1
- 创建/export-image目录,执行如下命令。
mkdir -p /export-image
- 将vdc1分区挂载到/export-image目录,执行如下命令。
mount /dev/vdc1 /export-image
- 验证是否挂载成功,执行如下命令。
lsblk
出现类似下图回显信息,表示挂载成功。

步骤六:制作镜像文件
- 在/export-image目录新建文件image.qcow2,执行如下命令。
touch /export-image/image.qcow2
- 确认要导出的磁盘名称,执行如下命令。
lsblk -d -n -o NAME | sed 's|^|/dev/|'
回显信息如下,其中/dev/vdb为要导出的包含业务数据的磁盘,即磁盘名称为volume-data的磁盘。判断是否为包含业务数据的磁盘,请参考确认磁盘列表。

- 制作镜像文件,执行如下命令。
执行qemu-img convert -p -f raw -O qcow2 {{包含业务数据的磁盘名称,本示例中为dev/vdb}} {{新建的镜像文件路径,本示例中为/export-image/image.qcow2}}命令。
示例:qemu-img convert -p -f raw -O qcow2 /dev/vdb /export-image/image.qcow2

命令执行时长与机器规格、数据量大小有关,请耐心等待。
步骤七:上传镜像文件至obs桶
- 初始化obsutil配置。
以Linux操作系统为例,详细配置请参考obsutil初始化配置。
使用临时AK、SK、SecurityToken进行初始化配置,执行如下命令:./obsutil config -i=xxxxx -k=xxxxx -t=xxxxx -e=xxxxx
表2 参数说明 参数
约束
描述
i
必选
永久或者临时访问密钥中的AK。
k
必选
永久或者临时访问密钥中的SK。
e
必选
连接OBS的服务地址。可包含协议类型、域名、端口号(可选)。示例:https://your-endpoint:443。(出于安全性考虑,建议使用https协议,443端口号可以省略)
例如,访问区域为华北-北京四,则实际的OBS服务地址为:https://obs.cn-north-4.myhuaweicloud.com。
说明:您可以从这里查看OBS当前开通的服务地址和区域信息。
t
可选
临时访问密钥中的securitytoken。当使用临时访问密钥,该参数必选,否则忽略即可。
- 以上命令运行后,会在运行obsutil命令的用户目录(Linux操作系统的“~”目录。)下自动生成一个名为.obsutilconfig的配置文件,它包含了obsutil的所有配置信息。
- .obsutilconfig的配置文件中的详细配置参数说明请参见配置参数说明。
- 获取临时AK、SK和SecurityToken请参考IAM开发指导文档。
- .obsutilconfig文件中保存有用户的AK和SK等信息,为避免密钥泄露,.obsutilconfig默认为隐藏文件,您可以在运行obsutil命令的用户目录下通过使用以下命令查看到该文件: 或
ls -al
- obsutil会对.obsutilconfig文件中的AK和SK进行加密以保护密钥安全。
- 注意:通过-i、-k、-e配置用户认证信息,linux操作系统的history命令可查询配置参数值,请妥善使用该操作。
- 将镜像文件上传到obs桶。
执行./obsutil cp {{镜像文件路径,本示例为/export-image/image.qcow2}} obs://{{obs桶名}} /{{镜像文件上传到obs桶中的文件名}}命令。
示例:./obsutil cp /export-image/image.qcow2 obs://test-export-1/image.qcow2

- 确认镜像文件是否上传成功。
登录OBS控制台,在桶列表页,根据桶名称查找对应桶,确认镜像文件是否存在,若存在表示镜像文件已上传成功。






