我有一台机器安装了另一台机器的 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
尝试使用背景支架。
背景 / 背景
确定挂载导出失败时 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)