第 26 章通过 NFS 共享文件系统

目录

26.1. 术语
26.2. 安装 NFS 服务器
26.3. 配置 NFS 服务器
26.4. 配置客户端
26.5. 更多信息

摘要

在企业环境中通过网络分发和共享文件系统是一项常见任务。久经验证的网络文件系统 (NFS) 与黄页协议 NIS 协同工作。要使用可以与 LDAP 协同工作并且也可以使用 Kerberos 的更安全协议,请选中 NFSv4

NFS 与 NIS 一起使用时网络面向用户是透明的。利用 NFS,可以通过网络分发任意文件系统。进行适当的设置后,用户将发现自己始终处于同一环境中,而与当前使用的终端无关。

[Important]需要 DNS 的原因

从理论上讲,所有导出都可以仅使用 IP 地址来完成。为避免超时,您需要一个有效的 DNS 系统。至少为了日志记录目的也应使用 DNS,因为 mountd 守护程序执行反向查找。

26.1. 术语

下面是 YaST 模块中使用的术语。

导出

由 NFS 服务器导出的目录,客户端可将其集成到系统中。

NFS 客户端

NFS 客户端是通过网络文件系统协议使用来自 NFS 服务器的 NFS 服务的系统。TCP/IP 协议已集成到 Linux 内核中;无需再安装任何其他软件。

NFS 服务器

NFS 服务器向客户端提供 NFS 服务。运行中的服务器依赖于以下守护程序:nfsd(工作)、idmapd(到 ID 的用户和组名映射,反之亦然)、statd(文件锁定)和 mountd(装入请求)。

26.2. 安装 NFS 服务器

NFS 服务器软件不会默认安装。要安装 NFS 服务器软件,请启动 YaST 并选择软件+软件管理。现在选择过滤器+模式并选择文件服务器,或使用搜索选择并搜索 NFS 服务器。确认包的安装以完成安装进程。

与 NIS 一样,NFS 也是一个客户端/服务器系统。然而,一台计算机可以充当这两种角色 - 它可以通过网络提供文件系统(导出),也可以从其他主机装入文件系统(导入)。

26.3. 配置 NFS 服务器

可通过 YaST 配置 NFS 服务器或手动配置它。NFS 还可与 Kerberos 结合来进行身份验证。

26.3.1. 使用 YaST 导出文件系统

使用 YaST 将网络中的某台主机转换为 NFS 服务器,即将目录和文件导出到所有有权访问它的主机的服务器。服务器还可为组的所有成员提供应用程序,而无需在每台主机上本地安装应用程序。要设置此类服务器,请继续执行以下步骤:

  1. 启动 YaST 并选择网络服务+NFS 服务器;请参见图 26.1 “NFS 服务器配置工具”

    图 26.1. NFS 服务器配置工具

    NFS 服务器配置工具

  2. 激活启动单选按钮并输入 NFSv4 域名

  3. 如果您需要安全访问服务器,请单击启用 GSS 安全性。先决条件是您的域中安装了 Kerberos 并且服务器和客户端都已采用 Kerberos 系统。单击下一步

  4. 在上方的文本字段中输入要导出的目录。在下面输入应能访问这些目录的主机。图 26.2 “使用 YaST 配置 NFS 服务器”中显示了此对话框。

    图 26.2. 使用 YaST 配置 NFS 服务器

    使用 YaST 配置 NFS 服务器

    该图显示了在先前对话框中启用 NFSv4 的场景。绑定装入目标显示在右边的窗格中。有关更多细节,单击帮助。在对话框的下半部分,有四个可以为每个主机设置的选项:单主机网络组通配符IP 网络。关于这些选项的详细描述,请参见导出手册页。

  5. 单击完成以完成配置。

[Important]自动配置防火墙

如果系统启用了防火墙 (SuSEfirewall2),在选择打开防火墙中的端口后,YaST 会通过启用 nfs 服务使防火墙的配置适应 NFS 服务器。

26.3.1.1. 为 NFSv4 客户端导出

激活启用 NFSv4 支持 NFSv4 客户端。用 NFSv3 的客户端仍可访问服务器已导出的目录,如果它们已适当导出的话。这在第 26.3.1.3 节 “并存的 v3 和 v4 导出”中有描述。

