

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

# 在 Amazon EBS 上進行故障測試
<a name="ebs-fis"></a>

AWS Fault Injection Service (AWS FIS) 是一種全受管服務，可協助您在 AWS 工作負載上執行故障注入實驗。透過 中的 EBS 動作 AWS FIS，您可以測試應用程式如何回應可能導致磁碟區 I/O 中斷和效能降低的儲存故障。此受控測試環境可讓您觀察應用程式如何回應中斷，以便識別架構中的弱點，並改善應用程式的整體彈性。使用暫停 I/O 動作和延遲注入動作，您可以測試監控和復原機制，例如 Amazon CloudWatch 警示和容錯移轉工作流程，並改善關鍵任務應用程式的儲存故障彈性。如需 的詳細資訊 AWS FIS，請參閱[AWS Fault Injection Service 《 使用者指南》](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)。

## 可用的實驗
<a name="ebs-fis-experiments"></a>

Amazon EBS 目前支援兩種 AWS FIS 錯誤注入：
+ [暫停 I/O 錯誤注入](ebs-fis-pause-io.md)
+ [延遲注入](ebs-fis-latency-injection.md)

## 考量事項
<a name="ebs-fis-consids"></a>

適用下列注意事項：
+ 支援所有 Amazon EBS 磁碟區類型。支援根磁碟區和資料磁碟區。不支援執行個體儲存體磁碟區。
+ 磁碟區必須連接到 [ Nitro 型 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-hypervisor-type)。
+ 一旦實驗根據持續時間完成，您的磁碟區將恢復其原始 I/O 效能。您也可以在實驗完成之前停止執行中的實驗。或者，您可以建立停止條件，在實驗達到您在 CloudWatch 警示中定義的閾值時停止實驗。
+ 您可以 AWS FIS 搭配啟用 Multi-Attach 的磁碟區使用 。所有連接的執行個體都會受到影響。您無法為實驗選取特定的磁碟區執行個體附件。
+ FIS 目前不適用於 Local Zones、Outposts 或 Wavelength Zones。
+ 在主控台中指定磁碟區 ARNs 時，您可以在相同的可用區域中同時測試最多 5 個磁碟區。
+ 您無法將 AWS FIS 與在 Outpost、 AWS Wavelength 區域或本機區域中建立的磁碟區搭配使用。

# 暫停 I/O 錯誤注入
<a name="ebs-fis-pause-io"></a>

使用 AWS Fault Injection Service 和 暫停 I/O 動作在 Amazon EBS 磁碟區與其連接的執行個體之間暫時停止 I/O，以測試工作負載如何處理 I/O 中斷。

