Linux常见故障处理之df命令卡住不输出

一、背景说明

朋友咨询Linux系统下输入df -h命令后没有任何输出结果,博主的第一反应是/根分区磁盘空间满了,朋友说cd等其他命令可以执行。博主又猜测可能是有人误定义了命令别名,进一步确认命令卡住在等待输出页面。事后博主想起来可能是共享网络磁盘无法访问导致的,博主曾经遇到过一次nfs挂载配置到了/etc/fstab中,服务器重启之后因为nfs服务端挂掉了导致服务器无法启动。

为了验证博主的想法搭建了一个实验环境,环境说明如下:

  • nfs-server操作系统:centos7.6
  • nfs-client操作系统:centos6.5

二、验证方案

1、搭建NFS服务端

关于NFS服务的搭建我们可以参考博文Linux之centos7环境搭建NFS服务器

root@s76 publicdata\]# systemctl status nfs-server ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d225fcc81a4f433581240fb85be31a6b.png)

2、NFS客户端挂载

客户端上安装showmount软件包,然后挂载nfs共享磁盘即可。

root@localhost\]\~# mount -t nfs 192.168.10.76:/publicdata /test \[root@localhost\]\~# df -hT ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0c05016217594c56b89a581ffd23e334.png)

3、模拟NFS server服务故障

为了模拟NFS server服务故障我们可以停止nfs服务或者通过防火墙阻断NFS服务。

root@s76 publicdata\]# systemctl stop nfs-serve

4、验证df命令

当NFS服务挂掉的情况下,不仅df命令、ls等查看磁盘目录的命令如果涉及到/挂载目录也会出现命令卡住没有输出的情况。df命令还可以通过ctrl+C命令中断回到shell中断,ls命令甚至无法通过ctrl+C或者ctrl+Z命令返回重新执行。

5、恢复NFS server服务再次验证

NFS server服务恢复后再次验证,df -hT命令执行的时候还是会卡住,等个几秒钟,nfs客户端会与NFS server重新建立连接,并正常输出信息。

root@localhost\]\~# df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 ext4 36G 2.0G 32G 6% / tmpfs tmpfs 931M 0 931M 0% /dev/shm /dev/sda1 ext4 291M 39M 238M 14% /boot 192.168.10.76:/publicdata nfs 56G 5.2G 51G 10% /test ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d7b720935ee34c06ad5ba7e859cc254c.png)

6、别名的可能性验证

如下测试结果,如果是正常的"df -h"没有输出不可能是别名的原因,因为别名不能包含空格,如果是错误输入df-h命令是可以通过别名实现如上效果的。当然为了确认别名的问题,我们还可以使用which命令验证确认是否为别名。

root@localhost\]/# alias df-h="echo "";sleep 1000" \[root@localhost\]/# df-h \[root@localhost\]/# which df /bin/df ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/dd2a8a9812e64305b997d8c71a2c51b8.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4dcca48893664e77a1d9466e48901ea8.png)

7、根分区满导致此现象的可能性验证

我们可以尝试将跟分区磁盘空间写满,直到无法写入。虽然显示100%使用,实际上不会是完整的刚好百分百,但是这种情况我们还是可以执行df -h命令。所以经验证根分区满不会导致此现象。

dd if=/dev/zero of=/fill_disk bs=100M count=100

root@localhost\]/# dd if=/dev/zero of=/fill_disk7 bs=1k count=1![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/69b442bff83e4ce98d804f11321719ef.png)

三、NFS server服务宕机的情况重启服务器验证

1、停止nfs server服务

root@s76 publicdata\]# systemctl stop nfs-server

2、将nfs挂载写入到/etc/fstab

root@localhost\]\~# cat /etc/fstab \|grep test 192.168.10.76:/publicdata /test nfs defaults 0 0

3、重启nfs客户端服务器

root@localhost\]\~# reboot

4、控制台登录验证

控制台登录验证对比发现nfs共享磁盘配置在/etc/fstab中会停留在如何页面数分钟,最终还是可以启动成功。如果没有在/etc/fstab中配置NFS共享磁盘自动挂载则很快启动完成。

四、故障原因及处置步骤

一、故障原因分析

如上实验所示,df命令卡住无输出的原因就是nfs共享磁盘无法访问导致。df命令不仅会读取本地磁盘,也会读取挂载的其他任意磁盘,当无法连接到远程的nfs服务的时候就会一直在等待nfs server服务回复消息。

二、建议处置步骤

针对不同业务场景,建议如下:

  • 如果是对于熟悉的环境知道nfs服务所在地址,我们可以登录nfs server服务器启动nfs服务,重新执行命令等待结果输出;
  • 如果是不熟悉的陌生环境,建议先通过history命令查看历史挂载记录,查看/etc/fstab文件等确认可能的nfs server地址,然后登录nfs服务器启动nfs服务后重新挂载。
  • 如果是nfs服务器执行了迁移调整,我们可以先取消nfs服务挂载,然后重新挂载新的nfs共享磁盘。

root@localhost\]\~# umount -a -t nfs

相关推荐
Xの哲學1 分钟前
Linux二层转发: 从数据包到网络之桥的深度解剖
linux·服务器·算法·架构·边缘计算
石像鬼₧魂石11 分钟前
Termux ↔ Windows 靶机 反向连接实操命令清单
linux·windows·学习
啃火龙果的兔子37 分钟前
如何将D:\BaiduNetdiskDownload所有目录下的所有图片复制提取到D:\bacPic
linux·运维·服务器
FF-Studio38 分钟前
RTX 5060 Ti Linux 驱动黑屏避坑指南:CUDA 13.1, Open Kernel 与 BIOS 设置
linux·运维·服务器·cuda
坐吃山猪1 小时前
BrowserUse14-源码-ScreenShot模块-整理
linux·数据库·python
Jelly-小丑鱼1 小时前
Linux搭建syslog日志服务器
linux·服务器·docker·日志服务器·syslog服务器
yilan_n1 小时前
在Linux下使用Termony搭建HNP自验证环境全指南
linux·harmonyos·termony·hnp·命令行适配
爱宇阳1 小时前
Linux 安全加固:禁用 IPv6 ICMP 重定向
linux·安全·智能路由器
让学习成为一种生活方式2 小时前
全基因组重测序上游分析流程--随笔15
linux
阿巴阿巴boer2 小时前
用wsl搭建远程linux服务器
linux·运维·服务器·ssh