如何在 Linux 上设置和配置 NFS 服务器如何在 Linux 上设置和配置 NFS 服务器如何在 Linux 上设置和配置 NFS 服务器如何在 Linux 上设置和配置 NFS 服务器
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Linux 上设置和配置 NFS 服务器

发表 admin at 2025年2月28日
类别
  • 未分类
标签

NFS 服务器允许多个系统共享通过网络部署的文件系统。以下是在 Linux 上安装和设置 NFS 服务器的方法。

Sun Microsystems 的 NFS(网络文件系统)是一种基于 RPC 的分布式文件系统结构,允许网络设备使用通过网络运行 NFS 的服务器作为其本地驱动器。

以下是在 Linux 计算机上设置和配置 NFS 服务器的分步指南。

什么是网络文件系统?

NFS 文件系统有四种协议。当服务器准备好后,它通知portmap(将协议转换为端口号的服务器)要使用的端口,并提供受控的RPC程序号。

使用嵌入式Linux系统时,通过网络上的NFS文件共享来启动设备非常方便,而不是直接从存储设备(NAND闪存、eMMC、MMC等)启动。

尽管比较罕见,但您可能还希望挂载 NFS 共享并在系统启动后使用它执行文件共享,即使您不直接从 NFS 共享启动系统。为了使这两种方案都起作用,您必须首先在您正在开发的计算机上安装 NFS 服务器。

如何在 Linux 上安装 NFS

如果您使用基于 Debian 的系统,例如 Ubuntu 或 Linux Mint,则应安装 nfs-kernel-server 软件包,如下所示:

sudo apt install nfs-kernel-server

在 Arch Linux 上:

sudo pacman -S nfs-utils

在 Fedora、CentOS 和 RHEL 上:

sudo dnf -y install nfs-utils

在此过程结束时,您的 NFS 服务器将自动运行。但是,此时它还不知道您要通过网络共享计算机上的哪些目录。因此,它默认不提供任何共享。

您可以在同一服务器上打开多个目录,以允许具有不同授权和限制的网络共享。

在 Linux 上配置 NFS 服务器

要通过 NFS 服务器共享任何目录,需要在 /etc/exports 文件中配置与目录相关的设置。使用您选择的任何文本编辑器打开该文件。确保在命令中添加 sudo 前缀。

sudo vim /etc/exports 

您可能想知道此处看到的映射选项意味着什么:

  • root_squash: 将 sudo 授权的客户端用户标记为 NFS 上的无人用户和组

  • no_root_squash:禁用根挤压

  • all_squash:与root_squash不同,它允许将所有用户映射为nobody用户和组。它通常用于公共访问。

  • no_all_squash:与all_squash相反;该选项是默认选项

当 NFS 服务器上的 /etc/exports 文件允许的 IP 范围之外的系统尝试访问相关资源时,NFS 服务器将拒绝该请求。

在嵌入式系统上安装时,您可能会收到“服务器拒绝访问”消息。运行 NFS 服务器的计算机上的 /var/log/syslog 文件末尾将出现类似以下内容的错误消息:

rpc.mountd[1041]: refused mount request from 192.168.2.2 for /home/example/casper/target (/home/example/casper/target): unmatched host

当您看到像上面这样的不匹配的主机日志消息时,您应该在 /etc/exports 文件中展开相关规则的 IP/网络掩码部分或使用星号 (* 如果您想授予对所有 IP 地址的访问权限,请使用 ) 特殊字符。

修改 /etc/exports 文件后必须重新启动 NFS 服务:

sudo service nfs-kernel-server restart

或者,如果您的发行版附带了 systemctl,请运行以下命令:

sudo systemctl restart nfs-server.service

您还可以为 exportfs 命令提供 -r 参数,以便它重新共享已更改与共享相关的任何设置的目录:

sudo exportfs -r

修复挂载延迟问题

当您的服务器上使用 NFS 协议版本 4 及更高版本时,在 NFS 服务器默认配置的传统操作场景中,客户端挂载过程可能会出现长达 15 秒的延迟。此问题可能会出现在 Debian、Fedora 和 Ubuntu 的某些版本上。

如果您遇到类似的安装延迟,您可以检查服务器端日志文件(/var/log/syslog、/var/log/messages)中的日志类似于以下内容的消息:

... RPC: AUTH_GSS upcall timed out

此消息表明 Kerberos 身份验证失败并超时。您可能不需要 Kerberos 协议在您的环境中的网络上进行安全身份验证。即使您处于以这种方式配置的网络上,至少对于您的嵌入式 Linux 系统,您也不需要启用 Kerberos 身份验证。

尽管已经提供了通过 NFS 运行 GSSD 服务的替代方法来解决该问题,但这些方法在所有发行版和软件包版本中的影响并不相同,因此,从根本上解决此问题是最合理的。

您必须阻止(或列入黑名单)rpcsec_gss_krb5 内核模块在执行 NFS 服务器的 Linux 系统上加载。

要使此选项在每次重新启动计算机时生效,请创建一个名为 /etc/modprobe.d/nfs-gss-blacklist.conf 的新文件,并向其中添加以下行:

blacklist rpcsec_gss_krb5

一旦保存文件并重新启动系统,安装延迟问题就会消失。

为什么使用 NFS 服务器?

NFS 的设置简单且经济实惠。它允许集中管理,从而减少对单个用户 PC 上额外软件和存储空间的需求。在一台机器上,多个用户可以共享相同的磁盘空间。他们可以将这些磁盘放在文件系统之上以扩展存储空间。

NFS 共享允许将需要大量存储空间的程序分组到单个服务器上。这可以节省大量磁盘空间。虽然以前的 NFS 版本容易受到攻击,但较新的版本引入了额外级别的保护,包括 Kerberos 身份验证。

然而,也存在一些缺点。我们发现,在某些情况下,网络流量较大时,NFS 会变慢。可以与 Windows 共享,但可能需要一些第三方应用程序。但这在安全性方面并不是一个非常明智的做法。如果配置不正确,可能会出现未经授权的访问。

使用 NFS 在 Linux 上轻松共享文件系统

了解安全问题并寻找解决方案是系统管理员最重要的任务之一。有必要了解所有文件共享系统和管理工具的安全程序,而不仅仅是 NFS。

©2015-2025 Norria support@norria.com