

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在執行個體終止時保留資料
<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 磁碟區**  
執行個體終止時，EBS 磁碟區會被刪除或保留，取決於每個磁碟區的 `DeleteOnTermination` 屬性值：
+ **是** (主控台) / `true` (CLI) – 磁碟區會在執行個體終止時遭到刪除。
+ **否** (主控台) / `false` (CLI) – 磁碟區會在執行個體終止時保留。保留的磁碟區會持續產生費用。
**注意**  
執行個體終止後，您可拍攝已保留磁碟區的快照，並將其連接到另一個執行個體。要避免產生費用，您必須刪除磁碟區。

## EBS 磁碟區的預設刪除行為
<a name="default-deletion-behavior-for-ebs-volumes"></a>

預設 `DeleteOnTermination` 值會根據磁碟區類型、磁碟區是在啟動時還是之後連接，以及用來連接磁碟區的方法 (主控台或 CLI) 而有所不同：


| 磁碟區類型 | 連接時間 | 連接方法 | 執行個體終止時的預設行為 | 
| --- | --- | --- | --- | 
| 根磁碟區 | 啟動時 | 主控台或 CLI | 刪除 | 
| 根磁碟區 | After launch (啟動後) | 主控台或 CLI | 保留 | 
| 資料量 | 啟動時 | 主控台 | 保留 | 
| 資料量 | 啟動時 | CLI | 刪除 | 
| 資料量 | After launch (啟動後) | 主控台和 CLI | 保留 | 

## 檢查磁碟區持久性設定
<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
```

------