CentOS7中df命令卡死故障排查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7中df命令卡死故障排查相关的知识,希望对你有一定的参考价值。

系统信息

CentOS Linux release 7.2.1511 (Core)

故障排查过程

使用strace df命令对进程进行追踪,结果如下:

...
stat("/sys/fs/cgroup/cpu,cpuacct", st_mode=S_IFDIR|0755, st_size=0, ...) = 0
stat("/sys/fs/cgroup/blkio", st_mode=S_IFDIR|0755, st_size=0, ...) = 0
stat("/sys/fs/cgroup/hugetlb", st_mode=S_IFDIR|0755, st_size=0, ...) = 0
stat("/sys/fs/cgroup/memory", st_mode=S_IFDIR|0755, st_size=0, ...) = 0
stat("/sys/kernel/config", st_mode=S_IFDIR|0755, st_size=0, ...) = 0
stat("/", st_mode=S_IFDIR|0555, st_size=4096, ...) = 0
stat("/proc/sys/fs/binfmt_misc",    #<== 发现卡在这一步了!

故障原因

df 卡住问题在本质上还是由于 systemd 和 kernel 之间存在竞争而引起的, 导致其它程序访问挂载点的时候出现 hang 住的现象。

根据redhat bugzilla的描述, 只要解决掉 mount 和 automount 过程中可能产生的竞争即可, 我们可以通过关闭proc-sys-fs-binfmt_misc.automount释放已经存在的竞争来解决 df hang 住的问题。

解决方法

根据上面的原因说明,整体解决方式有三种:

  • (1)systemctl restart proc-sys-fs-binfmt_misc.automount

  • (2)升级到最新 systemd-219-57 版本;

  • (3)按照红帽知识库的步骤对proc-sys-fs-binfmt_misc.automount进行 mask 操作, 只进行静态的 mount 操作;

说明??:一般使用第一种方式之后,df,find等命令可以正常使用了!

扩充

df命令出现卡住的其他情况:

一般是挂载了nas盘 nas里面文件太多,数据读写操作不正常导致的返回卡住,这里使用命令:strace df -h来判断是否df的进程卡在nas盘上。

相应的解决方法参考如下:

  • (1)耐心等待数据统计完成后返回;

  • (2)卸载 NFS 分区的挂载后重新统计;

  • (3)检查 NFS 分区访问情况;

以上是关于CentOS7中df命令卡死故障排查的主要内容,如果未能解决你的问题,请参考以下文章

应用程序卡死如何排查

Windows系统故障排查

开机故障中的MBR引导故障的排查

[linux]df 磁盘100%Used告警,du显示目录状态良好的故障排查

Java线上故障排查

JAVA线上故障排查全套路