NFS文件系统
时间:2007-04-16 来源:leejianzhou
NFS文件系统
研究分布式文件系统,不得不提NFS文件系统,NFS已经成为分布式文件系统事实上的标准。
历史:
NFS从1985年出现至今,已经经历了四个版本的更新,被移植到了几乎所有主流的操作系统中,成为分布式文件系统事实上的标准。NFS利用Unix系统中的虚拟文件系统(Virtual File System,VFS)机制,将客户机对文件系统的请求,通过规范的文件访问协议和远程过程调用,转发到服务器端进行处理;服务器端在VFS之上,通过本地文件系统完成文件的处理,实现了全局的分布式文件系统。Sun公司公开了NFS的实施规范,互联网工程任务组(The Internet Engineering Task Force,IETF)将其列为征求意见稿(RFC-Request for Comments),这很大程度上促使NFS的很多设计实现方法成为标准,也促进了NFS的流行。
架构:
NFS是个分布式的C/S文件系统。NFS的实质在于用户间计算机的共享。用户可以联结到共享计算机并象访问本地硬盘一样访问共享计算机上的文件。管理员可以建立远程系统上文件的访问,以至于用户感觉不到他们是在访问远程文件。
拥有实际的物理磁盘并且通过NFS将这个磁盘共享的主机叫NFS文件服务器,通过NFS访问远程文件系统的主机叫NFS客户机。一个NFS客户机可以利用许多NFS服务器提供的服务。相反,一个NFS服务器可以与多个NFS客户机共享它的磁盘。一个共享了部分磁盘的NFS服务器可以是另一个NFS服务器的客户机。
Linux直接在内核对NFS提供支持。NFS允许用户使用与本地文件系统一样的命令mount把NFS文件系统挂接在本地文件树结构上,这些主机将远程主机的文件系统看做好象是本地文件系统一样,并且是可安装的,可读的和可写的。 如下图所示:
一个简单的NFS网络拓扑结构
通过与Linux的VFS的结合,通常用户是感觉不到正在使用的NFS与UFS(Unix File System)之间的差别。
NFS的客户端和服务器端
运行模式:
NFS服务器可以以stand-alone、xinetd两种模式运行。
stand-alone方式是Unix传统的C/S模式的访问模式。服务器监听(Listen)在一个特点的端口上等待客户端的联机。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而主服务器继续监听。以保持多个子服务器池等待下一个客户端请求。因为在NFS这种负载很大服务器上,预先创子服务器,可以提高客户的服务速度。stand-alone模式工作原理下图。
NFS的stand-alone工作模式
和stand-alone工作模式相比,xinetd模式不想要每一个网络服务进程都监听其服务端口。运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保护系统资源。但是对于访问量大、经常出现并发访问时,xinetd想要频繁启动对应的网络服务进程,反而会导致系统性能下降。
总结:
NFS的优点:
1. 发展多年,简单但是成熟;
2. Linux直接在内核予以支持,使用方便;
NFS的缺点:
1. 可扩展性差,难以应用于大量存储节点和客户端的集群式(cluster)系统;
2. 文件服务器的定位(location)对客户端非透明,维护困难;
3. 缓存管理机制采用定期刷新机制,可能会发生文件不一致性问题;
4. 不支持数据复制,负载均衡等分布式文件系统的高级特性,很容易出现系统的性能瓶颈;
5. NFS服务器的更换会迫使系统暂停服务
6. 对于异地服务的支持能力不强
总之,NFS太老了,对于追求海量数据吞吐量、存在成千上万个客户端和存储节点的互联网应用来说已经力不从心了。