激活 NFSv4 之后,请输入适当的域名。请确保名称与访问此特定服务器的任何 NFSv4 客户端的 /etc/idmapd.conf 文件中的名称相同。此参数用于(服务器和客户端上)NFSv4 支持所需的 idmapd 服务。如果没有特殊要求,请将它保留为 localdomain(默认值)。有关更多信息,请参见第 26.5 节 “更多信息”中的链接。

单击下一步。接下来的对话框有两部分。上半部分包含两列,名为目录绑定装入目标目录是直接可编辑的列,它列出了要导出的目录。

对于固定的客户端集合,有两类目录可以导出:作为伪 root 文件系统的目录;绑定到伪文件系统的某个子目录的目录。此伪文件系统作为基本点,为相同客户端导出的所有文件系统在其下各就各位。对于一个或一组客户端,服务器上只有一个目录可以配置为伪 root 目录以供导出。对于此客户端,通过将它们绑定到伪 root 目录中现有的子目录可以导出多个目录。

图 26.3. 用 NFSv4 导出目录

用 NFSv4 导出目录

在对话框的下半部分,输入特定目录的客户端(通配符)和导出选项。在上半部分添加目录后,用于输入客户端信息和选项的另一个对话框会自动弹出。之后,如要添加一个新客户端或一组客户端,请单击添加主机

在打开的小对话框中,输入主机通配符。可以为每个主机设置四类主机通配符:单主机(名称或 IP 地址)、网络组、通配符(如 * 表示所有计算机都能访问服务器)和 IP 网络。然后,在选项中,将 fsid=0 包含在逗号分隔的选项列表中,以将目录配置为伪 root 目录。如果此目录应该绑定到一个已配置的伪 root 目录下的另一个目录,请确保在选项列表中用 bind=/target/path 提供目标绑定路径。

例如,假定选择目录 /exports 作为能访问服务器的所有客户端的伪 root 目录。然后将这添加到上半部分并确保为此目录输入的选项包含 fsid=0。如果另一个目录 /data 也需要用 NFSv4 导出,请将此目录添加到上半部分。为此输入选项时,请确保 bind=/exports/data 在列表中,并且 /exports/data 已经是 /exports 的现有子目录。选项 bind=/target/path 中的任何更改(添加、删除或更改值)都会反映在 Bindmount 目标中。此列不是可以直接编辑的列,它总结了目录及其性质。提供所有信息后,单击完成以完成配置。服务将立即可用。

26.3.1.2. NFSv3 和 NFSv2 导出

请确保未在初始对话框中选中启用 NFSv4,然后单击下一步

下一个对话框包含两部分。在上面的文本字段中,输入要导出的目录。在下面输入应能访问这些目录的主机。可以为每个主机设置四类主机通配符:单主机(名称或 IP 地址)、网络组、通配符(如 * 表示所有计算机都能访问服务器)和 IP 网络。

图 26.4 “用 NFSv2 和 v3 导出目录”中显示了此对话框。关于这些选项的详细描述,请参见 man exports。单击完成以完成配置。

图 26.4. 用 NFSv2 和 v3 导出目录

用 NFSv2 和 v3 导出目录

26.3.1.3. 并存的 v3 和 v4 导出

NFSv3 和 NFSv4 导出可以在一台服务器上并存。在初始的配置对话框中启用了 NFSv4 之后,选项列表中不包含 fsid=0bind=/target/path 的导出将作为 v3 导出处理。考虑图 26.2 “使用 YaST 配置 NFS 服务器”中的示例。如果添加另一个目录(如 /data2),然后在相应的选项列表中使用添加目录不会提供 fsid=0bind=/target/path,此导出将作为 v3 导出。

[Important]

自动配置防火墙

如果系统启用了 SuSEfirewall2,在选择打开防火墙中的端口后,YaST 会通过启用 nfs 服务使防火墙的配置适应 NFS 服务器。

26.3.2. 手动导出文件系统

NFS 导出服务的配置文件是 /etc/exports/etc/sysconfig/nfs。除了这些文件之外,NFSv4 服务器配置还需要 /etc/idmapd.conf。要启动或重启动服务,请运行命令 rcnfsserver restart。如果在 /etc/sysconfig/nfs 中配置了 NFSv4,这还将启动 rpc.idmapd。NFS 服务器依赖于运行的 RPC 端口映射器。所以,还请使用 rcrpcbind restart 启动或重启动端口映射器服务。

26.3.2.1. 用 NFSv4 导出文件系统

