如何在AlmaLinux 9上安装NFS服务器和客户端
什么是 NFS? NFS,即网络文件系统,是一种允许本地用户像本地访问一样从多个磁盘和目录访问远程数据的协议。 NFS 协议最初由 Sun Microsystem 开发,并成为通过网络共享文件的标准协议。它广泛用于集中式环境中,用户或客户端计算机将能够在一台集中式远程服务器上存储和访问数据。
NFS 可以在大多数 Linux 系统上轻松安装和配置 NFS 服务器和客户端。几乎每个 Linux 发行版都在其存储库中默认提供 NFS 软件包。软件包名称不同,但几乎 Linux 发行版的配置仍然相同。
本教程将向您展示如何在AlmaLinux 9上安装NFS服务器。此外,您还将设置一台客户端机器以从NFS服务器挂载共享目录,并通过/etc/fstab文件设置启动时自动挂载。
先决条件
在开始之前,您必须确保具备以下条件:
- AlmaLinux 9 服务器 - 在此演示中,我们使用主机名 almalinux9-server 和 IP 地址192.168.10.15 的服务器。
- 具有 sudo/管理员 root 权限的非 root 用户。
- 一台或多台客户端计算机 - 它可以是任何基于 RHEL 的发行版。
安装 NFS 服务器
要在Almalinux上设置NFS(网络文件存储),您只需在NFS服务器和客户端上安装nfs-utils即可。它可以在 AppStream 存储库中找到,您可以通过 DNF 轻松安装它。
运行以下命令安装 nfs-utils 包。出现提示时输入 y,然后按 ENTER。
sudo dnf install nfs-utils
现在,使用下面的 nano 编辑器命令打开文件 /etc/idmapd.conf。
sudo nano /etc/idmapd.conf
取消注释 Domain 参数并将值更改为您的服务器 FQDN(完全限定域名)或使用主机名。
Domain = almalinux9-server
完成后保存并退出文件。
接下来,运行以下命令启动并启用 NFS 服务。
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
然后,使用以下命令验证 NFS 服务以确保 NFS 正在运行。
sudo systemctl status nfs-server
如果安装成功,您应该收到如下输出:
创建共享目录
现在 NFS 服务器已启动并运行,下一步是为客户端设置共享目录。那么让我们开始吧。
首先,使用以下命令创建两个目录 /mnt/shared 和 /mnt/backup。
sudo mkdir -p /mnt/shared /mnt/backup
将两个目录的所有权更改为用户和组nobody,然后将默认权限更改为775。
sudo chown -R nobody:nobody /mnt/shared /mnt/backup
sudo chmod 775 /mnt/shared /mnt/backup
接下来,使用 nano 编辑器创建一个新的配置文件 aa。
sudo nano /etc/exports
将以下行插入到文件中。在此示例中,我们将为客户端 192.168.10.21 设置三个共享目录 /mnt/backup 和 /home,以及 192.168.10.21 >/mnt/shared 用于 192.168.10.0/24 中的整个网络。
/mnt/backup 192.168.10.21(rw,sync,no_subtree_check)
/home 192.168.10.21(rw,sync,no_root_squash,no_subtree_check)
/mnt/shared 192.168.10.0/24(rw,sync,no_subtree_check)
完成后保存并关闭文件。
以下是您应该了解的一些重要 NFS 参数:
- rw:启用目标共享目录的读写。
- 同步:此选项将确保在客户端发出新的另一个请求之前将数据先写入磁盘。这样,您的数据是安全的,但读/写操作的速度较慢。
- no_subtree_check:禁用子树检查以提高 NFS 服务器的速度和性能。子树检查是确保用户更改文件名时不会发生冲突的过程。
- no_root_squash:这将禁用压缩,从而允许 NFS 客户端在共享目录中拥有 root 权限。在此示例中,我们将仅对共享目录 /home 禁用压缩。
现在,运行以下命令重新启动 NFS 服务器并应用更改。
sudo systemctl restart nfs-server
NFS 重新启动后,运行以下命令查看 NFS 服务器上的共享目录列表。
sudo exportfs -v
如果操作成功,您应该在终端上看到 NFS 共享目录列表,如下所示:
使用 Firewalld 保护 NFS 服务器
配置好 NFS 共享目录后,下一步是设置防火墙并为客户端打开一些端口/服务。在开始之前,请确保您已启动并运行防火墙。
现在,运行以下命令将一些 NFS 服务添加到 firewalld。
sudo firewall-cmd --add-service={nfs,nfs3,mountd,rpc-bind} --permanent
然后,重新加载firewalld以应用更改。
sudo firewall-cmd --reload
之后,使用以下命令验证您的防火墙规则。
sudo firewall-cmd --list-all
预期的输出应该是这样的:
设置 NFS 客户端
本节将介绍如何使用 AlmaLinux 服务器设置 NFS 客户端,这可以在大多数基于 RHEL 的发行版上实现。
登录到您的客户端,然后运行以下命令来安装 nfs-utils 软件包。出现提示时,输入 y 进行确认,然后按 ENTER。
sudo dnf install nfs-utils
现在,运行以下命令来检查 NFS 服务器 192.168.10.15 上的可用共享目录。
sudo showmount -e 192.168.10.15
您应该会在 NFS 服务器上看到三个不同的共享目录: /mnt/backup、 /mnt/shared 和 /home。
接下来,输入以下命令创建将用于挂载 NFS 共享目录的新目录/data、/backup 和 /shared。
sudo mkdir -p /data /backup /shared
执行以下命令挂载NFS共享目录。在此示例中,我们将共享目录 /mnt/backup挂载到/backup,/mnt/shared挂载到/shared ,以及/home到/data。
sudo mount 192.168.10.15:/mnt/backup /backup
sudo mount 192.168.10.15:/mnt/shared /shared
sudo mount 192.168.10.15:/home /data
最后,使用以下命令验证客户端计算机上已安装文件系统的列表。
sudo df -h
如果该过程成功,您将看到客户端计算机上挂载的 NFS 共享目录,如下所示:
验证客户端的写访问权限
当客户端挂载NFS共享目录后,需要保证共享目录的读写权限。
在客户端计算机上,运行以下命令创建新文件 /backup/test-write1.txt、 /shared/test-write2.txt和/home/alice/test-write3.txt。
echo "This file from client" > /backup/test-write1.txt
echo "This file from client" > /shared/test-write2.txt
echo "This file from client" > /data/alice/test-write3.txt
如果 NFS 服务器和客户端安装成功,您在客户端计算机上创建的新文件将在 NFS 服务器上可用。
现在返回 NFS 服务器并运行以下命令以确保新文件在 NFS 服务器上可用。
cat /mnt/backup/test-write1.txt
cat /mnt/shared/test-write2.txt
cat /home/alice/test-write3.txt
从下面的输出中,我们可以看到该文件在 NFS 服务器上可用。
通过 /etc/fstab 配置自动挂载 NFS 共享目录
验证 NFS 上的读写访问权限后,您可能还需要在客户端计算机上设置 NFS 服务器的自动挂载。因此,每当客户端计算机重新启动时,NFS 共享目录将在引导期间自动挂载,这可以通过 /etc/fstab 文件来完成。
首先,使用以下命令卸载并验证客户端计算机上的 NFS 共享目录。
sudo umount /data /backup /shared
sudo df -h
使用以下 nano 编辑器命令打开 /etc/fstab 文件。
sudo nano /etc/fstab
添加以下选项,并确保自定义共享目录和目标挂载目录的详细信息。
192.168.10.15:/mnt/backup /backup nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/mnt/shared /shared nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.10.15:/home /data nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
完成后保存文件并退出编辑器。
接下来,运行以下命令来验证 /etc/fstab 配置。如果您有正确的 fstab 文件,则执行该命令后将挂载 NFS 共享目录。
sudo mount -a
使用以下命令进行验证以获取客户端已安装的文件系统列表。
sudo df -h
您应该会看到 NFS 共享目录通过“mount -a”命令基于/etc/fstab文件安装在客户端上。
客户端计算机将在系统启动时自动挂载 NFS 共享目录。
结论
恭喜!您已经在AlmaLinux 9服务器上成功安装了NFS服务器和客户端。您还了解了一些命令的基本用法,例如用于挂载文件系统的 mount、用于管理 NFS 共享目录的 exportfs 以及用于显示挂载的文件系统的 df。此外,您还通过 /etc/fstab 文件在客户端计算机上配置了 NFS 共享目录的自动挂载。
对于下一步,请查看 NFS 服务器的附加安全性。