分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。
例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就象使用本地驱动器一样,下面是三个基本的分布式文件系统。
网络文件系统
(NFS) 最早由Sun微系统公司作为TCP/IP网上的文件共享系统开发。Sun公司估计现在大约有超过310万个系统在运行NFS,大到大型计算机、小至PC机,其中至少有80%的系统是非Sun平台。
Andrew文件系统
(AFS) 结构与NFS相似,由卡内基·梅隆大学信息技术中心(ITC)开发、现由前ITC职员组成的Transarc公司负责开发和销售。AFS较NFS有所增强。
分布式文件系统
(DFS) 是AFS的一个版本,作为开放软件基金会(OSF)的分布式计算环境(DCE)中的文件系统部分。
如果文件的访问仅限于一个用户,那么分布式文件系统就很容易实现。可惜的是,在许多网络环境中这种限制是不现实的,必须采取并发控制来实现文件的多用户访问,表现为如下几个形式:
只读共享 任何客户机只能访问文件,而不能修改它,这实现起来很简单。
受控写操作 采用这种方法,可有多个用户打开一个文件,但只有一个用户进行写修改。而该用户所作的修改并不一定出现在其它已打开此文件的用户的屏幕上。
并发写操作 这种方法允许多个用户同时读写一个文件。但这需要操作系统作大量的监控工作以防止文件重写,并保证用户能够看到最新信息。这种方法即使实现得很好,许多环境中的处理要求和网络通信量也可能使它变得不可接受。
NFS和AFS的区别
NFS和AFS的区别在于对并发写操作的处理方法上。当一个客户机向服务器请求一个文件(或数据库记录),文件被放在客户工作站的高速缓存中,若另一个用户也请求同一文件,则它也会被放入那个客户工作站的高速缓存中。当两个客户都对文件进行修改时,从技术上而言就存在着该文件的三个版本(每个客户机一个,再加上服务器上的一个)。有两种方法可以在这些版本之间保持同步:
无状态系统 在这个系统中,服务器并不保存其客户机正在缓存的文件的信息。因此,客户机必须协同服务器定期检查是否有其他客户改变了自己正在缓存的文件。这种方法在大的环境中会产生额外的LAN通信开销,但对小型LAN来说,这是一种令人满意的方法。NFS就是个无状态系统。
回呼(Callback)系统 在这种方法中,服务器记录它的那些客户机的所作所为,并保留它们正在缓存的文件信息。服务器在一个客户机改变了一个文件时使用一种叫回叫应答(ca11backpromise)的技术通知其它客户机。这种方法减少了大量网络通信。AFS(及OSFDCE的DFS)就是回叫系统。客户机改变文件时,持有这些文件拷贝的其它客户机就被回叫并通知这些改变。
无状态操作在运行性能上有其长处,但AFS通过保证不会被回叫应答充斥也达到了这一点。方法是在一定时间后取消回叫。客户机检查回叫应答中的时间期限以保证回叫应答是当前有效的。回叫应答的另一个有趣的特征是向用户保证了文件的当前有效性。换句话说,若一个被缓存的文件有一个回叫应答,则客户机就认为文件是当前有效的,除非服务器呼叫指出服务器上的该文件已改变了。
Network File System
(NFS)网络文件系统
NFS是个分布式的客户机/服务器文件系统。NFS的实质在于用户间计算机的共享。用户可以联结到共享计算机并象访问本地硬盘一样访问共享计算机上的文件。管理员可以建立远程系统上文件的访问,以至于用户感觉不到他们是在访问远程文件。
NFS是个到处可用和广泛实现的开放式系统。
NFS最初的设计目标
允许用户象访问本地文件一样访问其他系统上的文件。提供对无盘工作站的支持以降低网络开销。
简化应用程序对远程文件的访问使得不需要因访问这些文件而调用特殊的过程。
使用一次一个服务请求以使系统能从已崩溃的服务器或工作站上恢复。
采用安全措施保护文件免遭偷窃与破坏。
使NFS协议可移植和简单,以便它们能在许多不同计算机上实现,包括低档的PC机。
大型计算机、小型计算机和文件服务器运行NFS时,都为多个用户提供了一个文件存储区。工作站只需要运行TCP/IP协议来访问这些系统和位于NFS存储区内的文件。工作站上的NFS通常由TCP/IP软件支持。对DOS用户,一个远程NFS文件存储区看起来是另一个磁盘驱动器盘符。对Macintosh用户,远程NFS文件存储区就是一个图标。
NFS的客户机和服务器部分的功能
服务器目录共享 服务器广播或通知正在共享的目录,一个共享目录通常叫做出版或出口目录。有关共享目录和谁可访问它们的信息放在一个文件中,由操作系统启动时读取。
客户机访问 在共享目录上建立一种链接和访问文件的过程叫做装联(mounting),用户将网络用作一条通信链路来访问远程文件系统。
NFS的一个重要组成是虚拟文件系统(VFS),它是应用程序与低层文件系统间的接口。
VFS提供的一些操作
- close文件关闭操作
- create 文件生成操作
- fsync将改变保存到文件中
- getattr 取文件属性
- link 用另一个名字访问一个文件
- lookup 读目录项
- mkdir建立新目录
- open 文件打开操作
- rdwr 文件读写操作
- remove 删除一个文件
- rename 文件改名
- rmdir删除一目录
- setattr 设置文件属性
Andrew File System(AFS)Andrew文件系统(AFS)
AFS是专门为在大型分布式环境中提供可靠的文件服务而设计的。它通过基于单元的结构生成一种可管理的分布式环境。一个单元是某个独立区域中文件服务器和客户机系统的集合,这个独立区域由特定的机构管理。通常代表一个组织的计算资源。用户可以和同一单元中其他用户方便地共享信息,他们也可以和其他单元内的用户共享信息,这取决于那些单元中的机构所授予的访问权限。
AFS服务器运行进程
文件服务器进程 这个进程响应客户工作站对文件服务的请求,维护目录结构,监控文件和目录状态信息,检查用户的访问。
基本监察(BOS)服务器进程 这个进程运行于有BOS设定的服务器。它监控和管理运行其他服务的进程并可自动重启服务器进程,而不需人工帮助。
卷宗服务器进程 此进程处理与卷宗有关的文件系统操作,如卷宗生成、移动、复制、备份和恢复。
卷宗定位服务器进程 该进程提供了对文件卷宗的位置透明性。即使卷宗被移动了,用户也能访问它而不需要知道卷宗移动了。
鉴别服务器进程 此进程通过授权和相互鉴别提供网络安全性。用一个“鉴别服务器”维护一个存有口令和加密密钥的鉴别数据库,此系统是基于Kerberos的。
保护服务器进程 此进程基于一个保护数据库中的访问信息,使用户和组获得对文件服务的访问权。
更新服务器进程 此进程将AFS的更新和任何配置文件传播到所有AFS服务器。
AFS还配有一套用于差错处理,系统备份和AFS分布式文件系统管理的实用工具程序。例如,SCOUT定期探查和收集AFS文件服务器的信息。信息在给定格式的屏幕上提供给管理员。设置多种阈值向管理者报告一些将发生的问题,如磁盘空间将用完等。另一个工具是USS,可创建基于带有字段常量模板的用户帐户。Ubik提供数据库复制和同步服务。一个复制的数据库是一个其信息放于多个位置的系统以便于本地用户更方便地访问这些数据信息。同步机制保证所有数据库的信息是一致的。