SSD 執行個體存放區磁碟區 - Amazon Elastic Compute Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SSD 執行個體存放區磁碟區

若要在 Linux 上確保 SSD 執行個體存放磁碟區的最佳 IOPS 效能,建議使用最新版的 Amazon Linux,或是具備 3.8 或更新版核心的另一種 Linux AMI。如果未使用具備 3.8 或更新版核心的 Linux AMI,執行個體將無法達成這些執行個體類型可實現的最佳 IOPS 效能。

如同其他的執行個體存放磁碟區,您必須在啟動執行個體時,對應執行個體的 SSD 執行個體存放磁碟區。SSD 執行個體磁碟區上的資料,只會存在於其相關執行個體的生命週期期間。如需詳細資訊,請參閱 將執行個體存放區磁碟區新增至 EC2 執行個體

NVMe SSD 磁碟區

某些執行個體提供非揮發性記憶體儲存裝置 (NVMe) 固態硬碟 (SSD) 執行個體存放區磁碟區。關於每種執行個體類型所支援的執行個體存放磁碟區類型,詳細資訊請參閱執行個體儲存體磁碟區

若要存取 NVMe 磁碟區,必須安裝 NVMe 驅動程式。下列 AMI 符合此需求:

  • AL2023

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03 及更新版本

  • Ubuntu 14.04 或更新版本 (帶 linux-aws 核心)

    注意

    AWS 以重力為基礎的執行個體類型需要 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 裝置。下列是 i3.8xlarge 執行個體的輸出範例,此執行個體支援四種 NVMe 裝置。

[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 套件。

NVMe 執行個體儲存體上的資料會以執行個體上的硬體模組中實作的 XTS-AES-256 區塊編碼器來加密。加密金鑰是以硬體模組來產生,且對每個 NVMe 執行個體儲存體設備而言是唯一的。所有加密金鑰會在執行個體停止或終止時銷毀,且無法復原。您無法停用此加密,也無法提供您自己的加密金鑰。

非 NVMe SSD 磁碟區

下列執行個體支援使用非 NVMe SSD 以提供高隨機 I/O 效能的執行個體儲存磁碟區:C3、I2、M3、R3 和 X1。關於每種執行個體類型所支援的執行個體存放磁碟區,詳細資訊請參閱執行個體儲存體磁碟區

SSD 型執行個體儲存體磁碟區 I/O 效能

隨著執行個體的 SSD 執行個體存放區磁碟區越來越滿,可達到的寫入 IOPS 次數將下降。這是因為 SSD 控制器必須執行額外的工作,去尋找可用的空間、重寫現有資料,以及清除未使用的空間以供重寫。這個收集廢棄項目的程序會造成 SSD 的內部寫入放大,也就是 SSD 寫入操作與使用者寫入操作的比例放大。假如寫入操作不是 4,096 位元組的倍數或未符合 4,096 位元組的邊界,效能下降的幅度會更明顯。因為當您寫入少量位元組或未符合的位元組時,SSD 控制器必須讀取週圍的資料並將結果存放到新的位置,此模式會造成寫入放大大幅增加,提高延遲,因而使 I/O 效能巨幅下降。

SSD 控制器利用多項策略來減少寫入放大的影響。其中一項策略,就是在 SSD 執行個體儲存體內保留空間,讓控制器能更有效管理寫入操作可用的空間。此策略稱為過度佈建。提供給執行個體的 SSD 型執行個體儲存磁碟區沒有任何保留空間以進行過度佈建。為了減少寫入放大,我們建議您將 10% 的磁碟區保留未分割,以便 SSD 控制器可以將其用於過度佈建。這樣做雖然會減少可用的儲存空間,但可提高效能,即使磁碟即將用完所有容量。

例如儲存支援 TRIM 的磁碟區,您可以在不再需要寫入的資料時,使用 TRIM 指令來通知 SSD 控制器。這會讓控制器有更多的可用空間能夠使用,可減少寫入放大現象,並提升效能。如需詳細資訊,請參閱 執行個體存放區磁碟區 TRIM 支援

執行個體存放區磁碟區 TRIM 支援

某些執行個體類型支援具有 TRIM 的 SSD 磁碟區。如需詳細資訊,請參閱 執行個體儲存體磁碟區

支援 TRIM 的執行個體存放磁碟區,會在分配給執行個體之前完全停用刪除通知 (執行 trim 指令)。在執行個體啟動時,這些磁碟區不會格式化為任何檔案系統,因此您必須先將這些磁碟區格式化之後,才能掛載和使用這些磁碟區。若要更快速地存取這些磁碟區,應在將這些磁碟區格式化時跳過 TRIM 操作。

使用支援 TRIM 的執行個體存放磁碟區時,當不再需要已寫入的資料時,可以利用 TRIM 指令來通知 SSD 控制器。這會讓控制器有更多的可用空間能夠使用,可減少寫入放大現象,並提升效能。在 Linux 上,使用 fstrim 命令以啟用定期 TRIM。