如何确保 NFS 共享保持挂载状态?

如何确保 NFS 共享保持挂载状态?

我有一台机器安装了另一台机器的 NFS 共享。

但是客户端计算机的启动速度比服务器快,因此尝试从服务器安装 NFS 共享时会出现错误。周末我停电了,当我在远程时,这可能会很烦人。

我希望确保 NFS 共享始终处于挂载状态,这样,如果客户端检测到共享不存在,它将尝试重新挂载它。我思考这可能涉及 autofs 和/或 upstart 以确保共享保持挂载,但我不知道如何做到这一点。

我通过以下方法安装它/etc/fstab

jillybean.local:/share /share nfs rsize=32768,rw,soft,intr

答案1

您可以做多种事情:

  • retry=n(n 为代表分钟的整数)添加到挂载选项中,/etc/fstab以防 NFS 在启动时不可用
  • 使用 autofs,正如你建议的那样(很多 How-Tos 返回这个谷歌搜索
  • 创建一些简单的守护进程,当 NFS 共享不可用时退出,并在使用参数调用时挂载它start——因此您可以将其设置为 upstart 事件respawn(即,当以非中止方式中止时自动重新启动service xyz stop)。将其与上面的结合起来retry=n
  • 设置一个 cron 作业来检查 NFS 共享上的某些(现有)目录 - 并mount在未找到时运行命令(再次将其与 结合起来retry=n

答案2

考虑创建一个包含以下内容的 bash 脚本:

#!/bin/bash
if ! grep -qs '/share' /proc/mounts; then
    mount jillybean.local:/share /share
fi

赋予其 exe 权限。然后将脚本放入crontab,根据需要进行定时运行。例如,如果您知道您的机器在 7 点开机,您可以考虑从 7 点到 8 点每分钟执行一次脚本:

0-15 7-8 * * * /path/tho/your/script.sh

答案3

尝试使用背景支架。

来自常规 nfs fstab 手册页

背景 / 背景

确定挂载导出失败时 mount(8) 命令的行为方式。如果挂载请求的任何部分超时或彻底失败,fg 选项会导致 mount(8) 以错误状态退出。这称为“前台”挂载,如果未指定 fg 或 bg 挂载选项,则这是默认行为。

如果指定了 bg 选项,超时或失败会导致 mount(8) 命令派生一个子命令,该子命令将继续尝试挂载导出。父命令会立即返回并返回零退出代码。这称为“后台”挂载。

如果缺少本地挂载点目录,mount(8) 命令会认为挂载请求已超时。这样,在系统初始化期间,/etc/fstab 中指定的嵌套 NFS 挂载就可以按任意顺序进行,即使某些 NFS 服务器尚未可用。或者,可以使用自动挂载程序解决这些问题(有关详细信息,请参阅 automount(8))。

执行后台挂载时,默认重试时间为 10000 分钟。来自同一页面:

重试=n

mount(8) 命令在放弃之前在前台或后台重试 NFS 挂载操作的分钟数。如果未指定此选项,则前台挂载的默认值为 2 分钟,后台挂载的默认值为 10000 分钟(一周差 80 分钟)。如果指定零值,mount(8) 命令将在第一次失败后立即退出。

答案4

nfs 可以自动重新连接

用于自动重新连接noresvport

在客户端使用noresvport

sudo mount -t nfs [2b01:7f8:1a:f243::a]:/data/ /data/ -o noresvport

在服务器上使用insecure

/data/ 2831:650:5b00:9232::9(rw,sync,no_subtree_check,no_root_squash,insecure)

相关内容