彻底掌握 Linux NFS 服务器搭建! 📁 通过网络共享你的服务器文件夹

大家好!在运营多台 Linux 服务器时,您可能曾有过这样的想法:“我希望能够直接在另一台服务器上使用这台服务器上的文件。”每次都用 scp 复制文件很麻烦,而用 rsync 同步也有其局限性。

这时,NFS (Network File System) 就派上用场了!通过 NFS,您可以将网络上其他服务器的目录挂载到本地,就像使用自己电脑上的本地目录一样。可以把它想象成通过网络连接一个 USB 驱动器,这样就很容易理解了。😉

今天,我们将探讨配置 NFS 服务器并将特定文件夹共享给其他计算机的三个最基本步骤。

第一步:定义共享规则 (/etc/exports 文件) ✍️

NFS 服务器配置的核心是 /etc/exports 文件。此文件是定义“共享哪个目录 (What)、与谁共享 (Whom) 以及以何种权限共享 (How)”的规则列表。

基本规则的格式如下:

[공유할 디렉터리 경로] [허용할 클라이언트]([옵션])

让我们仔细看看每个项目:

  • ① 要共享的目录路径
  • 填写您希望通过网络共享的文件夹的绝对路径。(例如: /srv/data)
  • ② 允许的客户端
  • 指定谁可以访问此目录。您可以使用多种格式进行指定。
  • 单个 IP: 192.168.1.100 (仅允许一台特定计算机)
  • IP 段: 10.0.0.0/24 (允许整个特定网络段)
  • 主机名: client-pc.example.com
  • 全部允许: * (允许所有客户端,出于安全考虑需要谨慎!)
  • ③ 选项
  • 对共享方式进行详细设置。我们将了解一些最重要的选项。
  • ro: 以**只读(Read-Only)**方式共享。客户端可以查看或复制文件,但不能修改或删除它们。(默认值)
  • rw: 允许**读写(Read-Write)**。客户端可以自由修改和创建文件。
  • sync: 文件更改时,数据完全保存到磁盘后才响应客户端。稳定性高,但可能会有轻微的性能下降。(默认且推荐)
  • no_root_squash: 一个非常重要的安全选项。默认情况下,当客户端的 root 用户向服务器写入文件时,NFS 会强制将其映射到无权限的 nfsnobody 用户(这称为 root_squash)。此选项禁用此功能,允许客户端的 root 用户在服务器上也拥有 root 权限。这授予了强大的权限,因此仅在绝对必要时才应使用。

综合示例: 如果您想将 /srv/data 目录以读写权限共享给 10.0.0.0/24 网段的客户端,并以只读权限共享给名为 server-B 的主机,您可以在 /etc/exports 文件中添加以下内容:

/srv/data 10.0.0.0/24(rw,sync) server-B(ro,sync)

第二步:应用设置 (exportfs 命令) 🔄

修改并保存 /etc/exports 文件后,设置不会立即生效。您需要通知 NFS 服务重新读取更改的规则。此时使用的命令是 exportfs。

sudo exportfs -r
  • -r 选项的作用是重新读取 (re-read) /etc/exports 文件,将当前的共享列表更新到最新状态。它非常有用,因为无需重启 NFS 服务即可立即应用设置。

第三步:确认共享状态 (showmount 命令) ✅

确认设置是否正确应用是必不可少的。showmount 命令用于显示 NFS 服务器当前正在与谁共享哪些目录。

# 检查我的服务器 (localhost) 的共享列表。
showmount -e localhost

当您执行此命令时,如果在第一步中添加到 /etc/exports 的内容原样显示,则表示设置已成功完成!

Export list for localhost:
/srv/data 10.0.0.0/24,server-B

总结

怎么样?是不是比想象中简单?

  1. 在 /etc/exports 文件中编写共享规则,
  2. 使用 exportfs -r 命令应用设置,然后
  3. 使用 showmount -e 命令进行确认!

只要记住这三个步骤,您就可以在 Linux 上自由配置使用 NFS 进行文件共享。现在剩下的就是客户端服务器使用 mount 命令连接并使用这个共享目录了。我们将在下次更详细地讨论这个问题。


标签: NFS, Linux, 服务器, 网络, 文件共享, DevOps, 系统工程, IT基础设施


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注