如何在 RHEL 发行版上安装 NFS 服务器和客户端
在 Linux 中,有几种文件共享协议用于跨网络共享存储和文件。使用最广泛的是 Samba 和 NFS。
Samba 是一种流行的开源应用程序套件,在客户端-服务器架构中工作。它提供跨平台兼容性,支持跨 Linux、Windows 和 macOS 操作系统的无缝文件共享。可以从不同的平台访问托管在 Linux 系统上的文件共享,从而促进协作。
另一种广泛使用的文件共享协议是NFS,即网络文件共享的缩写。就像Samba一样,它工作在客户端-服务器模型上,并允许用户通过网络与多个远程客户端用户共享目录和文件。
在本指南中,我们将了解如何在基于 RHEL 的发行版(例如 Fedora、CentOS Stream、Rocky Linux 和 AlmaLinux)上安装 NFS 服务器和客户端。
NFS 服务
目前,NFS 有 3 个版本,最新的一个是 NFSv4,其中包括通过互联网和跨防火墙工作的功能等功能。此外,还有NFSv3和NFSv2,这是最古老的协议。
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 设置。