使用 Amazon EBS 多重挂载将卷挂载到多个实例 - Amazon EBS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon EBS 多重挂载将卷挂载到多个实例

通过 Amazon EBS 多重挂载,您可以将单个预置 IOPS SSD(io1io2)卷挂载到位于同一可用区中的多个实例。您可以将多个启用多重挂载的卷附加到一个实例或一组实例。卷附加到的每个实例都对共享卷拥有完全读取和写入权限。通过多重挂载,您可以更轻松地在管理并发写入操作的应用程序中实现更高的应用程序可用性。

注意事项和限制

  • 启用多重挂载的卷最多可以挂载到位于相同可用区内的基于 Nitro 系统构建的 16 个实例。

  • Linux 实例支持启用多重挂载的 io1io2 卷。Windows 实例仅支持启用多重挂载的 io2 卷。

  • 您可以挂载到实例的最大 Amazon EBS 卷数取决于实例类型和实例规模。有关更多信息,请参阅实例卷限制

  • 仅在预调配 IOPS SSD(io1 和 io2)卷上才支持多重挂载。

  • io1 卷的多重挂载仅在以下区域可用:美国东部(弗吉尼亚州北部)、美国西部(俄勒冈州)和亚太地区(首尔)。

    适用于 io2 的多重挂载功能已在所有支持 io2 的区域中提供。

    注意

    为了以更低的成本获得更好的性能、一致性和耐用性,我们建议您使用 io2 卷。

  • 基于 Nitro System 而构建的实例仅支持可扩展的可靠数据报(SRD)网络协议时,将不支持启用了多重挂载的 io1 卷。要将多重挂载与这些实例类型结合使用,必须使用 io2 Block Express 卷。

  • 标准文件系统(例如 XFS 和 EXT4)不能被多个服务器(例如 EC2 实例)同时访问。您应使用集群文件系统来确保生产工作负载的数据恢复能力和可靠性。

  • 启用多重挂载的 io2 卷支持 I/O 隔离栏。I/O 隔离栏协议控制共享存储环境中的写入访问,以保持数据一致性。您的应用程序必须为附加的实例提供写入顺序,以保持数据一致性。有关更多信息,请参阅 NVMe 预留

    启用多重挂载的 io1 卷不支持 I/O 隔离栏。

  • 无法将启用多重挂载的卷创建为引导卷。

  • 可以将启用多重挂载的卷附加到每个实例的一个块储存设备映射。

  • 在实例启动期间,无法使用 Amazon EC2 控制台或 RunInstances API 启用多重连接。

  • 在 Amazon EBS 基础结构层存在问题的启用多重挂载的卷对于所有附加的实例都不可用。Amazon EC2 或网络层的问题可能仅影响某些挂载的实例。

  • 下表显示了创建后对启用多重挂载的 io1io2 卷的卷修改支持。

    io2 io1
    修改卷类型
    修改卷大小
    修改预置 IOPS
    启用多重挂载 ✓ *
    禁用多重挂载 ✓ *

    *当卷挂载到实例时,您无法启用或禁用多重挂载。

Performance

每个附加的实例都能够将其最大 IOPS 性能提升到卷的最大预置性能。但是,所有附加的实例的总体性能不能超过卷的最大预置性能。如果附加实例的 IOPS 需求高于卷的预置 IOPS,则卷不会超过其预置性能。

例如,假设您使用 io2 预置 IOPS 创建 80,000 启用了多重挂载的卷,然后将其挂载到最高支持 40,000 IOPS 的 m7g.large 实例和最高支持 60,000 IOPS 的 r7g.12xlarge 实例。每个实例都可以提升其最大 IOPS,因为它小于卷的预置 IOPS 80,000。但是,如果两个实例同时提升对卷的 I/O,则其组合 IOPS 不能超过卷的预置性能 80,000 IOPS。

为了实现一致的性能,最佳做法是在启用多重挂载的卷的扇区间平衡由附加实例提升的 I/O。

使用多重挂载

启用了多重挂载的卷的管理方式与管理任何其他 Amazon EBS 卷的方式大致相同。但是,为了使用多重挂载功能,您必须为卷启用它。当您创建新卷时,默认情况下,多重挂载处于禁用状态。

启用多重挂载

您可以在创建期间启用多重挂载功能。使用以下方法之一。

