如何在 Linux 上配置 NFS 客户端和服务器

NFS 由 Sun Microsystems 开发,用于在其系统之间共享文件和目录。 NFS 允许网络上的系统通过 TCP/IP 网络共享文件。 它以客户端-服务器方式运行,其中具有共享目录的系统称为服务器,而访问共享目录的系统称为客户端。 客户端可以通过 NFS 服务器将共享目录挂载到自己的系统上,该系统显示为本地磁盘分区。 然后,客户端可以根据 NFS 服务器分配的权限读取/写入远程 NFS 服务器上的文件。 NFS 的一些特性如下:

  • 用户可以在本地访问远程文件
  • 两台机器不必具有相同的操作系统
  • 它提供了一个集中的存储解决方案
  • 用户可以将他们的数据存储在一个中央位置,因此可以节省本地存储空间。

在这篇文章中,我们将向您展示如何安装 NFS 服务器和客户端、导出共享以及在客户端上挂载/卸载 NFS 共享。

笔记:

为了演示,我们将使用具有以下详细信息的两台机器:

NFS 主机 (Debian 10)

  • 主机名:nfs
  • IP:192.168.72.158

NFS 客户端 (Debian 10)

  • 主机名:客户端
  • IP:192.168.72.159

注意:这里提到的步骤已经在 Debian 10(Buster 系统)上进行了测试。

安装和配置 NFS 服务器

在下一节中,我们将首先在我们的主机上安装 NFS 服务器。 然后我们将设置两个共享目录 /var/nfs-public /var/nfs-docs 用于共享到客户端计算机。 让我们开始吧。

步骤 1:在主机上安装 NFS 服务器

要将系统设置为 NFS 服务器,您需要安装 nfs 内核服务器 包就可以了。 在 NFS 主机上,首先,在终端中使用以下命令更新本地存储库索引:

$ sudo apt update

然后安装 nfs 内核服务器 使用以下命令:

$ sudo apt install nfs-kernel-server

现在您可能会获得 是/否 选项继续安装。 打 继续,之后系统将开始安装 nfs 内核服务器.

一旦 nfs 内核服务器 已安装,您可以在终端中使用以下命令验证安装:

$ dpkg -l | grep nfs-kernel-server

第二步:在主机上创建共享目录

现在,在您要设置为与客户端共享的主机上创建一个目录。 我们创建了两个目录 /var/nfs文档/var/nfs-public 具有不同的配置设置.

$ sudo mkdir -p /var/nfs-docs
$ sudo mkdir -p /var/nfs-public

为了 /var/nfs-public 目录,我们将其所有权修改为 没有人:没有组 使用以下命令:

$ sudo chown nobody:nogroup /var/nfs-public

要验证所有权是否已更改,请使用以下命令:

$ ls -la /var/nfs-public

为了 /var/nfs-docs,我们不会改变所有权。

第 3 步:导出共享

现在我们将配置 NFS 服务器导出文件以共享资源。 NFS 导出文件是 /etc/出口 可以编辑如下:

$ sudo nano /etc/s

现在在这个文件中,我们将指定我们想要共享的目录以及可以访问它的客户端。 您可以使用以下语法在 NFS 导出文件中添加条目:

directory host1(options) host2(options)...hostN(options)...

在哪里

  • 目录 是您要与客户端共享的目录。
  • 主持人 是您要与之共享的客户端/子网的 IP 地址/子网地址。 要查找客户端计算机的 IP 地址,您可以访问我们的如何查找 IP 地址指南。
  • 选项 是一些指定如何共享资源的配置选项。

对于我们的两个目录 /var/nfs-docs/var/nfs-public,我们在 /etc/出口 文件:

/var/nfs-public 192.168.72.159(rw,sync,no_subtree_check)  /var/nfs-docs 192.168.72.159(rw,sync, no_root_squash,no_subtree_check)

在上面的配置文件中,两个条目都告诉 NFS 服务器共享 /var/nfs-public /var/nfs-docs NFS 客户端的目录 192.168.72.159读写 (读和写)权限。 在第二个条目中,我们添加了 no_root_squash 这允许客户端在 NFS 服务器上也具有 root 权限。 完成导出配置后,保存并 close 这 /etc/出口 文件。

现在为了导出共享,您必须重新启动 NFS 服务器。 这是执行此操作的命令:

$ sudo systemctl restart nfs-kernel-server

每当您在 /etc/出口 文件,请确保重新启动服务以应用配置更改。

或者,您可以使用此命令导出共享:

$ sudo fs -a

如何配置nfs客户端和服务器linux

要验证 NFS 服务器是否正在运行且没有任何问题,请在终端中使用以下命令检查其状态:

$ sudo systemctl status nfs-kernel-server

第 4 步:在 NFS 服务器上设置防火墙

如果在 NFS 服务器上启用了防火墙,则需要将其配置为允许客户端连接到 NFS 端口 2049. 要验证 NFS 服务器上是否启用了防火墙,请在终端中发出以下命令:

$ sudo ufw status

在以下输出中,您可以看到 积极的 显示防火墙已启用的状态。

现在允许客户端到 NFS 端口 2049,您必须在防火墙中添加规则。 在终端中发出以下命令来执行此操作:

$ sudo ufw allow from client_ip/subnet_ID to any port nfs

例如,允许整个子网 192.168.72.0/24 访问NF端口 2049,命令将是:

