EC2 인스턴스용 SSD 인스턴스 스토어 볼륨 - Amazon Elastic Compute Cloud

EC2 인스턴스용 SSD 인스턴스 스토어 볼륨

다른 인스턴스 스토어 볼륨과 마찬가지로 인스턴스 시작 시 인스턴스에 대한 SSD 인스턴스 스토어 볼륨을 매핑해야 합니다. SSD 인스턴스 볼륨의 데이터는 연결된 인스턴스의 수명 기간 동안만 지속됩니다. 자세한 내용은 EC2 인스턴스에 인스턴스 스토어 볼륨 추가 섹션을 참조하세요.

NVMe SSD 볼륨

일부 인스턴스는 NVMe(Non-Volatile Memory Express) SSD(Solid State Drive) 인스턴스 스토어 볼륨을 제공합니다. 인스턴스 유형별로 지원되는 인스턴스 스토어 볼륨 유형에 대한 자세한 내용은 EC2 인스턴스의 인스턴스 스토어 볼륨 제한 섹션을 참조하세요.

인스턴스 하드웨어 모듈에 구현된 XTS-AES-256 블록 암호를 사용하여 NVMe 인스턴스 스토리지의 데이터를 암호화합니다. 하드웨어 모듈을 사용하여 암호화 키를 생성하며, 암호화 키는 각 NVMe 인스턴스 스토리지 디바이스에 고유합니다. 인스턴스가 중지되거나 종료되면 모든 암호화 키가 손상되어 복구가 불가능해집니다. 이 암호화를 비활성화할 수 없으며, 사용자 자신의 암호화 키를 제공할 수 없습니다.

NVMe 볼륨에 액세스하려면 NVMe 드라이버가 설치되어 있어야 합니다. 다음 AMI가 이 요구 사항을 충족합니다.

  • AL2023년

  • Amazon Linux 2

  • Amazon Linux AMI 2018.03 이상

  • Ubuntu 14.04 이상(linux-aws 커널 포함)

    참고

    Ubuntu 18.04 이상(linux-aws 커널 포함)이 필요한 AWS Graviton 기반 인스턴스 유형

  • 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 패키지가 이미지에 제공되지 않은 경우 다운로드할 수 있습니다.

다음 운영 체제용 최신 AWS Windows AMI에는 성능 향상을 위해 NVMe 블록 디바이스로 표시되는 SSD 인스턴스 스토어 볼륨과 상호 작용하는 데 사용되는 AWS NVMe 드라이버가 포함되어 있습니다.

  • Windows Server 2022

  • Windows Server 2019

  • Windows Server 2016

  • Windows Server 2012 R2

인스턴스에 연결한 후 디스크 관리자에서 NVMe 볼륨이 보이는지 확인할 수 있습니다. 작업 표시줄에서 마우스 오른쪽 버튼을 클릭하여 Windows 로고에 대한 컨텍스트 메뉴를 열고 디스크 관리(Disk Management)를 선택합니다.

Amazon에서 제공하는 AWS Windows AMI에는 AWS NVMe 드라이버가 포함되어 있습니다. 최신 AWS Windows AMI를 사용하고 있지 않은 경우 AWS현재 NVMe 드라이버를 설치할 수 있습니다.

비 NVMe SSD 볼륨

C3, I2, M3, R3, X1 인스턴스는 비 NVMe SSD를 사용하여 높은 랜덤 I/O 성능을 제공하는 인스턴스 스토어 볼륨을 지원합니다. 인스턴스 유형별로 지원되는 인스턴스 스토어 볼륨에 대한 자세한 내용은 EC2 인스턴스의 인스턴스 스토어 볼륨 제한 섹션을 참조하세요.

SSD 기반 인스턴스 스토어 볼륨 I/O 성능

인스턴스에 대한 SSD 기반 인스턴스 스토어 볼륨에 데이터가 있는 경우, 달성 가능한 쓰기 IOPS의 수는 감소합니다. 이는 SSD 컨트롤러가 가용 공간을 찾고 기존 데이터를 다시 쓰고 미사용 공간을 삭제하여 다시 쓸 수 있는 공간을 마련하기 위해 추가적인 작업을 해야 하기 때문입니다. 이러한 폐영역 회수 과정은 SSD에 대한 내부 쓰기 작업이 증폭되는 결과를 낳게 되며, 이런 결과는 사용자 쓰기 작업에 대한 SSD 쓰기 작업의 비로 표현됩니다. 이러한 성능 감소는 쓰기 작업이 4096바이트의 배수들 또는 4096바이트 경계에 정렬되지 않은 상태로 수행되는 경우에 더 심해질 수 있습니다. 정렬되지 않은 바이트를 소량으로 쓰기 작업하는 경우, SSD 컨트롤러는 쓰려는 부분의 주변 데이터를 읽고 그 결과도 새 위치에 저장해야 합니다. 이런 패턴으로 인해 쓰기 작업이 크게 증폭되고 지연 시간 증가와 I/O 성능의 급격한 감소를 초래합니다.

SSD 컨트롤러는 여러 전략을 사용해서 쓰기 작업 증폭의 영향을 감쇄할 수 있습니다. 그 중 하나의 전력은 SSD 인스턴스 스토리지에 예약 공간을 마련해서 SSD 컨트롤러가 쓰기 작업에 사용 가능한 공간을 보다 효율적으로 관리할 수 있게 하는 것입니다. 이를 오버-프로비저닝이라고 합니다. 인스턴스에 제공된 SSD 기반 인스턴스 스토어 볼륨은 오버프로비저닝을 위한 예약 공간을 가지고 있지 않습니다. 쓰기 작업 증폭의 영향 감쇄를 위해 최소한 볼륨의 10%를 파티션 처리되지 않은 상태로 두어서 SSD 컨트롤러가 이를 오버프로비저닝에 사용할 수 있도록 하는 것이 좋습니다. 그러면 사용할 수 있는 스토리지는 줄어들지만, 디스크를 전체 용량에 가깝게 사용하더라도 성능은 향상됩니다.

TRIM을 지원하는 인스턴스 스토어 볼륨의 경우, TRIM 명령을 사용하여 작성한 데이터가 더 이상 필요하지 않음을 SSD 컨트롤러에 알릴 수 있습니다. 이를 통해 컨트롤러에 더 많은 여유 공간이 제공되므로 쓰기 작업 증폭을 줄이고 성능을 향상시킬 수 있습니다. 자세한 내용은 인스턴스 스토어 볼륨 TRIM 지원 단원을 참조하십시오.

인스턴스 스토어 볼륨 TRIM 지원

일부 인스턴스 유형은 TRIM이 포함된 SSD 볼륨을 지원합니다. 자세한 내용은 EC2 인스턴스의 인스턴스 스토어 볼륨 제한 단원을 참조하십시오.

참고

(Windows 인스턴스만 해당) Windows Server 2012 R2를 실행하는 인스턴스는 AWS PV 드라이버 버전 7.3.0부터 TRIM을 지원합니다. 이전 버전의 Windows Server를 실행하는 인스턴스는 TRIM을 지원하지 않습니다.

TM을 지원하는 인스턴스 스토어 볼륨은 인스턴스에 할당되기 전 완전히 트리밍(trimming)됩니다. 이러한 볼륨은 인스턴스가 실행될 때 파일 시스템으로 포맷되지 않으므로, 마운트 후 사용하기 전 사용자가 해당 볼륨을 포맷해야 합니다. 이러한 볼륨에 액세스하는 속도를 높이려면 볼륨을 포맷할 때 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 지원이 활성화되었는지 확인합니다.