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

适用于 EC2 实例的 SSD 实例存储卷

像其他实例存储卷一样,您必须在启动实例时为其映射 SSD 实例存储卷。SSD 实例卷上的数据仅在其关联实例的生命周期内保留。有关更多信息,请参阅将实例存储卷添加到 EC2 实例

NVMe SSD 卷

有些实例提供符合非易失性存储器规范(NVMe)的固态硬盘(SSD)实例存储卷。有关每种实例类型支持的实例存储卷类型的更多信息,请参阅EC2 实例的实例存储卷限制

NVMe 实例存储上的数据是使用在实例上的硬件模块中实施的 XTS-AES-256 数据块密码加密的。加密密钥是使用硬件模块生成的,并且对每台 NVMe 实例存储设备都是唯一的。当实例停止或终止并且无法恢复时,将销毁所有加密密钥。无法禁用此加密,并且无法提供自己的加密密钥。

要访问 NVMe 卷,必须安装 NVMe 驱动程序。以下 AMI 满足此要求:

  • AL2023

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03 和更高版本

  • Ubuntu 14.04 或更高版本(采用 linux-aws 内核)

    注意

    Amazon 基于 Graviton 的实例类型需要 Ubuntu 18.04 或更高版本(采用 linux-aws 内核)

  • Red Hat Enterprise Linux 7.4 或更高版本

  • SUSE Linux Enterprise Server 12 SP2 或更高版本

  • CentOS 7.4.1708 或更高版本

  • FreeBSD 11.1 或更高版本

  • Debian GNU/Linux 9 或更高版本

  • Bottlerocket

连接到实例后,您可以使用 lspci 命令列出 NVMe 设备。以下是支持 4 台 NVMe 设备的 i3.8xlarge 实例的示例输出。

[ec2-user ~]$ lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Device 1d0f:ec20 00:17.0 Non-Volatile memory controller: Device 1d0f:cd01 00:18.0 Non-Volatile memory controller: Device 1d0f:cd01 00:19.0 Non-Volatile memory controller: Device 1d0f:cd01 00:1a.0 Non-Volatile memory controller: Device 1d0f:cd01 00:1f.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)

如果您使用了受支持的操作系统但未看到 NVMe 设备,请使用以下命令验证是否已加载 NVMe 模块。

  • Amazon Linux、Amazon Linux 2、Ubuntu 14/16、Red Hat Enterprise Linux、SUSE Linux Enterprise Server、CentOS 7

    $ lsmod | grep nvme nvme 48813 0
  • Ubuntu 18

    $ cat /lib/modules/$(uname -r)/modules.builtin | grep nvme s/nvme/host/nvme-core.ko kernel/drivers/nvme/host/nvme.ko kernel/drivers/nvmem/nvmem_core.ko

NVMe 卷符合 NVMe 1.0e 规范。您可以对 NVMe 卷使用 NVMe 命令。利用 Amazon Linux,您可以使用 nvme-cli 命令从存储库安装 yum install 程序包。利用其他受支持的 Linux 版本,您可以下载 nvme-cli 包(如果包在映像中不可用)。

以下操作系统的最新 Amazon Windows AMI 包含用于与显示为 NVMe 块储存设备的 SSD 实例存储卷进行交互的 Amazon NVMe 驱动程序,以提高性能:

  • Windows Server 2022

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012 R2

连接到实例后,您可以验证 Disk Manager 中是否显示了 NVMe 卷。在任务栏上,打开 Windows 徽标的上下文(右键单击)菜单,然后选择磁盘管理

由 Amazon 提供的 Amazon Windows AMI 包含 Amazon NVMe 驱动程序。如果您使用的不是最新 Amazon Windows AMI,则可以安装最新的 Amazon NVMe 驱动程序

非 NVMe SSD 卷

以下实例支持使用非 NVMe SSD 来提供高随机 /O 性能的实例存储卷:C3、I2、M3、R3 和 X1。有关每种实例类型支持的实例存储卷的更多信息,请参阅EC2 实例的实例存储卷限制

基于 SSD 的实例存储卷的 I/O 性能

随着您不断在您的实例的基于 SSD 的实例存储卷中填充数据,您可以达到的写入 IOPS 将不断减少。这是因为,SSD 控制器必须执行额外的工作,即查找可用空间、重写现有数据,以及擦除未使用的空间以使之可供重写。这一垃圾回收过程将导致对 SSD 的内部写入放大影响,这以 SSD 写入操作数相对于用户写入操作数的比率形式来表示。如果写入操作数并非 4096 字节的倍数,或不在 4096 字节这一边界上,则性能的降低会更明显。如果您写入的字节数较少或不在边界上,则 SSD 控制器必须读取周围的数据并在新位置存储结果。这种模式会大大增加写入放大的影响,加长延迟,并显著降低 I/O 性能。

SSD 控制器可以使用多种策略来减少写入放大的影响。其中的一个策略是在 SSD 实例存储中预订空间,以便控制器更高效地管理可用于写入操作的空间。这称为超额配置。为实例提供的基于 SSD 的实例存储卷不会为超额预置预保留任何空间。要减少写入放大问题造成的影响,建议您留出 10% 的卷空间不进行分区,以便 SSD 控制器使用这部分空间进行超额预置。虽然这会减少您可使用的存储空间,但可提高性能,即使磁盘容量快用完也是如此。

对于支持 TRIM 的实例存储卷,可在不再需要已写入的数据时,使用 TRIM 命令告知 SSD 控制器此情况。这将为控制器提供更多可用空间,从而可以减少写入放大的影响并提高性能。有关更多信息,请参阅 实例存储卷 TRIM 支持

实例存储卷 TRIM 支持

某些实例类型支持带有 TRIM 的 SSD 卷。有关更多信息,请参阅 EC2 实例的实例存储卷限制

注意

(仅限 Windows 实例)从 Amazon PV 驱动程序版本 7.3.0 起,运行 Windows Server 2012 R2 的实例支持 TRIM。运行更低版本的 Windows Server 的实例不支持 TRIM。

支持 TRIM 的实例存储卷先经全面删减,然后再分配到您的实例。这些卷在实例启动时未经过文件系统的格式化处理,因此,您必须先进行格式化,而后才能挂载和使用。为了更快地访问这些卷,您在格式化它们时应跳过 TRIM 操作。

(Windows 实例)要在初始格式化过程中暂时禁用 TRIM 支持,请使用 fsutil behavior set DisableDeleteNotify 1 命令。完成格式化后,使用 fsutil behavior set DisableDeleteNotify 0 重新启用 TRIM 支持。

利用支持 TRIM 的实例存储卷,您可在不再需要已写入的数据时使用 TRIM 命令告知 SSD 控制器此情况。这将为控制器提供更多可用空间,从而可以减少写入放大的影响并提高性能。在 Linux 实例上,使用 fstrim 命令启用定期 TRIM。在 Windows 实例上,使用 fsutil behavior set DisableDeleteNotify 0 命令确保在正常操作期间启用 TRIM 支持。