远程挂载 NFS 共享目录引发死机问题
集群的存储空间有限,把一些历史的归档数据放在了公司的另外一台老旧存储服务器上,并使用 NFS 把它挂载到了 log 节点。周末的时候机房空调故障,旧存储服务器挂掉了!周一上班,在集群登陆节点使用
df -Th
查看磁盘使用情况,发现df
命令卡死,查看挂载盘目录的时候也卡死,因此写下本文警示自己。
环境描述
A 机器(192.168.1.103), B 机器上挂载了 A 机器上的 hiseq3000 目录到本机的 /mnt/hiseq3000 目录(命令:mount -t nfs 192.168.1.103:/hiseq3000 /mnt/hiseq3000
)
故障描述
现在因 A 机器因故障无法访问,登录 B 机器以后执行mount
,df -h
,ll /mnt/hiseq3000
等关于/mnt
挂载点的时候都会卡住,ctrl + c
、ctrl + z
都不能结束,只能退出重新登录。
解决方法
[root@log01 ~]# umount -f /mnt/hiseq3000
umount2: Device or resource busy
umount.nfs: /mnt/hiseq3000: device is busy
[root@log01 ~]# umount -f /mnt/hiseq3000
umount2: Device or resource busy
umount.nfs: /mnt/hiseq3000: device is busy
[root@log01 ~]# umount -f /mnt/hiseq3000
umount2: Device or resource busy
umount.nfs: /mnt/hiseq3000: device is busy
[root@log01 ~]# umount -f /mnt/hiseq3000
umount2: Invalid argument
umount: /mnt/hiseq3000: not mounted
前面貌似执行umount -f /mnt/hiseq3000
强制卸载时不起作用的,但是最后是能卸载掉的!!!
原因分析
当 NFS 服务端停止提供挂载服务时,客户端会出现卡死的情况,导致文件系统不能查看相关信息,此时可以重新启动 nfs 服务端来恢复客户端的查询功能;如果不重启 nfs 服务端的话,只能通过上面的umount -f
进行强制卸载。
有人说为了避免这个问题,挂载的时候要加和上 soft 选项。(没亲自试过)
而导致此问题的原因是在使用 nfs 挂载的时候使用的是默认的 hard-mount 挂载功能,当服务端停止服务时,客户端加载 nfs 不成功,就会不断的重试,直到服务端恢复之前,挂载目录都会出现卡死的情况。
因此需要在挂载时更换为 soft-mount,使用此功能挂载后,当服务端出现停止服务的情况时,会重试 retry 设定的固定次数。如果尝试所设定的次数后都不成功,则放弃此操作,返回错误信息 "Connect time out"。
挂载命令:
mount -t nfs -o rw,intr,soft,timeo=30,retry=3 nfs-server://share-path local-path
/etc/fstab:
nfs-server:/share-path /local-path nfs rw,soft,intr 0 0
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。