如何让 Linux 在 nfs 服务器宕机时停止抱怨?

如何让 Linux 在 nfs 服务器宕机时停止抱怨?

有什么方法可以让 Linux 放弃尝试重新连接 nfs 共享?我目前在 fstab 中拥有它们。我希望它们在启动时尝试挂载,然后只尝试手动重新连接。它在下面抱怨的共享位于一台并非一直打开的机器上。

$ tail /var/log/syslog
Mar 17 10:13:26 Inspiron kernel: [429184.924089] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:30 Inspiron kernel: [429189.132255] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:37 Inspiron kernel: [429196.156051] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:37 Inspiron kernel: [429196.156072] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:42 Inspiron kernel: [429200.364084] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:46 Inspiron kernel: [429204.572092] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:53 Inspiron kernel: [429211.596078] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:53 Inspiron kernel: [429211.596122] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:57 Inspiron kernel: [429215.804094] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:14:01 Inspiron kernel: [429220.012094] nfs: server 192.168.1.200 not responding, timed out



$ cat /etc/fstab 
192.168.1.200:/mnt/Raid/TV_SHOWS /home/Shares/TV_SHOWS nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user
192.168.1.200:/mnt/Raid/MOVIES /home/Shares/Movies nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user
192.168.1.200:/mnt/Raid/DocuTV /home/Shares/DocuTV nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user

更新:

我已经用附加标志修改了我的 fstab,但出于某种原因,问题仍然存在。一旦共享被挂载并且 nfs 服务器关闭,它就会继续尝试重新建立连接,而不仅仅是卸载它们。我认为,仅当 nfs 服务器在挂载共享时发生故障时才会出现此问题。

192.168.1.200:/mnt/Raid/TV_SHOWS /home/Shares/TV_SHOWS nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail
192.168.1.200:/mnt/Raid/MOVIES /home/Shares/Movies nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail
192.168.1.200:/mnt/Raid/DocuTV /home/Shares/DocuTV nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail

更新2: 我试过了 bg,soft,重新传输=100,重试=0,无失败

仍然当失去连接时似乎没有卸载共享。每隔几分钟,我就会收到几条有关每次分享的超时消息。

解决方案: 我按照 antipode 的说明做了一些修改

auto.master
/- /etc/auto.shares --timeout=60

基本挂载点是 /,而不是 /home/user/Shares。这解决了我同时使用 autofs+fstab 时遇到的一些问题。60 秒后共享卸载。

auto.shares
/home/user/Shares/TV_SHOWS    -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/TV_SHOWS
/home/user/Shares/Movies      -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/MOVIES
/home/user/Shares/DocuTV      -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/DocuTV

注意 nfs 服务器 IP 后面的冒号。UID/GID 以用户身份而不是 root 身份挂载共享。

答案1

编辑:由于问题仅在共享已成功挂载之后 NFS 服务器关闭时才会发生,因此之前的答案没有帮助。

我现在唯一的建议是使用autofs按需挂载 NFS 共享,而不是在启动时挂载它们。这样,系统只会在您尝试访问 NFS 共享时尝试挂载它们,并在一段时间不活动后自动卸载它们。

有关于如何使用autofs可用的指南这里,但下面我将列出你应该需要遵循才能运行。

  1. 确保autofs已安装。该软件包通常名为“autofs”

    在 Ubuntu 上,您可以通过以 root 身份运行来安装它apt-get install autofs

  2. 将以下条目(以 root 身份)添加到/etc/auto.master

    /home/Shares /etc/auto.shares
    
  3. 创建文件/etc/auto.shares(以 root 身份),内容如下:

    TV_SHOWS    -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/TV_SHOWS
    Movies      -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/MOVIES
    DocuTV      -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/DocuTV
    
  4. 从中删除这些目录的静态挂载点/etc/fstab

  5. 重新加载 autofs 服务。在 Ubuntu 上,您可以service reload autofs以 root 身份运行来执行此操作。

  6. 测试以确保它有效。运行ls /home/Shares/TV_SHOWS并查看它是否列出了您的文件。


笔记:由于问题中添加了更多信息,以下答案不再适用。不过,我会把它留在这里,以防将来对某人有所帮助。


您可以尝试将该nofail选项添加到 /etc/fstab 中的所有内容中。

来自安装手册页

nofail

    Do not report errors for this device if it does not exist.

这应该会导致系统在启动时尝试安装该设备,但如果无法安装则放弃。然后您可以稍后手动尝试安装该设备。

还有另一个可能有用的选项retry:(nfs 手册页

retry=n

    The number of minutes that the mount(8) command retries an NFS mount
    operation in the foreground or background before giving up. If this
    option is not specified, the default value for foreground mounts is 2
    minutes, and the default value for background mounts is 10000 minutes
    (80 minutes shy of one week). If a value of zero is specified, the
    mount(8) command exits immediately after the first failure.

默认情况下,NFS 挂载是前台挂载,因此在尝试 2 分钟后应该会失败。如果 NFS 服务器不可用,您可以手动将其设置为一定时间,使其更快地失败,结合该nofail选项,可以让它按您想要的方式工作。

相关内容