Console
在卷创建过程中启用多重挂载
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择创建卷

  4. 对于卷类型,选择预调配 IOPS SSD(io1 或预调配 IOPS SSD(io2

  5. 对于大小IOPS,选择所需的卷大小和要预置的 IOPS 数。

  6. 对于可用区,请选择实例所在的相同可用区。

  7. 对于 Amazon EBS Multi-Attach(Amazon EBS 多重挂载),选择 Enable Multi-Attach(启用多重挂载)。

  8. (可选)对于快照 ID,选择快照并从中创建卷。

  9. 设置卷的加密状态。

    如果选定的快照已加密,或者您的账户已启用默认加密,则加密会自动启用,而且您无法禁用它。您可以选择用于加密卷的 KMS 密钥。

    如果选定的快照未加密,且默认情况下账户未启用加密,则加密是可选的。要加密卷,请为 Encryption(加密)选择 Encrypt this volume(加密此卷),然后选择要用于加密卷的 KMS 密钥。

    注意

    加密卷只能附加到支持 Amazon EBS 加密的实例上。有关更多信息,请参阅 Amazon EBS 加密

  10. (可选)要为卷分配自定义标签,请在标签部分中选择添加标签,然后输入标签键和值对。

  11. 选择创建卷

Command line
在卷创建过程中启用多重挂载

使用 create-volume 命令并指定 --multi-attach-enabled 参数。

$ C:\> aws ec2 create-volume --volume-type io2 --multi-attach-enabled --size 100 --iops 2000 --region us-west-2 --availability-zone us-west-2b

您还可以在创建 io2 卷之后,仅在这些卷没有挂载到任何实例的情况下,为其启用多重挂载。

注意

在创建之后,您不能为 io1 卷启用多重挂载。

使用以下方法之一为已创建的 io2 卷启用多重挂载功能。

Console
在创建后启用多重挂载
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择所需卷,然后选择 Actions(操作)、Modify Volume(修改卷)。

  4. 对于 Amazon EBS Multi-Attach(Amazon EBS 多重挂载),选择 Enable Multi-Attach(启用多重挂载)。

  5. 选择修改

Command line
在创建后启用多重挂载

使用 modify-volume 命令并指定 --multi-attach-enabled 参数。

$ C:\> aws ec2 modify-volume --volume-id vol-1234567890abcdef0 --multi-attach-enabled

禁用多重挂载

只有当 io2 卷挂载到不超过一个实例时,您才能对其禁用多重挂载。

注意

在创建之后,您不能为 io1 卷禁用多重挂载。

使用以下方法之一为 io2 卷禁用多重挂载。

Console
在创建后禁用多重挂载
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. 选择所需卷,然后选择 Actions(操作)、Modify Volume(修改卷)。

  4. 对于 Amazon EBS 多重挂载,清除 Enable Multi-Attach(启用多重挂载)。

  5. 选择修改

Command line
在创建后禁用多重挂载

使用 modify-volume 命令并指定 -no-multi-attach-enabled 参数。

$ C:\> aws ec2 modify-volume --volume-id vol-1234567890abcdef0 --no-multi-attach-enabled

将卷挂载到实例

您可以将启用多重挂载的卷附加到实例,方式与挂载任何其他 EBS 卷相同。有关更多信息,请参阅将 Amazon EBS 卷挂载到实例

终止时删除

如果最后一个附加的实例终止,并且该实例配置为在终止时删除卷,则启用多重挂载的卷将在实例终止时被删除。如果卷附加到多个实例,而这些实例在其卷块储存设备映射中具有不同的终止时删除设置,则最后一个附加的实例的块储存设备映射设置决定终止时删除行为。

要确保对终止行为进行可预测删除,为卷挂载到的所有实例启用或禁用“终止时删除”。

默认情况下,当卷挂载到实例时,数据块设备映射的终止时删除设置会设为 false。如果要对启用多重挂载的卷开启终止时删除功能,请修改块储存设备映射。

如果您希望在终止附加的实例时删除卷,请在块储存设备映射中为所有附加的实例启用终止时删除。如果您要在附加的实例终止后保留卷,请在块储存设备映射中为所有附加的实例禁用终止时删除操作。有关更多信息,请参阅实例终止时保留数据

您可以在启动时或启动后修改实例的终止时删除设置。如果您在实例启动期间启用或禁用终止时删除功能,则设置仅应用于在启动时附加的卷。如果您在启动后将卷附加到实例,则必须显式设置该卷的终止时删除行为。

您只能使用命令行工具修改实例的终止时删除设置。

修改现有实例的终止时删除设置

使用 modify-instance-attribute 命令并在 DeleteOnTermination 中指定 --block-device-mappings option 属性。

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

mapping.json 中指定以下内容。

[ { "DeviceName": "/dev/sdf", "Ebs": { "DeleteOnTermination": true|false } } ]

监控启用多重挂载的卷

您可以使用 Amazon EBS 卷的 CloudWatch 指标监控启用了多重连接的卷。有关更多信息,请参阅 亚马逊 EBS 的亚马逊 CloudWatch 指标

在所有附加的实例之间聚合数据。您无法监控单个附加的实例的指标。

定价和计费

使用 Amazon EBS 多重挂载不会产生额外费用。您需要按照适用于预置 IOPS SSD(io1io2)卷的标准计费。有关更多信息,请参阅 Amazon EBS 定价