文档首页/ 镜像服务 IMS/ 最佳实践/ 对ECS实例大于ITiB的磁盘制作镜像文件并导出
更新时间:2026-06-22 GMT+08:00
分享

对ECS实例大于ITiB的磁盘制作镜像文件并导出

应用场景

通过IMS管理控制台导出镜像时,仅支持1TiB以内大小的磁盘制作镜像后导出,对于超过1TiB,则需要用户手动制作镜像文件并上传到obs桶。本文档指导用户对ECS实例上大于ITiB的磁盘,制作镜像文件并导出。

资源和成本规划

表1 资源和成本规划

资源

资源说明

成本说明

Linux系统的ECS实例(1个)

用于挂载需要制作镜像的磁盘,以及执行制作镜像文件的命令。

具体费用信息请以控制台实际显示为准。

磁盘快照(1个)

为保证业务正常运行,需要为导出的目标磁盘创建磁盘快照,并基于快照创建新的磁盘用于制作镜像文件。

磁盘(2个)

  • 基于快照创建一块备份磁盘,磁盘名称为volume-data,用于制作镜像文件。
  • 将基于磁盘快照创建的volume-data新磁盘挂载至新创建ECS实例上后,再为ECS实例新增一块空白磁盘,磁盘名称为volume-export,磁盘大小与原始磁盘大小一致,用于存放最终生成的镜像文件。
    说明:

    此处磁盘名称仅作示例使用,磁盘名称可自定义设置,不影响操作流程。

EIP(1个)

用于访问公网,下载以及安装qemu-img工具和obsutil工具。

OBS桶(1个)

用于存放最终生成的镜像文件。

qemu-img

制作镜像文件的开源工具。

免费

obsutil

将文件上传到obs桶的工具。

镜像文件上传完成后,请及时删除新创建的ECS实例、磁盘快照、新建磁盘以及EIP资源,避免资源闲置产生额外费用。

前提条件

  • 已获取当前账号的临时AK、SK和SecurityToken用于上传镜像文件到obs桶。如何获取临时AK、SK和SecurityToken请参见IAM开发指导文档
  • 已创建obs桶用来存放镜像文件。如何创建obs桶,请参见创建桶

操作流程

本文以导出ECS实例上的数据盘为例,具体流程如下图所示:

  • 对于系统盘或数据盘均支持制作镜像后导出。
  • 对于整机镜像,请先通过整机镜像创建ECS实例后,再按本文档指导导出ECS上的磁盘。
图1 操作流程
  1. 为要导出的目标磁盘创建磁盘快照。如何创建磁盘快照,具体操作请参见步骤一:为要导出的目标磁盘创建磁盘快照
  2. 基于目标磁盘的快照创建一个名称为volume-data的新磁盘。如何使用快照创建磁盘,具体操作请参见步骤二:基于目标磁盘的快照创建名称为volume-data的新磁盘
  3. 新建ECS实例并安装qemu-img工具和obsutil工具,具体操作请参见步骤三:新建ECS实例并安装qemu-img工具和obsutil工具
  4. 2中基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上,具体操作请参见步骤四:将基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上
  5. 给新创建的ECS实例新增磁盘名称为volume-export的空白磁盘并初始化磁盘,具体操作请参见步骤五:为ECS实例新增volume-export磁盘并初始化磁盘
  6. 制作镜像文件,具体操作请参见步骤六:制作镜像文件
  7. 上传镜像文件至obs桶,具体操作请参见步骤七:上传镜像文件至obs桶

步骤一:为要导出的目标磁盘创建磁盘快照

为了保证业务正常运行,强烈建议您给要导出的目标磁盘创建快照,并基于快照创建新的磁盘用以制作镜像文件。

  1. 登录ECS控制台
  2. 单击目标ECS实例名称,进入ECS详情页。
  3. 单击“磁盘”页签,为要导出的目标磁盘创建快照。

  4. 确认磁盘配置信息,单击“立即创建”。

步骤二:基于目标磁盘的快照创建名称为volume-data的新磁盘

