文章目录
- 说明
- 解决方法
- 首先排除不是系统问题
- 验证挂载信息
- 追踪df进程
- strace命令
- 安装strace命令
- 定位df命令卡在哪
- 解决卡住的进程
- 问题解决,验证
说明
- 额 今天收到反馈,虚拟机执行df命令卡住
- 卡住状态如下图
解决方法
首先排除不是系统问题
- 很简单,执行除了df命令以外的其他命令,如果都是正常的,那么就是df这个命令的问题。如果其他命令也执行不了,可能就是系统死机了,直接重启吧,重启可以解决99%的问题。
- 我这除了df命令卡住以外,其他命令一切正常,就可以排除系统问题,可以知道是df的这个命令的问题
验证挂载信息
-
那么df命令为啥会卡住呢,一般来说,就是挂载的某个文件出问题了,所以,出现这种问题,一定有多余的挂载,所以先查看fstab文件,里面是不是有多余的挂载信息,如我这,就额外有3个挂载,那么肯定就是其中某一个挂载出问题了
-
最简单的方法,直接卸载这些多余的挂载信息,df卡住的问题基本就解决了
-
因为我这是业务方有业务的虚拟机,所以我肯定不能盲目的卸载他们的挂载,所以我需要下一步验证是否是这些挂载的问题,问了业务方,说可以卸载,但多了一个反问,我其他服务器上都有这些挂载,但其他服务器没问题,所以他们觉得我这个怀疑是错误的, 那我必须得专业,那就不慌卸载,先排查确定是不是这个挂载的问题, 不然卸载了还是卡的话,群里几十号人看着呢,我的专业权威性会受到一定影响。 改用专业的方式解决这个问题
追踪df进程
strace命令
- 既然要追踪,那么就需要用到一个命令了,
strace
,这个命令就是追踪用的,简单说明一下:-
一、strace 是什么?
按照 strace 官网的描述,strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 -
strace 底层使用内核的 ptrace 特性来实现其功能。
-
在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace 作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。
-
使用方法
-
- 上面呢是简单说明,详细呢,放一个别人的优秀博文链接,想了解的去看看吧
strace 命令详解
安装strace命令
- 如果不是安装图形化,应该是不集成这个命令的,直接安装一下就好了
yum install strace -y
定位df命令卡在哪
- 直接执行
strace df
如下,会生成很多内容,不要慌,这是正常的,会列出所有df命令中的输出内容【相当于输出自检内容】
- 直接看最后一行的内容,如我这,有一个
statfs("/mnt/k8s-app-logs",_
,意思就是卡在这个路径了,相当于自检不过,而这个/mnt开头的,一般就是挂载信息了
- 而fstab里面就有一行
/mnt/k8s-app-logs
的挂载信息,那么问题就定位到了。确实是挂载的问题
定位到问题了,就可以再次咨询是否可以卸载了
解决卡住的进程
- 上面定位到卡在
/mnt/kis-app-logs
了,那么直接卸载这个就可以了,命令umount -l(小写L) 挂载路径
【也有可能是服务或进进程卡死,如果是服务卡死了,重启服务,我这是挂载的问题嘛,所以就卸载咯】
问题解决,验证
- 现在再次执行df,一切正常,问题解决
- 通知用户