最近用OMV搭建了NFS,希望可以通过外网访问,并且可以自动挂载到mac,在需要的时候可以随时访问。
通过以下配置可以达到这样两点:

  • 让客户端在有使用到 NFS 文件系统的需求时才会自动挂载
  • 当 NFS 文件系统使用完毕后,可以让 NFS 自动卸除,以避免可能的 RPC 错误

创建本地挂载点

首先,需要创建一个由automount服务管理的本地目录。所有远程文件系统都将出现在这个目录下,它充当automount服务的触发器。我将这些远程文件系统保在/Users/zhanghao/nfs目录下。需要使用sudo来创建目录。

注:从Catalina开始,根文件系统现在是只读的。我已经将挂载点移动到用户可写的文件系统/系统/卷/数据.

1
$ sudo mkdir /Users/jamesding/nfs

修改master映射

自动挂载进程读取文件/etc/auto_master以检索它应该控制的目录列表。我已经将我的资源映射放在一个单独的映射文件/etc/auto_nfs中。将/Users/zhanghao/nfs添加到auto_master文件中,编辑auto_master,添加/Users/zhanghao/nfs auto_nfs,如下所示:

1
2
3
4
5
6
7
8
9
#
# Automounter master map
#
/Users/zhanghao/nfs auto_nfs
+auto_master # Use directory service
#/net -hosts -nobrowse,hidefromfinder,nosuid
/home auto_home -nobrowse,hidefromfinder
/Network/Servers -fstab
/- -static

配置好之后,每当你访问/Users/zhanghao/nfs的任何目录,automount进程都会自动检查auto_nfs映射文件,并决定是否需要自动挂载远程文件系统。

创建资源映射文件

假设我们已经在远程服务器上,配置好了一个远程文件系统,它的路径是 /export/allanhao 。

我们决定把它挂载到MacOS上,名字为allanhao。

为了任何时候访问/Users/zhanghao/nfs/allanhao这个目录,MacOS能自动挂载远程服务器上共享的 /export/allanhao。需要在/etc下新建文件auto_nfs,如下:

1
$ sudo touch auto_nfs

在/etc/auto_nfs文件里面添加映射关系数据,如下:

1
allanhao -rw,bg,soft,rsize=32768,wsize=32768 xxx.com:/export/allanhao

使配置生效

1
$ sudo  automount -vc

其他可选的配置

可以在/etc/autofs.conf配置文件中更改其他选项。比较常用的选项是挂载超时时间。如果该文件系统一段时间内没有任何访问,系统就会将它卸载。在MacOS附带的/etc/autofs.conf中默认设置为1小时(3600秒)

1
2
3
4
5
# The number of seconds after which an automounted file system will
# be unmounted if it hasn't been referred to within that period of
# time. The default is 10 minutes (600 seconds).
# This is equivalent to the -t option in automount(8).
AUTOMOUNT_TIMEOUT=3600

与Finder的兼容

需要注意的是,以这种方式自动加载的文件系统,不会自动显示在Finder的侧栏中。它们也不会自动以磁盘图标的形式出现在桌面上。

我个人推荐的技巧是,将/Users/zhanghao/nfs这个文件夹添加到 个人收藏 里。

本文参考自:https://zhuanlan.zhihu.com/p/288594630