EC2 인스턴스용 SSD 인스턴스 스토어 볼륨
EC2 인스턴스용 SSD 인스턴스 스토어 볼륨
다른 인스턴스 스토어 볼륨과 마찬가지로, 인스턴스를 시작할 때 SSD 인스턴스 스토어 볼륨을 매핑해야 해요. SSD 인스턴스 볼륨의 데이터는 연결된 인스턴스의 수명 동안만 유지됩니다. 자세한 내용은 Add instance store volumes to an EC2 instance를 참고하세요.
출처: 문서
본문
다른 인스턴스 스토어 볼륨과 마찬가지로, 인스턴스를 시작할 때 SSD 인스턴스 스토어 볼륨을 매핑해야 해요. SSD 인스턴스 볼륨의 데이터는 연결된 인스턴스의 수명 동안만 유지됩니다. 자세한 내용은 Add instance store volumes to an EC2 instance를 참고하세요.
NVMe SSD 볼륨
일부 인스턴스는 non-volatile memory express(NVMe) 솔리드 스테이트 드라이브(SSD) 인스턴스 스토어 볼륨을 제공합니다. 각 인스턴스 유형이 지원하는 인스턴스 스토어 볼륨 유형에 대한 자세한 내용은 Instance store volume limits for EC2 instances를 참고하세요.
NVMe 인스턴스 스토리지의 데이터는 인스턴스의 하드웨어 모듈에 구현된 XTS-AES-256 블록 암호로 암호화됩니다. 암호화 키는 하드웨어 모듈로 생성되며 각 NVMe 인스턴스 스토리지 디바이스에 고유합니다. 모든 암호화 키는 인스턴스가 중지되거나 종료될 때 파괴되며 복구할 수 없어요. 이 암호화는 비활성화할 수 없고, 직접 암호화 키를 제공할 수도 없습니다.
NVMe 볼륨에 액세스하려면 NVMe 드라이버가 설치되어 있어야 해요. 다음 AMI가 이 요구사항을 충족합니다.
Note
- AL2023
- Amazon Linux 2
- Amazon Linux AMI 2018.03 이상
linux-aws커널이 있는 Ubuntu 14.04 이상(AWS Graviton 기반 인스턴스 유형은linux-aws커널이 있는 Ubuntu 18.04 이상 필요)- 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 모듈이 로드되었는지 확인해요.
$ lsmod | grep nvme
nvme 48813 0
$ 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
- Amazon Linux, Amazon Linux 2, Ubuntu 14/16, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, CentOS 7
- Ubuntu 18
NVMe 볼륨은 NVMe 1.0e 사양을 준수합니다. NVMe 볼륨과 함께 NVMe 명령을 사용할 수 있어요. Amazon Linux에서는 yum install 명령으로 리포지토리에서 nvme-cli 패키지를 설치할 수 있습니다. 다른 지원 Linux 버전에서는 이미지에 없으면 nvme-cli 패키지를 다운로드할 수 있어요.
다음 운영체제용 최신 AWS Windows AMI에는 성능 향상을 위해 NVMe 블록 디바이스로 노출되는 SSD 인스턴스 스토어 볼륨과 상호작용하는 데 사용되는 AWS NVMe 드라이버가 포함되어 있어요.
- Windows Server 2025
- Windows Server 2022
- Windows Server 2019
- Windows Server 2016
- Windows Server 2012 R2
인스턴스에 연결한 뒤 Disk Manager에서 NVMe 볼륨을 확인할 수 있어요. 작업 표시줄에서 Windows 로고의 컨텍스트(오른쪽 클릭) 메뉴를 열고 Disk Management를 선택해요.
Amazon이 제공하는 AWS Windows AMI에는 AWS NVMe 드라이버가 포함되어 있습니다. 최신 AWS Windows AMI를 사용하지 않는다면 현재 AWS NVMe 드라이버를 설치할 수 있어요.
비-NVMe SSD 볼륨 (Non-NVMe SSD volumes)
다음 인스턴스는 높은 무작위 I/O 성능을 제공하기 위해 비-NVMe SSD를 사용하는 인스턴스 스토어 볼륨을 지원합니다: C3, I2, M3, R3, X1. 각 인스턴스 유형이 지원하는 인스턴스 스토어 볼륨에 대한 자세한 내용은 Instance store volume limits for EC2 instances를 참고하세요.
SSD 기반 인스턴스 스토어 볼륨의 I/O 성능
인스턴스의 SSD 기반 인스턴스 스토어 볼륨을 채울수록 달성할 수 있는 쓰기 IOPS 수가 감소합니다. 이는 SSD 컨트롤러가 사용 가능한 공간을 찾고, 기존 데이터를 다시 쓰고, 다시 쓰일 수 있도록 사용하지 않은 공간을 지우는 추가 작업을 해야 하기 때문입니다. 이 가비지 컬렉션 과정은 SSD에 내부 쓰기 증폭(write amplification)을 초래하며, 사용자 쓰기 작업에 대한 SSD 쓰기 작업의 비율로 표현됩니다. 쓰기 작업이 4,096바이트의 배수가 아니거나 4,096바이트 경계에 정렬되지 않으면 성능 저하가 더 큽니다. 더 적은 바이트 수 또는 정렬되지 않은 바이트를 쓰면 SSD 컨트롤러가 주변 데이터를 읽고 그 결과를 새 위치에 저장해야 합니다. 이 패턴은 쓰기 증폭을 크게 증가시키고, 지연 시간을 늘리며, I/O 성능을 극적으로 저하시킵니다.
SSD 컨트롤러는 쓰기 증폭의 영향을 줄이기 위한 여러 전략을 사용할 수 있어요. 한 가지 전략은 SSD 인스턴스 스토리지에 공간을 예약해 컨트롤러가 쓰기 작업에 사용 가능한 공간을 더 효율적으로 관리할 수 있게 하는 것인데, 이를 *오버프로비저닝(over-provisioning)*이라고 합니다. 인스턴스에 제공되는 SSD 기반 인스턴스 스토어 볼륨에는 오버프로비저닝용으로 예약된 공간이 없어요. 쓰기 증폭을 줄이려면 볼륨의 10%를 파티션하지 않은 채로 두어 SSD 컨트롤러가 오버프로비저닝에 사용할 수 있게 하는 것을 권장합니다. 이렇게 하면 사용 가능한 스토리지가 줄지만, 디스크가 거의 가득 차 있어도 성능이 향상됩니다.
TRIM을 지원하는 인스턴스 스토어 볼륨의 경우, 더 이상 필요하지 않은 데이터를 확인한 때마다 TRIM 명령을 사용해 SSD 컨트롤러에 알릴 수 있습니다. 이는 컨트롤러에 더 많은 여유 공간을 제공해 쓰기 증폭을 줄이고 성능을 향상시킬 수 있어요. 자세한 내용은 Instance store volume TRIM support를 참고하세요.
인스턴스 스토어 볼륨 TRIM 지원
일부 인스턴스 유형은 TRIM이 있는 SSD 볼륨을 지원합니다. 자세한 내용은 Instance store volume limits for EC2 instances를 참고하세요.
Note
(Windows 인스턴스만) Windows Server 2012 R2를 실행하는 인스턴스는 AWS PV Driver 버전 7.3.0부터 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 지원이 활성화되도록 합니다.