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

Amazon EC2 实例根卷

当您启动一个实例时,我们会为该实例创建根卷。根卷包含用于启动该实例的映像。每个实例都有单独的根卷。您可以在启动实例时或实例运行后向其添加存储卷。

我们为根卷保留特定的设备名称。有关更多信息,请参阅 Linux 实例上的设备名称

根卷类型

您可以从实例存储支持的 AMI 或 Amazon EBS-backed AMI 启动实例。AMI 的说明中包括 AMI 的类型;您会看到根设备在一些地方被称为 ebs(表示由 Amazon EBS 提供支持)或 instance store(表示由实例存储提供支持)。这很重要,因为您可以使用这两种 AMI 进行的操作有很大区别。有关这些区别的更多信息,请参阅 根设备存储。我们建议您使用由 Amazon EBS 提供支持的 AMI,因为这些实例启动速度更快,而且采用了持久性存储。

由 Amazon EBS 提供支持的实例

使用 Amazon EBS 作为根卷的实例会自动附加一个 Amazon EBS 卷。当您启动由 Amazon EBS 提供支持的实例时,系统会为您使用的 AMI 所引用的每一个 Amazon EBS 快照创建 Amazon EBS 卷。您可以根据实例类型选择使用其他Amazon EBS卷或实例存储卷。

由 Amazon EBS 提供支持的实例可以停止然后再重新启动,附加的卷中存储的数据不会受影响。当由 Amazon EBS 支持的实例处于停止状态时,您可以执行各种与该实例和卷有关的任务。例如,您可以修改实例的属性、更改其大小或更新其使用的内核,或者您可以将您的根卷附加到另一个正在运行的实例,以进行调试或实现任何其他目的。有关更多信息,请参阅 Amazon EBS 卷


     由 Amazon EBS 支持的实例的根卷和其他 Amazon EBS 卷
限制

您不能使用 st1sc1 EBS 卷作为根卷。

实例失败

如果由 Amazon EBS 提供支持的实例失败,您可以通过以下方法之一恢复您的会话:

  • 停止,然后再次启动(先尝试此方法)。

  • 自动为相关卷拍摄快照并创建新的 AMI。有关更多信息,请参阅创建一个由 Amazon EBS 支持的 Linux AMI

  • 通过以下步骤将卷附加到新实例:

    1. 创建根卷的快照。

    2. 使用快照注册一个新的 AMI。

    3. 从新的 AMI 启动一个新实例。

    4. 将其余 Amazon EBS 卷与旧实例分离。

    5. 将这些 Amazon EBS 卷重新附加到新实例。

实例存储支持的实例

使用实例存储作为根卷的实例会自带可用的一个或多个实例存储卷,其中一个卷充当根卷。启动实例时,用于启动该实例的映像被复制到根卷。请注意,您可以根据实例类型选择使用更多实例存储卷。

只要实例正在运行,实例存储卷上的所有数据便会存在,但是在实例终止时(实例存储支持的实例不支持停止操作)或是实例失败时(例如底层硬盘有问题时),会删除这些数据。有关更多信息,请参阅 Amazon EC2 实例存储


     Amazon EC2 实例存储支持的实例上的根卷
要求

只有以下实例类型支持将实例存储卷作为根卷:C3、D2、G2、I2、M3 和 R3。

实例失败

由实例存储支持的实例失败或终止后,该实例不能被恢复。如果您打算使用由 Amazon EC2 实例存储支持的实例,我们强烈建议您将数据跨多个可用区分散到不同实例存储中。您还应该定期将您的实例存储卷上的关键数据备份至持久性存储。

按根卷类型选择 AMI

您在启动实例时指定的 AMI 决定着实例的根设备卷类型。您可以使用以下方法之一按根设备类型查看 AMI。

Console
使用控制台选择 Amazon EBS-backed AMI
  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 AMIs

  3. 从筛选条件列表中,选择映像类型(例如公有映像)。在搜索栏中,选择平台以选择操作系统(例如 Amazon Linux),然后选择根设备类型以选择根卷类型(ebs)。

  4. (可选)为了获取其他信息以帮助您进行选择,请选择首选项图标,切换要显示的列,然后选择确认

  5. 选择一个 AMI 并记下其 AMI ID。

使用控制台选择由实例存储支持的 AMI
  1. 打开 Amazon EC2 控制台。

  2. 在导航窗格中,选择 AMIs

  3. 从筛选条件列表中,选择映像类型(例如公有映像)。在搜索栏中,选择平台以选择操作系统(例如 Amazon Linux),然后选择根设备类型以选择根卷类型(instance-store)。

  4. (可选)为了获取其他信息以帮助您进行选择,请选择首选项图标,切换要显示的列,然后选择确认

  5. 选择一个 AMI 并记下其 AMI ID。

Amazon CLI
使用命令行验证 AMI 的根设备卷的类型

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

确定实例的根设备类型

Console
使用控制台确定实例的根设备类型
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances,然后选择实例。

  3. 存储选项卡的根设备详细信息下,检查根设备类型的值,如下所示:

    • 如果值为 EBS,则表示这是一个由 Amazon EBS 支持的实例。

    • 如果值为 INSTANCE-STORE,则表示这是由实例存储支持的实例。

