本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹如何使用iostat、iotop工具查看I/O負載情況。
查看磁盤I/O負載
使用iostat從系統緯度查看磁盤IO負載
iostat是一款Linux系統中監控I/O性能的工具,可以從系統緯度查看磁盤I/O負載情況。
執行如下命令,安裝iostat。
yum install sysstat
執行如下命令,查看I/O負載。
iostat -d -k 3 5
說明-d:顯示磁盤的使用情況。
-k:以KB為單位顯示。
3:統計時間間隔。
5:統計次數。
顯示結果如下。
顯示結果參數說明如下,更多參數說明,請參見iostat(1) - Linux man page。
Device:磁盤名稱。
tps:每秒鐘發送到的I/O請求數。
Blk_read/s:每秒讀取的block數。
Blk_wrtn/s:每秒寫入的block數。
Blk_read:讀入的block總數。
Blk_wrtn:寫入的block總數。
使用iotop從進程緯度查看磁盤IO負載
iotop是一個用來監視磁盤I/O使用狀況的top類工具,可以從進程緯度查看磁盤IO負載。
執行如下命令,安裝iotop。
yum install iotop
執行如下命令,查看I/O負載。
iotop -k -n 5 -d 3
說明-b:記錄到日志。
-k:以KB為單位顯示。
-n:統計次數。
-d:統計時間間隔。
顯示結果如下。
顯示結果參數說明如下,更多參數說明,可執行
iotop -h
查詢。DISK READ:該進程讀I/O帶寬。
DISK WRITE:該進程寫I/O帶寬。
SWAPIN:磁盤的交換使用率。
IO:該進程的 I/O 利用率,包含磁盤和交換。
kjournald進程占用I/O資源高問題
問題描述
使用iotop排查分析,發現kjournald進程占用了大量I/O資源。
問題原因
該問題通常是由于.ext3
文件系統設置的Journal size太小導致。
kjournald進程是ext3文件系統進行I/O數據操作的內核進程,它在向磁盤內寫入和讀取數據時占用CPU和內存資源。當循環的向ext3文件系統寫數據時,會使Journal size不斷增大,到達設置的Journal size時,就會出現該問題。
解決方案
遠程連接Linux系統的ECS實例。
具體操作,請參見連接方式概述。
執行如下命令,查看相應分區的Journal size大小。
dumpe2fs /dev/xvda1 | grep Journal
說明/dev/xvda1請替換為實際的分區。
系統顯示類似如下,表示
/dev/xvda1
分區的Journal size為128M。dumpe2fs 1.42.9 (28-Dec-2013) Journal inode: 8 Journal backup: inode blocks Journal features: journal_incompat_revoke Journal size: 128M Journal length: 32768 Journal sequence: 0x00010ffb Journal start: 10953
執行如下命令,修改Journal size大小。
mke2fs -J size=400 /dev/xvda1
說明請根據業務需要,修改size大小,/dev/xvda1請替換為實際的分區。
I/O性能優化:通過4K對齊提高I/O性能
4K對齊指將符合4K扇區定義格式化過的硬盤,按照4K扇區的規則寫入數據。4K對齊可以使簇與扇區相對應,保證了磁盤讀寫效率,以提高I/O性能。
本操作介紹如何通過以下腳本對磁盤進行格式化并自動配置4K對齊。
運行此腳本會自動格式化所有數據盤,如果非新購數據盤,請在操作前,確認已對相關數據盤進行數據備份。具體操作,請參見創建一個云盤快照。
使用root用戶遠程連接Linux系統的ECS實例。
具體操作,請參見連接方式概述。
下載auto_fdisk.zip壓縮包后解壓,將解壓后腳本并上傳到目標服務器。
依次執行如下命令,為腳本添加執行權限,然后運行腳本。
chmod +x ./auto_fdisk.sh ./auto_fdisk.sh