使用快照可以创建一个有数据的磁盘,新磁盘的数据与该快照的数据是完全一样的。

  1. 登录EVS控制台
  2. 在左侧导航栏,选择“云硬盘 > 快照”。

    进入“快照”页面。

  3. 在快照列表中,找到指定快照并单击快照所在行的“操作”列下的“创建磁盘”。

  4. 设置云硬盘参数。

    计费模式:按需计费。

    磁盘名称:设置名称为“volume-data”。

    此处磁盘名称仅作示例使用,磁盘名称可自定义设置,不影响操作流程。

    其他各项参数设置,请参见购买云硬盘中的参数说明和操作。

  5. 单击“立即购买”。
  6. 返回“云硬盘”主页面,查看云硬盘状态。待云硬盘状态变为“可用”时,表示创建成功。

步骤三:新建ECS实例并安装qemu-img工具和obsutil工具

  1. 购买ECS实例。
    1. 进入购买弹性云服务器页面,在购买页左上角,选择“自定义购买”页签。
    2. 设置ECS购买参数。
      • 计费模式:选择“按需计费”模式,可以随时开通,随时删除。资源使用完建议及时删除,避免资源闲置产生额外费用。
      • 规格:x86架构类型的ECS。
      • 镜像:选择Linux操作系统的镜像(以CentOS 8.2版本为例)。
      • 弹性公网IP:为ECS绑定弹性公网IP。用于访问公网,下载以及安装qemu-img工具和obsutil工具。

      其他ECS购买参数请您根据业务需求完成设置,参数设置,请参见自定义购买ECS

    3. 确认配置并购买ECS。

      单击“返回云服务器列表”,您可以在弹性云服务器列表页查看到购买成功的ECS。

  2. 使用VNC方式登录Linux弹性云服务器。
    1. 选择要登录的弹性云服务器,单击“操作”列下的“远程登录”。
    2. 在弹出的“登录Linux弹性云服务器”窗口中,选择“其他登录方式”下的“VNC登录”,单击“立即登录”。
    3. 根据界面提示,输入弹性云服务器密码。如果出现“Welcome to Huawei Cloud Service”,表示成功登录云服务器。
  3. 安装qemu-img工具。
    1. CentOS系列操作系统,请执行如下命令,其他Linux操作系统请参考本地为Linux操作系统安装qemu-img工具步骤指导。
      yum install -y qemu-img
    2. 执行如下命令,验证是否安装成功。
      qemu-img -V

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

  4. 安装obsutil工具。
    1. 执行wget命令下载obsutil工具。
      wget https://obs-community.obs.cn-north-1.myhuaweicloud.com/obsutil/current/obsutil_linux_amd64.tar.gz
    2. 执行以下解压命令。
      tar -xzvf obsutil_linux_amd64.tar.gz
    3. 列举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
    4. 进入obsutil所在目录。“x.x.x”表示obsutil的版本号。
      cd obsutil_linux_amd64_x.x.x
    5. 执行以下命令,为obsutil增加可执行权限。
      chmod 755 obsutil

      您必须为obsutil增加可执行权限,否则会在查询obsutil版本号时出现No such file or directory报错。

    6. 继续在目录中执行以下命令,如果能顺利返回obsutil版本号,说明安装成功。
      ./obsutil version  obsutil version:5.7.9, obssdk version:3.24.12 operating system:linux, arch:amd64

步骤四:将基于磁盘快照创建的volume-data新磁盘挂载至新创建的ECS实例上

  1. 登录ECS控制台,进入弹性云服务器列表页面。
  2. 单击待挂载云硬盘的弹性云服务器的名称。系统跳转至该弹性云服务器详情页面。
  3. 选择“磁盘”页签,并单击“挂载磁盘”。系统跳转至“挂载磁盘”页面。
  4. 根据界面提示,勾选目标磁盘(磁盘名称为volume-data),并指定该磁盘作为数据盘。
  5. 单击“确定”。挂载成功后,在弹性云服务器详情页的“云硬盘”页签,即可看到新挂载的磁盘信息。

步骤五:为ECS实例新增volume-export磁盘并初始化磁盘

