替换根卷 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

替换根卷

Amazon EC2 使您能够替换正在运行的实例的根 Amazon EBS 卷,同时保留以下内容:

  • 存储在实例存储卷上的数据 — 还原根卷后,实例存储卷仍附加到实例。

  • 存储在数据(非根)Amazon EBS 卷上的数据 — 在还原根卷后,非根 Amazon EBS 卷仍附加到实例。

  • 网络配置 — 所有网络接口均仍附加到实例,并保留其 IP 地址、标识符和附件 ID。当实例变为可用时,将刷新所有待处理的网络流量。此外,实例保留在同一个物理主机上,因此它会保留其公有和私有 IP 地址以及 DNS 名称。

  • IAM policy — 将保留和强制实施与实例相关联的 IAM 配置文件和策略(例如基于标签的策略)。

如何工作?

在您替换实例的根卷时,将通过以下方法之一还原新的(替换)根卷:

  • 到初始启动状态 — 该卷将在实例启动时还原到其初始状态。有关更多信息,请参阅将根卷还原到其启动状态

  • 从来自与当前根卷相同世系的快照 — 这将允许您修复问题,如根卷损坏或客户机操作系统网络配置错误。有关更多信息,请参阅使用快照替换卷

  • 从与实例具有相同关键属性的 AMI — 这将允许您执行操作系统和应用程序修补或升级。有关更多信息,请参阅使用 AMI 替换根卷

原始根卷与实例分离,新根卷将在其位置附加到实例。将更新实例的块设备映射,以反映替换根卷的 ID。您可以选择在根卷替换过程完成后是否保留原始根卷。如果您在替换过程完成后选择删除原始根卷,则原始根卷将被自动删除,并变得不可恢复。如果您选择在该过程完成后保留原始根卷,则该卷仍会在您的账户中预调配;当您不再需要它时,必须手动删除它。

如果根卷替换任务失败,则实例将重新启动,原始根卷仍附加到该实例。

根卷更换的注意事项
  • 该实例必须处于 running 状态。

  • 在此过程中,实例将自动重新启动。在重启过程中,将清空内存 (RAM) 的内容。无需手动重启。

  • 如果根卷是实例存储卷,则无法替换它。仅支持具有 Amazon EBS 根卷的实例。

  • 您可以替换所有虚拟化实例类型和 EC2 Mac 裸机实例的根卷。不支持所有其他裸机实例类型。

  • Amazon EC2 Mac 裸机实例支持将根卷恢复到其启动状态并使用快照替换根卷。Amazon EC2 Mac 裸机实例目前不支持使用 AMI 替换根卷。

  • 您可以使用与实例先前根卷属同谱系的任何快照。

将根卷还原到其启动状态

您可以执行根卷替换,将实例的根卷替换为还原到原始根卷启动状态的替换根卷。替换卷将自动从实例启动期间用于创建原始卷的快照中还原。

替换根卷的类型、大小和终止时删除属性与原始根卷相同。

使用快照替换卷

您可以执行根卷替换,将实例的根卷替换为还原到特定快照的替换卷。这使您可以将实例的根卷还原到您之前从该根卷创建的特定快照。

替换根卷的类型、大小和终止时删除属性与原始根卷相同。

使用快照的注意事项
  • 您只能使用与实例当前根卷属同谱系的快照。

  • 您不能使用从根卷拍摄的快照创建的快照副本。

  • 在成功替换根卷后,从原始根卷拍摄的快照仍可用于替换新的(替换)根卷。

使用 AMI 替换根卷

您可以使用自己拥有的 AMI、与您共享的 AMI 或 Amazon Web Services Marketplace AMI 来执行根卷替换。AMI 必须具有与实例相同的产品代码、账单信息、架构类型和虚拟化类型。

如果实例启用了 NitroTPM、ENA 或 sriov-net,则必须使用支持这些功能的 AMI。如果实例未启用 NitroTPM、ENA 或 sriov-net,则您可以选择不支持这些功能的 AMI;也可以选择支持这些功能的 AMI,在这种情况下,将向该实例添加支持。

您可以选择与实例的启动模式不同的 AMI,前提是该实例支持 AMI 的启动模式。如果实例不支持启动模式,则该请求将失败。如果实例支持启动模式,则新的启动模式将传播到该实例,并相应更新其 UEFI 数据。如果您手动修改了启动顺序或添加了私有 UEFI 安全启动密钥来加载私有内核模块,则在根卷替换期间,更改将丢失。

替换根卷获得与原始根卷相同的卷类型和终止时删除属性,并获取 AMI 根卷块设备映射的大小。

注意

AMI 根卷块设备映射的大小必须等于或大于原始根卷的大小。如果 AMI 根卷块设备映射的大小小于原始根卷的大小,则请求失败。

在根卷替换任务完成后,当您使用控制台 Amazon CLI 或 Amazon SDK 描述实例时,将反映以下新的和经过更新的信息:

  • 新 AMI ID

  • 根卷的新卷 ID

  • 经过更新的启动模式配置(如果由 AMI 更改)

  • 经过更新的 NitroTPM 配置(如果由 AMI 启用)

  • 经过更新的 ENA 配置(如果由 AMI 启用)

  • 经过更新的 sriov-net 配置(如果由 AMI 启用)

新 AMI ID 也反映在实例元数据中。

