全部產品
Search
文件中心

Elastic Compute Service:磁碟IO Hang演練

更新時間:Apr 19, 2025

IO Hang是指在進行讀或寫操作時,系統因為某些原因無法完成這些操作,導致進程或系統無法繼續正常工作的一種情況。其可以由多種原因引起,包括硬體故障、驅動問題、檔案系統錯誤、網路延遲或擁塞等。這對業務產生效能下降,服務延遲,資料一致性問題等風險。通過此演練情境驗證系統在磁碟發生IO Hang時的警示和恢複情況。

使用限制

僅支援Alibaba Cloud Linux 3/2等相容Cgroup v1的Linux發行版。

實現原理

本方案使用雲助手外掛程式ACS-ECS-IoHang,使用Cgroups對磁碟進行限速。其中Cgroups是Linux核心提供的一種可以限制單個或多個進程所使用資源的機制,可以對CPU、記憶體、IO資源、網路頻寬實現精細化的控制。

使用指南

演練準備

請確保您的ECS執行個體已安裝雲助手Agent,並且雲助手狀態正常。具體操作,請參見查看雲助手狀態及異常狀態處理

故障注入

  1. 登入ECS執行個體。

    具體操作,請參見使用Workbench工具以SSH協議登入Linux執行個體

  2. 使用具有sudo存取權限的使用者,運行雲助手外掛程式ACS-ECS-IoHang

    sudo acs-plugin-manager --exec --plugin ACS-ECS-IoHang --params inject,disk=vda,[duration=paramA]

    []內為可選故障注入參數,參數說明:

    • disk(必選):指定目標磁碟。您可以使用lsblk查看當前系統掛載的磁碟,如需對所有磁碟注入可指定disk=all。

    • duration(可選):期間,單位為秒,預設為300。

  3. 查看故障注入是否成功。

    • 如顯示以下結果,說明故障注入成功。

      image

    • 檢查業務讀寫是否符合預期。

故障恢複

  • 方法一(推薦):等待逾時自動回復。

    說明

    預設300s後會自動結束,對系統硬碟注入,因情境特殊,可能發生無法自動回復情況,請在控制台執行強制重啟執行個體,具體操作,請參見重啟執行個體

  • 方法二:僅對資料盤注入,在ECS執行個體中執行故障恢複命令。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-IoHang --params recover

演練案例

使用lsblk命令查看和選擇當前系統掛載的磁碟,以資料盤(vdb)為例,進行故障注入。

  1. 為了更直觀地觀察演練效果,類比業務對磁碟vdb讀取情境,如有實際業務可跳過。

    sudo dd if=/dev/vdb of=/dev/null

    在iotop命令中查看當前IO佔用情況。

    說明

    如未安裝iotop工具,可執行以下命令安裝。

    • Alibaba Cloud Linux 3/2、CentOS 7

      sudo yum install -y iotop
    • Ubuntu、Debian

      sudo apt install -y iotop

    image

  2. 執行故障注入。

    sudo acs-plugin-manager --exec --plugin ACS-ECS-IoHang --params inject,disk=vdb,duration=120

    返回如下所示,顯示注入參數和指定裝置的主裝置號和副裝置號,表示注入成功。

    image

  3. 查看注入效果。

    查看iotop命令中查看IO佔用情況,當前磁碟讀取速度已跌至0 B/s。

    image

  4. 等待故障恢複。

    注入逾時後,類比的業務進程速度已恢複。

    image