

# 인스턴스가 종료될 때 데이터 보존
<a name="preserving-volumes-on-termination"></a>

Amazon EC2 인스턴스가 종료될 때 인스턴스 저장소 볼륨 또는 Amazon EBS 볼륨의 데이터를 보존할 수 있습니다. 이 주제에서는 인스턴스 종료 이후에도 데이터가 유지되도록 하는 방법을 설명합니다.

## 인스턴스 종료가 루트 및 데이터 볼륨에 미치는 영향
<a name="how-instance-termination-affects-root-and-data-volumes"></a>

**인스턴스 저장소 볼륨**  
인스턴스가 종료될 때 인스턴스 저장소 볼륨이 자동으로 삭제되고 데이터가 손실됩니다. 인스턴스 수명 이후에도 이 데이터를 보존하려면 인스턴스를 종료하기 전에 Amazon EBS 볼륨, Amazon S3 버킷 또는 Amazon EFS 파일 시스템과 같은 영구적인 스토리지에 해당 데이터를 수동으로 복사합니다. 자세한 내용은 [Amazon EC2 인스턴스의 스토리지 옵션](Storage.md) 섹션을 참조하세요.

**Amazon EBS 볼륨**  
인스턴스가 종료될 때 각 볼륨에 대한 `DeleteOnTermination` 속성 값에 따라 EBS 볼륨이 삭제되거나 유지됩니다.
+ **예**(콘솔)/`true`(CLI) - 인스턴스가 종료될 때 볼륨이 삭제됩니다.
+ **아니요**(콘솔)/`false`(CLI) - 인스턴스가 종료될 때 볼륨이 유지됩니다. 보존된 볼륨에는 계속 요금이 부과됩니다.
**참고**  
인스턴스가 종료된 후에 유지된 볼륨의 스냅샷을 만들거나 다른 인스턴스에 연결할 수 있습니다. 요금이 발생하지 않도록 하려면 볼륨을 삭제해야 합니다.

## EBS 볼륨의 기본 삭제 동작
<a name="default-deletion-behavior-for-ebs-volumes"></a>

기본 `DeleteOnTermination` 값은 볼륨 유형, 볼륨이 시작 시 연결되었는지 또는 시작 후 연결되었는지, 볼륨을 연결하는 데 사용된 방법(콘솔 또는 CLI)에 따라 달라집니다.


| 볼륨 유형 | 연결 시기 | 연결 방법 | 인스턴스 종료 시 기본 동작 | 
| --- | --- | --- | --- | 
| 루트 볼륨 | 시작 시 | 콘솔 또는 CLI | 삭제 | 
| 루트 볼륨 | 시작한 후 | 콘솔 또는 CLI | Preserve | 
| 데이터 볼륨 | 시작 시 | 콘솔 | Preserve | 
| 데이터 볼륨 | 시작 시 | CLI | 삭제 | 
| 데이터 볼륨 | 시작한 후 | 콘솔 및 CLI | Preserve | 

## 볼륨 지속성 설정 확인
<a name="check-ebs-volume-persistence-settings"></a>

EBS 볼륨의 시작 시 기본값은 AMI에 설정된 `DeleteOnTermination` 속성에 의해 결정됩니다. 인스턴스 시작 시 값을 변경하여 AMI 설정을 재정의할 수 있습니다. 인스턴스를 시작한 후에는 `DeleteOnTermination` 속성에 대한 기본 설정을 확인하는 것이 좋습니다.

**인스턴스 종료 시 Amazon EBS 볼륨이 삭제되는지 확인하려면 다음을 수행하세요.**

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

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

1. 인스턴스를 선택합니다.

1. **스토리지** 탭을 선택합니다.

1. **블록 디바이스**에서 오른쪽으로 스크롤하여 **종료 시 삭제** 열을 확인합니다.
   + **예**를 선택하면 인스턴스가 종료될 때 볼륨이 삭제됩니다.
   + **아니요**를 선택하면 인스턴스가 종료될 때 볼륨이 삭제되지 않습니다. 삭제되지 않은 볼륨에는 계속 요금이 부과됩니다.

