摘要
在企业环境中通过网络分发和共享文件系统是一项常见任务。久经验证的网络文件系统 (NFS) 与黄页协议 NIS 协同工作。要使用可以与 LDAP 协同工作并且也可以使用 Kerberos 的更安全协议,请选中 NFSv4。结合使用 pNFS,您可以突破性能瓶颈。
NFS 与 NIS 一起使用时网络面向用户是透明的。利用 NFS,可以通过网络分发任意文件系统。进行适当的设置后,用户将发现自己始终处于同一环境中,而与当前使用的终端无关。
下面是 YaST 模块中使用的术语。
由 NFS 服务器导出的目录,客户端可将其集成到系统中。
NFS 客户端是通过网络文件系统协议使用来自 NFS 服务器的 NFS 服务的系统。TCP/IP 协议已集成到 Linux 内核中;无需再安装任何其他软件。
NFS 服务器向客户端提供 NFS 服务。运行中的服务器依赖于以下守护程序:nfsd(工作)、idmapd(到 ID 的用户和组名映射,反之亦然)、statd(文件锁定)和 mountd(装入请求)。
并行 NFS,属于 NFSv4 的一种协议扩展。任何 pNFS 客户端都可以直接访问 NFS 服务器上的数据。
NFS 服务器软件不会默认安装。如果您按照第 28.3 节 “配置 NFS 服务器”中的说明配置 NFS 服务器,则系统会自动提示您安装所需的包。或者,使用 YaST 或 zypper 安装包 nfs-kernel-server。
与 NIS 一样,NFS 也是一个客户端/服务器系统。但是,一台计算机可充当这两种角色:它可以通过网络提供文件系统(导出),也可以从其他主机装入文件系统(导入)。
可通过 YaST 配置 NFS 服务器,也可以手动配置它。NFS 还可与 Kerberos 结合来进行身份验证。
要对 NFS 使用 Kerberos 身份验证,必须启用 GSS 安全性。在初始 YaST NFS 服务器对话框中选择。必须具有一个有效的 Kerberos 服务器才能使用此功能。YaST 不会设置服务器,只是使用所提供的功能。如果希望使用 Kerberos 进行身份验证,则除了 YaST 配置外,还必须首先至少完成以下步骤,才能运行 NFS 配置:
请确保服务器和客户端都在同一 Kerberos 域中。它们必须访问相同的 KDC(密钥分发中心)服务器并共享其 krb5.keytab 文件(在任何计算机上的默认位置是 /etc/krb5.keytab)。有关 Kerberos 的更多信息,请参见Chapter 6, Network Authentication with Kerberos (↑Security Guide)。
在客户端上用 rcgssd start 启动 gssd 服务。
有关配置采用 Kerberos 的 NFS 的更多信息,请参见第 28.5 节 “更多信息” 中的链接。
要将主机配置为 NFS 客户端,无需安装其他软件。将默认安装所有需要的包。
授权用户可以用 YaST NFS 客户端模块从 NFS 服务器将 NFS 目录装入本地文件树。按如下所示继续:
过程 28.1. 导入 NFS 目录¶
启动 YaST NFS 客户端模块。
单击 选项卡中的。输入 NFS 服务器的主机名、要导入的目录以及用于装入此目录的本地安装点。
若要使用防火墙并允许从远程计算机访问服务,请启用 选项卡中的。防火墙状态将显示在复选框旁边。
使用 NFSv4 时,请确保已选中 复选框,并且 包含 NFSv4 服务器所用的值。默认域为 localdomain。
单击保存更改。
配置写入/etc/fstab,并将装入指定的文件系统。当您稍后启动 YaST 配置客户端时,它还将读取此文件中的现有配置。
手动从 NFS 服务器导入文件系统的先决条件是运行 RPC 端口映射器。作为 root 用户输入 rcrpcbind start 来启动它。然后就可以使用 mount 将远程文件系统像本地分区那样装入文件系统中:
mounthost:remote-pathlocal-path
例如,要从 nfs.example.com 计算机导入用户目录,请使用:
mount nfs.example.com:/home /home
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/localdata,server1 的 /data 目录将通过 NFS 装入,server2 的 /nfsmounts/nfs4mount 将通过 NFSv4 装入。
如果在运行 autofs 服务时编辑 /etc/auto.master 文件,则必须用 rcautofs restart 重启动自动装入程序才能使更改生效。
/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 选项,系统的初始化脚本将在启动时处理这些文件系统的装入。
NFS 是最老的协议之一,开发于上世纪八十年代。因此,如果您要共享小文件,NFS 通常能够满足需求。但是,如果您要传送大文件或有大量的客户端要访问数据,则 NFS 会陷入瓶颈并且严重影响系统性能。这是因为文件迅速变大,而以太网的相关速度没有完全跟上。
当您请求“普通” NFS 服务器中的文件时,服务器会查找文件元数据、收集所有数据并通过网络将数据传送到您的客户端。但是,无论文件的大小如何,性能瓶颈都会凸显出来:
如果是小文件,则大部分时间都花在收集元数据上
如果是大文件,则大部分时间花在将数据从服务器传送到客户端上
pNFS 或并行 NFS 则突破了此种限制,因为它将文件系统元数据从数据位置分离出来。因此,pNFS 需要两类服务器:
一个 metadata 或控制服务器,用于处理所有与数据无关的通讯
一或多个储存服务器,用于储存数据
元数据和储存服务器组成单独一个逻辑 NFS 服务器。当客户端要读取或写入时,元数据服务器会告诉 NFSv4 客户端使用哪个储存服务器访问文件块。客户端可以直接访问该服务器上的数据。
SUSE Linux Enterprise 仅支持在客户端上的 pNFS。
请执行过程 28.1, “导入 NFS 目录”中所述的步骤,但选中 复选框以及可选的 。YaST 会执行所有必需的步骤,并且会在文件 /etc/exports 中写入所有必要选项。
请参阅第 28.4.2 节 “手动导入文件系统”着手配置。大多数配置通过 NFSv4 服务器完成。对于 pNFS,唯一的区别是将 minorversion 选项和元数据服务器 MDS_服务器添加到您的 mount 命令:
mount -t nfs4 -o minorversion=1MDS_SERVERMOUNTPOINT
为方便调试,请更改 /proc 文件系统中的值:
echo 32767 > /proc/sys/sunrpc/nfsd_debug echo 32767 > /proc/sys/sunrpc/nfs_debug
除了 exports、nfs 和 mount 的手册页外,还可在 /usr/share/doc/packages/nfsidmap/README 中找到关于配置 NFS 服务器和客户端的信息。有关更多联机文档,请参见以下网站:
在 SourceForge 上联机查找详细的技术文档。
关于设置采用 Kerberos 的 NFS 的描述,请参见 NFS Version 4 Open Source Reference Implementation。
如果您对 NFSv4 有疑问,请参考 Linux NFSv4 FAQ(Linux NFSv4 常见问题)。