

# Amazon EC2 인스턴스용 루트 볼륨
<a name="RootDeviceStorage"></a>

인스턴스를 시작하면 해당 인스턴스에 대한 **루트 볼륨이 생성됩니다. 루트 볼륨에는 인스턴스를 부팅하는 데 사용되는 이미지가 있습니다. 인스턴스마다 단일 루트 볼륨이 있습니다. 실행 중 또는 실행 후에 인스턴스에 스토리지 볼륨을 추가할 수 있습니다.

루트 볼륨의 유형은 인스턴스를 시작하는 데 사용하는 AMI에 따라 결정됩니다. *Amazon EBS 지원 AMI*(Linux 및 Windows 인스턴스) 또는 *Amazon S3 지원 AMI*(Linux 인스턴스만 해당) 중 하나에서 인스턴스를 시작할 수 있습니다. 각 유형의 AMI로 수행할 수 있는 작업에는 상당한 차이가 있습니다. 해당 차이점에 대한 자세한 내용은 [루트 볼륨 유형](ComponentsAMIs.md#storage-for-the-root-device) 섹션을 참조하세요.

이러한 인스턴스는 시작 속도가 더 빠르고 영구 스토리지를 사용하므로 Amazon EBS 지원 AMI를 사용하는 것이 좋습니다.

루트 볼륨용으로 특정 디바이스 이름을 예약합니다. 자세한 내용은 [Amazon EC2 인스턴스의 볼륨 디바이스 이름](device_naming.md) 섹션을 참조하세요.

**Topics**
+ [Amazon EBS 루트 볼륨이 있는 인스턴스](#root-volume-ebs-backed)
+ [인스턴스 저장소 루트 볼륨이 있는 인스턴스(Linux 인스턴스만 해당)](#root-volume-instance-store-backed)
+ [Amazon EC2 인스턴스가 종료된 후에도 Amazon EBS 루트 볼륨 유지](configure-root-volume-delete-on-termination.md)
+ [Amazon EC2 인스턴스의 루트 볼륨을 중지하지 않고 교체](replace-root.md)

## Amazon EBS 루트 볼륨이 있는 인스턴스
<a name="root-volume-ebs-backed"></a>

루트 볼륨에 Amazon EBS를 사용하는 인스턴스에는 자동으로 Amazon EBS 볼륨이 연결됩니다. Amazon EBS-AMI가 있는 인스턴스를 시작하면 AMI가 참조하는 각 Amazon EBS 스냅샷에 대한 Amazon EBS 볼륨이 생성됩니다. 인스턴스 유형에 따라 다른 Amazon EBS 볼륨이나 인스턴스 스토어 볼륨을 사용할 수도 있습니다.

EBS 루트 볼륨이 있는 인스턴스는 중지한 후 다시 시작해도 연결된 볼륨에 저장된 데이터에 아무런 영향이 없습니다. EBS 루트 볼륨이 있는 인스턴스가 중지 상태일 때 다양한 인스턴스 및 볼륨 관련 태스크를 수행할 수 있습니다. 예를 들어 인스턴스의 속성을 수정하거나, 인스턴스의 크기를 변경하거나, 사용하는 커널을 업데이트하거나, 디버깅 등의 목적으로 루트 볼륨을 실행 중인 다른 인스턴스에 연결할 수 있습니다. 자세한 내용은 [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html)를 참조하세요.

![\[Amazon EBS 지원 AMI에서 시작한 인스턴스의 루트 볼륨 및 기타 Amazon EBS 볼륨\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/ebs_backed_instance.png)


**제한 사항**  
`st1` 또는 `sc1` EBS 볼륨은 루트 볼륨으로 사용할 수 없습니다.

**인스턴스 실패**

EBS 루트 볼륨이 있는 인스턴스에 장애가 발생할 경우 다음 방법 중 하나로 세션을 복원할 수 있습니다.
+ 중지 후 다시 시작합니다(먼저 이 방법 시도).
+ 모든 관련 볼륨의 스냅샷을 자동으로 생성하고 새 AMI를 생성합니다. 자세한 내용은 [Amazon EBS 지원 AMI 생성](creating-an-ami-ebs.md) 섹션을 참조하세요.
+ 다음 단계에 따라 볼륨에 새 인스턴스를 연결합니다.

  1. 루트 볼륨의 스냅샷을 생성합니다.

  1. 스냅샷을 사용하여 새 AMI를 등록합니다.

  1. 새 AMI에서 새 인스턴스를 시작합니다.

  1. 나머지 Amazon EBS 볼륨을 이전 인스턴스에서 분리합니다.

  1. Amazon EBS 볼륨을 새 인스턴스에 다시 연결합니다.

## 인스턴스 저장소 루트 볼륨이 있는 인스턴스(Linux 인스턴스만 해당)
<a name="root-volume-instance-store-backed"></a>

**참고**  
Windows 인스턴스는 인스턴스 저장소 루트 볼륨을 지원하지 않습니다.

루트 볼륨에 인스턴스 저장소를 사용하는 인스턴스는 하나 이상의 인스턴스 저장소 볼륨을 자동으로 사용할 수 있으며, 이러한 볼륨 중 하나가 루트 볼륨 역할을 합니다. Amazon S3 지원 AMI에서 인스턴스를 시작하면 AMI가 루트 볼륨에 복사됩니다. 인스턴스 유형에 따라 다른 인스턴스 스토어 볼륨을 사용할 수도 있습니다.

인스턴스 저장소 볼륨의 모든 데이터는 인스턴스가 실행되는 동안 유지되지만, 인스턴스가 종료되거나(인스턴스 저장소 루트 볼륨이 있는 인스턴스는 **중지** 작업을 지원하지 않음) 장애가 발생하면(예: 기본 드라이브에 문제가 있는 경우) 데이터가 삭제됩니다. 자세한 내용은 [EC2 인스턴스용 인스턴스 스토어 임시 블록 스토리지](InstanceStorage.md) 섹션을 참조하세요.

![\[Amazon S3 지원 AMI에서 시작된 Amazon EC2 인스턴스의 루트 볼륨\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/images/instance_store_backed_instance.png)


**지원되는 인스턴스 유형**  
C1, C3, D2, I2, M1, M2, M3, R3, X1과 같은 인스턴스 유형만 인스턴스 스토어 볼륨을 루트 볼륨으로 지원합니다.

**인스턴스 실패**  
인스턴스 저장소 루트 볼륨이 있는 인스턴스는 종료되거나 장애가 발생할 경우 복원이 불가능합니다. 인스턴스 저장소 루트 볼륨이 있는 인스턴스를 사용하려는 경우 여러 가용 영역의 인스턴스 저장소 볼륨으로 데이터를 분산하는 것이 좋습니다. 또한 인스턴스 스토어 볼륨의 중요한 데이터를 정기적으로 영구 스토리지로 백업해야 합니다.

# Amazon EC2 인스턴스가 종료된 후에도 Amazon EBS 루트 볼륨 유지
<a name="configure-root-volume-delete-on-termination"></a>

기본적으로 인스턴스의 Amazon EBS 루트 볼륨은 인스턴스 종료 시 삭제됩니다. 인스턴스가 종료된 후에도 Amazon EBS 루트 볼륨이 지속되도록 기본 동작을 변경할 수 있습니다. 기본 동작을 변경하려면 `DeleteOnTermination` 속성을 `false`로 설정합니다. 인스턴스 시작 이후에도 변경할 수 있습니다.

**Topics**
+ [인스턴스 시작 중 루트 볼륨이 지속되도록 구성](#Using_ChangeRootDeviceVolumeToPersist)
+ [기존 인스턴스에서 루트 볼륨이 지속되도록 구성](#set-deleteOnTermination-aws-cli)
+ [루트 볼륨이 지속되도록 구성되었는지 확인](#Using_ConfirmRootDeviceVolumeToPersist)

## 인스턴스 시작 중 루트 볼륨이 지속되도록 구성
<a name="Using_ChangeRootDeviceVolumeToPersist"></a>

인스턴스를 시작할 때 루트 볼륨이 지속되도록 구성할 수 있습니다.

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

**인스턴스를 시작할 때 루트 볼륨이 지속되도록 구성하는 방법**

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

1. 탐색 창에서 **인스턴스**를 선택한 후 **인스턴스 시작**을 선택합니다.

1. Amazon Machine Image(AMI)를 선택하고 인스턴스 유형을 선택한 후 키 페어를 선택하고 네트워크 설정을 구성합니다.

1. **스토리지 구성**에서 **고급**을 선택합니다.

1. 루트 볼륨을 확장합니다.

1. **종료 시 삭제**에서 **예**를 선택합니다.

1. 인스턴스 구성을 마치면 **인스턴스 시작**을 선택합니다.

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

**인스턴스를 시작할 때 루트 볼륨이 지속되도록 구성하는 방법**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 사용하고 다음 옵션을 포함합니다.

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

`mapping.json`에서 `DeleteOnTermination` 속성을 `false`로 설정하는 블록 디바이스 매핑을 지정합니다.

```
[
    {
        "DeviceName": "/dev/sda1",
        "Ebs": {
            "DeleteOnTermination": false
        }
    }
]
```

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

**인스턴스를 시작할 때 루트 볼륨이 지속되도록 구성하는 방법**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 사용하고 다음 파라미터를 포함합니다.

```
-BlockDeviceMapping $bdm
```

`DeleteOnTermination` 속성을 `$false`로 설정하는 블록 디바이스 매핑을 생성합니다.

```
$ebs = New-Object Amazon.EC2.Model.EbsBlockDevice
$ebs.DeleteOnTermination = $false
$bdm = New-Object Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "dev/xvda"
$bdm.Ebs = $ebs
```

------

## 기존 인스턴스에서 루트 볼륨이 지속되도록 구성
<a name="set-deleteOnTermination-aws-cli"></a>

실행 중인 인스턴스에 대해 루트 볼륨이 지속되도록 구성할 수 있습니다. 단, Amazon EC2 콘솔에서는 이 작업을 완료할 수 없습니다.

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

**기존 인스턴스에 대한 루트 볼륨이 지속되도록 구성하는 방법**  
`DeleteOnTermination` 속성을 `false`로 설정하는 블록 디바이스 매핑과 함께 [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) 명령을 사용합니다.

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --block-device-mappings file://mapping.json
```

`mapping.json`에서 다음을 지정합니다.

```
[
    {
        "DeviceName": "/dev/xvda",
        "Ebs": {
            "DeleteOnTermination": false
        }
    }
]
```

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

**기존 인스턴스에 대한 루트 볼륨이 지속되도록 구성하는 방법**  
`DeleteOnTermination` 속성을 `$false`로 설정하는 블록 디바이스 매핑과 함께 [Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) cmdlet을 사용합니다.

```
$ebs = New-Object Amazon.EC2.Model.EbsInstanceBlockDeviceSpecification
$ebs.DeleteOnTermination = $false
$bdm = New-Object Amazon.EC2.Model.InstanceBlockDeviceMappingSpecification
$bdm.DeviceName = "/dev/xvda"
$bdm.Ebs = $ebs
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -BlockDeviceMapping $bdm
```

------

## 루트 볼륨이 지속되도록 구성되었는지 확인
<a name="Using_ConfirmRootDeviceVolumeToPersist"></a>

루트 볼륨이 지속되도록 구성되었는지 확인할 수 있습니다.

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

**루트 볼륨이 지속되도록 구성되었는지 확인하는 방법**

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

1. 탐색 창에서 **인스턴스**를 선택한 후 해당 인스턴스를 선택합니다.

1. **스토리지** 탭의 **블록 디바이스**에서 루트 볼륨에 대한 항목을 찾습니다. **종료 시 삭제**가 `No`인 경우 볼륨이 지속되도록 구성된 것입니다.

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

**루트 볼륨이 지속되도록 구성되었는지 확인하는 방법**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 명령을 사용하고 `DeleteOnTermination` 속성이 `false`로 설정되었는지 확인합니다.

```
aws ec2 describe-instances \
    --instance-id i-1234567890abcdef0 \
    --query "Reservations[].Instances[].BlockDeviceMappings"
```

다음은 예제 출력입니다.

```
[
    [
        {
            "DeviceName": "/dev/xvda",
            "Ebs": {
                "AttachTime": "2024-07-12T04:05:33.000Z",
                "DeleteOnTermination": false,
                "Status": "attached",
                "VolumeId": "vol-1234567890abcdef0"
                
        }
    ]              
]
```

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

**루트 볼륨이 지속되도록 구성되었는지 확인하는 방법**  
[ Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) cmdlet을 사용하고 `DeleteOnTermination` 속성이 `False`로 설정되었는지 확인합니다.

```
(Get-EC2Instance -InstanceId i-i-1234567890abcdef0).Instances.BlockDeviceMappings.Ebs
```

다음은 예제 출력입니다.

```
AssociatedResource  : 
AttachTime          : 7/12/2024 4:05:33 AM
DeleteOnTermination : False
Operator            : 
Status              : attached
VolumeId            : vol-1234567890abcdef0
```

------

# Amazon EC2 인스턴스의 루트 볼륨을 중지하지 않고 교체
<a name="replace-root"></a>

Amazon EC2를 사용하면 다음을 유지하면서 실행 중인 인스턴스의 루트 Amazon EBS 볼륨을 바꿀 수 있습니다.
+ 인스턴스 스토어 볼륨에 저장된 데이터 - 인스턴스 스토어 볼륨은 루트 볼륨이 복원된 후에도 인스턴스에 연결된 상태로 유지됩니다.
+ 데이터(루트가 아닌) Amazon EBS 볼륨에 저장된 데이터 - 루트가 아닌 Amazon EBS 볼륨은 루트 볼륨이 복원된 후에도 인스턴스에 연결된 상태로 유지됩니다.
+ 네트워크 구성 — 모든 네트워크 인터페이스는 인스턴스에 연결된 상태로 유지되며 IP 주소, 식별자, 첨부 파일 ID를 유지합니다. 인스턴스를 사용할 수 있게 되면 보류 중인 모든 네트워크 트래픽이 플러시됩니다. 또한 인스턴스는 동일한 물리적 호스트에 유지되므로 퍼블릭 및 프라이빗 IP 주소와 DNS 이름을 유지합니다.
+ IAM 정책 — IAM 프로필 및 인스턴스와 연결된 정책(예: 태그 기반 정책)은 유지되고 적용됩니다.

**Topics**
+ [루트 볼륨 대체 작동 방식](#replace-root-how)
+ [고려 사항](#replace-root-considerations)
+ [루트 볼륨 교체](#replace)

## 루트 볼륨 대체 작동 방식
<a name="replace-root-how"></a>

인스턴스의 루트 볼륨을 바꾸면 *루트 볼륨 대체 작업*을 생성하는 것입니다. 원래 루트 볼륨이 인스턴스에서 분리되고 새 루트 볼륨이 해당 위치에 있는 인스턴스에 연결됩니다. 인스턴스의 블록 디바이스 매핑은 대체 루트 볼륨의 ID를 반영하도록 업데이트됩니다.

인스턴스의 루트 볼륨을 바꾸면 새 볼륨의 스냅샷 소스를 지정해야 합니다. 가능한 옵션은 다음과 같습니다.

### 루트 볼륨을 원래 상태로 복원
<a name="replace-launchstate"></a>

이 옵션은 현재 루트 볼륨을 생성할 때 사용한 스냅샷을 기반으로 하는 볼륨으로 바꿉니다.

**시작 상태 사용 시 고려 사항**  
대체 루트 볼륨은 원래 루트 볼륨과 동일한 유형, 크기 및 종료 시 삭제 속성을 갖습니다.

### 스냅샷을 사용하여 루트 볼륨 바꾸기
<a name="replace-snapshot"></a>

이 옵션은 현재 루트 볼륨을 지정한 스냅샷을 기반으로 하는 대체 볼륨으로 바꿉니다. 이 루트 볼륨에서 이전에 생성한 특정 스냅샷을 예로 들 수 있습니다. 이는 루트 볼륨 손상으로 인한 문제 또는 게스트 운영 체제의 네트워크 구성 오류로 인한 문제를 복구해야 하는 경우에 유용합니다.

대체 루트 볼륨은 원래 루트 볼륨과 동일한 유형, 크기 및 종료 시 삭제 속성을 갖습니다.

**스냅샷 사용 시 고려 사항**
+ 인스턴스의 현재 또는 이전 루트 볼륨에서 직접 생성된 스냅샷만 사용할 수 있습니다.
+ 루트 볼륨의 스냅샷을 사용하여 생성된 스냅샷 복사본은 사용할 수 없습니다.
+ 루트 볼륨을 성공적으로 바꾼 후에도 원래 루트 볼륨에서 가져온 스냅샷을 사용하여 새(대체) 루트 볼륨을 바꿀 수 있습니다.

### AMI를 사용하여 루트 볼륨 바꾸기
<a name="replace-ami"></a>

이 옵션은 지정한 AMI를 사용하여 현재 루트 볼륨을 바꿉니다. 운영 체제 및 애플리케이션 패치 또는 업그레이드를 수행해야 하는 경우에 유용합니다. AMI는 인스턴스와 동일한 제품 코드, 결제 정보, 아키텍처 유형 및 가상화 유형을 가져야 합니다.

ENA 또는 sriov-net에 대해 인스턴스가 활성화된 경우 이러한 기능을 지원하는 AMI를 사용해야 합니다. ENA 또는 sriov-net에 대해 인스턴스가 활성화되지 않은 경우 해당 기능에 대한 지원이 포함되지 않은 AMI를 선택하거나 ENA 또는 sriov-net를 지원하는 AMI를 선택할 경우 지원을 자동으로 추가할 수 있습니다.

NitroTPM에 대해 인스턴스가 활성화된 경우 NitroTPM이 활성화된 AMI를 사용해야 합니다. 선택한 AMI와 상관없이 인스턴스가 이에 적절하게 구성되지 않은 경우 NitroTPM 지원이 활성화되지 않습니다.

인스턴스가 AMI의 부팅 모드를 지원하는 한, 인스턴스와 다른 부팅 모드의 AMI를 선택할 수 있습니다. 인스턴스에서 부팅 모드를 지원하지 않는 경우 요청이 실패합니다. 인스턴스에서 부팅 모드를 지원하는 경우 새 부팅 모드가 인스턴스에 전파되고 그에 따라 해당 UEFI 데이터가 업데이트됩니다. 부팅 순서를 수동으로 수정하거나 프라이빗 UEFI 보안 부팅 키를 추가하여 프라이빗 커널 모듈을 로드한 경우 루트 볼륨 대체 중 변경 사항이 손실됩니다.

대체 루트 볼륨은 원래 루트 볼륨과 동일한 볼륨 유형 및 종료 시 삭제 속성을 가지며, AMI 루트 볼륨 블록 디바이스 매핑의 크기를 가져옵니다.

**참고**  
AMI의 루트 볼륨 블록 디바이스 매핑의 크기는 원래 루트 볼륨의 크기보다 크거나 같아야 합니다. AMI의 루트 볼륨 블록 디바이스 매핑 크기가 원래 루트 볼륨의 크기보다 작으면 요청이 실패합니다.

루트 볼륨 대체 작업이 완료된 후 콘솔, AWS CLI 또는 AWS SDK를 사용하여 인스턴스를 설명할 때 다음과 같은 새로운 정보와 업데이트된 정보가 반영됩니다.
+ 새 AMI ID
+ 루트 볼륨의 새 볼륨 ID
+ 업데이트된 부팅 모드 구성(AMI에 의해 변경된 경우)
+ 업데이트된 NitroTPM 구성(AMI에 의해 활성화된 경우)
+ 업데이트된 ENA 구성(AMI에 의해 활성화된 경우)
+ 업데이트된 sriov-net 구성(AMI에 의해 활성화된 경우)

새 AMI ID는 인스턴스 메타데이터에도 반영됩니다.

**AMI 사용 시 고려 사항:**
+ 여러 블록 디바이스 매핑이 있는 AMI를 사용하는 경우 AMI의 루트 볼륨만 사용됩니다. 루트가 아닌 다른 볼륨은 무시됩니다.
+ AMI 및 관련 루트 볼륨 스냅샷에 대한 권한이 있는 경우에만 이 기능을 사용할 수 있습니다. AWS Marketplace AMI에서는 이 기능을 사용할 수 없습니다.
+ 인스턴스에 제품 코드가 없는 경우에만 제품 코드 없이 AMI를 사용할 수 있습니다.
+ AMI의 루트 볼륨 블록 디바이스 매핑의 크기는 원래 루트 볼륨의 크기보다 크거나 같아야 합니다. AMI의 루트 볼륨 블록 디바이스 매핑 크기가 원래 루트 볼륨의 크기보다 작으면 요청이 실패합니다.
+ 인스턴스에 대한 인스턴스 ID 문서는 자동으로 업데이트됩니다.
+ 인스턴스가 NitroTPM을 지원하는 경우 인스턴스의 NitroTPM 데이터가 재설정되고 새 키가 생성됩니다.

루트 볼륨 대체 프로세스가 완료된 후 원래 루트 볼륨을 유지할지 여부를 선택할 수 있습니다. 대체 프로세스가 완료된 후 원래 루트 볼륨을 삭제하도록 선택하면 원래 루트 볼륨이 자동으로 삭제되어 복구할 수 없게 됩니다. 프로세스가 완료된 후 원래 루트 볼륨을 유지하도록 선택하면 볼륨이 계정에 프로비저닝된 상태로 유지됩니다. 더 이상 필요하지 않은 볼륨은 수동으로 삭제해야 합니다.

루트 볼륨 대체 작업은 다음 상태를 거칩니다.
+ `pending` - 대체 볼륨이 생성되고 있습니다.
+ `in-progress` - 원래 볼륨이 분리되고 대체 볼륨이 연결되고 있습니다.
+ `succeeded` - 대체 볼륨이 인스턴스에 성공적으로 연결되었으며 인스턴스를 사용할 수 있습니다.
+ `failing` - 대체 작업이 실패하는 중입니다.
+ `failed` - 대체 작업이 실패했지만 루트 볼륨은 여전히 연결되어 있습니다.
+ `failing-detached` - 대체 작업이 실패하는 중이며 인스턴스에 연결된 루트 볼륨이 없을 수 있습니다.
+ `failed-detached` - 대체 작업이 실패했으며 인스턴스에 연결된 루트 볼륨이 없습니다.

루트 볼륨 대체 작업이 실패하면 인스턴스가 재부팅되고 원래 루트 볼륨은 인스턴스에 연결된 상태로 유지됩니다.

## 고려 사항
<a name="replace-root-considerations"></a>

시작하기 전에 다음을 고려합니다.

**요구 사항**
+ 인스턴스는 `running` 상태여야 합니다.
+ 프로세스 중에 인스턴스가 자동으로 재부팅됩니다. 재부팅 중에는 메모리(RAM)의 내용이 지워집니다. 수동 재부팅은 필요하지 않습니다.
+ 루트 볼륨이 인스턴스 스토어 볼륨이면 교체할 수 없습니다. Amazon EBS 루트 볼륨이 있는 인스턴스만 지원됩니다.
+ 모든 가상화된 인스턴스 유형과 EC2 Mac 베어 메탈 인스턴스의 루트 볼륨을 바꿀 수 있습니다. 다른 모든 베어 메탈 인스턴스 유형은 지원되지 않습니다.
+ 인스턴스의 현재 또는 이전 루트 볼륨에서 직접 생성된 스냅샷만 사용할 수 있습니다.
+ 현재 리전에서 계정에 기본적으로 Amazon EBS 암호화가 활성화되어 있는 경우 루트 볼륨 대체 작업으로 생성된 대체 루트 볼륨은 지정된 스냅샷이나 지정된 AMI의 루트 볼륨의 암호화 상태에 관계없이 항상 암호화됩니다.

**암호화 결과**  
다음 표에는 가능한 암호화 결과가 요약되어 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/replace-root.html)

## 루트 볼륨 교체
<a name="replace"></a>

인스턴스의 루트 볼륨을 바꾸면 루트 볼륨 대체 작업이** 생성됩니다. 루트 볼륨 대체 작업을 사용하여 대체 프로세스의 진행 상황과 결과를 모니터링할 수 있습니다.

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

**루트 볼륨을 교체하는 방법**

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

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

1. 루트 볼륨을 교체할 인스턴스를 선택하고 **작업**, **모니터링 및 문제 해결**, **루트 볼륨 교체**를 선택합니다.
**참고**  
선택한 인스턴스가 `running` 상태가 아니면 **루트 볼륨 교체** 작업이 비활성화됩니다.

1. **복원**에서 다음 옵션 중 하나를 선택합니다.
   + **시작 상태** - 현재 루트 볼륨을 생성하는 데 사용된 스냅샷에서 대체 루트 볼륨을 복원합니다.
   + **스냅샷** - 대체 루트 볼륨을 지정한 스냅샷으로 복원합니다. **스냅샷**에서 사용할 스냅샷을 선택합니다.
   + **이미지** - 지정한 AMI를 사용하여 대체 루트 볼륨을 복원합니다. **이미지**에서 사용할 AMI를 선택합니다.

1. (선택 사항) **볼륨 초기화 속도**의 경우 스냅샷 블록을 Amazon S3에서 볼륨으로 다운로드할 볼륨 초기화를 위한 Amazon EBS 프로비저닝 속도(볼륨 초기화 속도)를 MiB/s 단위로 지정할 수 있습니다. 자세한 내용은 [ 볼륨 초기화에 Amazon EBS 프로비저닝 속도 사용](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html#volume-initialization-rate)을 참조하세요. 기본 초기화 속도 또는 빠른 스냅샷 복원(선택한 스냅샷에 대해 활성화된 경우)을 사용하려면 속도를 지정하지 마세요.

1. (선택 사항) 대체하려는 루트 볼륨을 삭제하려면 **대체된 루트 볼륨 삭제**를 선택합니다.

1. **대체 작업 생성**을 선택합니다.

1. 대체 작업을 모니터링하려면 인스턴스의 **스토리지** 탭을 선택하고 **최근 루트 볼륨 대체 작업**을 확장합니다.

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

**시작 상태로 대체 루트 볼륨 복원**  
[create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html) 명령을 사용합니다. `--instance-id`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `--snapshot-id` 및 `--image-id` 파라미터를 생략합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `--delete-replaced-root-volume`을 포함하고 `true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `--volume-initialization-rate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**대체 루트 볼륨을 특정 스냅샷으로 복원**  
[create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html) 명령을 사용합니다. `--instance-id`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `--snapshot-id`에 대해 사용할 스냅샷의 ID를 지정합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `--delete-replaced-root-volume`을 포함하고 `true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `--volume-initialization-rate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--snapshot-id snap-9876543210abcdef0 \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**AMI를 사용하여 대체 루트 볼륨 복원**  
[create-replace-root-volume-task](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-replace-root-volume-task.html) 명령을 사용합니다. `--instance-id`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `--image-id`에 대해 사용할 AMI의 ID를 지정합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `--delete-replaced-root-volume`을 포함하고 `true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `--volume-initialization-rate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
aws ec2 create-replace-root-volume-task \
--instance-id i-1234567890abcdef0 \
--image-id ami-09876543210abcdef \
--delete-replaced-root-volume \ 
--volume-initialization-rate 150
```

**루트 볼륨 교체 작업의 상태를 보는 방법**  
[describe-replace-root-volume-tasks](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-replace-root-volume-tasks.html) 명령을 사용하고 보려는 루트 볼륨 교체 작업의 ID를 지정합니다.

```
aws ec2 describe-replace-root-volume-tasks \
    --replace-root-volume-task-ids replacevol-1234567890abcdef0 \
    --query ReplaceRootVolumeTasks[].TaskState
```

다음은 예제 출력입니다.

```
[
    "succeeded"
]
```

또는 인스턴스를 기준으로 결과를 필터링할 `instance-id` 필터를 지정합니다.

```
$ aws ec2 describe-replace-root-volume-tasks \
    --filters Name=instance-id,Values=i-1234567890abcdef0
```

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

**시작 상태로 대체 루트 볼륨 복원**  
[New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html) 명령을 사용합니다. `-InstanceId`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `-SnapshotId` 및 `-ImageId` 파라미터를 생략합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `-DeleteReplacedRootVolume`을 포함하고 `$true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `-VolumeInitializationRate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**대체 루트 볼륨을 특정 스냅샷으로 복원**  
[New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html) 명령을 사용합니다. `--InstanceId`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `-SnapshotId`에 대해 사용할 스냅샷의 ID를 지정합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `-DeleteReplacedRootVolume`을 포함하고 `$true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `-VolumeInitializationRate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -SnapshotId snap-9876543210abcdef0 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**AMI를 사용하여 대체 루트 볼륨 복원**  
[New-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2ReplaceRootVolumeTask.html) 명령을 사용합니다. `-InstanceId`에 대해 루트 볼륨을 대체할 인스턴스의 ID를 지정합니다. `-ImageId`에 대해 사용할 AMI의 ID를 지정합니다. 원래 루트 볼륨을 바꾼 후 삭제하려면 `-DeleteReplacedRootVolume`을 포함하고 `$true`를 지정합니다. 스냅샷 블록이 Amazon S3에서 볼륨으로 다운로드되는 볼륨 초기화 속도를 지정하려면 `-VolumeInitializationRate`에 `100`\$1`300`MiB/s 사이의 값을 지정합니다.

```
New-EC2ReplaceRootVolumeTask `
    -InstanceId i-1234567890abcdef0 `
    -ImageId ami-0abcdef1234567890 `
    -VolumeInitializationRate 150 `
    -DeleteReplacedRootVolume $true
```

**루트 볼륨 교체 작업의 상태를 보는 방법**  
[Get-EC2ReplaceRootVolumeTask](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ReplaceRootVolumeTask.html) 명령을 사용하고 보려는 루트 볼륨 대체 작업의 ID를 지정합니다.

```
(Get-EC2ReplaceRootVolumeTask `
    -ReplaceRootVolumeTaskIds replacevol-1234567890abcdef0).TaskState.Value
```

다음은 예제 출력입니다.

```
Succeeded
```

또는 인스턴스를 기준으로 결과를 필터링할 `instance-id` 필터를 지정합니다.

```
PS C:\> Get-EC2ReplaceRootVolumeTask -Filters @{Name = 'instance-id'; Values = 'i-1234567890abcdef0'} | Format-Table 
```

------