如何在 Ubuntu 20.04 LTS 上安装 NFS 服务器

在本教程中,我们将向您展示如何在 Ubuntu 20.04 LTS 上安装 NFS 服务器。 对于那些不知道的人,NFS 或网络文件系统是一种分布式文件系统协议。 它可以帮助您通过网络与他人共享文件和整个目录。 它允许远程系统上的程序相互共享和访问信息,就像在本地机器上可用一样。 该技术使您可以灵活地在多个系统上共享资源。

本文假设您至少具备 Linux 的基本知识,知道如何使用 shell,最重要的是,您将站点托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户中运行,否则您可能需要添加 ‘sudo‘ 到获得 root 权限的命令。 我将向您展示如何在 Ubuntu 20.04 (Focal Fossa) 上逐步安装 NFS 服务器。 您可以按照针对 Ubuntu 18.04、16.04 和任何其他基于 Debian 的发行版(如 Linux Mint)的相同说明进行操作。

我们使用两台机器,一台运行 Ubuntu 20.04,它将充当 NFS 服务器,另一台运行我们将安装共享的任何其他 Linux 发行版。 本示例中的机器具有以下 IP:

NFS Server IP: 192.168.77.20 NFS Clients IPs: From the 192.168.77.0/24 range

在 Ubuntu 20.04 LTS Focal Fossa 上安装 NFS 服务器

步骤 1. 首先,通过运行以下命令确保所有系统包都是最新的 apt 终端中的命令。

sudo apt update sudo apt upgrade

步骤 2. 在 Ubuntu 20.04 上安装 NFS 服务器。

现在我们运行以下命令来安装 NFS 内核服务器包:

sudo apt install nfs-kernel-server

您可以验证是否 nfs-server 服务正在运行,如图所示:

sudo systemctl status nfs-server

步骤 3. 在主机上创建共享目录。

创建将在客户端系统之间共享的目录:

sudo mkdir /var/nfs/general -p

由于我们希望客户端系统拥有对这个共享目录的完全访问权限,我们需要删除所有限制访问的目录权限:

sudo chown nobody:nogroup /var/nfs/general

步骤 4. 在主机上配置 NFS。

我们将深入研究 NFS 配置文件以设置这些资源的共享:

sudo nano /etc/s

添加以下几行:

/var/nfs/general client_ip(rw,sync,no_subtree_check) /home client_ip(rw,sync,no_root_squash,no_subtree_check)

对于出口的基本选项:

选项 描述
权重 允许对 NFS 卷的读取和写入请求。
仅允许对 NFS 卷的读取请求。
同步 只有在将更改提交到稳定存储后才回复请求。 (默认)
异步 此选项允许 NFS 服务器违反 NFS 协议并在该请求所做的任何更改提交到稳定存储之前回复请求。
安全的 此选项要求请求源自小于 IPPORT_RESERVED (1024) 的 Internet 端口。 (默认)
没有安全感 此选项接受所有端口。
延迟 如果怀疑另一个相关的写入请求可能正在进行或可能很快到达,则稍微延迟向光盘提交写入请求。 (默认)
无延迟 如果还设置了 async,则此选项无效。 如果 NFS 服务器怀疑另一个相关的写入请求可能正在进行或即将到达,它通常会稍微延迟向磁盘提交写入请求。 这允许将多个写入请求提交到磁盘,并通过一个操作来提高性能。 如果 NFS 服务器主要接收小的无关请求,这种行为实际上会降低性能,因此 no_wdelay 可用于将其关闭。
subtree_check 此选项启用子树检查。 (默认)
no_subtree_check 此选项禁用子树检查,这具有轻微的安全隐患,但在某些情况下可以提高可靠性。
root_squash 将请求从 uid/gid 0 映射到匿名 uid/gid。 请注意,这不适用于可能同样敏感的任何其他 uid 或 gid,例如用户 bin 或组员工。
no_root_squash 关闭根压扁。 此选项主要用于无盘客户端。
all_squash 将所有 uid 和 gid 映射到匿名用户。 对 NFS 导出的公共 FTP 目录、新闻假脱机目录等很有用。
no_all_squash 关闭所有挤压。 (默认)
anonuid = UID 这些选项明确设置匿名帐户的 uid 和 gid。 此选项主要用于 PC/NFS 客户端,您可能希望所有请求都来自一个用户。 例如,考虑下面示例部分中 /home/joe 的导出条目,它将所有请求映射到 uid 150。
anongid = GID 阅读以上(anonuid=UID)

最后,重新启动 NFS 服务器以应用更改:

sudo systemctl restart nfs-kernel-server

步骤 5. 配置防火墙。

您需要允许通过防火墙访问,否则将无法访问和挂载共享目录。 要实现这一点,请运行以下命令:

sudo ufw allow from 192.168.77.0/24 to any port nfs sudo ufw enable sudo ufw status

步骤 6. 设置 NFS 客户端。

在客户端机器上,我们只需要安装挂载远程 NFS 文件系统所需的工具。

  • 在 Debian 和 Ubuntu 上安装 NFS 客户端

运行以下命令进行安装:

sudo apt install nfs-common
  • 在客户端上创建挂载点。

现在我们为客户端上的挂载创建两个目录:

sudo mkdir -p /nfs/general sudo mkdir -p /nfs/home

接下来,使用主机的 IP 地址挂载共享:

sudo mount host_ip:/var/nfs/general /nfs/general sudo mount host_ip:/home /nfs/home

使用 mount 或 df 命令:

df -h

要在重新启动时永久安装,请打开 /etc/fstab 文件并添加以下几行:

sudo nano /etc/fstab

添加以下行:

192.168.77.10:/var/nfs/general /nfs/general  nfs defaults,timeo=900,retrans=5,_netdev 0 0 192.168.77.10:/home /nfs/home                nfs defaults,timeo=900,retrans=5,_netdev 0 0

步骤 7. 测试 NFS 共享。

现在我们创建一个测试文件到 /var/nfs/general 分享:

sudo touch /nfs/general/general.test

检查其所有权:

$ ls -l /nfs/home/home.test -rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test

步骤 8. 卸载 NFS 文件系统。

如果不再需要远程 NFS 共享,您可以使用 umount 命令:

sudo umount /general

恭喜! 您已成功安装 NFS 服务器。 感谢您使用本教程在 Ubuntu 20.04 LTS Focal Fossa 系统上安装 NFS 服务器。 如需更多帮助或有用信息,我们建议您查看 NFS 官方网站.