有什么方法可以让 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
可用的指南这里,但下面我将列出你应该需要遵循才能运行。
确保
autofs
已安装。该软件包通常名为“autofs”在 Ubuntu 上,您可以通过以 root 身份运行来安装它
apt-get install autofs
。将以下条目(以 root 身份)添加到
/etc/auto.master
/home/Shares /etc/auto.shares
创建文件
/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
从中删除这些目录的静态挂载点
/etc/fstab
重新加载 autofs 服务。在 Ubuntu 上,您可以
service reload autofs
以 root 身份运行来执行此操作。测试以确保它有效。运行
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
选项,可以让它按您想要的方式工作。