2. 简介

2.1. 什么是 NFS?

网络文件系统 (NFS) 的开发目的是允许机器将远程机器上的磁盘分区挂载到本地,就像它在本地硬盘上一样。这允许在网络上快速、无缝地共享文件。

如果您设置不当,它也可能让不希望有的人通过网络访问您的硬盘驱动器(从而可能读取您的电子邮件、删除您的所有文件以及侵入您的系统)。因此,如果您打算实施 NFS 设置,请务必仔细阅读本文档的“安全”部分。

还有其他系统提供与 NFS 类似的功能。Samba (http://www.samba.org) 为 Windows 客户端提供文件服务。IBM 的 Andrew 文件系统 (http://www.transarc.com/Product/EFS/AFS/index.html) 最近开源,提供了一种文件共享机制,并具有一些额外的安全性和性能特性。Coda 文件系统 (http://www.coda.cs.cmu.edu/) 截至本文撰写时仍在开发中,但旨在与断开连接的客户端良好协作。Andrew 和 Coda 文件系统的许多功能计划包含在下一版本的 NFS(版本 4)(http://www.nfsv4.org)中。如今,NFS 的优势在于它成熟、标准、易于理解,并在各种平台上得到可靠的支持。

2.2. 什么是本 HOWTO,它不是什么?

本 HOWTO 旨在作为正确有效地设置 NFS 的完整分步指南。设置 NFS 涉及两个步骤,即配置服务器,然后配置客户端。本文档按顺序处理这两个步骤。然后,本文档为有特殊需求和硬件设置的人员提供了一些技巧,以及安全和故障排除建议。

本 HOWTO 不是对 NFS 的内部结构和底层结构的描述。为此,您可能希望阅读 Erez Zadok 撰写的Linux NFS 和 Automounter 管理(Sybex,2001 年)。经典 NFS 书籍,经过更新且仍然非常有用的是 Hal Stern 撰写的管理 NFS 和 NIS,由 O'Reilly & Associates, Inc. 出版。Brent Callaghan 撰写的NFS Illustrated 中提供了更高级的技术性 NFS 描述。

本文档也并非旨在作为完整的参考手册,也不包含 Linux NFS 功能的详尽列表。为此,您可以查看 nfs(5)exports(5)mount(8)fstab(5)nfsd(8)lockd(8)statd(8)rquotad(8)mountd(8) 的手册页。

它也不会涵盖 PC-NFS,它被认为是过时的(鼓励用户使用 Samba 与 Windows 机器共享文件)或 NFS 版本 4,它仍在开发中。

2.3. 知识先决条件

在阅读本 HOWTO 之前,您应该了解有关 TCP/IP 网络的一些基本知识;如果您有疑问,请阅读 Networking- Overview-HOWTO

2.4. 软件先决条件:内核版本和 nfs-utils

版本 2 NFS 和版本 3 NFS 之间的区别将在稍后解释;就目前而言,您可能只需接受以下建议:如果您要安装专用或高容量文件服务器,则需要 NFS 版本 3。对于临时使用,NFS 版本 2 应该足够好用。

NFS 版本 2 已经存在很长时间了(至少自 1.2 内核系列以来),但是如果您希望执行以下任何操作,您将需要至少 2.2.18 的内核版本

还有适用于 2.2.14 以上内核版本的补丁程序,它们提供上述功能。其中一些可以从 Linux NFS 主页下载。如果您的内核版本是 2.2.14-2.2.17 并且您手头有源代码,您可以判断是否已添加这些补丁程序,因为 NFS 版本 3 服务器支持将是一个配置选项。但是,除非您有特殊理由使用旧内核,否则您应该升级,因为在此过程中已修复了许多错误。内核 2.2.19 包含一些优于 2.2.18 的附加锁定改进。

版本 3 功能还需要至少版本 0.1.6 的 nfs-utils 包,以及版本 2.10m 或更新版本的 mount。但是,由于 nfs-utils 和 mount 完全向后兼容,并且因为较新版本具有许多安全性和错误修复,因此如果您要开始 NFS 设置,则没有充分的理由不安装最新的 nfs-utils 和 mount 包。

所有 2.4 及更高版本的内核都具有完整的 NFS 版本 3 功能。

在所有情况下,如果您要构建自己的内核,则需要在编译时选择 NFS 和 NFS 版本 3 支持。大多数(但并非所有)标准发行版都附带支持 NFS 版本 3 的内核。

处理大于 2 GB 的文件需要 2.4x 内核和 2.2.x 版本的 glibc

2.2.18 之后的所有内核都支持客户端的 TCP 上的 NFS。截至本文撰写时,服务器端 TCP 上的 NFS 仅以错误百出的形式作为 2.2.18 后系列中的实验性选项存在;2.4 和 2.5 内核的补丁程序已从 2.4.17 和 2.5.6 开始引入。这些补丁程序被认为是稳定的,尽管截至本文撰写时,它们相对较新,尚未得到广泛使用或集成到主流 2.4 内核中。

由于上述许多功能是在内核版本 2.2.18 中引入的,因此本文档的编写与高于此版本的内核(包括 2.4.x)保持一致。如果您使用的是旧内核,则本文档可能无法正确描述您的 NFS 系统。

在我们编写本文档时,NFS 版本 4 只是最近才最终确定为协议,并且没有任何实现被认为是可用于生产环境的。本文档将不对此进行处理。

2.5. 在哪里获得帮助和更多信息

截至 2000 年 11 月,Linux NFS 主页位于 http://nfs.sourceforge.net。请在那里查看与 NFS 相关的邮件列表以及最新版本的 nfs-utils、NFS 内核补丁程序和其他与 NFS 相关的软件包。

当您遇到问题或有本手册、常见问题解答或手册页中未涵盖的问题时,您应该向 nfs 邮件列表发送消息 ()。为了最好地帮助开发人员和其他用户帮助您评估您的问题,您应该包括

了解连接主机的网络配置也很有用。

如果您的问题涉及无法挂载或导出共享,请同时包括

在阅读所有文档后,将所有这些信息与具体问题一起发送,是确保从列表中获得有益回复的最佳方式。

您可能还希望查看 nfs(5)exports(5)mount(8)fstab(5)nfsd(8)lockd(8)statd(8)rquotad(8)mountd(8) 的手册页。