

# EC2 인스턴스용 인스턴스 스토어 임시 블록 스토리지
<a name="InstanceStorage"></a>

**인스턴스 스토어는 EC2 인스턴스에 임시 블록 스토리지를 제공합니다. 이 스토리지는 호스트 컴퓨터에 물리적으로 연결된 디스크에서 제공합니다. 인스턴스 스토어는 버퍼, 캐시, 스크래치 데이터, 기타 임시 콘텐츠와 같이 자주 변경되는 정보의 임시 저장에 적합합니다. 또한 로드 밸런싱된 웹 서버 풀과 같은 인스턴스 플릿 전체에 복제하는 임시 데이터를 저장하는 데 사용할 수도 있습니다.

하나 이상의 인스턴스 스토어 볼륨으로 구성된 인스턴스 스토어는 블록 디바이스로 표시됩니다. 인스턴스 스토어의 크기는 물론 사용 가능한 디바이스의 수는 인스턴스 유형과 인스턴스 크기에 따라 다릅니다. 예를 들어 모든 인스턴스 유형이 인스턴스 스토어 볼륨을 제공하는 것은 아닙니다. 자세한 내용은 [EC2 인스턴스의 인스턴스 스토어 볼륨 제한](instance-store-volumes.md) 섹션을 참조하세요.

인스턴스 스토어 볼륨의 가상 디바이스에는 `ephemeral0`부터 `ephemeral23`까지 순서대로 가상 디바이스 이름이 지정됩니다. 예를 들어, 인스턴스 스토어 볼륨 1개를 지원하는 인스턴스 유형의 경우 볼륨 1개의 가상 디바이스 이름은 `ephemeral0`입니다. 인스턴스 스토어 볼륨 4개를 지원하는 인스턴스 유형의 경우 볼륨 4개의 가상 디바이스 이름은 `ephemeral0`, `ephemeral1`, `ephemeral2` 및 `ephemeral3`입니다.

