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 服务器是否正在运行且没有任何问题,请在终端中使用以下命令检查其状态:
$ 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 共享。
由于我们已将股份安装在 /媒体 目录,您还可以从文件管理器访问已安装的目录。
第 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
然后保存并 close 这 /etc/fstab 文件。
下次重启系统时,客户端会自动挂载 NFS 共享。
测试 NFS 访问
现在我们将通过在每个目录中创建一个新文件来测试对 NFS 共享目录的访问。
在客户端机器上,首先,创建一个 测试1 文件为 sudo 在本地挂载点 /媒体/公众:
$ sudo touch /media/public/test1
现在检查新文件的所有权:
$ ls -l /media/public/test1
您将看到文件的所有权是 没有人 用户和 无组 团体。 虽然,我们将文件创建为 sudo 在客户端机器上,但 NFS 服务器已将其转换为主机的所有权 没有人:没有组. 这意味着客户端上的 root 用户无法对服务器的共享目录执行管理任务。
现在创建一个 测试1 文件为 sudo 在第二个本地挂载点 /媒体/文档:
$ sudo touch /media/docs/test1
如果我们检查此文件的所有权,您将看到它由 root 用户和 root 组拥有。 这是因为我们设置了 no_root_squash 该选项允许客户端计算机上的 root 用户作为服务器目录上的 root 用户并可以执行管理任务。
现在在 NFS 服务器计算机上,检查您是否可以查看这两个文件。
从客户端机器上卸载 NFS 共享
如果您不再需要 NFS 共享,您可以从客户端系统中卸载它。 要卸载 NFS 共享,请键入 umount,后跟 NFS 共享所在目录的名称。
$ umount /media/docs $ umount /media/public
这是在 Debian 10 系统中设置 NFS 服务器和客户端的方法。 在本文中,我们介绍了如何安装 NFS 服务器和客户端、配置 NFS 共享目录以及在客户端系统上挂载/卸载 NFS 共享。 您可能想访问我们关于如何在 Linux Mint 20 上配置 NFS 服务器和客户端的帖子。