

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

# 在不停止 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。如果尚未為 NitroTPM 設定執行個體，無論您選擇的 AMI 為何，NitroTPM 支援都不會啟用。

只要執行個體支援 AMI 的開機模式，您就可以選取開機模式與執行個體不同的 AMI。如果執行個體不支援該開機模式，則請求會失敗。如果執行個體支援該開機模式，則新的開機模式會傳播至執行個體，並相應地更新其 UEFI 資料。如果您已手動修改開機順序，或已新增私有 UEFI 安全開機金鑰來載入私有核心模組，則變更會在根磁碟區取代期間遺失。

取代根磁碟區獲得與原始根磁碟區相同的磁碟區類型和終止時刪除屬性，且它會獲得根磁碟區的 AMI 區塊型裝置映射的大小。

**注意**  
AMI 根磁碟區區塊型裝置映射的大小必須等於或大於原始根磁碟區的大小。如果 AMI 根磁碟區區塊型裝置映射的大小小於原始根磁碟區的大小，則請求失敗。

根磁碟區替換任務完成後，當您使用主控台 AWS CLI 或 AWS SDKs 描述執行個體時，會反映下列新的和更新的資訊：
+ 新的 AMI ID
+ 根磁碟區的新磁碟區 ID
+ 已更新開機模式組態 (如果由 AMI 變更)
+ 已更新 NitroTPM 組態 (如果由 AMI 啟用)
+ 已更新 ENA 組態 (如果由 AMI 啟用)
+ 已更新 sriov-net 組態 (如果由 AMI 啟用)

新的 AMI ID 也會反映在執行個體中繼資料中。

**使用 AMI 時的考量事項**
+ 如果您使用具有多個區塊型裝置映射的 AMI，則只會使用 AMI 的根磁碟區。其他 (非根) 磁碟區會被忽略。
+ 只有在您擁有使用 AMI 及其關聯根磁碟區快照的權限時，才能使用此功能。您無法將此功能與 AWS Marketplace AMIs搭配使用。
+ 只有在執行個體沒有產品代碼的情況下，才能使用不含產品代碼的 AMI。
+ AMI 根磁碟區區塊型裝置映射的大小必須等於或大於原始根磁碟區的大小。如果 AMI 根磁碟區區塊型裝置映射的大小小於原始根磁碟區的大小，則請求失敗。
+ 執行個體的執行個體身分文件會自動更新。
+ 如果執行個體支援 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/zh_tw/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. 在導覽窗格中，選擇 **Instances** (執行個體)。

1. 選取要取代根磁碟區的執行個體，然後依序選取 **Actions (動作)**、**Monitor and troubleshoot (監控與疑難排解)**、**Replace root volume (取代根磁碟區)**。
**注意**  
如果選定的執行個體不在 `running` 狀態，則會停用**取代根磁碟區**操作。

1. 針對**區域**，選擇以下其中一個選項：
   + **啟動狀態** – 從用來建立目前根磁碟區的快照還原取代根磁碟區。
   + **快照** – 將取代的根磁碟區還原至指定的快照。針對**快照**，選取要使用的快照。
   + **映像** – 使用您指定的 AMI 還原取代根磁碟區。針對**映像**，選取要使用的 AMI。

1. (選用) 對於**磁碟區初始化速率**，您可指定磁碟區初始化的 Amazon EBS 佈建速率 (磁碟區初始化速率)，以 MiB/s 為單位，快照區塊將以此速率從 Amazon S3 下載至磁碟區。如需詳細資訊，請參閱[使用 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` 和 `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` 和 `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` 和 `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` 和 `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` 和 `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` 和 `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 
```

------