![\[Amazon EC2 인스턴스 스토리지\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/instance_storage.png)


**인스턴스 스토어 요금**  
인스턴스에 제공된 인스턴스 스토어 볼륨 사용에 따른 추가 요금은 없습니다. 인스턴스 스토어 볼륨은 인스턴스의 사용 요금의 일부로 포함됩니다.

**Topics**
+ [

# Amazon EC2 인스턴스 스토어 볼륨의 데이터 지속성
](instance-store-lifetime.md)
+ [

# EC2 인스턴스의 인스턴스 스토어 볼륨 제한
](instance-store-volumes.md)
+ [

# EC2 인스턴스용 SSD 인스턴스 스토어 볼륨
](ssd-instance-store.md)
+ [

# EC2 인스턴스에 인스턴스 스토어 볼륨 추가
](add-instance-store-volumes.md)
+ [

# M1 및 C1 EC2 인스턴스의 인스턴스 스토어 스왑 볼륨 활성화
](instance-store-swap-volumes.md)
+ [

# EC2 인스턴스의 인스턴스 스토어 볼륨 초기화
](disk-performance.md)
+ [

# Amazon EC2 인스턴스 저장소 볼륨에 대한 세부 성능 통계
](nvme-detailed-performance-stats.md)

# Amazon EC2 인스턴스 스토어 볼륨의 데이터 지속성
<a name="instance-store-lifetime"></a>

인스턴스 스토어 볼륨은 인스턴스 시작 시에만 연결됩니다. 시작 후에는 인스턴스 스토어 볼륨을 연결할 수 없습니다. 하나의 인스턴스에서 인스턴스 스토어 볼륨을 분리하고 다른 인스턴스에 연결할 수 없습니다.

인스턴스 스토어 볼륨은 연결된 인스턴스의 수명 기간 동안에만 존재합니다. 연결된 인스턴스의 수명 기간이 지난 후에도 유지되도록 인스턴스 스토어 볼륨을 구성할 수 없습니다.

인스턴스를 재부팅해도 인스턴스 스토어 볼륨의 데이터는 유지됩니다. 그러나 인스턴스가 중지 또는 종료되거나 최대 절전 모드로 전환된 경우에는 데이터가 유지되지 않습니다. 인스턴스가 중지 또는 종료되거나 최대 절전 모드로 전환되면 인스턴스 스토어 볼륨의 모든 블록이 암호화된 방식으로 지워집니다.

그러므로 중요한 장기 데이터의 경우 인스턴스 스토어 볼륨에 의존하지 마세요. 인스턴스 수명 기간이 지난 후에도 인스턴스 스토어 볼륨에 저장된 데이터를 유지해야 하는 경우 Amazon EBS 볼륨, Amazon S3 버킷 또는 Amazon EFS 파일 시스템과 같은 보다 영구적인 스토리지에 해당 데이터를 수동으로 복사해야 합니다.

인스턴스의 수명 기간 동안 데이터가 유지되지 않는 몇 가지 이벤트가 있습니다. 다음 표에서는 가상화 인스턴스와 베어 메탈 인스턴스 모두에 대해 특정 이벤트 동안 인스턴스 스토어 볼륨의 데이터가 유지되는지 여부를 보여줍니다.


| Event | 데이터는 어떻게 되나요? | 
| --- |--- |
| **사용자 시작 인스턴스 수명 주기 이벤트** | 
| --- |
| [인스턴스가 재부팅됨](ec2-instance-reboot.md) | The data persists | 
| [인스턴스가 중지됨](Stop_Start.md) | The data does not persist | 
| [인스턴스가 최대 절전 모드로 전환됨](Hibernate.md) | The data does not persist | 
| [인스턴스가 종료됨](terminating-instances.md) | The data does not persist | 
| [인스턴스 유형이 변경됨](ec2-instance-resize.md) | The data does not persist \$1 | 
| [인스턴스에서 EBS 지원 AMI가 생성됨](creating-an-ami-ebs.md) | The data does not persist in the created AMI \$1\$1 | 
| [인스턴스에서 Amazon S3 지원 AMI가 생성됨](creating-an-ami-instance-store.md) (Linux instances) | The data persists in the AMI bundle uploaded to Amazon S3 \$1\$1\$1 | 
| **사용자가 시작한 OS 이벤트** | 
| --- |
| A shutdown is initiated | The data does not persist † | 
| A restart is initiated | The data persists | 
| **AWS 예약된 이벤트** | 
| --- |
| [인스턴스 중지](schedevents_actions_retire.md) | The data does not persist | 
| [인스턴스 재부팅](schedevents_actions_reboot.md) | The data persists | 
| [시스템 재부팅](schedevents_actions_reboot.md) | The data persists | 
| [인스턴스 만료](schedevents_actions_retire.md) | The data does not persist | 
| **계획되지 않은 이벤트** | 
| --- |
| [간소화된 자동 복구](instance-configuration-recovery.md) | The data does not persist | 
| [CloudWatch 작업 기반 복구](cloudwatch-recovery.md) | The data does not persist | 
| The underlying disk fails | The data on the failed disk does not persist | 
| Power failure | The data persists upon reboot | 

\$1 새 인스턴스 유형이 인스턴스 스토어를 지원하는 경우 인스턴스는 새 인스턴스 유형에서 지원하는 인스턴스 스토어 볼륨 수를 가져오지만 데이터는 새 인스턴스로 전송되지 않습니다. 새 인스턴스 유형이 인스턴스 스토어를 지원하지 않는 경우 인스턴스는 인스턴스 스토어 볼륨을 가져오지 않습니다.

\$1\$1 데이터는 EBS 지원 AMI에 포함되지 않으며 해당 AMI에서 시작된 인스턴스에 연결된 인스턴스 스토어 볼륨에도 포함되지 않습니다.

\$1\$1\$1 데이터는 Amazon S3에 업로드되는 AMI 번들에 포함됩니다. 해당 AMI에서 인스턴스를 시작하면 인스턴스는 AMI가 생성될 때 포함된 데이터와 함께 AMI에 번들된 인스턴스 스토어 볼륨을 가져옵니다.

† 종료 방지 및 중지 방지는 인스턴스의 운영 체제를 통해 시작된 종료로 인한 인스턴스 중지 또는 종료로부터 인스턴스를 보호하지 않습니다. 인스턴스 스토어 볼륨에 저장된 데이터는 인스턴스 중지 및 종료 이벤트 모두에서 유지되지 않습니다.

# EC2 인스턴스의 인스턴스 스토어 볼륨 제한
<a name="instance-store-volumes"></a>

인스턴스 스토어 볼륨의 수, 크기 및 유형은 인스턴스 유형에 따라 결정됩니다. C8i, M8i, R8i 등 일부 인스턴스 유형은 인스턴스 저장소 볼륨을 지원하지 않지만, C8id, M8id, R8id 등의 다른 인스턴스 유형은 인스턴스 저장소 볼륨을 지원합니다. 인스턴스 유형에서 지원하는 것보다 많은 인스턴스 스토어 볼륨을 인스턴스에 연결할 수 없습니다. 인스턴스 스토어 볼륨을 지원하는 인스턴스 유형의 경우 인스턴스 스토어 볼륨의 수와 크기는 인스턴스 크기에 따라 다릅니다. 예를 들어, `r8id.large`는 118GB 인스턴스 저장소 볼륨 1개를 지원하고, `r8id.32xlarge`는 3800GB 인스턴스 저장소 볼륨 2개를 지원합니다.

**NVMe 인스턴스 스토어 볼륨**이 있는 인스턴스 유형의 경우 지원되는 모든 인스턴스 스토어 볼륨이 시작 시 인스턴스에 자동으로 연결됩니다. C1, C3, M1, M2, M3, R3, D2, H1, I2, X1, X1e 등의 **비NVMe 인스턴스 스토어 볼륨**이 있는 인스턴스 유형의 경우 시작 시 연결할 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑을 수동으로 지정해야 합니다. 그런 다음 인스턴스가 시작된 후 [연결된 인스턴스 스토어 볼륨을 사용하려면 먼저 볼륨을 포맷하고 탑재](making-instance-stores-available-on-your-instances.md)해야 합니다. 인스턴스를 시작한 후에는 인스턴스 스토어 볼륨을 연결할 수 없습니다.

일부 인스턴스 유형은 NVMe 또는 SATA 기반 솔리드 스테이트 드라이브(SSD)를 사용하고 다른 인스턴스 유형은 SATA 기반 하드 디스크 드라이브(HDD)를 사용합니다. SSD는 매우 짧은 지연 시간과 뛰어난 임의 I/O 성능을 제공하지만 인스턴스 종료 시 데이터를 유지할 필요가 없거나 내결함성 아키텍처를 활용할 수 있습니다. 자세한 내용은 [EC2 인스턴스용 SSD 인스턴스 스토어 볼륨](ssd-instance-store.md) 섹션을 참조하세요.

NVMe 인스턴스 스토어 볼륨 및 일부 HDD 인스턴스 스토어 볼륨의 데이터는 저장 시 암호화됩니다. 자세한 내용은 [Amazon EC2의 데이터 보호](data-protection.md) 섹션을 참조하세요.

## NVMe 인스턴스 스토어 볼륨
<a name="available-instance-store-volumes"></a>

*Amazon EC2 인스턴스 유형 안내서*에는 지원되는 각 인스턴스 유형에서 사용 가능한 인스턴스 스토어 볼륨의 수량, 크기, 유형 및 성능 최적화가 나와 있습니다. 자세한 내용은 다음을 참조하세요.
+ [인스턴스 스토어 사양 - 범용](https://docs.aws.amazon.com/ec2/latest/instancetypes/gp.html#gp_instance-store)
+ [인스턴스 스토어 사양 - 컴퓨팅 최적화](https://docs.aws.amazon.com/ec2/latest/instancetypes/co.html#co_instance-store)
+ [인스턴스 스토어 사양 - 메모리 최적화](https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html#mo_instance-store)
+ [인스턴스 스토어 사양 - 스토리지 최적화](https://docs.aws.amazon.com/ec2/latest/instancetypes/so.html#so_instance-store)
+ [인스턴스 스토어 사양 - 가속 컴퓨팅](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html#ac_instance-store)
+ [인스턴스 스토어 사양 - 고성능 컴퓨팅](https://docs.aws.amazon.com/ec2/latest/instancetypes/hpc.html#hpc_instance-store)
+ [인스턴스 스토어 사양 - 이전 세대](https://docs.aws.amazon.com/ec2/latest/instancetypes/pg.html#pg_instance-store)

------
#### [ Console ]

**인스턴스 저장소 볼륨 정보를 검색하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스 유형**을 선택합니다.

1. **로컬 인스턴스 스토리지 = true** 필터를 추가합니다. **스토리지** 열은 인스턴스 유형에 대한 인스턴스 스토리지의 총 크기를 나타냅니다.

1. (선택 사항) **기본 설정** 아이콘을 클릭한 다음에 **스토리지 디스크 수**를 켭니다. 이 열은 인스턴스 저장소 볼륨 수를 나타냅니다.

1. (선택 사항) 필터를 추가하여 관심 있는 특정 인스턴스 유형에 범위를 추가로 지정합니다.

------
#### [ AWS CLI ]

**인스턴스 저장소 볼륨 정보를 검색하는 방법**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) 명령을 사용합니다. 다음 예제에서는 인스턴스 저장소 볼륨이 있는 모든 R8i 인스턴스 패밀리의 각 인스턴스 유형에 대한 인스턴스 스토리지의 총 크기가 표시됩니다.

```
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=r8i*" "Name=instance-storage-supported,Values=true" \
    --query 'sort_by(InstanceTypes, &InstanceStorageInfo.TotalSizeInGB)[].{InstanceType:InstanceType,TotalSizeInGB:InstanceStorageInfo.TotalSizeInGB}' \
    --output table
```

다음은 예제 출력입니다.

```
--------------------------------------
|        DescribeInstanceTypes       |
+------------------+-----------------+
|   InstanceType   |  TotalSizeInGB  |
+------------------+-----------------+
|  r8id.large      |  118            |
|  r8id.xlarge     |  237            |
|  r8id.2xlarge    |  474            |
|  r8id.4xlarge    |  950            |
|  r8id.8xlarge    |  1900           |
|  r8id.12xlarge   |  2850           |
|  r8id.16xlarge   |  3800           |
|  r8id.24xlarge   |  5700           |
|  r8id.32xlarge   |  7600           |
|  r8id.48xlarge   |  11400          |
|  r8id.metal-48xl |  11400          |
|  r8id.96xlarge   |  22800          |
|  r8id.metal-96xl |  22800          |
+------------------+-----------------+
```

**인스턴스 유형에 대한 전체 인스턴스 스토리지 세부 정보를 가져오는 방법**  
[describe-instance-types](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-types.html) 명령을 사용합니다.

```
aws ec2 describe-instance-types \
    --filters "Name=instance-type,Values=r8id.32xlarge" \
    --query 'InstanceTypes[0].InstanceStorageInfo' \
    --output json
```

예제 출력은 이 인스턴스 유형에 두 개의 3800GB NVMe SSD 볼륨이 있고 총 7600GB의 인스턴스 스토리지가 있음을 보여줍니다.

```
{
    "TotalSizeInGB": 7600,
    "Disks": [
        {
            "SizeInGB": 3800,
            "Count": 2,
            "Type": "ssd"
        }
    ],
    "NvmeSupport": "required",
    "EncryptionSupport": "required"
}
```

------
#### [ PowerShell ]

**인스턴스 저장소 볼륨 정보를 검색하는 방법**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) cmdlet을 사용합니다. 다음 예제에서는 인스턴스 저장소 볼륨이 있는 모든 R8i 인스턴스 패밀리의 각 인스턴스 유형에 대한 인스턴스 스토리지의 총 크기가 표시됩니다.

```
(Get-EC2InstanceType -Filter `
    @{Name="instance-type"; Values="r8i*"},
    @{Name="instance-storage-supported"; Values="true"}) |
    Sort-Object {$_.InstanceStorageInfo.TotalSizeInGB} |
    Format-Table InstanceType,
        @{Name="Disks.SizeInGB";Expression={$_.InstanceStorageInfo.Disks[0].SizeInGB}},
        @{Name="Disks.Count";Expression={$_.InstanceStorageInfo.Disks[0].Count}},
        @{Name="TotalSizeInGB";Expression={$_.InstanceStorageInfo.TotalSizeInGB}}
```

다음은 예제 출력입니다.

```
InstanceType    Disks.SizeInGB Disks.Count TotalSizeInGB
------------    -------------- ----------- -------------
r8id.large                 118           1           118
r8id.xlarge                237           1           237
r8id.2xlarge               474           1           474
r8id.4xlarge               950           1           950
r8id.8xlarge              1900           1          1900
r8id.12xlarge             2850           1          2850
r8id.16xlarge             3800           1          3800
r8id.24xlarge             2850           2          5700
r8id.32xlarge             3800           2          7600
r8id.48xlarge             3800           3         11400
r8id.metal-48xl           3800           3         11400
r8id.96xlarge             3800           6         22800
r8id.metal-96xl           3800           6         22800
```

**인스턴스 유형에 대한 전체 인스턴스 스토리지 세부 정보를 가져오는 방법**  
[Get-EC2InstanceType](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2InstanceType.html) cmdlet을 사용합니다.

```
(Get-EC2InstanceType `
    -Filter @{Name="instance-type"; Values="r8id.32xlarge"}).InstanceStorageInfo |
    Format-List *,
        @{Name="Disks.Count";Expression={$_.Disks[0].Count}},
        @{Name="Disks.SizeInGB";Expression={$_.Disks[0].SizeInGB}},
        @{Name="Disks.Type";Expression={$_.Disks[0].Type.Value}}
```

예제 출력은 이 인스턴스 유형에 두 개의 3800GB NVMe SSD 볼륨이 있고 총 7600GB의 인스턴스 스토리지가 있음을 보여줍니다.

```
Disks             : {Amazon.EC2.Model.DiskInfo}
EncryptionSupport : required
NvmeSupport       : required
TotalSizeInGB     : 7600
Disks.Count       : 2
Disks.SizeInGB    : 3800
Disks.Type        : ssd
```

------

# EC2 인스턴스용 SSD 인스턴스 스토어 볼륨
<a name="ssd-instance-store"></a>

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

## NVMe SSD 볼륨
<a name="nvme-ssd-volumes"></a>

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

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

### Linux 인스턴스
<a name="nvme-ssd-linux"></a>

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

### Windows 인스턴스
<a name="nvme-ssd-windows"></a>

다음 운영 체제용 최신 AWS Windows AMI에는 성능 향상을 위해 NVMe 블록 디바이스로 표시되는 SSD 인스턴스 스토어 볼륨과 상호 작용하는 데 사용되는 AWS NVMe 드라이버가 포함되어 있습니다.
+ Windows Server 2025
+ 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 드라이버를 설치](aws-nvme-drivers.md)할 수 있습니다.

## 비NVMe SSD 볼륨
<a name="ssd-volumes"></a>

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

## SSD 기반 인스턴스 스토어 볼륨 I/O 성능
<a name="ssd-volume-perf"></a>

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

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

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

## 인스턴스 스토어 볼륨 TRIM 지원
<a name="InstanceStoreTrimSupport"></a>

일부 인스턴스 유형은 TRIM이 포함된 SSD 볼륨을 지원합니다. 자세한 내용은 [EC2 인스턴스의 인스턴스 스토어 볼륨 제한](instance-store-volumes.md) 섹션을 참조하세요.

**참고**  
(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 지원이 활성화되었는지 확인합니다.

# EC2 인스턴스에 인스턴스 스토어 볼륨 추가
<a name="add-instance-store-volumes"></a>

**NVMe 인스턴스 스토어 볼륨**이 있는 인스턴스 유형의 경우 지원되는 모든 인스턴스 스토어 볼륨이 시작 시 인스턴스에 자동으로 연결됩니다. 자동으로 열거되고 인스턴스 시작 시 디바이스 이름이 할당됩니다.

C1, C3, M1, M2, M3, R3, D2, H1, I2, X1, X1e 등의 **비NVMe 인스턴스 스토어 볼륨**이 있는 인스턴스 유형의 경우 시작 시 연결할 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑을 수동으로 지정해야 합니다. 블록 디바이스 매핑은 인스턴스 시작 요청 또는 인스턴스 시작에 사용되는 AMI에서 지정할 수 있습니다. 블록 디바이스 매핑에는 디바이스 이름과 매핑된 볼륨이 포함됩니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨에 대한 블록 디바이스 매핑](block-device-mapping-concepts.md) 섹션을 참조하세요.

**중요**  
시작할 때만 인스턴스에 인스턴스 스토어 볼륨을 연결할 수 있습니다. 인스턴스를 실행한 이후에는 인스턴스 스토어 볼륨을 연결할 수 없습니다.

인스턴스를 실행한 후에는 인스턴스에 대한 인스턴스 스토어 볼륨이 사용하기에 앞서 포맷되고 마운트되었는지 확인해야 합니다. 인스턴스 저장소 루트 볼륨은 자동으로 마운트됩니다.

**루트 볼륨에 대한 고려 사항**  
블록 디바이스 매핑은 항상 인스턴스에 대한 루트 볼륨을 지정합니다. 루트 볼륨은 항상 자동으로 마운트됩니다.

**Linux 인스턴스** – 루트 볼륨은 Amazon EBS 볼륨 또는 인스턴스 스토어 볼륨 중 하나입니다. 루트 볼륨에 대한 인스턴스 스토어 볼륨이 있는 인스턴스의 경우, 볼륨의 크기는 AMI에 따라 다르지만 최대 크기는 10GB입니다. 자세한 내용은 [루트 볼륨 유형](ComponentsAMIs.md#storage-for-the-root-device) 섹션을 참조하세요.

**Windows 인스턴스** - 루트 볼륨은 Amazon EBS 볼륨이어야 합니다. 루트 볼륨에는 인스턴스 스토어가 지원되지 않습니다.

**Topics**
+ [

# Amazon EC2 AMI에 인스턴스 스토어 볼륨 추가
](adding-instance-storage-ami.md)
+ [

# 시작 중 EC2 인스턴스에 인스턴스 스토어 볼륨 추가
](adding-instance-storage-instance.md)
+ [

# EC2 인스턴스에서 인스턴스 스토어 볼륨을 사용할 수 있게 설정
](making-instance-stores-available-on-your-instances.md)

# Amazon EC2 AMI에 인스턴스 스토어 볼륨 추가
<a name="adding-instance-storage-ami"></a>

인스턴스 스토어 볼륨을 포함하는 블록 디바이스 매핑으로 AMI를 생성할 수 있습니다.

인스턴스 스토어 볼륨 블록 디바이스 매핑을 지정하는 AMI를 사용하여 **비NVMe 인스턴스 스토어 볼륨**을 지원하는 인스턴스를 시작하는 경우 인스턴스에 인스턴스 스토어 볼륨이 포함됩니다. AMI의 인스턴스 스토어 볼륨 블록 디바이스 매핑 수가 인스턴스에 사용 가능한 인스턴스 스토어 볼륨 수를 초과하면 추가 인스턴스 스토어 볼륨 블록 디바이스 매핑이 무시됩니다.

인스턴스 스토어 볼륨 블록 디바이스 매핑을 지정하는 AMI를 사용하여 ****NVMe 인스턴스 스토어 볼륨을 지원하는 인스턴스를 시작하면 인스턴스 스토어 볼륨 블록 디바이스 매핑이 무시됩니다. NVMe 인스턴스 스토어 볼륨을 지원하는 인스턴스는 인스턴스 시작 요청 및 AMI에 지정된 블록 디바이스 매핑에 관계없이 지원되는 모든 인스턴스 스토어 볼륨을 가져옵니다. 이러한 볼륨의 디바이스 매핑은 운영 체제가 볼륨을 열거하는 순서에 따라 다릅니다.

**고려 사항**
+ 사용할 수 있는 인스턴스 저장소 볼륨의 개수는 인스턴스 유형에 따라 다릅니다. 자세한 내용은 [NVMe 인스턴스 스토어 볼륨](instance-store-volumes.md#available-instance-store-volumes) 섹션을 참조하세요.
+ 각 블록 디바이스의 디바이스 이름을 지정해야 합니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨 디바이스 이름](device_naming.md) 섹션을 참조하세요.
+ 인스턴스를 실행할 때 AMI 블록 디바이스 매핑에서 지정된 비NVMe 인스턴스 스토어 볼륨을 생략하거나 인스턴스 스토어 볼륨을 추가할 수 있습니다.
+ M3 인스턴스의 경우 AMI가 아닌 인스턴스의 블록 디바이스 매핑에 인스턴스 스토어 볼륨을 지정합니다. Amazon EC2가 AMI의 인스턴스 스토어 볼륨 블록 디바이스 매핑을 무시할 수 있습니다.

------
#### [ Console ]

**Amazon EBS 지원 AMI에 인스턴스 저장소 볼륨을 추가하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택하고 인스턴스를 선택합니다.

1. **작업(Actions)**, **이미지 및 템플릿(Image and templates)**, **이미지 생성(Create image)**을 차례로 선택합니다.

1. [**이미지 생성(Create image)**] 페이지에서 이미지 이름 및 설명을 입력합니다.

1. 추가할 각 인스턴스 스토어 볼륨에서 [**볼륨 추가(Add volume)**]를 선택한 다음 [**볼륨 유형(Volume type)**]에서 인스턴스 스토어 볼륨을 선택하고 [**디바이스(Device)**]에서 디바이스 이름을 선택합니다.

1. **이미지 생성**을 선택합니다.

------
#### [ AWS CLI ]

**AMI에 인스턴스 저장소 볼륨을 추가하는 방법**  
[create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) 명령을 `--block-device-mappings` 옵션과 함께 사용하여 EBS 지원 AMI에 대한 블록 디바이스 매핑을 지정합니다. [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 명령을 `--block-device-mappings` 옵션과 함께 사용하여 Amazon S3 지원 AMI에 대한 블록 디바이스 매핑을 지정합니다.

```
--block-device-mappings file://mapping.json
```

다음 블록 디바이스 매핑에서는 2개의 인스턴스 저장소 볼륨이 추가됩니다.

```
[
    {
        "DeviceName": "/dev/sdc",
        "VirtualName": "ephemeral0"
    },
    {
        "DeviceName": "/dev/sdd",
        "VirtualName": "ephemeral1"
    }
]
```

------
#### [ PowerShell ]

**AMI에 인스턴스 저장소 볼륨을 추가하는 방법**  
[New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) cmdlet을 `-BlockDeviceMapping` 파라미터와 함께 사용하여 EBS 지원 AMI에 대한 블록 디바이스 매핑을 지정합니다. [Register-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2Image.html) cmdlet을 `-BlockDeviceMapping` 파라미터와 함께 사용하여 Amazon S3 지원 AMI에 대한 블록 디바이스 매핑을 지정합니다.

```
-BlockDeviceMapping $bdm
```

다음 블록 디바이스 매핑에서는 2개의 인스턴스 저장소 볼륨이 추가됩니다.

```
$bdm = @()

$sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdc.DeviceName = "/dev/sdc"
$sdc.VirtualName = "ephemeral0"
$bdm += $sdc

$sdd = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdd.DeviceName = "/dev/sdd"
$sdd.VirtualName = "ephemeral1"
$bdm += $sdd
```

------

# 시작 중 EC2 인스턴스에 인스턴스 스토어 볼륨 추가
<a name="adding-instance-storage-instance"></a>

C1, C3, M1, M2, M3, R3, D2, H1, I2, X1, X1e 등의 **비NVMe 인스턴스 스토어 볼륨**이 있는 인스턴스 유형을 시작할 때 연결할 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑을 지정해야 합니다. 블록 디바이스 매핑은 인스턴스 시작 요청 또는 인스턴스 시작에 사용되는 AMI에서 지정해야 합니다.

AMI에 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑이 포함된 경우 AMI에 포함된 것보다 더 많은 인스턴스 스토어 볼륨이 필요한 경우가 아니면 인스턴스 시작 요청에서 블록 디바이스 매핑을 지정할 필요가 없습니다.

AMI에 인스턴스 스토어 볼륨에 대한 블록 디바이스 매핑이 포함되지 않은 경우 인스턴스 시작 요청에서 블록 디바이스 매핑을 지정해야 합니다.

NVMe 인스턴스 스토어 볼륨이 있는 인스턴스 유형의 경우 지원되는 모든 인스턴스 스토어 볼륨이 시작 시 인스턴스에 자동으로 연결됩니다.

**고려 사항**
+ 사용할 수 있는 인스턴스 저장소 볼륨의 개수는 인스턴스 유형에 따라 다릅니다. 자세한 내용은 [NVMe 인스턴스 스토어 볼륨](instance-store-volumes.md#available-instance-store-volumes) 섹션을 참조하세요.
+ 각 블록 디바이스의 디바이스 이름을 지정해야 합니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨 디바이스 이름](device_naming.md) 섹션을 참조하세요.
+ M3 인스턴스의 경우, 인스턴스의 블록 디바이스 매핑에서 지정하지 않더라도 인스턴스 스토어 볼륨을 받을 수 있습니다.

------
#### [ Console ]

**인스턴스 시작 요청에 블록 디바이스 매핑을 지정하려면 다음을 수행하세요.**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 대시보드에서 **인스턴스 시작**을 선택합니다.

1. **애플리케이션 및 OS 이미지(Application and OS Images)** 섹션에서 사용할 AMI를 선택합니다.

1. **스토리지 구성** 섹션의 **인스턴스 스토어 볼륨** 섹션에는 인스턴스에 연결할 수 있는 인스턴스 스토어 볼륨이 나열되어 있습니다.

1. 연결할 각 인스턴스 스토어 볼륨에 대해 **디바이스 이름**에서 사용할 디바이스 이름을 선택합니다.

1. 필요에 따라 나머지 인스턴스 설정을 구성한 다음 **인스턴스 시작**을 선택합니다.

------
#### [ AWS CLI ]

**인스턴스 시작 요청에 블록 디바이스 매핑을 지정하려면 다음을 수행하세요.**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 `--block-device-mappings` 옵션과 함께 사용합니다.

```
--block-device-mappings file://mapping.json
```

다음 블록 디바이스 매핑에서는 2개의 인스턴스 저장소 볼륨이 추가됩니다.

```
[
    {
        "DeviceName": "/dev/sdc",
        "VirtualName": "ephemeral0"
    },
    {
        "DeviceName": "/dev/sdd",
        "VirtualName": "ephemeral1"
    }
]
```

------
#### [ PowerShell ]

**인스턴스 시작 요청에 블록 디바이스 매핑을 지정하려면 다음을 수행하세요.**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 `-BlockDeviceMapping` 옵션과 함께 사용합니다.

```
-BlockDeviceMapping $bdm
```

다음 블록 디바이스 매핑에서는 2개의 인스턴스 저장소 볼륨이 추가됩니다.

```
$bdm = @()

$sdc = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdc.DeviceName = "/dev/sdc"
$sdc.VirtualName = "ephemeral0"
$bdm += $sdc

$sdd = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$sdd.DeviceName = "/dev/sdd"
$sdd.VirtualName = "ephemeral1"
$bdm += $sdd
```

------

# EC2 인스턴스에서 인스턴스 스토어 볼륨을 사용할 수 있게 설정
<a name="making-instance-stores-available-on-your-instances"></a>

연결된 인스턴스 스토어 볼륨으로 인스턴스를 시작한 후에 먼저 볼륨을 마운트해야 볼륨에 액세스할 수 있습니다.

## Linux 인스턴스
<a name="view-instance-store-linux"></a>

인스턴스를 시작한 후 볼륨을 원하는 파일 시스템으로 포맷할 수 있습니다.

**Linux에서 인스턴스 스토어 볼륨을 사용 가능하게 만들려면**

1. SSH 클라이언트를 사용하여 인스턴스에 연결합니다. 자세한 내용은 [SSH를 사용하여 Linux 인스턴스에 연결](connect-to-linux-instance.md) 섹션을 참조하세요.

1. `df -h` 명령을 사용하여 포맷되고 마운트된 볼륨을 봅니다.

   ```
   $ df -h
   Filesystem      Size  Used Avail Use% Mounted on
   devtmpfs        3.8G   72K  3.8G   1% /dev
   tmpfs           3.8G     0  3.8G   0% /dev/shm
   /dev/nvme0n1p1  7.9G  1.2G  6.6G  15% /
   ```

1. `lsblk`를 사용하여 시작 시에 매핑되지 않았지만 포맷되고 마운트된 볼륨을 봅니다.

   ```
   $ lsblk
   NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
   nvme0n1       259:1    0    8G  0 disk
   ├─nvme0n1p1   259:2    0    8G  0 part /
   └─nvme0n1p128 259:3    0    1M  0 part
   nvme1n1       259:0    0 69.9G  0 disk
   ```

1. 매핑된 인스턴스 스토어 볼륨만 포맷하고 마운트하려면 다음을 수행합니다.

   1. `mkfs` 명령을 사용하여 디바이스에서 파일 시스템을 생성합니다.

      ```
      $ sudo mkfs -t xfs /dev/nvme1n1
      ```

   1. `mkdir` 명령을 사용하여 디바이스를 마운트할 디렉터리를 생성합니다.

      ```
      $ sudo mkdir /data
      ```

   1. `mount` 명령을 사용하여 새로 생성한 디렉터리에 디바이스를 마운트합니다.

      ```
      $ sudo mount /dev/nvme1n1 /data
      ```

## Windows 인스턴스
<a name="view-instance-store-windows"></a>

Windows 인스턴스의 경우 인스턴스 스토어 볼륨을 NTFS 파일 시스템으로 다시 포맷합니다.

Windows 디스크 관리를 사용하여 인스턴스 스토어 볼륨을 볼 수 있습니다. 자세한 내용은 [비 NVMe 디스크 나열](windows-list-disks.md#windows-disks) 섹션을 참조하세요.

**인스턴스 스토어 볼륨을 수동으로 탑재하려면**

1. **시작**을 선택하고 **컴퓨터 관리**를 입력한 다음 **Enter** 키를 누릅니다.

1. 왼쪽 패널에서 **디스크 관리**를 선택합니다.

1. 볼륨을 초기화하라는 메시지가 나타나면 초기화할 볼륨을 선택하고, 사용 사례에 따라 필요한 파티션 유형을 선택한 다음 **확인**을 선택합니다.

1. 볼륨 목록에서 탑재할 볼륨을 마우스 오른쪽 버튼으로 클릭한 다음 **새 단순 볼륨**을 선택합니다.

1. 마법사에서 **다음**을 선택합니다.

1. 볼륨 크기 지정 화면에서 **다음**을 선택하여 최대 볼륨 크기를 사용합니다. 또는 최소 및 최대 디스크 공간 사이의 볼륨 크기를 선택합니다.

1. 드라이브 문자 또는 경로 할당 화면에서 다음 중 하나를 수행하고 **다음**을 선택합니다.
   + 드라이브 문자를 사용하여 볼륨을 탑재하려면 **다음 드라이브 문자 할당**을 선택한 다음, 사용할 드라이브 문자를 선택합니다.
   + 볼륨을 폴더로 탑재하려면 **다음 빈 NTFS 폴더에서 탑재**를 선택한 다음 **찾아보기**를 선택하여 사용할 폴더를 생성하거나 선택합니다.
   + 드라이브 문자나 경로 없이 볼륨을 탑재하려면 **드라이브 문자 또는 드라이브 경로 할당 안 함**을 선택합니다.

1. 파티션 포맷 화면에서 볼륨을 포맷할지 여부를 지정합니다. 볼륨을 포맷하도록 선택한 경우 필요한 파일 시스템 및 단위 크기를 선택하고 볼륨 레이블을 지정합니다.

1. **다음**, **완료**를 선택합니다.

# M1 및 C1 EC2 인스턴스의 인스턴스 스토어 스왑 볼륨 활성화
<a name="instance-store-swap-volumes"></a>

**참고**  
이 주제는 `c1.medium` 및 `m1.small` Linux 인스턴스에만 적용됩니다.

`c1.medium` 및 `m1.small` 인스턴스 유형은 물리적 메모리 양이 제한되어 있습니다. 따라서 시작 시간에 Linux 시스템의 가상 메모리의 역할을 할 수 있는 900MiB의 스왑 볼륨, 즉 **스왑 공간이 부여됩니다. Linux에서 스왑 공간은 물리적으로 할당된 것보다 더 큰 메모리가 시스템에 필요할 때 사용될 수 있습니다. 스왑 공간이 활성화되면 Linux 시스템은 물리 메모리에서 자주 사용되지 않는 메모리 페이지를 스왑 공간(기존 파일 시스템의 스왑 파일 또는 전용 파티션)으로 스왑하고 고속 액세스가 필요한 메모리 페이지용으로 해당 공간을 해제합니다.

**참고**  
메모리 페이징용으로 스왑 공간을 사용하는 것은 RAM을 사용하는 것보다 빠르거나 효율적이지 않습니다. 워크로드가 메모리를 스왑 공간으로 정기적으로 페이징하는 경우 큰 RAM 용량을 갖는 대형 인스턴스 유형으로 마이그레이션할 것을 고려해야 합니다. 자세한 내용은 [Amazon EC2 인스턴스 유형 변경](ec2-instance-resize.md) 섹션을 참조하세요.
Linux 커널에서는 이 스왑 공간을 루트 볼륨의 파티션으로 간주하지만 이 공간은 루트 볼륨 유형과 상관없이 실제로는 별도의 인스턴스 저장소 볼륨입니다.

Amazon Linux는 이 스왑 공간을 자동으로 활성화 및 사용하지만 사용자의 AMI에서 이 스왑 공간을 인식 및 사용하기 위해서는 추가적인 몇 단계가 필요합니다. 인스턴스에서 스왑 공간이 사용되는지를 확인하려면 **swapon -s** 명령을 사용합니다.

```
[ec2-user ~]$ swapon -s
Filename                                Type            Size    Used    Priority
/dev/xvda3                              partition       917500  0       -1
```

위 인스턴스에서는 900MiB의 스왑 볼륨이 연결 및 활성화되었습니다. 이 명령을 수행했는데 스왑 볼륨이 표시되지 않는 경우 디바이스에서 스왑 공간을 활성화해야 합니다. **lsblk** 명령을 사용하여 가용 디스크를 확인합니다.

```
[ec2-user ~]$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0    8G  0 disk /
xvda3 202:3    0  896M  0 disk
```

여기에서 인스턴스는 스왑 볼륨 `xvda3`를 사용할 수 있지만 해당 볼륨은 활성화되지 않은 상태입니다(`MOUNTPOINT` 필드가 공란임). **swapon** 명령을 사용하면 스왑 볼륨을 활성화할 수 있습니다.

**참고**  
`/dev/`를 사용하여 디바이스 이름 앞에 **lsblk**를 추가해야 합니다. 사용자 디바이스는 `sda3`, `sde3`, 또는 `xvde3` 등으로 다르게 명명할 수 있습니다. 아래 명령에서 시스템의 디바이스 이름을 사용합니다.

```
[ec2-user ~]$ sudo swapon /dev/xvda3
```

이제 **lsblk** 및 **swapon -s** 출력에 스왑 공간이 표시되어야 합니다.

```
[ec2-user ~]$ lsblk
NAME  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
xvda1 202:1    0    8G  0 disk /
xvda3 202:3    0  896M  0 disk [SWAP]
[ec2-user ~]$ swapon -s
Filename                                Type            Size    Used    Priority
/dev/xvda3                              partition       917500  0       -1
```

또한 `/etc/fstab` 파일을 편집하여 부팅 시마다 이 스왑 공간이 자동 활성화되도록 설정해야 합니다.

```
[ec2-user ~]$ sudo vim /etc/fstab
```

`/etc/fstab` 파일에 다음 명령을 추가합니다(시스템의 스왑 디바이스 이름 사용):

```
/dev/xvda3       none    swap    sw  0       0
```

**인스턴스 스토어 볼륨을 스왑 공간으로 사용하려면**

모든 인스턴스 스토어 볼륨은 스왑 공간으로 사용될 수 있습니다. 예를 들어, `m3.medium` 인스턴스 유형은 스왑 공간으로 적당한 4GB SSD 인스턴스 스토어 볼륨이 포함됩니다. 사용자의 인스턴스 스토어 볼륨이 훨씬 큰(예: 350GB) 경우 해당 볼륨을 4-8GB의 작은 스왑 파티션으로 나누고 나머지는 데이터 볼륨으로 사용할 수 있습니다.
**참고**  
이 절차는 인스턴스 스토리지를 지원하는 인스턴스 유형에만 적용됩니다. 지원되는 인스턴스 유형의 목록은 [EC2 인스턴스의 인스턴스 스토어 볼륨 제한](instance-store-volumes.md) 섹션을 참조하세요.

1. <a name="step_swap_start"></a>인스턴스에 연결된 블록 디바이스 목록을 확인하여 인스턴스 스토어 볼륨에 사용할 디바이스 이름을 얻습니다.

   ```
   [ec2-user ~]$ lsblk -p
   NAME       MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/xvdb  202:16   0   4G  0 disk /media/ephemeral0
   /dev/xvda1 202:1    0   8G  0 disk /
   ```

   이 예제에서 인스턴스 스토어 볼륨은 `/dev/xvdb`입니다. Amazon Linux 인스턴스이기 때문에 인스턴스 스토어 볼륨은 포맷된 후 `/media/ephemeral0`에 마운트됩니다. 모든 Linux 운영 체제에서 이러한 과정이 자동으로 수행되는 것은 아닙니다.

1. (선택 사항) 인스턴스 스토어 볼륨이 마운트되면(`MOUNTPOINT` 명령 출력에 **lsblk**로 목록 표시) 다음 명령으로 마운트를 해제합니다.

   ```
   [ec2-user ~]$ sudo umount /dev/xvdb
   ```

1. <a name="step_mkswap"></a>**mkswap** 명령으로 디바이스에 Linux 스왑 영역을 설정합니다.

   ```
   [ec2-user ~]$ sudo mkswap /dev/xvdb
   mkswap: /dev/xvdb: warning: wiping old ext3 signature.
   Setting up swapspace version 1, size = 4188668 KiB
   no label, UUID=b4f63d28-67ed-46f0-b5e5-6928319e620b
   ```

1. 새 스왑 공간을 활성화합니다.

   ```
   [ec2-user ~]$ sudo swapon /dev/xvdb
   ```

1. <a name="step_swap_enable"></a>새 스왑 공간이 사용 중인지 확인합니다.

   ```
   [ec2-user ~]$ swapon -s
   Filename				Type		Size	Used	Priority
   /dev/xvdb                              	partition	4188668	0	-1
   ```

1. `/etc/fstab` 파일을 편집하여 부팅 시마다 이 스왑 공간이 자동 활성화되도록 설정합니다.

   ```
   [ec2-user ~]$ sudo vim /etc/fstab
   ```

   `/etc/fstab` 파일에 `/dev/xvdb`(또는 `/dev/sdb`) 항목이 있는 경우 아래 라인과 일치하도록 변경합니다. 이 디바이스에 대한 항목이 없는 경우 `/etc/fstab` 파일에 다음 라인을 추가합니다(시스템의 스왑 디바이스 이름 사용):

   ```
   /dev/xvdb       none    swap    sw  0       0
   ```
**중요**  
인스턴스가 중단되거나 최대 절전 모드로 전환되면 인스턴스 스토어 볼륨 데이터가 손실됩니다. 여기에는 [Step 3](#step_mkswap)에서 생성한 인스턴스 스토어 스왑 공간 포맷도 포함됩니다. 따라서 인스턴스 스토어 스왑 공간을 사용하도록 구성한 인스턴스를 중단했다가 다시 시작할 경우에는 새로운 인스턴스 스토어 볼륨에서 [Step 1](#step_swap_start)부터 [Step 5](#step_swap_enable)까지 반복해야 합니다.

# EC2 인스턴스의 인스턴스 스토어 볼륨 초기화
<a name="disk-performance"></a>

Amazon EC2가 디스크를 가상화하는 방식으로 인해, 일부 인스턴스 스토어 볼륨의 특정 위치에서 첫 번째 쓰기는 이후의 쓰기보다 느리게 수행됩니다. 대부분 애플리케이션의 경우 인스턴스 수명 주기 동안 이 비용을 나누어 내는 것이 가능합니다. 그러나 높은 디스크 성능이 필요하다면 모든 드라이브 위치에 한 번 쓰기를 수행하여 드라이브를 초기화한 후 프로덕션에 사용하는 것이 좋습니다.

**참고**  
직접 연결 SSD(Solid State Drive) 및 TRIM 지원을 사용하는 인스턴스 유형은 초기화 없이 실행 시점에 최고 성능을 제공합니다. 각 인스턴스 유형의 인스턴스 스토어에 대한 자세한 내용은 [EC2 인스턴스의 인스턴스 스토어 볼륨 제한](instance-store-volumes.md) 섹션을 참조하세요.

지연 시간 또는 처리량에 대한 높은 유연성이 필요한 경우 Amazon EBS 사용을 권장합니다.

인스턴스 스토어 볼륨을 초기화하려면 초기화할 스토어(예: `dd` 또는 `/dev/sdb`)에 따라 다음 `/dev/nvme1n1` 명령을 사용합니다.

**참고**  
이 명령을 수행하기 전 드라이브 마운트를 해제해야 합니다.  
초기화에는 시간이 오래 소요될 수 있습니다(엑스트라 라지 인스턴스의 경우 약 8시간).

인스턴스 스토어 볼륨을 초기화하려면 `m1.large`, `m1.xlarge`, `c1.xlarge`, `m2.xlarge`, `m2.2xlarge` 및 `m2.4xlarge` 인스턴스 유형에서 다음 명령을 사용합니다.

```
dd if=/dev/zero of=/dev/sdb bs=1M          
dd if=/dev/zero of=/dev/sdc bs=1M          
dd if=/dev/zero of=/dev/sdd bs=1M          
dd if=/dev/zero of=/dev/sde bs=1M
```

전체 인스턴스 스토어 볼륨에서 동시에 초기화를 수행하려면 다음 명령을 사용합니다.

```
dd if=/dev/zero bs=1M|tee /dev/sdb|tee /dev/sdc|tee /dev/sde > /dev/sdd
```

RAID에 드라이브를 구성하면 전체 드라이브 위치에 쓰기가 되어 초기화를 수행할 수 있습니다. 소프트웨어 기반 RAID를 구성하는 경우 최소 재구성 속도를 변경해야 합니다.

```
echo $((30*1024)) > /proc/sys/dev/raid/speed_limit_min
```

# Amazon EC2 인스턴스 저장소 볼륨에 대한 세부 성능 통계
<a name="nvme-detailed-performance-stats"></a>

Amazon EC2는 Nitro 기반 Amazon EC2 인스턴스에 연결된 NVMe 인스턴스 저장소 볼륨에 대한 실시간의 세부적인 성능 통계를 제공합니다. 이러한 통계는 인스턴스의 수명 기간 동안 유지되는 집계된 카운터로 표시됩니다. 통계는 누적 작업 수, 송수신된 바이트 수, 읽기 및 쓰기 I/O 작업에 소요된 시간, 읽기 및 쓰기 I/O 작업의 히스토그램에 대한 세부 정보를 제공합니다. 이러한 통계는 [Amazon EBS 세부 성능 통계](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)와 일관성을 유지하면서도, I/O 크기별로 세분화된 상세 지연 시간 히스토그램을 포함합니다. 이를 통해 저장소 성능 패턴에 대한 보다 세밀한 통찰력을 얻을 수 있습니다. 이러한 향상된 가시성을 통해 지연 문제를 겪고 있는 특정 I/O 크기를 정확히 식별할 수 있으므로, 애플리케이션 성능을 최적화하고 문제를 보다 효과적으로 해결할 수 있습니다.

이러한 통계는 최대 1초 간격으로 세분화하여 수집할 수 있습니다. 요청이 1초 간격보다 더 자주 발생할 경우, NVMe 드라이버는 해당 요청을 다른 관리 명령어와 함께 대기열에 넣어 추후에 처리할 수 있습니다.

**고려 사항**
+ 통계는 Nitro 기반 인스턴스에 연결된 NVMe 인스턴스 저장소 볼륨에 대해서만 지원됩니다.
+ 카운터는 인스턴스 중지 및 재시작 시에도 지속되지 않습니다.
+ 통계는 추가 비용 없이 사용할 수 있습니다.

## 통계
<a name="nvme-stats"></a>

NVMe 블록 디바이스는 다음 통계를 제공합니다.


| 통계 이름 | 전체 이름 | Type | 설명 | 
| --- | --- | --- | --- | 
| total\$1read\$1ops | 총 읽기 작업 | Counter | 완료된 총 읽기 작업 수입니다. | 
| total\$1write\$1ops | 총 쓰기 작업 | Counter | 완료된 총 쓰기 작업 수입니다. | 
| total\$1read\$1bytes | 총 읽기 바이트 | Counter | 전송된 총 읽기 바이트 수입니다. | 
| total\$1write\$1bytes | 총 쓰기 바이트 | Counter | 전송된 총 쓰기 바이트 수입니다. | 
| total\$1read\$1time | 총 읽기 시간 | Counter | 모든 완료된 읽기 작업에 소요된 총 시간(밀리초)입니다. | 
| total\$1write\$1time | 총 쓰기 시간 | Counter | 모든 완료된 쓰기 작업에 소요된 총 시간(마이크로초)입니다. | 
| instance\$1store\$1volume\$1performance\$1exceeded\$1iops | 수요가 볼륨의 최대 IOPS를 초과한 총 시간 | Counter | IOPS 요청이 볼륨의 최대 IOPS를 초과한 총 시간(마이크로초)입니다. 0을 초과하는 값은 볼륨이 제공할 수 있는 것보다 더 많은 IOPS를 워크로드가 요구했음을 나타냅니다. 이상적으로는 두 스냅샷 시간 사이에 이 지표의 증분 카운트가 최소화되어야 합니다. | 
| instance\$1store\$1volume\$1performance\$1exceeded\$1tp | 볼륨의 최대 처리량을 초과한 총 시간 수요 | Counter | 처리량 요청이 볼륨의 최대 처리량을 초과한 총 시간(마이크로초)입니다. 0을 초과하는 값은 볼륨이 제공할 수 있는 것보다 더 많은 처리량이 워크로드에 필요했음을 나타냅니다. 이상적으로는 두 스냅샷 시간 사이에 이 지표의 증분 카운트가 최소화되어야 합니다. | 
| volume\$1queue\$1length | 볼륨 대기열 길이 | 특정 시점 | 완료되기를 기다리는 읽기 및 쓰기 작업의 수입니다. | 
| read\$1io\$1latency\$1histogram | I/O 히스토그램 읽기 | 히스토그램 \$1 | 각 지연 시간 빈 내에서 마이크로초 단위로 완료된 읽기 작업 수입니다. | 
| write\$1io\$1latency\$1histogram | I/O 히스토그램 쓰기 | 히스토그램 \$1 | 각 지연 시간 빈 내에서 마이크로초 단위로 완료된 쓰기 작업 수입니다. | 

**참고**  
\$1 히스토그램 통계는 성공적으로 완료된 I/O 작업만 나타냅니다. 정지되거나 손상된 I/O 작업은 포함되지 않지만, 특정 시점의 통계로 제공되는 `volume_queue_length` 통계에서 확인할 수 있습니다.

## 통계 액세스
<a name="nvme-stat-access"></a>

통계는 인스턴스 저장소 볼륨이 연결된 인스턴스에서 직접 액세스해야 합니다. 다음 방법 중 하나로 통계에 액세스할 수 있습니다.

### Linux 인스턴스
<a name="nvme-stat-access-linux"></a>

------
#### [ Amazon CloudWatch ]

Amazon CloudWatch 에이전트를 구성하여 인스턴스에서 통계를 수집하고 CloudWatch에서 사용자 정의 메트릭으로 사용할 수 있도록 할 수 있습니다. 그런 다음 CloudWatch의 지표를 사용하여 I/O 패턴을 분석하고, 성능 추세를 추적하며, 사용자 지정 대시보드를 생성하고, 성능 임계값을 기반으로 자동화된 경보를 설정할 수 있습니다.

CloudWatch 에이전트 구성에 대한 자세한 내용은 [Amazon EC2 인스턴스 저장소 볼륨 지표 수집](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-instance-store-Collect.html)을 참조하세요.

------
#### [ nvme-cli tool ]

**통계에 액세스하려면**

1. 볼륨이 연결된 인스턴스에 연결합니다.

1. 2025년 9월 15일 이후에 출시된 Amazon Linux 2023 AMI에는 최신 버전의 `nvme-cli` 도구가 포함됩니다. 이전 버전의 Amazon Linux AMI를 사용 중인 경우 `nvme-cli` 도구를 업데이트하세요.

   ```
   sudo yum install nvme-cli
   ```

1. 다음 명령을 실행하고 볼륨의 디바이스 이름을 지정합니다.

   ```
   sudo nvme amzn stats /dev/nvme0n1
   ```

통계는 I/O 크기별로 세분화된 상세한 지연 시간 히스토그램도 제공합니다. I/O 크기별로 구분된 통계를 보려면 `--details` 옵션을 포함시킵니다. 예제:

```
sudo nvme amzn stats --details /dev/nvme0n1
```

`--help` 옵션을 지정하여 도구 사용 방법에 대한 자세한 정보를 얻을 수 있습니다. 예제:

```
sudo nvme amzn stats --help
```

------

### Windows 인스턴스
<a name="nvme-stat-access-windows"></a>

------
#### [ nvme\$1amzn.exe tool ]

**통계에 액세스하려면**

1. 볼륨이 연결된 인스턴스에 연결합니다.

1. AWSNVMe 드라이버 버전 `1.7.0` 이상을 사용하고 있는지 확인합니다. AWSNVMe 드라이버 업데이트에 대한 자세한 내용은 [AWS NVMe 드라이버](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/aws-nvme-drivers.html)를 참조하세요.

1. 볼륨의 디스크 번호를 가져옵니다. 자세한 내용은 [볼륨에 Amazon EC2 Windows 인스턴스의 NVMe 디스크 매핑](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/windows-list-disks-nvme.html)을 참조하세요.

1. 다음 명령을 관리자로 실행하고 볼륨의 디스크 번호를 지정합니다.

   ```
   .\nvme_amzn.exe stats disk_number
   ```

통계는 I/O 크기별로 세분화된 상세한 지연 시간 히스토그램도 제공합니다. I/O 크기별로 구분된 통계를 보려면 `--details` 옵션을 포함시킵니다. 예제:

```
.\nvme_amzn.exe stats --details disk_number
```

------