使用 AMI 的注意事项:
  • 如果您使用拥有多个块设备映射的 AMI,则仅使用该 AMI 的根卷。其他(非根)卷将被忽略。

  • 您只能使用您的账户拥有启动权限的 AMI。

  • 仅当实例没有产品代码时,您才能使用没有产品代码的 AMI。

  • 您无法指定替换根卷的加密状态。下表汇总了可能的加密结果。

    原始根卷 AMI 块储存设备映射 替换根卷
    已加密 未加密 请求失败
    已加密 已加密 已加密
    未加密 未加密 未加密
    未加密 已加密 已加密
  • AMI 根卷块设备映射的大小必须等于或大于原始根卷的大小。如果 AMI 根卷块设备映射的大小小于原始根卷的大小,则请求失败。

  • 将自动更新实例的实例身份文档。

  • 如果实例支持 NitroTPM,则将重置该实例的 NitroTPM 数据,并将生成新密钥。

替换根卷

当您替换实例的根卷时,将创建根卷替换任务。您可以使用根卷更换任务来监控替换过程的进度和结果。有关更多信息,请参阅查看根卷替换任务

您可以使用以下方法之一替换实例的根卷。

注意

如果使用 Amazon EC2 控制台,此功能仅在新控制台中可用。

New console
替换根卷
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择要替换其根卷的实例,然后选择 Actions(操作)Monitor and troubleshoot(监控和故障排除)Replace root volume(替换根卷)

    注意

    如果选定的实例不在 running 状态,替换根卷操作将被禁用。

  4. Replace root volume(替换根卷)屏幕中,执行以下操作之一:

    • 若要将替换根卷还原到其初始启动状态,请在不选择快照的情况下选择 Create replacement task(创建替换任务)。

    • 若要将替换根卷还原到特定快照,对于 Snapshot(快照),请选择要使用的快照,然后选择 Create replacement task(创建替换任务)。

    • 若要使用 AMI 还原替换根卷,对于 AMI,请选择要使用的 AMI,然后选择 Create replacement task(创建替换任务)。

  5. 若要在替换任务完成后删除原始根卷,请选择 Delete replaced root volume(删除替换的根卷)。

Amazon CLI
将替换根卷还原到启动状态

使用 create-replace-root-volume-task 命令。对于 --instance-id,指定要为其替换根卷的实例的 ID。省略 --snapshot-id --image-id 参数。若要在替换原始根卷后将其删除,请包括 --delete-replaced-root-volume 并指定 true

$ aws ec2 create-replace-root-volume-task --instance-id instance_id --delete-replaced-root-volume true

例如:

$ aws ec2 create-replace-root-volume-task --instance-id i-1234567890abcdef0 --delete-replaced-root-volume true
将替换根卷还原到特定快照

使用 create-replace-root-volume-task 命令。对于 --instance-id,指定要为其替换根卷的实例的 ID。对于 --snapshot-id,请定要使用的快照的 ID。若要在替换原始根卷后将其删除,请包括 --delete-replaced-root-volume 并指定 true

$ aws ec2 create-replace-root-volume-task --instance-id instance_id --snapshot-id snapshot_id --delete-replaced-root-volume true

例如:

$ aws ec2 create-replace-root-volume-task --instance-id i-1234567890abcdef0 --snapshot-id snap-9876543210abcdef0 --delete-replaced-root-volume true
使用 AMI 还原替换根卷

使用 create-replace-root-volume-task 命令。对于 --instance-id,指定要为其替换根卷的实例的 ID。对于 --image-id,指定要使用的 AMI 的 ID。若要在替换原始根卷后将其删除,请包括 --delete-replaced-root-volume 并指定 true

$ aws ec2 create-replace-root-volume-task --instance-id instance_id --image-id ami_id --delete-replaced-root-volume true

例如:

$ aws ec2 create-replace-root-volume-task --instance-id i-01234567890abcdef --image-id ami-09876543210abcdef --delete-replaced-root-volume true

查看根卷替换任务

当您替换实例的根卷时,将创建根卷替换任务。在此过程中,根卷更换任务将转换为以下状态:

  • pending — 正在创建替换卷。

  • in-progress — 正在分离原始卷,正在附加替换卷。

  • succeeded — 已将替换卷成功附加到实例并且实例可用。

  • failing — 替换任务即将失败。

  • failed — 替换任务已失败,但原始根卷仍然处于附加状态。

  • failing-detached — 替换任务即将失败,并且实例可能未附加根卷。

  • failed-detached — 替换任务已失败,并且实例未附加根卷。

您可以使用以下方法之一查看实例的根卷替换任务。

注意

如果使用 Amazon EC2 控制台,此功能仅在新控制台中可用。

Console
查看根卷替换任务
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择要查看其根卷替换任务的实例,然后选择 Storage(存储)选项卡。

  4. Storage(存储)选项卡中,展开 Recent root volume replacement tasks(最近的根卷替换任务)

Amazon CLI
查看根卷替换任务的状态

使用 describe-replace-root-volume-tasks 命令并指定要查看的根卷替换任务的 ID。

$ aws ec2 describe-replace-root-volume-tasks --replace-root-volume-task-ids task_id_1 task_id_2

例如:

$ aws ec2 describe-replace-root-volume-tasks --replace-root-volume-task-ids replacevol-1234567890abcdef0
{ "ReplaceRootVolumeTasks": [ { "ReplaceRootVolumeTaskId": "replacevol-1234567890abcdef0", "InstanceId": "i-1234567890abcdef0", "TaskState": "succeeded", "StartTime": "2020-11-06 13:09:54.0", "CompleteTime": "2020-11-06 13:10:14.0", "SnapshotId": "snap-01234567890abcdef", "DeleteReplacedRootVolume": "True" }] }

或者,请指定 instance-id 筛选条件以按实例筛选结果。

$ aws ec2 describe-replace-root-volume-tasks --filters Name=instance-id,Values=instance_id

例如:

$ aws ec2 describe-replace-root-volume-tasks --filters Name=instance-id,Values=i-1234567890abcdef0