远程挂载 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 机器以后执行mountdf -hll /mnt/hiseq3000等关于/mnt挂载点的时候都会卡住,ctrl + cctrl + 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



37eaa867-dd22-4dbb-ab15-b1fb478486d5.png — END—

c4ac4ff7-9289-4010-b063-8f49365b37c4.png


b558baee-f20a-44a1-a245-34a14ecb7fd5.gif 戳原文,更有料!

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2020-05-18 11:00  章鱼猫先生  阅读(374)  评论(0编辑  收藏  举报