$ sudo ufw allow from 192.168.72.0/24 to any port nfs

然后验证规则是否添加成功,检查防火墙的状态:

$ sudo ufw status

以下输出中突出显示的条目显示了来自的连接 192.168.72.0/24允许 到港口 2049.

现在我们已经完成了 NFS Server 上的配置。 让我们转向 NFS 客户端的安装和配置。

安装和配置 NFS 客户端

在下一节中,我们将首先在我们的客户端机器上安装 NFS 客户端。 然后我们将设置两个挂载点 /媒体/公众 /媒体/文档 用于挂载远程 NFS 共享 /var/nfs-public /var/nfs-docs. 让我们开始吧。

步骤 1:在客户端机器上安装 NFS 客户端包

要将系统设置为 NFS 客户端,您需要安装 nfs 通用 包就可以了。 在 NFS 客户端计算机上,首先,在终端中使用以下命令更新本地存储库索引:

$ sudo apt update

然后安装 nfs-通用 使用以下命令:

$ sudo apt install nfs-common

现在您可能会获得 是/否 选项继续安装。 打 继续,之后系统将开始安装 nfs-通用 包裹。

第 2 步:创建挂载点

在客户端系统上,您需要创建一个挂载点来挂载位于 NFS 服务器上的共享。 在我们的客户端上,我们在以下位置创建了两个目录 /媒体 对于我们的挂载点:

$ sudo mkdir -p /media/docs  $ sudo mkdir -p /media/public

步骤 3:在客户端手动挂载 NFS 共享

现在我们将在上一步中创建的挂载点上挂载 NFS 共享。 这是这样做的语法:

$ sudo mount NFS_server_IP:NFS_share client_mountpoint

在哪里 :

NFS_server_IP 是 NFS 服务器的 IP 地址

NFS_share 是位于 NFS 服务器上的共享

客户端挂载点 是您要挂载共享的挂载点。

从我们的 NFS 服务器中,我们导出了两个共享目录,它们分别是 :/var/nfs-docs/var/nfs-public. 在我们的客户端机器上,我们将挂载一个共享 /var/nfs-docs 到一个挂载点 /媒体/文档 而另一股 /var/nfs-public 在第二个挂载点 /媒体/公众.

我们使用以下命令将 NFS 共享挂载到 NFS 客户端。

$ sudo mount 192.168.72.158:/var/nfs-docs /media/docs  $ sudo mount 192.168.72.158:/var/nfs-public /media/public

现在要验证 NFS 共享目录是否已成功挂载,请在终端中发出“df –h”命令:

$ df -h

这是“df -h”命令的输出,它在底部显示了两个 NFS 共享。

由于我们已将股份安装在 /媒体 目录,您还可以从文件管理器访问已安装的目录。

如何配置nfs客户端和服务器linux

第 4 步:在启动时自动在客户端上挂载 NFS 共享

每次重新启动客户端系统时,都需要使用 mount 命令手动挂载 NFS 共享。 这可以一次性或偶尔使用。 但是,如果您希望始终访问 NFS 共享,则需要使用 /etc/fstab 文件。

编辑 /etc/fstab 文件:

$ sudo nano /etc/fstab

现在为要自动挂载的 NFS 共享添加条目:

192.168.72.158:/var/nfs-docs /media/docs nfs rw,sync,hard,intr 0 0  192.168.72.158:/nfs-public /media/public nfs rw,sync,hard,intr 0 0

如何配置nfs客户端和服务器linux

然后保存并 close 这 /etc/fstab 文件。

下次重启系统时,客户端会自动挂载 NFS 共享。

测试 NFS 访问

现在我们将通过在每个目录中创建一个新文件来测试对 NFS 共享目录的访问。

在客户端机器上,首先,创建一个 测试1 文件为 sudo 在本地挂载点 /媒体/公众

$ sudo touch /media/public/test1

现在检查新文件的所有权:

$ ls -l /media/public/test1

您将看到文件的所有权是 没有人 用户和 无组 团体。 虽然,我们将文件创建为 sudo 在客户端机器上,但 NFS 服务器已将其转换为主机的所有权 没有人:没有组. 这意味着客户端上的 root 用户无法对服务器的共享目录执行管理任务。

如何配置nfs客户端和服务器linux

现在创建一个 测试1 文件为 sudo 在第二个本地挂载点 /媒体/文档

$ sudo touch /media/docs/test1

如果我们检查此文件的所有权,您将看到它由 root 用户和 root 组拥有。 这是因为我们设置了 no_root_squash 该选项允许客户端计算机上的 root 用户作为服务器目录上的 root 用户并可以执行管理任务。

现在在 NFS 服务器计算机上,检查您是否可以查看这两个文件。

如何配置nfs客户端和服务器linux

从客户端机器上卸载 NFS 共享

如果您不再需要 NFS 共享,您可以从客户端系统中卸载它。 要卸载 NFS 共享,请键入 umount,后跟 NFS 共享所在目录的名称。

$ umount /media/docs  $ umount /media/public

这是在 Debian 10 系统中设置 NFS 服务器和客户端的方法。 在本文中,我们介绍了如何安装 NFS 服务器和客户端、配置 NFS 共享目录以及在客户端系统上挂载/卸载 NFS 共享。 您可能想访问我们关于如何在 Linux Mint 20 上配置 NFS 服务器和客户端的帖子。