实例终止时保留数据 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

实例终止时保留数据

根据用例,您可能想要在 Amazon EC2 实例终止时保留实例存储卷,或 Amazon EBS 卷上的数据。当终止实例时,实例存储卷上的数据不再保留。如果需要在实例的生命周期之后保留存储在实例存储卷上的数据,必须手动将该数据复制到更持久的存储中,例如 Amazon EBS 卷、Amazon S3 存储桶或 Amazon EFS 文件系统。有关更多信息,请参阅 适用于 Amazon EC2 实例的存储选项

对于 Amazon EBS 卷上的数据,Amazon EC2 会使用每个附加的 Amazon EBS 卷的 DeleteOnTermination 属性值,来确定是保留还是删除该卷。

根据卷是实例的根卷还是附加到实例的非根卷,DeleteOnTermination 属性的默认值会有所不同。

根卷

默认情况下,启动实例后,实例根卷的 DeleteOnTermination 属性将设置为 true。因此,当某个实例终止时,默认为删除该实例的根卷。

非根卷

默认情况下,当您将非根 EBS 卷附加到某个实例时,其 DeleteOnTermination 属性将设置为 false。因此,默认为保留这些卷。

注意

在该实例终止后,您可以为保留的卷拍摄快照,或将其附加到另一个实例。您必须删除卷以避免产生更多费用。

DeleteOnTermination 属性可由 AMI 的创建者以及实例的启动者设置。当 AMI 的创建者或实例的启动者更改属性时,新的设置将覆盖原始 AMI 默认设置。我们建议您在使用 AMI 启动实例后验证 DeleteOnTermination 属性的默认设置。

要验证在实例终止时是否会删除 Amazon EBS 卷,请在实例的详细信息窗格中查看卷的详细信息。在存储库的存储选项卡,在块储存设备中,向右滚动以查看终止时删除设置。

  • 如果为,则在实例终止时将会删除卷。

  • 如果为,则在实例终止时将不会删除卷。任何在实例终止时未删除的卷将继续产生费用。

将根卷更改为在启动时持久保留

当您启动实例时,可以使用控制台更改 DeleteOnTermination 属性。要对正在运行的实例更改此属性,您必须使用命令行。

使用以下方法之一将根卷更改为在启动时持久保留。

Console
使用控制台在启动时更改实例要持久保留的根卷
  1. 按照步骤启动实例,但请在完成以下步骤以将根卷更改为持久保留后,再启动实例。

  2. 存储(卷)下,展开根卷下的信息。

  3. 对于终止时删除,请选择

  4. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用新启动实例向导启动实例

Command line
使用命令行将实例的根卷更改为在启动时持久保留

当您启动 EBS 支持的实例时,可以使用以下命令之一将根设备卷更改为持久保留。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

在要保留的卷的块设备映射中,纳入 --DeleteOnTermination,并指定 false

例如,若要保留卷,需将以下选项添加到 run-instances 命令:

--block-device-mappings file://mapping.json

mapping.json 中,指定设备名称,例如 /dev/sda1/dev/xvda,并为 --DeleteOnTermination 指定 false

[ { "DeviceName": "device_name", "Ebs": { "DeleteOnTermination": false } } ]

将运行的实例的根卷更改为持久保留

您可以使用以下命令之一将正在运行的 EBS 支持实例的根设备卷更改为持久保留。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

例如,使用以下命令:

aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --block-device-mappings file://mapping.json

mapping.json 中,指定设备名称,例如 /dev/sda1/dev/xvda,并为 --DeleteOnTermination 指定 false

[ { "DeviceName": "device_name", "Ebs": { "DeleteOnTermination": false } } ]