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

更换 EC2 实例根卷

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 EBS 默认加密密,无论指定快照的加密状态或指定 AMI 的根卷如何,由根卷替换任务创建的替换根卷始终处于加密状态。

  • 下表汇总了可能的加密结果。

    原始根卷 指定的快照或 AMI 默认加密 替换根卷 用于替换根卷的加密密钥
    将替换根卷还原到初始启动状态 已加密 不适用 不考虑 已加密 与原始根卷相同的 KMS 密钥
    未加密 不适用 已禁用 未加密 不适用
    未加密 不适用 已启用 已加密 账户的 Amazon EBS 加密的默认 KMS 密钥
    从快照或 AMI 还原替换根卷 已加密 未加密 不考虑 已加密 与原始根卷相同的 KMS 密钥
    已加密 已加密 不考虑 已加密 与原始根卷相同的 KMS 密钥
    未加密 未加密 已禁用 未加密 不适用
    未加密 未加密 已启用 已加密 账户的 Amazon EBS 加密的默认 KMS 密钥
    未加密 已加密 不考虑 已加密 如果 AMI 或快照归账户所有,则使用 AMI 或快照的 KMS 密钥对替换卷进行加密。如果与账户共享 AMI 或快照,则使用该账户的 Amazon EBS 加密的默认 KMS 密钥加密替换卷。

将根卷还原到其启动状态

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

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

使用快照替换卷

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

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

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

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

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

使用 AMI 替换根卷

您可以使用自己拥有的 AMI 或者与您共享的 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 及其关联根卷快照的权限时,才能使用此功能。您不能对 Amazon Web Services Marketplace 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 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 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 i-01234567890abcdef \ --image-id ami-09876543210abcdef \ --delete-replaced-root-volume true
Tools for Windows PowerShell
将替换根卷还原到启动状态

使用 New-EC2ReplaceRootVolumeTask 命令。对于 -InstanceId,指定要为其替换根卷的实例的 ID。省略 -SnapshotId-ImageId 参数。若要在替换原始根卷后将其删除,请包括 -DeleteReplacedRootVolume 并指定 $true

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -DeleteReplacedRootVolume $true
将替换根卷还原到特定快照

使用 New-EC2ReplaceRootVolumeTask 命令。对于 --InstanceId,指定要为其替换根卷的实例的 ID。对于 -SnapshotId,请定要使用的快照的 ID。若要在替换原始根卷后将其删除,请包括 -DeleteReplacedRootVolume 并指定 $true

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -SnapshotId snap-9876543210abcdef0 -DeleteReplacedRootVolume $true
使用 AMI 还原替换根卷

使用 New-EC2ReplaceRootVolumeTask 命令。对于 -InstanceId,指定要为其替换根卷的实例的 ID。对于 -ImageId,指定要使用的 AMI 的 ID。若要在替换原始根卷后将其删除,请包括 -DeleteReplacedRootVolume 并指定 $true

PS C:\> New-EC2ReplaceRootVolumeTask -InstanceId i-1234567890abcdef0 -ImageId ami-09876543210abcdef -DeleteReplacedRootVolume $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 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=i-1234567890abcdef0
Tools for Windows PowerShell
查看根卷替换任务的状态

使用 Get-EC2ReplaceRootVolumeTask 命令并指定要查看的根卷替换任务的 ID。

PS C:\> Get-EC2ReplaceRootVolumeTask -ReplaceRootVolumeTaskIds replacevol-1234567890abcdef0

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

PS C:\> Get-EC2ReplaceRootVolumeTask -Filters @{Name = 'instance-id'; Values = 'i-1234567890abcdef0'} | Format-Table