如何在 Rocky Linux 8 上设置 NFS 挂载如何在 Rocky Linux 8 上设置 NFS 挂载如何在 Rocky Linux 8 上设置 NFS 挂载如何在 Rocky Linux 8 上设置 NFS 挂载
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 8 上设置 NFS 挂载

在此页

  1. 先决条件
  2. 第 1 步 - 在主机和客户端上安装 NFS
  3. 第 2 步 - 在主机上创建共享目录
    1. 使用通用支架
    2. 使用主目录

    1. 测试通用共享
    2. 测试主目录共享

    网络文件系统或 NFS 是一种分布式文件系统协议,它允许远程主机通过网络安装文件系统并对其执行文件操作,就好像它们是在本地安装的一样。当您希望通过多个客户端共享一台服务器的资源或允许多个客户端写入单个存储空间时,这尤其有用。

    在本教程中,您将学习如何安装和配置基于 Rocky Linux 8 的 NFS 服务器和 NFS 客户端。为此,我们将设置一个主机或服务器来共享文件,并设置一个客户端来使用 NFS 挂载访问主机文件.

    先决条件

    • 两台 Rocky Linux 8 服务器。其中每一个都应该有一个具有 sudo 权限的非 root 用户。
    • 主机和客户端都应该有一个静态 IP 地址。您甚至可以通过专用网络设置两者。对于我们的教程,我们将使用 host_ip 表示主机 IP 地址,使用 client_ip 表示客户端 IP 地址。

    第 1 步 - 在主机和客户端上安装 NFS

    主持人

    要安装 NFS 包,您需要安装 nfs-utils 包。它为 NFS 服务器和相关工具提供守护进程。

    安装软件包。

    $ sudo dnf install nfs-utils
    

    启用并启动 nfs-server 服务。 nfsd、nfs-idmapd、rpcbind、nfsd、rpcbind等NFS挂载共享所需的剩余服务class=system>rpc.mountd,lockd,rpc.statd,rpc.quotad 和 rpc.idmapd 随之自动启动。

    $ sudo systemctl enable nfs-server --now
    

    验证 NFS 安装的版本。

    $ sudo cat /proc/fs/nfsd/versions
    -2 +3 +4 +4.1 +4.2
    

    NFS 版本 3 和 4 默认启用,版本 2 禁用。 NFSv2 非常陈旧和过时,因此您可以在它前面看到 -ve 标志。

    NFS 将其配置存储在 /etc/nfsmount.conf 和 /etc/nfs.conf 文件中。 /etc/nfsmount.conf 用于配置 NFS 挂载,而 /etc/nfs.conf 用于配置 NFS 守护进程和相关工具。对于我们的教程,默认设置就足够了,不需要更改。

    客户

    在客户端上,安装 nfs-utils 和 nfs4-acl-tools 包。

    $ sudo dnf install nfs-utils nfs4-acl-tools
    

    Step2 - 在主机上创建共享目录

    我们将使用两个具有不同配置设置的示例 - 一个使用通用挂载,另一个使用共享主机主目录。

    NFS 安装目录不是客户端的一部分。因此,NFS 无法执行需要超级用户权限的任务。这意味着客户端不能更改所有权,不能以 root 用户身份写入它们,也不能执行高级任务。但是,在某些情况下,客户端上的受信任用户需要执行此类任务而不需要主机上的超级用户访问权限。 NFS 服务器可以配置为允许这样做,但它存在客户端可以访问主机的风险。

    使用通用安装座

    对于我们的第一个案例,我们将创建一个使用默认 NFS 行为的简单挂载,这意味着客户端无法执行任何需要超级用户权限的任务。

    创建共享目录。

    host:$ sudo mkdir /var/nfs/share -p
    

    hosts root 用户将拥有这个目录,因为我们使用 sudo 创建它。

    host:$ ls -l /var/nfs
    total 0
    drwxr-xr-x. 2 root root 6 Dec 13 07:30 share
    

    出于安全原因,NFS 会将客户端的所有根操作转换为 nobody:nobody 凭据。因此,我们需要在主机端匹配它们。

    host:$ sudo chown nobody:nobody /var/nfs/general
    

    使用主目录

    对于我们的第二种情况,我们将使主机上的主目录对客户端可用。我们不需要创建它,因为它已经存在。我们不需要更改任何权限,因为它会影响主机上的用户。

    第 3 步 - 在主机上配置 NFS 导出

    在主机上打开文件 /etc/exports 进行编辑。

    host:$ sudo nano /etc/exports
    

    将以下代码粘贴到文件中。

    /var/nfs/share      client_ip(rw,sync,no_subtree_check)
    /home               client_ip(rw,sync,no_root_squash,no_subtree_check)
    

    每个目录及其配置都需要单独一行。将 client_ip 值替换为客户端计算机的实际 IP 地址。

    让我们浏览一下 NFS 导出的所有选项。

    • rw - 授予客户端机器对 NFS 卷的读写访问权限。
    • sync - 此选项强制 NFS 在回复之前将更改写入磁盘。此选项被认为更可靠。但是,它也降低了文件操作的速度。
    • no_subtree_check - 此选项可防止子树检查,这是主机必须检查文件是否可用以及每个请求的权限的过程。当文件在主机上重命名但仍在客户端上打开时,它也会导致问题。禁用它可以提高 NFS 的可靠性。
    • no_root_squash - 默认情况下,NFS 将来自客户端根用户的请求转换为主机上的非特权用户。此选项禁用该行为,应谨慎使用以允许客户端获得对主机的访问权限。

    完成后,按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

    要导出共享,请运行以下命令。

    host:$ sudo exportfs -arv
    exporting client_ip:/home
    exporting client_ip:/var/nfs/share
    

    • -a - 此选项导致导出所有目录。
    • -r - 此选项通过在 /var/lib/nfs/etab 目录中构建一个新列表来导出所有目录。此选项用于使用对 /etc/exports 所做的任何更改刷新导出列表。
    • -v - 启用详细输出。

    要列出所有导出的目录,请运行以下命令。它将显示所有选项,包括未在 /etc/exports 文件中指定的默认选项。

    host:$ sudo exportfs -s
    /var/nfs/share  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
    /home  client_ip(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
    

    第 4 步 - 在主机上配置防火墙

    Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。

    host:$ sudo firewall-cmd --state
    running
    

    这表明它已成功启动并运行。

    防火墙适用于不同的区域,公共区域是我们将使用的默认区域。列出防火墙上所有活动的服务和端口。

    host:$ sudo firewall-cmd --permanent --list-services
    

    它应该显示以下输出。

    cockpit dhcpv6-client ssh
    

    接下来,我们需要允许流量到必要的 NFS 服务 - mountd、nfs 和 rpc-bind .我们还需要允许从客户端 IP 访问。如果您的客户端和主机服务器在同一子网中,则无需添加客户端 IP 地址。

    host:$ sudo firewall-cmd --permanent --add-service=nfs
    host:$ sudo firewall-cmd --permanent --add-service=rpc-bind
    host:$ sudo firewall-cmd --permanent --add-service=mountd
    host:$ sudo firewall-cmd --permanent --add-source=client_IP 
    

    重新加载防火墙以应用更改。

    host:$ sudo firewall-cmd --reload
    

    第 5 步 - 在客户端上创建挂载点和目录

    现在 NFS 服务器/主机已配置,下一步是在客户端上设置挂载点和目录。您可以在客户端运行showmount命令查看Host上导出的文件系统列表。

    client:$ showmount -e host_ip
    Export list for host_ip:
    /home          host_ip
    /var/nfs/share host_ip
    

    始终在客户端上创建一个新目录作为挂载点或使用现有的空目录。如果您挂载的目录中有文件,它将隐藏。

    创建挂载目录。

    client:$ sudo mkdir -p /nfs/share
    client:$ sudo mkdir -p /nfs/home
    

    使用主机的 IP 地址装载共享。

    client:$ sudo mount host_ip:/var/nfs/share /nfs/share
    client:$ sudo mount host_ip:/home /nfs/home
    

    验证挂载是否成功。

    client:$ df -h
    Filesystem                 Size  Used Avail Use% Mounted on
    devtmpfs                   370M     0  370M   0% /dev
    tmpfs                      405M     0  405M   0% /dev/shm
    tmpfs                      405M   16M  389M   4% /run
    tmpfs                      405M     0  405M   0% /sys/fs/cgroup
    /dev/vda1                   25G  2.4G   23G  10% /
    tmpfs                       81M     0   81M   0% /run/user/1000
    host_ip:/var/nfs/share      25G  2.4G   23G  10% /nfs/share
    host_ip:/home               25G  2.4G   23G  10% /nfs/home
    

    两个共享都从同一个文件系统挂载。因此它们显示相同的磁盘使用情况。

    也可以使用mount命令来验证。

    client:$ mount | grep nfs
    rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
    host_ip:/var/nfs/share on /nfs/share type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    host_ip:/home on /nfs/home type nfs4 (rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=client_ip,local_lock=none,addr=host_ip)
    

    第 6 步 - 测试 NFS 访问

    测试通用共享

    写一个测试文件到 /var/nfs/share 共享。

    client:$ sudo touch /nfs/share/test.txt
    

    检查其所有权。

    client:$ ls -l /nfs/share/test.txt
    -rw-r--r--. 1 nobody nobody 0 Dec 13 08:08 /nfs/share/test.txt
    

    由于我们使用默认 NFS 设置安装此卷并使用 sudo 在客户端上创建文件,因此文件的所有权默认为 nobody:nobody。客户端超级用户不能对共享执行任何管理任务。

    测试主目录共享

    写一个测试文件到/nfs/home共享。

    client:$ sudo touch /nfs/home/home.txt
    

    检查其所有权。

    client:$ ls -l /nfs/home/home.txt
    -rw-r--r--. 1 root root 0 Dec 13 08:09 /nfs/home/home.txt
    

    由于我们使用了 no_root_squash 选项,它允许客户端 root 用户在共享本身上充当 root 用户。

    第 7 步 - 使挂载点永久化

    默认情况下,NFS 共享是临时的,需要在启动时挂载。我们可以通过在客户端编辑 /etc/fstab 文件使它们永久存在。

    打开文件 /etc/fstab 进行编辑。

    client:$ sudo nano /etc/fstab
    

    将以下行粘贴到文件底部。

    . . .
    host_ip:/var/nfs/share      /nfs/share     nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
    

    您可以通过运行以下命令找到有关上面列出的选项的更多信息。

    client:$ man nfs
    client:$ man mount
    

    如果您想在线阅读它们,可以通过 Google 搜索短语 man nfs 和 man mount 来了解有关这些选项的更多信息。

    步骤 8 - 卸载 NFS 共享

    如果您不再需要系统上的远程挂载,可以使用 umount 命令卸载它们。请注意,该命令称为 umount 而不是 unmount,这是一个常见的错误。

    移出共享挂载并卸载它们。

    client:$ cd ~
    client:$ sudo umount /nfs/share
    client:$ sudo umount /nfs/home
    

    如果您不再需要在重新启动时再次挂载共享,请确保通过放置 # 注释掉 /etc/fstab 文件中的相应条目> 在他们面前签名。

    结论

    在本教程中,我们学习了如何创建 NFS 主机服务器并使用它挂载目录,我们与 NFS 客户端共享。如果您在专用网络中实施它,那么应该没有问题,但如果您在生产中使用它,那么您应该记住协议未加密并且您应该实施一些身份验证来保护您的数据。

    如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com