问题描述
正式环境出现了不能上传图片,图片不能浏览的问题,上正式环境进行排查,在使用df -h命令的时候卡住不动了,其他命令没问题。运行内存以及cpu都是正常的。 正式环境服务器 /data/xxx/upload的目录是进行了nfs挂载
在取消挂载之前找出原挂载方式
代码语言:javascript复制[root@node01 ~]# mount -l | grep /data/xxx/upload
192.168.x.10:/data/upload on /data/xxx/upload type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.x.4,local_lock=none,addr=192.168.x.10)
或者通过
[root@node01 ~]# cat /etc/mtab | grep /data/xxx/upload
192.168.x.10:/data/upload /data/xxx/upload nfs4 rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.x.4,local_lock=none,addr=192.168.x.10 0 0
可以看出服务端与客户端的nfs挂载方式
问题解决
首先可以先跟踪df -h命令在哪里卡住了 使用strace命令
代码语言:javascript复制strace df -h
如果服务器没这个命令,进行安装
代码语言:javascript复制yum -y install strace
如下,就准确的知道df -h这个命令卡在了哪里,果然确实是nfs挂载的那个目录
尝试使用umount取消挂载但是会卡住不动 当有别的程序正在访问挂载的文件时,也会提示卸载失败,通过 lsof /xxx 查看是哪个进程占用了/xxx,kill -9 $pid ,然后再卸载,进程少的时候这个方便一些,一旦进程量过大就不方便了
加参数 -f 也会报错
使用【umount -l /data/xxx/upload】命令可以解决挂载问题 使用:umount -l /xxx (-l : 卸载前检查占用该挂载文件的程序并迅速kill掉,以达到快速卸载的目的) 也可以umount -lf /xxx
代码语言:javascript复制[root@node01 ~]# umount -l /data/xxx/upload
[root@node01 ~]# umount /data/xxx/upload
umount: /data/xxx/upload: not mounted
测试df -h命令是否恢复正常
重新进行挂载 客户端:
代码语言:javascript复制重启nfs:
systemctl stop nfs
systemctl start nfs
服务器端:
代码语言:javascript复制重启nfs、rpcbind
systemctl stop nfs
systemctl stop rpcbind
#让nfs生效
exportfs -rv
启动
systemctl start nfs
systemctl start rpcbind
客户端重新挂载
df -h命令查看
成功解决