IO高負載是一種常見的故障現象,可能由於過高的業務進程負載、非預期的非業務進程佔用、記憶體資源不足等因素導致。IO高負載可能會導致業務效能受損,資料丟失等風險。因此通過此演練情境驗證系統在IO高負載時的警示和恢複情況。
實現原理
本方案使用雲助手外掛程式ACS-ECS-HighIo,內部使用dd工具(data duplicator)實現複製和轉換檔以提高磁碟IO負載,具體說明如下:
對於讀模式,先寫入一個臨時檔案到目標路徑,通過迴圈讀取對應檔案類比讀壓力。
對於寫入模式,通過迴圈寫入類比寫入壓力。
使用指南
演練準備
請確保您的ECS執行個體已安裝雲助手Agent,並且雲助手狀態為正常。具體操作,請參見查看雲助手狀態及異常狀態處理。
故障注入
登入ECS執行個體。
具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體。
使用具有sudo存取權限的使用者,運行雲助手外掛程式
ACS-ECS-HighIo。sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,[model=paramA],[dir=paramB],[bs=paramC],[count=paramD],[duration=paramE][]內為可選故障注入參數,參數說明:model(可選):讀/寫入模式,取值read/write,預設為read。
dir(可選):目標路徑,通過指定路徑來實現對不同磁碟的壓力測試,預設為系統根目錄。
bs(可選):塊大小,格式同dd命令中bs塊參數格式,用於控制每次讀寫的塊大小,該參數可影響讀寫速率,為了保證佔滿IO,預設為1M。
count(可選):一次讀取迴圈的塊數量,預設為1024。
duration(可選):期間,單位秒,預設為300(秒)。
顯示如下所示時,說明雲助手外掛程式
ACS-ECS-HighIo執行成功。
執行
iotop命令,查看故障注入是否成功。顯示如下所示時,說明故障注入成功。

故障恢複
在ECS執行個體中執行故障恢複命令,查看I/O讀寫是否恢複到故障注入前的水平。
演練完畢後必須執行一次該命令,以刪除產生的臨時檔案。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover演練案例
故障注入:對
usr路徑進行讀取,持續60s。sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params inject,dir=/usr,duration=60顯示故障注入參數和注入結果,以及存放臨時檔案的目錄檔案。

在
usr目錄下,查看當前注入的臨時檔案,可以看到產生了AliFaultHighio.tmp臨時檔案。
執行iotop命令,查看磁碟I/O讀寫情況。

執行故障恢複命令。
sudo acs-plugin-manager --exec --plugin ACS-ECS-HighIo --params recover