如需 的詳細資訊 AWS FIS，請參閱[https://docs.aws.amazon.com/fis/latest/userguide/what-is.html](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)。

**考量事項**

請謹記暫停磁碟區 I/O 時的下列考量事項：
+ 所有 [Nitro 型執行個體類型](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)都支援暫停 I/O。
+ 若要測試作業系統逾時組態，請將實驗持續時間設定為等於或大於 `nvme_core.io_timeout` 的指定值。如需詳細資訊，請參閱[Amazon EBS 磁碟區的 NVMe I/O 操作逾時](timeout-nvme-ebs-volumes.md)。
+ 如果將 I/O 驅動到已暫停 I/O 的磁碟區，則會發生下列情況：
  + 磁碟區的狀態會在 120 秒內轉換為 `impaired`。如需詳細資訊，請參閱[Amazon EBS 磁碟區狀態檢查](monitoring-volume-checks.md)。
  + `1` 如果磁碟區 I/O 暫停超過 60 秒，則 的 CloudWatch 指標`VolumeStalledIOCheck`將是 。如需更多資訊，請參閱[Amazon EBS 磁碟區的指標](using_cloudwatch_ebs.md#ebs-volume-metrics)。
  + 佇列長度 (`VolumeQueueLength`) 的 CloudWatch 指標將不為零。任何警示或監控都應監控非零佇列深度。
  + `VolumeReadOps` 或 `VolumeWriteOps` 的 CloudWatch 指標將為 `0`，表示該磁碟區不再處理 I/O。

您可以從 Amazon EC2 主控台執行基本實驗，也可以使用 AWS FIS 主控台執行更進階的實驗。如需使用 AWS FIS 主控台執行進階實驗的詳細資訊，請參閱*AWS Fault Injection Service 《 使用者指南*》中的 [ 教學課程 AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorials.html)。

**使用 Amazon EC2 主控台執行基本實驗**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Volumes** (磁碟區)。

1. 選取要暫停 I/O 的磁碟區，然後選擇**動作**、**故障注入**、**暫停磁碟區 I/O**。

1. 在**持續時間**中，輸入磁碟區和執行個體之間暫停 I/O 的持續時間。「持續時間」下拉式清單旁的欄位會以 ISO 8601 格式顯示持續時間。

1. 在**服務存取**區段中，選取要 AWS FIS 擔任的 IAM 服務角色，以執行實驗。可以使用預設角色或您建立的現有角色。如需詳細資訊，請參閱[建立 AWS FIS 實驗的 IAM 角色](https://docs.aws.amazon.com/fis/latest/userguide/getting-started-iam-service-role.html)。

1. 選擇**暫停磁碟區 I/O**。出現提示時，在確認欄位中輸入 `start` 並選擇**開始實驗**。

1. 監控實驗的進度和影響。如需詳細資訊，請參閱《AWS FIS 使用者指南》**中的[監控 AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/monitoring-experiments.html)。

# 延遲注入
<a name="ebs-fis-latency-injection"></a>

使用 中的延遲注入動作 (`aws:ebs:volume-io-latency`) AWS FIS 來模擬 Amazon EBS 磁碟區上增加的 I/O 延遲，以測試您的應用程式如何回應儲存效能降低。此動作可讓您指定要注入的延遲值，以及將影響目標磁碟區的 I/O 百分比。使用 時 AWS FIS，您可以使用預先設定的延遲實驗範本，開始測試儲存故障期間可能觀察到的不同 I/O 延遲模式。這些範本設計成一組初始案例，可用來將中斷引入您的應用程式，以測試彈性。它們並非設計為涵蓋應用程式在真實世界中可能遇到的所有類型影響。我們建議您根據應用程式的效能需求，將它們調整為執行多個不同的測試。您可以自訂可用的範本或建立新的實驗範本，以測試您的應用程式特定需求。

**預先設定的延遲實驗範本**  
Amazon EBS 透過 EBS 主控台和[AWS FIS 案例庫](https://docs.aws.amazon.com/fis/latest/userguide/scenario-library-scenarios.html)提供下列延遲實驗範本。您可以直接在目標磁碟區上使用這些範本來執行延遲注入實驗。
+ **持續延遲** — 模擬持續延遲。此實驗使用一個延遲注入動作，總持續時間為 15 分鐘。此實驗模擬 50% 讀取 I/O 和 100% 寫入 I/O 的持久性延遲：500 毫秒，持續 15 分鐘。
+ **增加延遲** — 模擬逐漸增加的延遲。此實驗利用五個延遲注入動作，總持續時間為 15 分鐘。此實驗將模擬 10% 讀取 I/O 和 25% 寫入 I/O 的延遲逐漸增加：50 毫秒持續 3 分鐘、200 毫秒持續 3 分鐘、700 毫秒持續 3 分鐘、1 秒持續 3 分鐘，以及 15 秒持續 3 分鐘。
+ **間歇延遲** — 模擬急劇的間歇性延遲峰值，以及介於兩者之間的復原期間。此實驗利用三個延遲注入動作，總持續時間為 15 分鐘。此實驗將在 0.1% 的讀取和寫入 I/O 上模擬三個延遲峰值：30 秒峰值持續 1 分鐘、10 秒峰值持續 2 分鐘，以及 20 秒峰值持續 2 分鐘。每個延遲峰值之間會有 5 分鐘的復原期間。
+ **降低延遲** — 模擬逐漸降低的延遲。此實驗利用五個延遲注入動作，總持續時間為 15 分鐘。此實驗將模擬 10% 讀取 I/O 和寫入 I/O 的延遲逐漸減少：20 秒持續 3 分鐘、5 秒持續 3 分鐘、900 毫秒持續 3 分鐘、300 毫秒持續 3 分鐘，以及 40 毫秒持續 3 分鐘。

**自訂預先設定的案例**

您可以使用下列可自訂的參數自訂上述預先設定的範本，或建立自己的新實驗範本。
+ `readIOPercentage` — 注入延遲的讀取 I/O 操作百分比。這是將受到 動作影響之磁碟區上所有讀取 I/O 操作的百分比。

  範圍：最小值 0.1%，最大值 100%
+ `readIOLatencyMilliseconds` — 讀取 I/O 操作注入的延遲量。這是將在實驗期間讀取 I/O 指定百分比上觀察到的延遲值。

  範圍：最短 1 毫秒 (io2)/10 毫秒 （非 io2)，最長 60 秒
+ `writeIOPercentage` — 注入延遲的寫入 I/O 操作百分比。這是將受到 動作影響之磁碟區上所有寫入 I/O 操作的百分比。

  範圍：最小值 0.1%，最大值 100%
+ `writeIOLatencyMilliseconds` — 寫入 I/O 操作時注入的延遲量。這是將在實驗期間於寫入 I/O 指定百分比上觀察到的延遲值。

  範圍：最短 1 毫秒 (io2)/10 毫秒 （非 io2)，最長 60 秒
+ `duration` — 延遲將注入所選 I/O 百分比的持續時間。

  範圍：最短 1 秒，最長 12 小時

**監控延遲注入**  
您可以透過下列方式監控對磁碟區的效能影響：
+ 在 CloudWatch 中使用平均延遲指標，以取得每分鐘平均 I/O 延遲。如需詳細資訊，請參閱[使用 CloudWatch 監控 EBS 磁碟區](https://docs.aws.amazon.com/ebs/latest/userguide/using_cloudwatch_ebs.html)。
+ 使用透過 NVMe-CLI、CloudWatch 代理程式和 Prometheus 提供的 EBS 詳細效能統計資料，以取得每秒平均 I/O 延遲。詳細指標也提供 I/O 延遲長條圖，您可以用來分析磁碟區的延遲差異。如需詳細資訊，請參閱 [ NVMe 詳細效能統計資料](https://docs.aws.amazon.com/ebs/latest/userguide/nvme-detailed-performance-stats.html)。
+ 使用 [Amazon EBS 磁碟區狀態檢查](monitoring-volume-checks.md)。當您注入 I/O 延遲時，磁碟區的狀態會轉換為 `warning` 狀態。

**考量事項**  
使用 EBS 延遲注入時，請考慮下列事項：
+ 所有 [Nitro 型執行個體類型](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)都支援延遲注入，但 P4d, P5, P5e, Trn2u, G6, G6f, Gr6, Gr6f, M8i, M8i-flex, C8i-flex, R8i, R8i-flex, I8ge, Mac-m4pro 和 Mac-m4 除外。
+ 您可能會在實驗中指定的延遲值中看到高達 5% 的差異，以及觀察到的結果延遲。
+ 如果您驅動非常少量的 I/O 操作，動作參數中指定的 I/O 百分比可能不符合受動作影響的實際 I/O 百分比。

**在 Amazon EBS 磁碟區上執行延遲注入實驗**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Volumes** (磁碟區)。

1. 選取要執行實驗的磁碟區，然後選擇**動作**、**彈性測試**、**注入磁碟區 I/O 延遲**。

    AWS Fault Injection Service 主控台隨即開啟。

1. 在**建立實驗**視窗中，選取要執行的實驗類型：**間歇性**、**增加**、**持續**或**減少**。

1. 針對 **IAM 角色選擇**，選擇**建立新角色**以建立新的角色， AWS FIS 以用來代表您執行實驗。或者，如果您先前已建立具有所需許可的 **IAM 角色，請選擇使用現有的** IAM 角色。

1. **定價預估**區段為您提供執行實驗成本的預估。使用 AWS FIS時，會根據您實驗的目標帳戶數量，向您收取動作從頭到尾執行的每分鐘費用。

1. 選擇 **Start experiment** (開始實驗)。