需用sudo iotop -o -d 1精准筛选当前真实读写硬盘的进程,-o过滤静默进程,重点关注IO>列非零值及持续超5MB/s者;再用pidstat -d 1识别高写入用户进程与jbd2等内核线程;最后用lsof -p PID | grep -E '(/dev/sd|/dev/nvme)'验证是否直连物理磁盘。

你需要在麒麟操作系统中快速识别当前正在对硬盘执行读写操作的进程,避免被后台静默进程干扰视线,必须用能过滤空闲状态的实时IO追踪工具。
用iotop精准筛选活跃IO进程
这一步直接调用内核IO事件接口,只显示此刻真实发生磁盘读写的程序,比top或ps更聚焦于IO行为本身。
先确认iotop是否已安装:运行which iotop,若无输出则执行sudo yum install -y iotop。
【必须使用sudo权限运行,否则无法捕获系统级进程和内核线程的IO数据】
输入sudo iotop -o -d 1启动监控,-o参数强制隐藏所有IO速率为0的进程,-d 1表示每秒刷新一次。
界面默认按IO带宽降序排列,重点关注“IO>”列数值——只要该列不为0,就代表该进程正在读或写硬盘;若数值持续高于5MB/s,基本可判定为当前IO主力。
用pidstat定位高写入进程并识别内核线程
当iotop显示多个进程IO值接近时,需进一步确认哪些是用户进程、哪些是内核线程,防止误杀jbd2等关键服务。
第一步:执行pidstat -d 1,该命令每秒输出一次各进程的KB_rd/s(每秒读取千字节)与KB_wr/s(每秒写入千字节)。
第二步:观察输出中KB_wr/s列,若某PID连续两次采样均超过20000(即20MB/s),立即记录其COMMAND字段名称。
第三步:若发现COMMAND列为jbd2/sda1-8类条目且KB_wr/s偏高,说明ext4日志提交频繁,此时应检查/dev/sda1挂载点下是否存在大量小文件同步写操作,而非直接终止该线程。
用lsof反向验证进程打开的块设备文件
适用于已知可疑进程PID,需确认它是否真的在操作物理磁盘而非缓存文件。
执行lsof -p 12345 | grep -E '(/dev/sd|/dev/nvme)',将12345替换为实际PID。
若输出中出现/dev/sdb2或/dev/nvme0n1p1等设备路径,即可确认该进程正直接读写对应硬盘分区。
注意:普通日志写入进程通常不会直接打开/dev设备,此方法主要用于排查备份工具、数据库直连存储或dd类工具。

