## 시작 시 루트 볼륨을 지속하도록 변경
<a name="delete-on-termination-ebs-volume"></a>

인스턴스를 시작할 때 EBS 루트 볼륨의 `DeleteOnTermination` 속성을 변경할 수 있습니다. 데이터 볼륨에 대해 다음 절차를 사용할 수도 있습니다.

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

**실행 시 인스턴스의 루트 볼륨이 유지되도록 변경하려면 다음을 수행하세요.**

1. 절차에 따라 [인스턴스를 시작](ec2-launch-instance-wizard.md)하고 다음 단계를 완료하여 지속하도록 루트 볼륨을 변경한 후에만 인스턴스를 시작합니다.

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

1. **EBS 볼륨**에서 루트 볼륨 정보를 확장합니다.

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

1. **Summary**(요약) 패널에서 인스턴스 구성을 검토한 다음 **Launch instance**(인스턴스 시작)를 선택합니다. 자세한 내용은 [콘솔에서 인스턴스 시작 마법사를 사용하여 EC2 인스턴스 시작](ec2-launch-instance-wizard.md) 섹션을 참조하세요.

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

**실행 시 인스턴스의 루트 볼륨이 유지되도록 변경하려면 다음을 수행하세요.**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 사용하여 블록 디바이스 매핑에서 `DeleteOnTermination` 값을 변경합니다.

`--block-device-mappings` 옵션을 추가합니다.

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

`mapping.json`에서 디바이스 이름(예: `/dev/sda1` 또는 `/dev/xvda`)을 지정하고 `DeleteOnTermination`에 대해 `false`를 지정합니다.

```
[
  {
    "DeviceName": "{{device_name}}",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]
```

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

**실행 시 인스턴스의 루트 볼륨이 유지되도록 변경하려면 다음을 수행하세요.**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 사용하여 블록 디바이스 매핑에서 `DeleteOnTermination` 값을 변경합니다.

`-BlockDeviceMapping` 옵션을 추가합니다.

```
-BlockDeviceMapping $bdm
```

`bdm`에서 디바이스 이름(예: `/dev/sda1` 또는 `/dev/xvda`)을 지정하고 `DeleteOnTermination`에 대해 `false`를 지정합니다.

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "{{/dev/sda1}}"
$bdm.Ebs = $ebd
```

------

## 실행 중인 인스턴스의 루트 볼륨이 지속되도록 변경
<a name="delete-on-termination-running-instance"></a>

실행 중인 인스턴스의 EBS 루트 볼륨이 지속되도록 변경할 수 있습니다. 데이터 볼륨에 대해 다음 절차를 사용할 수도 있습니다.

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

**루트 볼륨이 지속되도록 변경하려면 다음을 수행하세요.**  
[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`에서 디바이스 이름(예: `/dev/sda1` 또는 `/dev/xvda`)을 지정하고 `--DeleteOnTermination`에 대해 `false`를 지정합니다.

```
[
  {
    "DeviceName": "{{device_name}}",
    "Ebs": {
      "DeleteOnTermination": false
    }
  }
]
```

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

**루트 볼륨이 지속되도록 변경하려면 다음을 수행하세요.**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) cmdlet을 사용합니다.

`-BlockDeviceMapping` 옵션을 추가합니다.

```
-BlockDeviceMapping $bdm
```

`bdm`에서 디바이스 이름(예: `/dev/sda1` 또는 `/dev/xvda`)을 지정하고 `DeleteOnTermination`에 대해 `false`를 지정합니다.

```
$ebd = New-Object -TypeName Amazon.EC2.Model.EbsBlockDevice
$ebd.DeleteOnTermination = false
$bdm = New-Object -TypeName Amazon.EC2.Model.BlockDeviceMapping
$bdm.DeviceName = "{{/dev/sda1}}"
$bdm.Ebs = $ebd
```

------