需用iostat、iotop、pidstat和dmesg等工具协同监控:iostat查设备级io负载,iotop定位高io进程,pidstat分析进程io分布,dmesg与日志交叉验证硬件异常。

如果您需要评估麒麟操作系统中磁盘的实时读写能力与负载状态,则需借助内核级IO统计工具获取底层设备指标。以下是针对KylinOS V10环境开展磁盘IO性能监控的具体操作路径:
一、使用iostat命令查看实时磁盘IO统计
iostat是sysstat套件中的核心工具,可按秒级粒度输出设备利用率、IOPS、吞吐量及响应时间等关键指标,其数据直接来源于/proc/diskstats,具备高可信度和低开销特性。
1、确认sysstat是否已安装:执行yum list installed | grep sysstat,若无输出则需运行sudo yum install -y sysstat进行安装。
2、启用系统级IO数据采集服务:执行sudo systemctl enable sysstat并sudo systemctl start sysstat,确保后台定时收集基础IO样本。
3、执行基础监控命令:输入iostat -x -d 1,其中-x启用扩展统计,-d仅显示磁盘设备,1表示每秒刷新一次。
4、识别瓶颈信号:重点关注%util列数值,若持续高于80%且伴随w_await(写响应时间)超过10ms或r_await(读响应时间)显著升高,表明磁盘存在IO压力。
二、使用iotop定位高IO消耗进程
iotop提供进程维度的实时IO视图,能精确识别占用磁盘带宽最大的用户态程序或内核线程,是排查单点IO异常的首选工具。
1、安装iotop组件:执行sudo yum install -y iotop,该包在KylinOS标准镜像中通常未预装。
2、以特权模式启动:输入sudo iotop -o -d 1,其中-o过滤仅显示活跃IO进程,-d 1设定刷新间隔为1秒。
3、观察TOP消耗项:默认按IO带宽降序排列,重点关注IO> 列数值,若某进程持续输出>40MB/s写入量,需立即核查其行为逻辑。
4、切换视图模式:按左右箭头键切换排序字段,按r反转顺序,按p切换进程/线程显示粒度。
三、使用pidstat分析进程级IO分布
pidstat可分离出每个进程的读写字节数、IO等待时间及上下文切换频次,适用于多进程混合IO场景下的精细化归因分析。
1、执行进程IO采样:输入pidstat -d 1,该命令每秒输出一次各进程IO吞吐量。
2、识别异常峰值:关注KB_rd/s与KB_wr/s两列,若发现某个PID连续3次采样均维持>50MB/s写入速率,即为可疑目标。
3、关联内核线程:当pidstat显示jbd2类内核线程IO偏高时,说明ext4日志提交频繁,需检查对应挂载点是否存在大量小文件同步写操作。
4、导出历史快照:添加-h参数生成人类可读格式,配合2>&1 | tee io_log.txt保存完整会话记录供回溯。
四、结合dmesg与系统日志交叉验证硬件层异常
当iostat显示%util达100%但无实际读写流量时,可能指向磁盘控制器故障、NVMe固件异常或主板总线降速等底层问题,需调取内核环形缓冲区日志佐证。
1、提取IO相关内核告警:执行dmesg -T | grep -i -E "nvme|ata|sd|error|fail|timeout|reset",筛选带时间戳的硬件级错误事件。
2、检查系统消息日志:运行grep -i -E "emerg|alert|crit|err|warn" /var/log/messages | tail -n 50,重点捕获磁盘重置、链路中断或SMART预警信息。
3、验证设备健康状态:对NVMe盘执行sudo nvme smart-log /dev/nvme0n1,确认critical_warning字段值为0x0;对SATA/SAS盘执行sudo smartctl -a /dev/sda,检查Reallocated_Sector_Ct与UDMA_CRC_Error_Count是否突增。
4、比对PCIe链路宽度:运行lspci -vv -s $(lspci | grep NVMe | awk '{print $1}') | grep Width,确认当前协商带宽是否等于物理插槽标称值(如x4而非降为x1)。










