风扇狂转但cpu使用率低,本质是磁盘i/o卡顿导致进程陷入d状态等待,%iowait升高;需用top查d进程、iostat看%util和await、pidstat定位高io进程,并结合dmesg与smartctl排查硬件故障。

先看 %iowait 和 top 里的 D 状态进程
风扇狂转但 top 显示 CPU 使用率不高?别急着换风扇,大概率是磁盘 I/O 卡住了。Linux 中进程进入不可中断睡眠(D 状态)时,CPU 并不执行指令,而是在等磁盘响应——这时 %iowait 会明显升高,top 或 htop 里能看到一堆标记为 D 的进程,尤其是 java、mysqld、rsync 或 dockerd 这类常做大量读写的程序。
实操建议:
- 运行
top,按Shift+P排序后观察是否有持续显示D的进程; - 同时开一个终端跑
iostat -x 1,重点关注%util(接近 100% 表示磁盘饱和)和await(平均每次 I/O 耗时,>30ms 就值得警惕); - 用
pidstat -d 1查哪个 PID 正在发大量r/s或w/s; - 注意:
iotop能直接看到进程级实时 I/O,但需 root 权限,且某些精简版系统未预装。
查 /proc/diskstats 和 lsof +D /path 定位慢盘或卡死路径
有些 I/O 延迟不是来自高吞吐,而是某块盘响应极慢(比如坏道 SATA 盘),或者某个目录被大量小文件塞满(如 /var/log/journal、/tmp、容器 overlay2 下的未清理层)。这类问题不会立刻拉爆 %util,但会让内核重试队列堆积,最终拖垮整机响应,触发 BMC 主动提频风扇。
实操建议:
- 对比
cat /proc/diskstats中各磁盘的ms字段(第14列,I/O 总耗时毫秒),若某盘数值远高于其他(比如相差 10 倍),基本可锁定; - 对疑似挂载点执行
lsof +D /var/log,看是否有进程长期持有大量日志文件句柄(常见于未 rotate 的app.log); - 检查
df -i,inode 耗尽也会导致写入卡顿,尤其在/var/lib/docker或/home下存了海量小文件的场景; - 临时缓解可用
echo 3 > /proc/sys/vm/drop_caches清页缓存(仅对读密集有效),但不能解决根本问题。
用 smartctl 和 dmesg -T | grep -i "ata\|nvme\|error" 排硬件隐患
风扇持续高速运转超过 24 小时,且排除软件负载后仍无改善?该怀疑物理层了。机械盘出现坏道、SSD 主控异常、NVMe 设备掉盘重连失败,都会让内核反复重试 I/O,表现为 dmesg 里刷屏的 ATA bus error、timeout 或 nvme reset 日志,同时伴随 smartctl -a /dev/sdX 中 Reallocated_Sector_Ct、Media_Wearout_Indicator 等关键值告警。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
实操建议:
- 对每块盘执行
smartctl -a /dev/sdX(SATA)或smartctl -a -d nvme /dev/nvme0n1(NVMe),重点看SMART Health Status是否为PASSED,以及Raw_Read_Error_Rate、UDMA_CRC_Error_Count是否非零; - 运行
dmesg -T | grep -i "error\|fail\|reset\|timeout",过滤出最近 1 小时内的磁盘相关报错; - 注意:部分 RAID 卡(如 LSI MegaRAID)会屏蔽底层 SMART,需改用
MegaCli64 -AdpEventLog -GetEvents -f log.txt提取真实事件; - 若确认某盘异常,尽快
dd if=/dev/zero of=/dev/sdX bs=1M count=100测试基础写入是否卡顿(慎用,生产环境请先备份)。
别漏掉 BMC/IPMI 的风扇策略误配置
很多服务器(戴尔 iDRAC、惠普 iLO、超微 IPMI)默认启用“性能优先”风扇模式,即使 CPU 温度才 45℃,也会把风扇拉到 60% 转速以上——这在静音机房里就是持续低频嗡鸣。更麻烦的是,某些固件 bug 会导致 BMC 误读温度传感器(比如把 30℃ 读成 75℃),进而锁死高速档位。
实操建议:
- 用
ipmitool sdr type fan查当前所有风扇 RPM 和状态; - 用
ipmitool sensor get "CPU Temp"对比 BMC 读数与sensors输出,偏差 >10℃ 就可疑; - 尝试切回“平衡”模式:
ipmitool raw 0x30 0x30 0x01 0x01(部分 Dell 支持); - 若 BMC 版本老旧(如 iDRAC 8
- 注意:部分厂商限制非管理员权限调用
ipmitool raw,需提前确认用户角色。
真正棘手的不是风扇本身,而是它背后那个没暴露出来的 I/O 卡点——可能是一条没加索引的 SQL 正在扫全表,也可能是某个容器日志轮转脚本崩溃后不断 open/write/close 同一个文件。排查时别只盯着转速数字,要顺着 D 状态进程、iostat 的 await、dmesg 的 timeout 日志,一层层往下凿。风扇只是哨兵,不是敌人。










