NFS挂载点卡死时,需先确认状态(stat /mnt/nfs返回“Transport endpoint is not connected”),再执行sudo umount -f -l /mnt/nfs;若失败,终止NFS客户端线程并清理缓存;最终验证findmnt /mnt/nfs为空且ls不卡顿。

银河麒麟系统中NFS挂载点卡死时,df -h 或 ls /mnt/nfs 会无响应、终端卡住数分钟甚至假死,umount 命令直接报错“device is busy”或彻底阻塞,此时必须绕过内核挂载状态强制清理,否则无法释放挂载点、无法重试新挂载。
确认NFS挂载点已卡死
执行 lsblk 查看设备列表,若目标NFS路径(如 /mnt/nfs)未显示为块设备但 mount | grep nfs 仍存在对应条目,说明挂载已“悬停”在内核态;再运行 stat /mnt/nfs,若命令长时间无输出或返回 Transport endpoint is not connected,即可判定为典型NFS卡死。
这一步不能跳过——误判为普通busy会导致后续操作无效。
尝试标准强制卸载(优先执行)
先用带 -f(force)和 -l(lazy)组合参数的 umount:sudo umount -f -l /mnt/nfs。
-l 参数让内核立即从挂载表移除该条目,用户空间进程不再感知该路径;-f 则向NFS客户端发送强制断连信号。两者配合可解决约70%的软卡死场景,且不破坏系统稳定性。
执行后立刻运行 mount | grep nfs 验证,若输出为空,说明成功;若仍有残留,进入下一步。
终止关联NFS内核线程(关键破局步骤)
卡死本质是内核 NFS 客户端线程陷入不可中断睡眠(D 状态),需定位并唤醒/终结其宿主进程。
第一步:查出挂载点对应的 superblock ID 和 nfsd 进程线索:
cat /proc/mounts | grep nfs | grep "/mnt/nfs"
第二步:提取该挂载的内核任务 PID(非用户进程):
ps aux | grep "nfs" | grep -v "grep" | grep -E "(server|client)"
第三步:对所有疑似 NFS 客户端线程执行强制唤醒:
sudo kill -9 $(ps -eo pid,comm | awk '$2 ~ /^nfs.*client$/ {print $1}')
【注意:此命令会终止全部 NFS 客户端线程,当前所有 NFS 挂载将临时失效,但不会影响本地文件系统】
第四步:清空内核 NFS 缓存并重置状态:
sudo echo 2 > /proc/sys/vm/drop_caches
sudo nfsstat -m
清理残留挂载信息(终极兜底)
若前两步仍失败,说明挂载元数据已损坏,需手动擦除内核挂载记录。
方法一:使用 mount 命令强行覆盖注册表
sudo mount -t nfs4 none /mnt/nfs -o remount,soft,timeo=10,retrans=1
方法二:直接卸载伪设备(仅限 NFSv4)
sudo umount -t nfs4 /mnt/nfs
方法三:暴力清除 /etc/mtab 中残留行(慎用)
sudo sed -i '/\/mnt\/nfs/d' /etc/mtab
【执行前务必先备份:sudo cp /etc/mtab /etc/mtab.bak】
最后验证:findmnt /mnt/nfs 应返回空,ls /mnt/nfs 不再卡顿,目录恢复为普通空目录。

















