CentOS Linux release 7.2.1511 (Core)
ide
使用strace df
命令对进程进行追踪,结果以下:rest
... 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 住的现象。code
根据redhat bugzilla
的描述, 只要解决掉 mount 和 automount 过程当中可能产生的竞争便可, 咱们能够经过关闭proc-sys-fs-binfmt_misc.automount
释放已经存在的竞争来解决 df hang 住的问题。进程
根据上面的缘由说明,总体解决方式有三种:get
(1)systemctl restart proc-sys-fs-binfmt_misc.automount
;it
(2)升级到最新 systemd-219-57 版本;io
proc-sys-fs-binfmt_misc.automount
进行 mask 操做, 只进行静态的 mount 操做;说明⚠️:通常使用第一种方式以后,df,find
等命令能够正常使用了!class
通常是挂载了nas盘 nas里面文件太多,数据读写操做不正常致使的返回卡住,这里使用命令:strace df -h
来判断是否df的进程卡在nas盘上。bug
相应的解决方法参考以下:程序
(1)耐心等待数据统计完成后返回;
(2)卸载 NFS 分区的挂载后从新统计;