NFSv4 是 SUSE Linux Enterprise Server 上可用的 NFS 协议的最新版本。配置 NFSv4 导出的目录的过程与先前的 NFS 版本略有不同。

26.3.2.1.1. /etc/exports

/etc/exports 文件包含项列表。每个条目表示共享的目录以及共享的方式。/etc/exports 中的条目通常包含:

/shared/directory   host(option_list)

例如:

/export   192.168.1.2(rw,fsid=0,sync,crossmnt)
/export/data   192.168.1.2(rw,bind=/data,sync)

在此,使用 IP 地址 192.168.1.2 标识允许的客户端。您可以使用主机名、表示一组主机的通配符(*.abc.com* 等)或网络组 (@my-hosts)。

指定 fsid=0 的目录是特殊的。它是导出的文件系统的 root,有时称为伪 root 文件系统。该目录还必须具有 crossmnt,以可以使用 NFSv4 正确操作。通过 NFSv4 导出的所有其他目录必须装入到该点下面。如果要导出不在该导出 root 目录下的目录,则需要将其绑定到导出树中。可以使用 bind= 语法进行该操作。

在上述示例中,/data 不在 /export 下,因此导出 /export/data,并指定 /data 目录应绑定到该名称。目录 /export/data 必须存在,通常应为空。

当从该服务器装入客户端时,应只是装入 servername:/ 而不是 servername:/export。无需同时装入 servername:/data,因为它将在装入 servername:/ 的目录下自动显示。

26.3.2.1.2. /etc/sysconfig/nfs

/etc/sysconfig/nfs 文件包含一些决定 NFSv4 服务器守护程序行为的参数。务必将参数 NFS4_SUPPORT 设置为 yesNFS4_SUPPORT 决定 NFS 服务器是否支持 NFSv4 导出和客户端。

26.3.2.1.3. /etc/idmapd.conf

Linux 计算机上的每个用户都有一个名称和 ID。idmapd 针对服务器的 NFSv4 请求执行名称到 ID 的映射并答复客户端。它必须同时在服务器和客户端上针对 NFSv4 运行,因为 NFSv4 仅将名称用于通讯。

对于可能正在使用 NFS 共享文件系统的计算机,请确保在这些计算机间为用户指定用户名和 ID (uid) 的方式一致。这可以使用 NIS、LDAP 或域中的任何统一的域身份验证机制来实现。

对于客户端和服务器,必须在 /etc/idmapd.conf 文件中将参数 Domain 设为相同值。如果您不确定,请在服务器和客户端文件中将域保留为 localdomain。配置文件样本如下:

[General] 

Verbosity = 0 
Pipefs-Directory = /var/lib/nfs/rpc_pipefs
Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nobody

关于更多参考,请阅读 idmapdidmapd.conf 的手册页:man idmapdman idmapd.conf

26.3.2.1.4. 启动和停止服务

更改 /etc/exports/etc/sysconfig/nfs 后,通过 rcnfsserver restart 启动或重启动 NFS 服务器服务。更改 /etc/idmapd.conf 后,使用 killall -HUP rpc.idmapd 命令重新装载配置文件。

如果 NFS 服务必须在引导时启动,则运行 chkconfig nfsserver on 命令。

26.3.2.2. 用 NFSv2 和 NFSv3 导出文件系统

这部分特定于 NFSv3 和 NFSv2 导出。请参见第 26.3.1.1 节 “为 NFSv4 客户端导出”了解用 NFSv4 导出。

用 NFS 导出文件系统涉及两个配置文件:/etc/exports/etc/sysconfig/nfs。通常,/etc/exports 文件条目的格式如下:

/shared/directory   host(list_of_options)

例如:

/export   192.168.1.2(rw,sync)

其中,目录 /export 是与选项列表为 rw,sync 的主机 192.168.1.2 共享的。该 IP 地址可使用通配符替换为一个或一组客户端名称甚或网络组(如 *.abc.com)。

有关所有选项及其含义的详细说明,请参见 exports 的手册页 (man exports)。

更改 /etc/exports/etc/sysconfig/nfs 后,请用命令 rcnfsserver restart 启动或重启动 NFS 服务器。

26.3.3. 采用 Kerberos 的 NFS

