从 macOS 客户端在 Ubuntu Linux 服务器上挂载 NFS 卷

Jo *_*iss 20 ubuntu nfs mac-osx

我有一个 Ubuntu 20.04 服务器(在我的例子中是一个本地 VM)。如何使用 NFS 从 macOS Catalina 客户端在 Linux 服务器上挂载目录?

Jo *_*iss 42

设置 Linux 服务器

  1. 按照Ubuntu NFS 指南安装 NFS 服务器:

    sudo apt install nfs-kernel-server
    
    Run Code Online (Sandbox Code Playgroud)
  2. 编辑/etc/exports

    sudo nano /etc/exports
    
    Run Code Online (Sandbox Code Playgroud)

    现在添加类似这样的一行:

    /home/ubuntu 172.16.238.0/24(insecure,rw,all_squash,anonuid=1000,anongid=1000,no_subtree_check)
    
    Run Code Online (Sandbox Code Playgroud)
    • /home/ubuntu 是要导出的目录
    • 172.16.238.0/24是接受连接的 IP 地址。Mac 客户端的 IP 地址应在此范围内。使用*允许从任何IP地址。(但请注意不要让您的 NFS 服务器可用于整个 Internet!)
    • insecure 表示接受来自非特权(更高)端口号的连接
    • rw 表示读写
    • all_squash,anonuid=1000,anongid=1000强制所有读取和写入由 UID/GID 1000 的用户/组执行(1000 是ubuntu我服务器上的默认用户/组)。id在服务器上运行以找出您的 UID/GID。除非您的 Ubuntu 服务器和 Mac 客户端为主用户使用相同的 UID/GID,否则您需要这些选项。
    • no_subtree_check 是一个性能的东西
  3. 保存文件并运行

    sudo exportfs -vra
    
    Run Code Online (Sandbox Code Playgroud)

    重新加载 NFS 导出。(我不确定是否需要该-a选项。)

设置 Mac 客户端

  1. 在 macOS 客户端上,编辑/etc/auto_master文件(记录在 中auto_master man page):

    sudo nano /etc/auto_master
    
    Run Code Online (Sandbox Code Playgroud)

    并将以以下开头的行更改为/net以下内容(或在必要时添加):

    /net                    -hosts          -nobrowse,nosuid,locallocks,nfc,actimeo=1
    
    Run Code Online (Sandbox Code Playgroud)
    • locallocks在客户端而不是服务器上创建锁。没有这个,Finder 会变得很慢并且需要很长时间才能显示目录。
    • nfc 使 UTF-8 文件名有效
    • actimeo=1将属性缓存超时设置得尽可能短。请注意,将其设置为0(或添加noac)会导致 Finder 在服务器上删除文件时不会注意到,因此我们无法使用它。
    • 请注意,我们没有nfsvers=4在这里使用。我在 Mac 上遇到了内核恐慌,所以我回到了默认值 (NFSv3)。

    注意:某些 macOS 软件更新似乎可以覆盖此文件并删除您的更改。我发现自己必须每年一次左右回到这个答案,重新应用更改。

  2. 通过运行刷新自动挂载

    sudo automount -vc
    
    Run Code Online (Sandbox Code Playgroud)

    (如果您以前尝试挂载NFS卷,首先卸载它,就像这样:sudo umount -f /net/fileserver.local/home/ubuntu

  3. 在 Finder 菜单中,选择 Go -> Go to Folder,然后键入/net/SERVER_HOST_NAME,例如/net/fileserver.local

    您应该在那里找到导出的目录,例如在/net/fileserver.local/home/ubuntu. 将此目录拖到 Finder 侧边栏,以便日后轻松访问。

  • 只是一个简短的评论,如果您只想在 mac 端“即时”安装,这对我有用:`sudo mount -t nfs -o resvport 172.16.238.x:/home/ubuntu /Users/xyz/ Ubuntu` (5认同)
  • 人们没有意识到这个精彩的答案背后有多少反复试验。在挂载(或`rsync`ing)非MacOS服务器时,“nfc”部分尤其重要。一开始您不会注意到,但 UTF-8 在 OS X 上与其他地方不同。没有它,您的文件名很可能会出现乱码,并且需要连续数小时才能稍后修复。我知道我不能用评论来表达“谢谢”,所以我就在这里结束吧;) (3认同)