Amazon CLI
使用命令行确定实例的根设备类型

您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2

将根卷更改为保留

默认情况下,当实例终止时,由 Amazon EBS 提供支持的 AMI 的根卷会被删除。您可以更改默认行为来确保卷在实例终止后保留。要更改默认行为,请使用块储存设备映射将 DeleteOnTermination 属性设置为 false

将根卷配置为在实例启动期间保留

可以使用 Amazon EC2 控制台或命令行工具将根卷配置为在启动实例时保留。

Console
使用控制台将根卷配置为在启动实例时保留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例,然后选择启动实例

  3. 依次选择亚马逊机器映像(AMI)、实例类型、密钥对,然后配置网络设置。

  4. 配置存储中,选择高级

  5. 扩展根卷。

  6. 对于终止时删除,选择

  7. 配置完实例后,选择启动实例

Amazon CLI
使用 Amazon CLI 将根卷配置为在启动实例时保留

使用 run-instances 命令,并包含将 DeleteOnTermination 属性设置为 false 的块储存设备映射。

$ aws ec2 run-instances --block-device-mappings file://mapping.json ...other parameters...

mapping.json 中指定以下内容。

[ { "DeviceName": "/dev/sda1", "Ebs": { "DeleteOnTermination": false } } ]
Tools for Windows PowerShell
使用 Tools for Windows PowerShell 将根卷配置为在启动实例时保留

使用 New-EC2Instance 命令,并包含将 DeleteOnTermination 属性设置为 false 的块储存设备映射。

C:\> $ebs = New-Object Amazon.EC2.Model.EbsBlockDevice C:\> $ebs.DeleteOnTermination = $false C:\> $bdm = New-Object Amazon.EC2.Model.BlockDeviceMapping C:\> $bdm.DeviceName = "dev/xvda" C:\> $bdm.Ebs = $ebs C:\> New-EC2Instance -ImageId ami-0abcdef1234567890 -BlockDeviceMapping $bdm ...other parameters...

配置根卷以便为现有实例保留

可以只使用命令行工具,配置根卷以便为正在运行的实例保留。

Amazon CLI
使用 Amazon CLI 配置根卷以便为现有实例保留

使用 modify-instance-attribute 命令以及将 DeleteOnTermination 属性设置为 false 的块储存设备映射。

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

mapping.json 中指定以下内容。

[ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": false } } ]
Tools for Windows PowerShell
使用 Amazon Tools for Windows PowerShell 配置根卷以便为现有实例保留

使用 Edit-EC2InstanceAttribute 命令以及将 DeleteOnTermination 属性设置为 false 的块储存设备映射。

C:\> $ebs = New-Object Amazon.EC2.Model.EbsInstanceBlockDeviceSpecification C:\> $ebs.DeleteOnTermination = $false C:\> $bdm = New-Object Amazon.EC2.Model.InstanceBlockDeviceMappingSpecification C:\> $bdm.DeviceName = "/dev/xvda" C:\> $bdm.Ebs = $ebs C:\> Edit-EC2InstanceAttribute -InstanceId i-1234567890abcdef0 -BlockDeviceMapping $bdm

确认已将根卷配置为保留

可以使用 Amazon EC2 控制台或命令行工具确认已将根卷配置为保留。

Console
使用 Amazon EC2 控制台确认已将根卷配置为保留
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 存储选项卡的块储存设备下,找到根卷的条目。如果终止时删除No,则表示卷已配置为保留。

Amazon CLI
使用 Amazon CLI 确认已将根卷配置为保留

使用 describe-instances 命令,并确认 DeleteOnTermination 响应元素中的 BlockDeviceMappings 属性设置为 false

$ aws ec2 describe-instances --instance-id i-1234567890abcdef0
... "BlockDeviceMappings": [ { "DeviceName": "/dev/sda1", "Ebs": { "Status": "attached", "DeleteOnTermination": false, "VolumeId": "vol-1234567890abcdef0", "AttachTime": "2013-07-19T02:42:39.000Z" } } ...
Tools for Windows PowerShell
使用 Amazon Tools for Windows PowerShell 确认已将根卷配置为保留

使用 Get-EC2Instance 命令,并确认 DeleteOnTermination 响应元素中的 BlockDeviceMappings 属性设置为 false

C:\> (Get-EC2Instance -InstanceId i-i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs

更改根卷的初始大小

默认情况下,根卷的大小取决于快照的大小。您可以按下述方式使用实例的块储存设备映射增加根卷的初始大小。

  1. 确定 AMI 中指定的根卷的设备名称,如 查看 AMI 块储存设备映射中的 EBS 卷 中所述。

  2. 请确认 AMI 块设备映射中指定的快照的大小。

  3. 在启动实例时更新块储存设备映射 中所述,使用实例块储存设备映射覆盖根卷的大小,请指定大于快照大小的卷大小。

例如,实例块储存设备映射的以下条目将根卷的大小 /dev/xvda 增加到 100 GiB。您可以在实例块储存设备映射中省略快照 ID,因为快照 ID 已在 AMI 块储存设备映射中指定。

{ "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 100 } }

有关更多信息,请参阅 块设备映射