问题现象执行df -h查看磁盘空间时命令卡住无响应无法CtrlC中断或中断困难。根本原因系统中挂载了网络文件系统NFS或CIFS/SMB且挂载参数为hard硬挂载。当NFS/CIFS服务端如192.168.1.100网络不通或服务异常时df -h需要向所有挂载点发起statfs()系统调用以获取空间信息该调用会因等待网络存储响应而陷入不可中断睡眠D状态导致命令卡死。排查步骤第一步确认是否存在网络挂载点cat/proc/mounts|grep-Enfs|cifs预期输出示例192.168.1.100:/data/share /mnt/nfs nfs4 rw,relatime,vers4.2,hard,prototcp,timeo600,retrans2,... //192.168.1.200/share /mnt/cifs cifs rw,relatime,...若输出中包含hard关键字说明是硬挂载属于高风险卡死类型。若输出为soft则通常不会导致df卡死应用程序会快速收到超时错误。第二步精准定位卡住的挂载点备选方法如果cat /proc/mounts能正常执行但无法确定具体是哪个挂载点卡住可以使用strace追踪strace-etracestatfsdf-h21|grep-vENOENT观察输出停止在哪个路径上该路径即为问题挂载点。第三步检查NFS服务端连通性辅助确认ping-c3192.168.1.100 telnet192.168.1.1002049# NFS默认端口CIFS为445如果ping不通或端口不通即可确认是服务端失联导致。解决办法方案一懒卸载首选立即生效umount-l/mnt/nfs-llazy umount立即从文件系统树中剥离该挂载点实际清理在后台完成。执行后df -h立刻恢复响应适用于绝大多数场景。方案二强制卸载当方案一无效时umount-f/mnt/nfs-fforce强制卸载仅对NFS有效CIFS可能不支持。如果umount命令本身也卡住按CtrlC中断后尝试方案一。方案三杀掉占用进程后卸载如果卸载时提示target is busy先用fuser找出占用进程并杀掉fuser-mv/mnt/nfs# 查看哪些进程在访问该目录kill-9PID# 杀掉所有列出的PIDumount-l/mnt/nfs# 再次执行懒卸载方案四后台异步卸载终极手段如果连umount -l都无响应将其放入后台执行然后立即使用df -humount-l/mnt/nfsdf-h# 此时大概率已通预防措施永久修复修改/etc/fstab中的挂载参数避免使用hard除非业务有强一致性要求如Oracle RAC。NFS 推荐挂载参数192.168.1.100:/data/share /mnt/nfs nfs4 soft,timeo10,retrans2,vers4.2 0 0CIFS/SMB 推荐挂载参数//192.168.1.200/share /mnt/cifs cifs soft,timeo10,retrans2,usernamexxx,passwordxxx 0 0参数说明soft超时后返回错误给应用程序而非无限重试。timeo10超时时间单位十分之一秒即1秒。retrans2超时后重传次数达到后返回错误。特殊情况提示不要直接重启服务器卡住的进程处于D状态重启可能导致关机过程卡在等待IO阶段耗时数分钟甚至更长。df -h卡住时不要反复执行多次执行只会堆积更多D状态进程消耗系统内存。如果业务必须使用hard如数据库改用以下命令监控NFS状态它们不会触发挂起nfsstat-m# 查看挂载状态cat/proc/self/mountstats# 查看详细统计信息快速决策流程图df -h 卡住 ↓ cat /proc/mounts | grep -E nfs|cifs ← 找出所有网络挂载点 ↓ umount -l /mnt/nfs ← 优先执行懒卸载 ↓ df -h ← 验证是否恢复 ↓如果仍卡 umount -f /mnt/nfs ← 尝试强制卸载 ↓如果umount卡住 umount -l /mnt/nfs ; df -h ← 后台卸载立即查df如果以上步骤执行后问题仍未解决可查看cat /proc/mounts | grep -E nfs|cifs的完整输出进一步分析是否有多个挂载点或特殊协议参数导致。