导出自定义镜像

创建自定义镜像后,可将自定义镜像导出至对象存储OSS(Object Storage Service)后,下载镜像文件到本地,用于本地镜像分析、备份、迁移等。

适用范围

  • 不支持导出加密镜像、基于云市场镜像创建的自定义镜像或Windows Server操作系统的镜像。

  • 自定义镜像的单块数据盘容量超过 2 TiB不支持直接导出。

    若需导出,可将数据分散到多块盘后导出。

操作步骤

准备工作

需在目标自定义镜像相同地域下准备一个OSS Bucket,用于中转存储导出的自定义镜像。导出时,仅支持选择标准存储或低频访问存储类型OSS Bucket,不支持归档类型。如需新建,请参见创建存储空间

将自定义镜像导出至对象存储OSS

控制台

  1. 访问ECS控制台-镜像在页面左侧顶部,选择目标资源所在的资源组和地域

  2. 自定义镜像页签,找到目标镜像,单击操作列中的导出镜像

  3. 仔细查看导出前准备事项,单击下一步。再次确认已完成前提条件所述配置,单击继续导出

  4. 配置导出镜像文件的参数。

    • 镜像格式默认为自动检测,支持选择RAW、VHD、QCOW2、VDIVMDK格式。

    • 镜像存储空间(OSS Bucket):选择与自定义镜像所属地域相同的OSS Bucket。

    • 镜像文件名前缀:以将Demo设为前缀为例,导出自定义镜像文件后,在OSS Bucket中的名称即为Demo-[系统自动生成的文件名]

  5. 单击确定导出,开始导出自定义镜像。导出时间取决于镜像文件的大小和当前导出任务队列的繁忙程度,请耐心等待。

    可前往ECS控制台-任务管理,通过任务ID查询任务实时进度,或中断取消导出自定义镜像任务,也可以登录OSS控制台查询任务结果。

API

可以调用API接口ExportImage导出自定义镜像。若需中断导出任务,可以调用API接口CancelTask取消正在运行的导出镜像任务。

下载与使用镜像文件

镜像成功导出到OSS后,可将其下载到本地进行进一步处理。

  1. 下载镜像文件至本地

    • 镜像文件不超过5GB:可登录 OSS管理控制台,在目标OSS Bucket中找到镜像文件,并单击操作列的下载。

    • 镜像文件大于5GB:推荐使用命令行工具ossutil进行下载。该工具支持断点续传、批量下载和多线程,更稳定高效。

  2. 解压镜像文件
    若导出镜像时选择RAW作为镜像格式,导出后镜像文件扩展名默认为.raw.tar.gz,解压后扩展名为.raw

    • Linux系统下,使用命令 tar -xzf <镜像文件名>.raw.tar.gz 进行解压。

    • macOS系统下,推荐使用 gnu-tar 工具进行解压,以避免兼容性问题。

  3. (可选)转换镜像格式
    若导出的RAW格式镜像需转换为其他格式,可使用开源工具 qemu-img,参见转换镜像格式进行操作。

计费说明

导出自定义镜像至OSS过程中,依赖的OSS资源会产生费用,主要包括:

  • OSS存储费用导出的镜像文件作为对象(Object)存储在OSS Bucket中,按存储时长和文件大小计费。

  • OSS请求费用导出过程中,系统调用OSS API进行文件读写,产生API请求费用。

    在导出时,选择不同镜像格式会导致访问OSS API的读取次数不同,产生请求费用差异,建议选择读取次数较少的VHD格式。
  • OSS流量费用将镜像文件从OSS Bucket下载到本地时,会产生外网流出费用。在阿里云同地域ECS实例内通过内网访问则免费。

成本优化建议:

  • 及时清理:镜像下载到本地并验证可用后,及时删除OSS Bucket中的已确认不再使用的镜像文件,节省存储费用。

  • 数据归档:若需长期备份存储导出的镜像文件,可为OSS Bucket设置生命周期规则,将文件在一定时间后自动转为成本更低的低频或归档存储。

常见问题

镜像导出失败后如何修复?

导出镜像遇到任务失败的问题后,可通过ECS控制台-任务管理界面或调用API接口DescribeTaskAttribute查看错误码,根据错误码确认问题详情并进行修复。

错误码

错误原因

原因定位

修复建议

IMAGE_ALREADY_EXIST

OSS Bucket中存在同名文件(Object)。

确认导出的OSS Bucket中是否存在同名文件(Object)。

  • 建议更换导出的OSS Bucket。

  • 建议更换导出的镜像文件名称。

如果单块数据盘的容量超过2 TiB,如何导出自定义镜像?

若数据盘容量超过2 TiB,需将数据分散拷贝到多块小于2 TiB的新数据盘上,再创建自定义镜像进行导出。具体操作如下:

  1. 使用自定义镜像创建按量付费实例

  2. 远程登录创建的ECS实例,执行df -h命令查看数据盘实际容量,根据实际容量创建新的空数据盘(可按需创建多个),并挂载数据盘,然后将原数据盘的数据拷贝到新的数据盘。

  3. 使用新的数据盘和系统盘创建快照

  4. 使用快照创建自定义镜像,然后导出自定义镜像。

导出的镜像文件包含的多个文件分别是什么?

若自定义镜像包含数据盘快照,导出的结果中会有多个文件。文件名中带有 system 的为系统盘快照,带有 data 的为数据盘快照。数据盘文件通常还会包含挂载点标识(如 xvdbxvdc),以便区分。

加密镜像支持解密后导出么?

加密是不可逆的操作,不支持对加密镜像进行解密导出,数据在加密状态下存储,即使导出后也无法解密其内容。

若需导出加密镜像中的数据,可使用加密镜像创建ECS实例,在实例中完成必要的配置和数据迁移,基于该实例创建一个新的未加密自定义镜像后导出。