前两天朋友找我帮忙,说他家的路由器刷完固件后自动做了次文件系统检查,结果整个网络变得特别卡,网页打不开,视频缓存半天。一开始以为是固件问题,换了几个版本都没解决。后来查了一圈才发现,问题出在文件系统检查后的残留状态和资源占用上。
文件系统检查为啥会让设备变卡?
很多人不知道,像OpenWrt这类基于Linux的路由器系统,在启动时如果检测到异常(比如非法关机),会自动运行e2fsck之类的工具做文件系统检查。这个过程本身是保护数据完整的,但检查完成后,系统可能没完全恢复正常状态。
比如,某些临时文件没清理干净,日志疯狂输出,或者关键服务因为检查延迟启动,都会导致CPU或I/O负载短暂飙升。这时候你去连Wi-Fi,自然感觉“变卡了”。
看看是不是这几个地方出了问题
先别急着重启。登录路由器后台或者用SSH连进去,执行下面命令查看当前负载:
top
如果看到e2fsck还在跑,或者jbd2(日志块设备)占着高IO,那就说明系统还没从检查中恢复过来。这种情况等个几分钟通常能自己缓过来。
但如果已经过了十几分钟还是卡,就得手动干预了。可以尝试重启网络服务:
/etc/init.d/network restart
有时候NetworkManager或dnsmasq在文件系统检查后没能正确加载配置,导致DHCP响应慢、DNS解析卡顿,看起来就像网速不行。
别忽略存储介质的老化问题
特别是老款路由器用的是老旧的Flash芯片,频繁的文件系统检查会加重读写负担。一旦存储出现坏块,每次检查都要反复重试,时间越拖越长,设备也就越来越卡。
有个用户反馈,他的路由器每次开机都要检查五六分钟,进去一看dmesg日志,满屏都是EXT4-fs error。最后换了个U盘做根文件系统才解决。所以如果你的设备用了三五年以上,得考虑是不是硬件撑不住了。
预防比补救更重要
平时尽量避免直接拔电源,一定要通过Web界面或命令行正常关机。还可以定期手动检查文件系统健康状况:
e2fsck -n /dev/sda1
这里的-n参数表示只读模式检查,不会改动任何数据,适合日常巡检。发现问题再安排维护窗口处理。
另外,一些定制固件支持将日志重定向到内存或远程服务器,减少对本地存储的写入频率,也能降低触发文件系统检查的概率。