使用Linux執行個體時,如果遇到執行個體運行卡頓或檔案讀寫速度較慢等問題,可能是磁碟I/O 負載高導致,您可以參考本文內容排查並解決問題。
問題現象
使用Linux系統的ECS執行個體時,出現如下現象。
出現系統運行卡頓、檔案讀寫變慢、應用效能下降或內部服務響應慢等問題。
通過ECS控制台查看執行個體磁碟I/O負載監控時,發現磁碟I/O負載過高(參考值:當前I/O讀寫≥該雲端硬碟I/O效能指標的80%,可認為I/O負載過高)。
收到了磁碟I/O負載超過設定閾值的警示資訊。
可能原因
引起磁碟I/O負載過高的常見原因如下:
異常的進程或服務佔用大量磁碟I/O,導致磁碟I/O負載過高。
業務程式及業務情境對執行個體的磁碟I/O負載要求較高,執行個體的磁碟I/O效能不足以支撐業務開展所需的磁碟I/O效能要求。
排查步驟
要定位磁碟I/O負載過高的問題,您可以參見下述操作步驟進行問題的排查定位。
使用iostat查看整體磁碟I/O負載
iostat是一款Linux系統中監控I/O效能的工具,可以查看磁碟整體I/O負載情況。
執行如下命令,查看系統I/O負載情況。
sudo iostat -d -m 3 5說明-d:僅顯示裝置統計資訊,不顯示CPU使用方式。
-m:以MB為單位顯示。
3:統計時間間隔。
5:統計次數。
回顯結果樣本如下。
Linux 5.10.134-18.al8.x86_64 (iZbpxxxxxxxxxxxxxxxaqhZ) 04/07/2025 _x86_64_ (4 CPU) Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn vda 145.67 0.00 126.81 0 380 vdb 0.00 0.00 0.00 0 0 Device tps MB_read/s MB_wrtn/s MB_read MB_wrtn vda 161.33 0.00 127.24 0 381 vdb 0.00 0.00 0.00 0 0 ......顯示結果中各項參數說明如下。更多參數說明,請運行
man iostat查看。Device:磁碟名稱。
tps:每秒I/O請求數。
MB_read/s:每秒檔案讀取速度。
MB_wrtn/s:每秒檔案寫入速度。
MB_read:讀取的檔案大小。
MB_wrtn:寫入的檔案大小。
若檢測到磁碟I/O實際效能顯著低於阿里雲官方公布的Block Storage服務效能指標,建議您優先檢查磁碟分割是否完成4K對齊。通過確認分區對齊狀態,可快速定位因對齊配置不當導致的效能損耗問題。
關於Block Storage效能的更多資訊,請參見雲端硬碟概述。
使用iotop查看進程的磁碟IO負載
iotop是一個用來監視磁碟I/O使用狀況的工具,可以查看單個進程的磁碟IO負載。
執行如下命令,安裝iotop。
Alibaba Cloud Linux / CentOS / Fedora
sudo yum install -y iotopUbuntu / Debian
sudo apt install -y iotopopenSUSE
sudo zypper install -y iotop執行如下命令,查看磁碟I/O負載。
sudo iotop -P -k -d 3說明-P:顯示PID。
-k:以KB為單位顯示。
-d:統計時間間隔,單位為秒,預設值為1。
回顯結果樣本如下。如需退出程式,請按
q鍵。Total DISK READ : 0.00 K/s | Total DISK WRITE : 80373.45 K/s Actual DISK READ: 0.00 K/s | Actual DISK WRITE: 127781.85 K/s PID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 17250 be/4 root 0.00 K/s 80354.87 K/s 0.00 % 95.99 % dd if=/dev/zero of=/mnt/dev_vdb/swap bs=1M count=10240 15192 be/3 root 0.00 K/s 6.64 K/s 0.00 % 60.56 % [jbd2/vdb1-8] 17152 be/4 root 0.00 K/s 0.00 K/s 0.00 % 59.55 % [kworker/u8:0 ......關於回顯結果的參數說明如下,更多參數說明,可執行
iotop -h查詢。PID:進程ID。
DISK READ:進程讀操作的I/O速度。
DISK WRITE:進程寫操作的I/O速度。
SWAPIN:進程等待從交換空間(Swap Space)換入(Swap In)記憶體頁面所佔用的 CPU 時間百分比。
IO>:進程因 I/O 等待所佔用的 CPU 時間百分比(包括 Swap 換入和磁碟 I/O 等待)。
COMMAND:進程的命令名稱。
如果定位到kjournald進程佔用較高磁碟I/O資源,建議修改對應分區的Journal size參數解決該問題。具體操作,請參見kjournald進程佔用較高磁碟I/O資源問題處理。
處理磁碟I/O負載高的問題
常見磁碟I/O負載高問題原因及解決方案如下。
問題現象 | 原因 | 解決方案 |
異常使用者程式或進程長時間佔用大量磁碟I/O資源。 | 該程式為異常程式或進程,運行時佔用過多磁碟I/O資源。 | 通過在iotop工具定位到佔用磁碟I/O資源較多的程式的PID,並通過 警告 在您結束進程前,請務必確保您瞭解該進程的相關資訊,避免因誤操作導致您的業務中斷。 |
正常使用者程式或進程長時間佔用大量磁碟I/O資源。 | 該程式為正常業務程式或進程,運行時佔用過多磁碟I/O資源。 | 如果雲端硬碟出現磁碟I/O效能瓶頸,您可以根據實際情況選擇對應的處理方案:
|
| 當前執行個體的服務正常運行所需磁碟I/O資源效能大於執行個體的磁碟I/O效能。 |
常見問題
檢查磁碟分割是否完成4K對齊
kjournald進程佔用較高磁碟I/O資源問題處理
相關文檔
關於Windows系統磁碟I/O負載高的問題排查定位,請參見Windows系統磁碟I/O負載較高問題的排查與處理。
關於如何使用atop工具監控Linux系統指標的更多資訊,請參見使用atop工具監控Linux系統指標。