为ECS新实例新增一块空磁盘,磁盘名称为volume-export,磁盘大小与原始磁盘大小一致,用于存放最终生成的镜像文件。

  1. 新增volume-export磁盘。
    1. 登录ECS控制台,进入弹性云服务器列表页面。
    2. 单击目标弹性云服务器的名称。系统跳转至该弹性云服务器详情页面。
    3. 选择“磁盘”页签,并单击“新增磁盘”。系统跳转至云硬盘购买页。
    4. 设置云硬盘参数。

      计费模式:按需计费。

      磁盘大小:与原始要导出的磁盘大小一致。

      磁盘名称:设置名称为“volume-export”。

      此处磁盘名称仅作示例使用,磁盘名称可自定义设置,不影响操作流程。

      其他各项参数设置,请参见购买云硬盘中的参数说明和操作。

    5. 单击“立即购买”。
    6. 返回“云硬盘”主页面,查看云硬盘状态。待云硬盘状态变为“可用”时,表示创建成功。新创建的云硬盘需要登录弹性云服务器初始化云硬盘,即格式化云硬盘,之后云硬盘才可以正常使用。

  2. 使用VNC方式登录Linux弹性云服务器。
    1. 选择要登录的弹性云服务器,单击“操作”列下的“远程登录”。
    2. 在弹出的“登录Linux弹性云服务器”窗口中,选择“其他登录方式”下的“VNC登录”,单击“立即登录”。
    3. 根据界面提示,输入弹性云服务器密码。如果出现“Welcome to Huawei Cloud Service”,表示成功登录云服务器。
  3. 初始化新创建的空白磁盘。

    磁盘分区、文件系统、挂载目录等无特殊要求,本示例挂载的新建目录为:/export-image。

    1. 确认磁盘列表。
      1. 确认磁盘列表中是否包含系统盘、业务数据磁盘、空白磁盘。执行如下命令:
        lsblk
      2. 出现类似下图所示的回显信息,其中vda为系统盘,vdb为包含业务数据的磁盘,即磁盘名称为volume-data的磁盘,vdc为空白磁盘即磁盘名称为volume-export的空白磁盘。

        • 磁盘名称可能不同,不影响实际操作。
        • 如何判断系统盘、业务数据磁盘、空白磁盘。
          • 挂载点为根目录的为系统盘。
          • 有文件分区但无挂载点的为包含业务数据的磁盘。
          • 无文件分区,无挂载点的为新增的空磁盘。
    2. 初始化磁盘,依次执行如下命令。
      fdisk /dev/vdc
      n
      p
      1
      • 输入“n”,按“Enter”,新建分区。
      • 输入“p”,按“Enter”,选择分区类型为主分区。
      • 输入“1”,按“Enter”,选择主分区编号。此处以选择“1”为例。
      • 按“Enter”,选择分区起始地址。
      • 按“Enter”,选择分区结束地址。
      • 输入“w”,按“Enter”,系统会自动将分区结果写入分区表中,完成分区创建。
    3. 格式化文件系统,执行如下命令。
      mkfs -t ext4 /dev/vdc1
    4. 创建/export-image目录,执行如下命令。
      mkdir -p /export-image
    5. 将vdc1分区挂载到/export-image目录,执行如下命令。
      mount /dev/vdc1 /export-image
    6. 验证是否挂载成功,执行如下命令。
      lsblk

      出现类似下图回显信息,表示挂载成功。

步骤六:制作镜像文件

  1. 在/export-image目录新建文件image.qcow2,执行如下命令。
    touch /export-image/image.qcow2
  2. 确认要导出的磁盘名称,执行如下命令。
    lsblk -d -n -o NAME | sed 's|^|/dev/|'

    回显信息如下,其中/dev/vdb为要导出的包含业务数据的磁盘,即磁盘名称为volume-data的磁盘。判断是否为包含业务数据的磁盘,请参考确认磁盘列表

  3. 制作镜像文件,执行如下命令。

    执行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桶

  1. 初始化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命令的用户目录下通过使用以下命令查看到该文件:
      Linux操作系统:
      ls -a 
      ls -al
    • obsutil会对.obsutilconfig文件中的AK和SK进行加密以保护密钥安全。
    • 注意:通过-i、-k、-e配置用户认证信息,linux操作系统的history命令可查询配置参数值,请妥善使用该操作。
  2. 将镜像文件上传到obs桶。

    执行./obsutil cp {{镜像文件路径,本示例为/export-image/image.qcow2}} obs://{{obs桶名}} /{{镜像文件上传到obs桶中的文件名}}命令。

    示例:
    ./obsutil cp /export-image/image.qcow2 obs://test-export-1/image.qcow2

  3. 确认镜像文件是否上传成功。

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

相关文档