网站搜索

如何在 CentOS 8 上设置 NFS 服务器和客户端


网络文件系统NFS)也称为客户端/服务器文件系统,是一种流行的跨平台分布式文件系统协议,用于通过网络导出本地文件系统,因此客户端可以通过网络与其他人共享目录和文件,并与它们交互,就像它们是本地安装的一样。

CentOS/RHEL 8 中,支持的 NFS 版本为 NFSv3NFSv4,默认 NFS 版本为 4.2,支持访问控制列表 ( ACL)、服务器端复制、稀疏文件、空间预留、标记 NFS、布局增强等等。

在本文中,您将了解如何在 CentOS/RHEL 8 Linux 发行版上安装和配置 NFS 服务器NFS 客户端

先决条件:

  1. CentOS 8 安装指南
  2. RHEL 8 最小安装
  3. 在 RHEL 8 中启用 RHEL 订阅
  4. 在 CentOS/RHEL 8 中设置静态 IP 地址

我们的测试环境:

NFS Server IP:	10.20.20.8
NFS Client IP:	10.20.20.9	

在 CentOS 8 上设置 NFS 服务器

1. 首先,首先在 NFS 服务器上安装所需的软件包。这些软件包是nfs-utils,它为内核NFS 服务器提供守护进程和相关工具,例如包含showmount 程序。

运行以下命令在 NFS 服务器上安装软件包(如果您以非 root 用户身份管理系统,请使用 sudo)。

dnf install nfs-utils

2.安装完成后,启动nfs-server服务,使其在系统启动时自动启动,然后使用systemctl命令验证其状态。

systemctl start nfs-server.service
systemctl enable nfs-server.service
systemctl status nfs-server.service

请注意,运行 NFS 服务器或挂载 NFS 共享所需的其他服务,例如 nfsdnfs-idmapdrpcbind >rpc.mountdlockdrpc.statdrpc.rquotadrpc.idmapd > 将自动启动。

NFS 服务器的配置文件是:

  • /etc/nfs.conf – NFS 守护进程和工具的主要配置文件。
  • /etc/nfsmount.conf – NFS 挂载配置文件。

3. 接下来,创建要在NFS 服务器上导出或共享的文件系统。在本指南中,我们将创建四个文件系统,其中三个供人力资源、财务和营销三个部门的员工共享文件,一个用于 root 用户备份。

mkdir -p  /mnt/nfs_shares/{Human_Resource,Finance,Marketing}
mkdir  -p /mnt/backups
ls -l /mnt/nfs_shares/

4.然后导出NFS服务器/etc/exports配置文件中的上述文件系统,以确定NFS客户端可以访问的本地物理文件系统。

/mnt/nfs_shares/Human_Resource  	10.20.20.0/24(rw,sync)
/mnt/nfs_shares/Finance			10.20.10.0/24(rw,sync)
/mnt/nfs_shares/Marketing		10.20.30.0/24(rw,sync)
/mnt/backups				10.20.20.9/24(rw,sync,no_all_squash,root_squash)

以下是一些导出选项(请阅读manexports以获取更多信息和导出选项):

  • rw – 允许对文件系统进行读和写访问。
  • sync – 告诉 NFS 服务器在请求时执行写入操作(将信息写入磁盘)(默认应用)。
  • all_squash – 将客户端请求中的所有 UID 和 GID 映射到匿名用户。
  • no_all_squash – 用于将客户端请求中的所有 UID 和 GID 映射到 NFS 服务器上相同的 UID 和 GID。
  • root_squash – 将来自根用户或 UID/GID 0 的请求从客户端映射到匿名 UID/GID。

5. 要导出上述文件系统,请运行 exportfs 命令,带有 -a 标志表示导出或取消导出所有目录,- r 表示重新导出所有目录,将 /var/lib/nfs/etab/etc/exports 以及 /etc/exports.d 下的文件同步-v 启用详细输出。

exportfs -arv

6. 要显示当前导出列表,请运行以下命令。请注意,exports 表还应用了一些未明确定义的默认exports 选项,如以下屏幕截图所示。

exportfs  -s

7. 接下来,如果您正在运行 firewalld 服务,则需要允许流量流向必要的 NFS 服务(mountdnfs rpc-bind)通过防火墙,然后重新加载防火墙规则以应用更改,如下所示。

firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=rpc-bind
firewall-cmd --permanent --add-service=mountd
firewall-cmd --reload

在客户端系统上设置 NFS 客户端

8. 现在,在客户端节点上,安装必要的软件包以访问客户端系统上的 NFS 共享。运行适合您的发行版的命令:

dnf install nfs-utils nfs4-acl-tools         [On CentOS/RHEL]
sudo apt install nfs-common nfs4-acl-tools   [On Debian/Ubuntu]

9. 然后运行showmount 命令显示 NFS 服务器的挂载信息。该命令应在客户端上输出导出的文件系统,如屏幕截图所示。

showmount -e 10.20.20.8

9.接下来,创建一个用于挂载远程NFS文件系统的本地文件系统/目录,并将其挂载为ntf文件系统。

mkdir -p /mnt/backups
mount -t nfs  10.20.20.8:/mnt/backups /mnt/backups

10.然后通过运行mount命令并过滤nfs挂载来确认远程文件系统已挂载。

mount | grep nfs

11. 要使挂载即使在系统重新引导后也能持久,请运行以下命令在 /etc/fstab 中输入相应的条目。

echo "10.20.20.8:/mnt/backups     /mnt/backups  nfs     defaults 0 0">>/etc/fstab
cat /etc/fstab

12.最后,通过在服务器上创建文件来测试NFS设置是否正常工作,并检查该文件是否可以在客户端中看到。

touch /mnt/backups/file_created_on_server.text     [On NFS Server]
ls -l /mnt/backups/file_created_on_server.text     [On NFS client]

然后进行相反的操作。

touch /mnt/backups/file_created_on_client.text     [On NFS Client]
ls -l /mnt/backups/file_created_on_client.text     [On NFS Server]

13. 在客户端卸载远程文件系统。

umount /mnt/backups

请注意,如果您正在远程文件系统中进行操作,则无法卸载远程文件系统,如以下屏幕截图所示。

就是这样!在本指南中,我们展示了如何在 CentOS/RHEL 8 中安装和配置 NFS 服务器和客户端。 如果您有任何想法要分享或有疑问,请使用评论表下面回复我们。