为什么我的 EC2 AMI 或 EBS 快照创建速度缓慢?

上次更新时间:2021 年 5 月 25 日

我正在尝试通过创建 Amazon Machine Image(AMI)或快照来创建我的 Amazon Elastic Compute Cloud(Amazon EC2)实例或 Amazon Elastic Block Store(Amazon EBS)卷的备份。但是,此过程很慢或似乎卡在 Pending(待处理)状态。

简短描述

由 Amazon EBS 支持的 AMI 包括一个或多个 Amazon EBS 快照。由于必须将大量数据复制到 Amazon Simple Storage Service(Amazon S3),因此创建由 EBS 支持的 AMI 或 EBS 快照可能会速度缓慢。许多因素(例如 EBS 卷上的写入活动)都会影响创建时间。因此,快照的创建时间可能会有很大差异。

解决方法

脏数据块

AMI 或快照创建速度缓慢的最常见原因是必须将大量的脏数据复制到 Amazon S3。这些脏数据以数据块的数量来衡量。下列因素可能会导致大量脏数据块:

  • EBS 卷的大小
  • 从上次快照创建以来经过的时间
  • 卷上的写入活动

快照采用增量设计。这意味着 Amazon EBS 仅复制自上次快照创建以来更改的数据块。EBS 卷可能会因之前没有创建快照,或之前的快照已被删除而没有现有的快照。在这种情况下,无法将这些数据块与任何快照进行比较。因此,所有数据块都将被视为脏数据块。

此外,如果快照的创建时间非常久远,或者 EBS 卷非常活跃,则在创建新快照时可能必须复制大量的数据块。

为避免此问题,最佳实践是经常创建快照。这样可以减少要为每个快照复制的数据块数量。您可以使用 Amazon Data Lifecycle Manager 自动创建、保留和删除 EBS 卷的快照。您可以根据恢复点目标(RPO)来设置快照的频率。EBS 快照的收费依据不是快照的数量,而是在 S3 中保存的增量数据量。有关更多信息,请参阅 Amazon EBS 定价

快照创建队列中有多个卷

快照创建是一种共享带宽的操作。这意味着 Amazon EBS 会使用共享带宽向 S3 发送数据。因此,如果快照创建队列中有多个卷,则可能会遇到延迟问题。如果在一小时开始时创建多个快照,则通常会发生这种情况。例如,如果您的自动化流程会在午夜准时创建快照,则快照创建可能会延迟。

为避免此问题,最佳实践是在一小时开始后的不同时间创建快照。这样可帮助缩短创建快照所需的时间。您可以使用 Amazon Data Lifecycle Manager 在计划开始时间后一小时内自动创建快照,而不是立即创建快照。

堆叠快照

如果您在短时间内为同一卷创建多个快照,则会创建第一个快照,而其他快照将被移至 Pending(待处理)状态。在第一个快照创建完成之前,处于 Pending(待处理)状态的快照不会进行创建。删除处于 Pending(待处理)状态的快照不会停止创建过程。如果您尝试删除处于 待处理(待处理)状态的快照,则系统会首先创建该快照,然后再将其删除。

要解决此问题,除非有必须的理由,正在创建某个卷的快照时请不要创建快照。