网站搜索

如何在 RHEL 发行版上安装 NFS 服务器和客户端


在 Linux 中,有几种文件共享协议用于跨网络共享存储和文件。使用最广泛的是 Samba 和 NFS。

Samba 是一种流行的开源应用程序套件,在客户端-服务器架构中工作。它提供跨平台兼容性,支持跨 Linux、Windows 和 macOS 操作系统的无缝文件共享。可以从不同的平台访问托管在 Linux 系统上的文件共享,从而促进协作。

另一种广泛使用的文件共享协议是NFS,即网络文件共享的缩写。就像Samba一样,它工作在客户端-服务器模型上,并允许用户通过网络与多个远程客户端用户共享目录和文件。

在本指南中,我们将了解如何在基于 RHEL 的发行版(例如 Fedora、CentOS Stream、Rocky Linux 和 AlmaLinux)上安装 NFS 服务器和客户端。

NFS 服务

目前,NFS 有 3 个版本,最新的一个是 NFSv4,其中包括通过互联网和跨防火墙工作的功能等功能。此外,还有NFSv3NFSv2,这是最古老的协议。

NFS服务由NFS服务器客户端组成。 NFS服务器包含以下关键文件:

  • nfs-server – 这允许客户端系统访问 NFS 共享文件。
  • rpcbind – 将 RPC 程序转换为通用地址。
  • nfs-idmap – 将用户和组 ID 转换为名称,以及将用户和组名称转换为 ID。
  • portmap – 这是一个将 RPC 程序号转换为 IP 端口号的服务器。
  • nfslock – 如果 NFS 服务器崩溃,nfslock 会启动所需的 RPC 进程。

NFS 配置服务

以下是NFS的一些关键配置文件:

  • /etc/exports – 主配置文件,规定远程用户要导出和访问的文件系统或目录。
  • /etc/fstab – 这是一个包含已安装分区条目的文件。在 NFS 中,该文件包含永久安装并可以持续重新启动的 NFS 共享目录或文件系统的条目。
  • /etc/sysconfig/nfs – 定义了RPC服务运行过程中所需的端口。

NFS 服务器和客户端设置

要设置NFS共享,我们需要至少两台Linux/Unix机器。在本教程中,我将使用两台服务器。

  • NFS 服务器RHEL 9,IP 10.128.15.213
  • NFS 客户端RHEL 9,IP 10.128.15.214

在服务器和客户端上安装NFS

首先,您需要登录两个节点(NFS 服务器和客户端)并安装 NFS 服务。首先,更新包信息,如图所示。以下 dnf 命令还将所有令人兴奋的软件包升级到最新版本。

sudo dnf update 

更新完成后,继续并安装必需的 NFS 服务。

sudo dnf install rpcbind nfs-utils -y

下一步是启用 NFS 服务,如图所示。

sudo systemctl enable nfs-server
sudo systemctl enable rpcbind

请务必同时启动 NFS 服务。

sudo systemctl enable nfs-server
sudo systemctl enable rpcbind

验证所有 NFS 服务是否正在运行至关重要。

sudo systemctl status nfs-server
sudo systemctl status rpcbind

请务必配置防火墙以允许入站 NFS 服务,如下所示。

sudo firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd}
sudo firewall-cmd --reload

创建 NFS 共享目录

所有NFS服务均按预期安装并运行后,就可以创建 NFS 共享目录,该目录将包含网络中 NFS 客户端将访问的文件。

在本例中,我们将在主目录中创建一个名为 my_nfsshare 的 NFS 共享目录。

mkdir -p /home/tecmint/my_nfsshare

接下来,分配目录权限。出于演示目的,我们将分配全局权限,以赋予 NFS 客户端读取、写入和执行权限。

sudo chmod 777 -R /home/tecmint/my_nfsshare

导出 NFS 共享目录

下一步是导出 NFS 共享目录。为了实现这一点,我们需要在 /etc/exports 文件中创建一个条目。因此,请使用您喜欢的文本编辑器访问该文件。在本例中,我们将使用 Vim 编辑器。

sudo vim /etc/exports

添加以下条目。请务必将 server-ip 替换为 NFS 服务器的 IP 地址。

/home/tecmint/my_nfsshare server-ip/24(rw,no_root_squash)

最后导出NFS共享目录或文件系统。

sudo exportfs -rv

执行以下命令查看NFS共享。

showmount -e localhost

配置 NFS 客户端

本练习的剩余阶段是配置 NFS 客户端以访问共享目录。首先,确认您可以查看NFS服务器上的导出列表或NFS共享。

showmount -e 10.128.15.213

下一步是将 NFS 共享从服务器挂载到客户端。为此,我们首先需要创建一个挂载目录。在本例中,我们将创建一个名为 nfs_backup 的目录。

mkdir nfs_backup

此后,我们将NFS共享挂载到我们刚刚在根主目录中创建的挂载目录

mount -t nfs 10.128.15.213:/home/tecmint/my_nfsshare  ~/nfs_backup 

要保留 NFS 共享,请编辑 /etc/fstab 文件。

vim /etc/fstab

然后添加以下条目。

10.128.15.213:/home/tecmint/my_nfsshare    /root/nfs_backup  nfs     defaults 0 0

保存并退出配置文件。

测试 NFS 设置

最后一步是验证 NFS 设置是否按预期工作。我们将在服务器上创建一些文件并在 NFS 客户端验证它们的可用性。

在服务器端,我们将在 NFS 共享目录中创建文件。

sudo touch my_nfsshare/file{1..4}.txt

要验证文件是否已创建,我们将执行 ls 命令:

ls -l my_nfsshare/

返回客户端,验证挂载目录中的文件是否可用,无需任何服务刷新或重新启动任何服务,如以下输出所示。

ls -l nfs_backup/

删除 NFS 挂载

如果您不再需要系统上安装的目录,可以使用以下umount命令从客户端卸载它们:

umount ~/nfs_backup

NFS 共享命令

NFS 的一些更重要的命令。

  • showmount -e – 显示本地计算机上可用的共享
  • showmount -e ip-address – 列出远程服务器上可用的共享
  • showmount -d – 列出所有子目录
  • exportfs -v – 显示服务器上共享文件选项的列表
  • exportfs -a – 导出 /etc/exports 或给定名称中列出的所有共享
  • exportfs -u – 取消导出 /etc/exports 或给定名称中列出的所有共享
  • exportfs -r – 修改/etc/exports后刷新服务器列表
结论

这就是我们关于如何在基于 RedHat 的发行版上安装 NFS 服务器和客户端的指南。我们在服务器上安装了NFS服务,并创建了NFS共享目录,最后将共享目录挂载到客户端上。最后,我们通过从客户端访问服务器上创建的文件来验证 NFS 设置。