要对 NFS 使用 Kerberos 身份验证,必须启用 GSS 安全性。在初始 YaST“NFS 服务器”对话框中选择启用 GSS 安全。必须具有一个有效的 Kerberos 服务器才能使用此功能。YaST 不会设置服务器,而是仅使用所提供的功能。如果希望使用 Kerberos 进行身份验证,则除了 YaST 配置外,还必须首先至少完成以下步骤,才能运行 NFS 配置:

  1. 请确保服务器和客户端都在同一 Kerberos 域中。它们必须访问相同的 KDC(密钥分发中心)服务器并共享其 krb5.keytab 文件(在任何计算机上的默认位置是 /etc/krb5.keytab)。有关 Kerberos 的更多信息,请参见第 6 章 Network Authentication with Kerberos (↑安全指南)。

  2. 在客户端上用 rcgssd start 启动 gssd 服务。

  3. 在客户端上用 rcsvcgssd start 启动 svcgssd 服务。

有关配置采用 Kerberos 的 NFS 的更多信息,请参见第 26.5 节 “更多信息” 中的链接。

26.4. 配置客户端

要将主机配置为 NFS 客户端,无需安装其他软件。将默认安装所有需要的包。

26.4.1. 使用 YaST 导入文件系统

授权用户可以用 YaST NFS 客户端模块从 NFS 服务器将 NFS 目录装入本地文件树。单击添加并输入 NFS 服务器的主机名、要导入的目录以及在本地装入此目录的安装点。在第一个对话框中单击完成后,这些更改即会生效。

NFS 设置选项卡中,启用打开防火墙中的端口以便访问远程计算机上的服务。防火墙状态将显示在复选框旁边。使用 NFSv4 时,请确保选择了启用 NFSv4 复选框,并且 NFSv4 域名包含与 NFSv4 服务器所用相同的值。默认域为 localdomain

单击确定保存更改。请参见图 26.5 “使用 YaST 配置 NFS 客户端”

配置写入/etc/fstab,并将装入指定的文件系统。当您稍后启动 YaST 配置客户端时,它还将读取此文件中的现有配置。

图 26.5. 使用 YaST 配置 NFS 客户端

使用 YaST 配置 NFS 客户端

26.4.2. 手动导入文件系统

手动从 NFS 服务器导入文件系统的先决条件是运行 RPC 端口映射器。作为 root 用户输入 rcrpcbind start 来启动它。然后就可以使用 mount 将远程文件系统像本地分区那样装入文件系统中:

mount host:remote-pathlocal-path

例如要从 nfs.example.com 计算机导入用户目录,使用:

mount nfs.example.com:/home /home

26.4.2.1. 使用自动装入服务

autofs 守护程序可用于自动装入远程文件系统。请在 /etc/auto.master 文件中添加以下条目:

/nfsmounts /etc/auto.nfs

如果 auto.nfs 文件正确填充,/nfsmounts 目录将作为客户端上所有 NFS 装入的 root 目录。文件名为 auto.nfs 是为了方便,也可以选择其他名称。在 auto.nfs 中为所有 NFS 装入添加条目,如下所示:

localdata -fstype=nfs server1:/data
nfs4mount -fstype=nfs4 server2:/

root 身份用 rcautofs start 激活设置。对于此示例,/nfsmounts/localdataserver1/data 目录将通过 NFS 装入,server2/nfsmounts/nfs4mount 将通过 NFSv4 装入。

如果在运行 autofs 服务时编辑 /etc/auto.master 文件,则必须用 rcautofs restart 重启动自动装入程序才能使更改生效。

26.4.2.2. 手动编辑 /etc/fstab

通常,/etc/fstab 中的 NFSv3 装入项如下:

nfs.example.com:/data /local/path nfs rw,noauto 0 0

也可以将 NFSv4 装入添加到 /etc/fstab 文件中。对于这些装入,请在第三列中使用 nfs4 而不是 nfs,并确保在第一列中的 nfs.example.com: 后面用 / 指定远程文件系统。/etc/fstab 中 NFSv4 装入的示例行如下所示:

nfs.example.com:/ /local/pathv4 nfs4 rw,noauto 0 0

noauto 选项可禁止在启动时自动装入文件系统。如果您要手动安装各文件系统,可以缩短只指定安装点的安装命令:

mount /local/path

请注意,如果您没有输入 noauto 选项,系统的初始化脚本将在启动时处理这些文件系统的装入。

26.5. 更多信息

除了 exportsnfsmount 的手册页外,还可在 /usr/share/doc/packages/nfsidmap/README 中找到关于配置 NFS 服务器和客户端的信息。有关更多联机文档,请参见以下网站: