网络文件系统 (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 的优势在于它成熟、标准、易于理解,并在各种平台上得到可靠的支持。
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 只是最近才最终确定为协议,并且没有任何实现被认为是可用于生产环境的。本文档将不对此进行处理。
截至 2000 年 11 月,Linux NFS 主页位于 http://nfs.sourceforge.net。请在那里查看与 NFS 相关的邮件列表以及最新版本的 nfs-utils、NFS 内核补丁程序和其他与 NFS 相关的软件包。
当您遇到问题或有本手册、常见问题解答或手册页中未涵盖的问题时,您应该向 nfs 邮件列表发送消息 (<nfs@lists.sourceforge.net>)。为了最好地帮助开发人员和其他用户帮助您评估您的问题,您应该包括
您正在使用的 nfs-utils 版本
内核版本和任何非库存应用的内核。
您正在使用的 Linux 发行版
所涉及的其他操作系统的版本。
了解连接主机的网络配置也很有用。
如果您的问题涉及无法挂载或导出共享,请同时包括
您的副本/etc/exports文件
在服务器上运行的 rpcinfo -p localhost 的输出
在客户端上运行的 rpcinfo -p servername 的输出
在阅读所有文档后,将所有这些信息与具体问题一起发送,是确保从列表中获得有益回复的最佳方式。
您可能还希望查看 nfs(5)、exports(5)、mount(8)、fstab(5)、nfsd(8)、lockd(8)、statd(8)、rquotad(8) 和 mountd(8) 的手册页。