poetry
问题
只要涉及到根目录,使用ls和df命令就会出现卡死情况。
1 | [root@zen] pwd |
踩坑
1、起初在网上找了一些方法,大多是目录挂载的问题;里面叫你用strace定位问题,然后在lstate的时候会发现是目录没挂载上去,但是我用strace的时候,是正常退出的,因为流程过长,strace的log放在结尾了。
类似于这样:
https://blog.51cto.com/chaichuan/2104093
https://blog.csdn.net/u010801696/article/details/78490103
2、后来发现可能是日志文件过大,或者是文件细碎导致ls太慢,通常是/var/spool/postfix/这个目录下的maildrop太大,但是我看了一下我的,并没有太大。maildrop 爆满的问题一般是 crontab 未屏蔽错误造成的,可以将crontab里的条目指定到&>/dev/null
1 | [root@zen]# ll /var/spool/postfix/ |
3、第三种可能是磁盘挂载的问题,根目录丢失之类的。
1 | cat /etc/fstab |
/etc/fstab 中的挂载点是开机加载的
/etc/mtab 中的挂载点是内核动态实时更新的
简单来说就是一次修复挂载的问题,但是我做完这几部操作,依旧没有用
解决
其实和另一台服务器有关,我们暂时把它称之为O[other],我们这台服务器为M[me],O上开启了NFS服务,Me服务器挂载了O上的磁盘。过了段时间,O服务器进行了重装,但是M服务器还在挂载O上的磁盘,此时other服务器没有开启NFS服务,但是Me服务器依旧挂载着O的磁盘。
于是执行ls / 命令的时候,me服务器加载目录,加载前几个好好的,在strace中可以看到,但加载到/mount_point的时候,就会向O服务器发送请求,[应该是某个NFSBug,明明O上的NFS Down了,这个M服务器还是在一直等待响应],于是看上去就像是me服务器卡死了,其实它是在等待NFS的响应。
采取的解决措施:重启,有尝试过umount卸载挂载点,但会卡住。
2020/6/22 看鸟哥Linux私房菜发现也有这方面的情况:
只要有用到文件系统, 那么整个目录树系统就会主动的去查询全部的挂载点。如果你的 NFS 服务器与客户端之间的联机因为网络问题, 或者是服务器端先关机了,却没有通知客户端,那么客户端只要动到文件系统的指令 (例如 df, ls, cp 等等) ,整个系统就会慢到爆!因为你必须要等到文件系统搜寻等待逾时后,系统才会饶了你!(鸟哥等过 df 指令 30 分钟过…)
参数 | 参数功能 | 预设参数 |
---|---|---|
fg,bg | 当执行挂载时,该挂载的行为会在前景 (fg) 还是在背景 (bg) 执行? 若在前景执行时,则 mount 会持续尝试挂载,直到成功或 time out 为止,若为背景执行, 则 mount 会在背景持续多次进行 mount ,而不会影响到前景的程序操作。 如果你的网络联机有点不稳定,或是服务器常常需要开关机,那建议使用 bg 比较妥当。 | fg |
soft,hard | 如果是 hard 的情况,则当两者之间有任何一部主机脱机,则 RPC 会持续的呼叫,直到对方恢复联机为止。如果是 soft 的话,那 RPC 会在 time out 后『重复』呼叫,而非『持续』呼叫, 因此系统的延迟会比较不这么明显。同上,如果你的服务器可能开开关关,建议用 soft 喔! | hard |
intr | 当你使用上头提到的 hard 方式挂载时,若加上 intr 这个参数, 则当 RPC 持续呼叫中,该次的呼叫是可以被中断的 (interrupted)。 | 没有 |
rsize,wsize | 读出(rsize)与写入(wsize)的区块大小 (block size)。 这个设定值可以影响客户端与服务器端传输数据的缓冲记忆容量。一般来说, 如果在局域网络内 (LAN) ,并且客户端与服务器端都具有足够的内存,那这个值可以设定大一点, 比如说 32768 (bytes) 等,提升缓冲记忆区块将可提升 NFS 文件系统的传输能力! 但要注意设定的值也不要太大,最好是达到网络能够传输的最大值为限。 | rsize=1024 wsize=1024 |
for example:
1 | $ mount -t nfs -o nosuid,noexec,nodev,rw 192.168.1.1:/data /tmp |
最后补充下NFS无法挂载的原因分析:
- 客户端主机和IP网段不被允许使用, ‘mount to NFS x.x.x.x failed:system error connection refused’
- 服务器或客户端服务未启动,’mount to NFS x.x.x.x failed:RPC Error : programe not registered’
- 被防火墙拦截