网络文件系统和协议
NAS服务器是用于通过网络提供文件服务的一种产品,它的基础即网络文件系统。网络文件系统与本地文件系统具有相同
的特性,但是它还采用了网络文件协议和网络安全机制,可以供远程用户或应用通过网络访问。大致说来,网络文件系统即网络文件协议和本地文件系统的结
合,
1999年的市面上有几种网络文件系统,最常见的两种是:
• UFS+NFS:基于UNIX ,即UNIX 文件系统(UFS)和网络文件系统(NFS)。
• NTFS+CIFS:基于Windows , 即N T文件系统(NTFS)和公用互联网文件系统(CIFS)。
虽然它们经常被称为文件系统,但是它们并不是文件系统,而是文件访问协议。NFS是由Sun公司开发的,用于在UNIX 系统之间通过网络共享文件。CIFS是由微软开发的,用于在Windows 工作站之间共享文件。
目前有其他几种文件系统可以算是网络文件系统。例如,NetWare 文件系统称得上是常用的网络文件系统,但是它不是用在N A
S装置中的文件系统。其他用在N A S产品中的文件系统主要包括:Network Appliance在它的文件系统中采用的WAFL
(随处写文件规划);CrosStor(它的前身是Programmed Logic)的StackFS ,它以OEM的形式出售给N A
S服务器厂商;Veritas 文件系统,它是用于UNIX 系统的主要的第三方文件系统;明尼苏达大学的GFS(全球文件系统)。
面客户系统的作用
正如第2章和第3章所讨论过的,客户系统采用重定向I/O通过网络访问服务器。一个客户重定向器能向客户提供网络文件系统的视图,并将客户端的文件系统操作传送到网络文件系统。
最初,客户重定向器是第三方的软件应用,但是到后来它被集成到客户操作系统中。虽然目前还可以选择一些第三方的客户重定向软件,例如用于
Windows 系统的PC- NFS软件,但是大多数I T部门还是倾向于使用操作系统厂商捆绑的功能,因为这样可以简化端用户的配置和管理功能。
虽然大多数人都认为NAS是一种基于服务器的技术,但是NAS技术的开发实际上是为了更容易地与工作站集成。因此,目前两种主要的文件系统都不是为了扩展服务器的功能,而是为了扩展相关的工作站文件系统的能力。
基于UNIX 文件系统的UNIX 工作站,通过采用NFS进行扩展,以便于透明地访问网络上的UNIX 文件。同样,基于DOS FAT
和NTFS文件系统的Windows 工作站,通过使用CIFS进行扩展,以便于透明地访问PC服务器上PC文件。因此,UFS + NFS与NTFS
+ CIFS之间最主要的不同之处不是服务器文件系统,而是相关客户系统的文件系统,如图1 2 - 1 3所示。
当比较UNIX 文件系统和PC文件系统之间的差异时,可以认识到NFS不是为了扩充PC文件系统。所以,微软看到了扩展文件
NFS与CIFS访问的比较
UFS + NFS与NTFS + CIF S之间存在着一些重要的差异,特别是在锁定机制方面。两者之间的一些基本差异如下:
•系统登录的安全机制。
•有状态与无状态连接。
•文件和目录安全。
•文件和目录锁定。下面将讨论这些差别。
1.
系统级安全
需要说明的是,系统级安全与文件级安全是两个不同的话题。系统级安全关心的是网络上实体之间启动一个通信进程时所涉及到的安全机制,显然网络文
件系统需要提供这种安全机制。而文件级安全机制,则用于决定网络上的一个用户、应用或系统是否有权访问某个特定的信息。这里主要讨论系统级的安全,而文件
级安全则留在后面讨论。
N F S服务器通过输出自己的目录和文件,可以使网络上的其他系统利用它的文件系统。输出的目录位置被称为装配点,如果采用N F S的术语,即客户装配N F S服务器上的远程文件系统。
在N F S中,用户在客户端被授权。N F S的基本思想是如果用户已经被系统授权了,那么他们是可信的。当UI N X
系统在多用户系统中负载很重时,则可能开始采用这种方法。用户只要成功地访问了客户系统,则可以访问N A S服务器上的数据。虽然N F
S服务器也对用户的I D号与保存在UN I X 文件系统元数据中的安全信息进行比较,以决定目录和文件的访问权限,但是它并不鉴别用户。通常,N
F S的安全在大多数环境下是足够的,但是它容易遭受到任何有权访问网络上UN I X 系统的用户的攻击。图1 2 - 1 4示意了N F
S的客户端安全。
N F S系统向网络上其他系统输出它的文件系统,而与此不同的是,C I F
S创建能被授权用户访问的共享。C I F S在服务器端,而不是在客户端验证用户。换而言之,C I F
S安全机制不信任桌面系统上的客户授权。它可以使用Wi n d o w s 的域控制器对用户进行验证。实际上,有些N A S服务器也可以用作Wi
n d o w s 网络的域控制器。C I F S的安全性要高于N F S的安全性,这一点既是它的优点,同时也是它的缺点。采用C I F
S进行网络重连接,要比N F S复杂高级一些。图1 2 - 1 5示出了C I F S访问的验证过程,至于详细的内容将在下面的章节中讨论。
系统协议的开发需求,因而推出了CIFS。
2. 有状态与无状态连接
N F S是一种无状态的协议,这意味着N F S不记录和保存客户和服务器之间的历史关系。换而言之,N F
S的处理思路就像中国的禅宗思想一样,客户与服务器都是单独处理每一个时刻的状态。这样,如果发生网络问题的话,绝对不会影响到客户与服务器之间的关系。
在一次连接意外断开又重新进行连接时,两个系统之间可以马上开始协同工作。
与N F S不同的是,C I F
S是一种面向会话的有状态的协议。客户和服务器共享一个历史记录,了解在会话期间所发生的事情。如果一个会话因为某种缘故断开了,用户需要让N A
S装置或域控制器重新验证自己。对于那些期望网络存储可以随时立即使用的应用来说,这种方法会带来一些麻烦。C I F
S采用面向会话的有状态连接,是为了加强自身文件系统的锁定机制,这将在下面的部分详细讨论。
3. 目录和文件级安全
UN I X 文件级安全机制定义了三个级别的I D:用户、组和其他。用户通常是文件的创建者;组是共享一个I D
的多个用户;其他是指其他用户。在这三个I D级别内部,又有三种类型的访问标识:写、读或可读可写。每一种I
D级别和访问类型采用一个数字位0或1代表,0表示没有授权,1表示授权。UN I X 文件级安全可以采用3个三元组或9位信息表示。
每一个N F S请求都包含有用户I D和该用户的组I D,这些I D需要与UN I X 文件系统中相应索引节上的安全信息进行校对。如果I D不匹配,则用户不能访问相应的文件,尽管两个系统之间可以通过N F S进行通信。
CIFS安全机制采用访问控制表(A C L),A C L的内容涉及到共享、目录、文件等。A C L要比UN I X
采用的3个三元组表示法更具安全策略,它除了支持直接访问特性外还能提供一些条件测试。当一个C I F S用户访问一个共享时,由该共享的A C
L检查用户I D。因为CIFS是面向会话的,所以接下来对前面同一共享的访问就不需要进行验证了。
4. 锁定机制
U F S + N F S与N T F S + C I F S之间的一个主要区别,在于锁定机制的实现。这部分主要探讨一下这方面的区别。
包括D O S在内的P C操作系统,已经建立了相当健壮的锁定体制。P C应用可以通过系统界面打开一个文件,并可指定对该文件进行的I
/
O操作。不仅如此,在这些文件打开请求内部,还可以包含另一种用于决定是否允许别的应用打开同一个文件的请求。如果允许别的应用打开同一个文件,那么又可
以限制它们如何使用该文件。文件系统加强了这些限制,或者说锁定。也就是说,P
C文件系统中的第一个访问文件的应用,决定所有其他后来想同时访问同一个文件的应用。
这就是为什么C I F S要求面向会话的缘故。Wi n d o w s 文件系统锁定管理器的管理需要一些历史信息,即需要知道哪一个客户打开了哪一个文件,并以什么顺序进行了哪些操作。
与此不同的是,N F
S不提供强制的锁定,它只是提供一种劝告性锁定机制,即通知某个应用是否另一个应用正在使用相应的文件,以及如何使用该文件。通过这些信息,后来的应用可
以决定是否遵守锁定请求。也就是说,任何UN I X
应用在任何时候都可以对任何文件进行需要的操作。没有任何一定要遵守的规则,需要的只是大家的自律。
基于N F S的N A S系统可以采用一种附加的锁定管理器,叫做网络锁定管理器(N L M)。N L M 可以在N F
S环境中提供更一致的锁定行为。不过,严格来说,作为一种建立在N F S基础上的应用,N L M只是一种可选的工具。使用N L
M的应用,不能保证别的应用违反锁定机制,做出一些不友好的行为。
NFS服务器的CIFS仿真
NFS设备厂商最初是为了向UNIX 客户提供服务的,后来随着Windows
客户的出现并逐渐占据了桌面系统的主流,NFS设备厂商不得不设法向Windows
客户提供服务。为了实现这个目的,一种方法是添加用于Windows 系统上的NFS客户软件。不过,这种方法要求在客户端即Windows
系统上进行安装和管理,增加了额外的成本。
另外一种方法是在NFS设备上仿真CIFS服务器,这种仿真功能就像一个Windows 服务器系统,但实际上是通过非Windows
文件系统提供存储服务的。图1 2 - 1 6示出了一个带有虚拟C I F S服务器的U F S + N F
S设备的网络文件协议栈,它的虚拟CIFS服务器可以向Windows 客户提供NFS服务器虚拟CIFS
1. 锁定和C I F S仿真
由于在U F S + N F S与N T F S + C I F S之间,文件锁定的方UNIX文件系统法明显不同,因此,在设计支持N F S和C I F S两种协议的网络存储设备的锁定机制时,不同的厂商有不同的选择。
•选用一种网络文件系统实现,并仿真另一种网络文件系统
•开发一种独立的技术,它同时能支持UNIX 和Windows 的锁定方法和命令
Linux是一种自由软件,NFS是一个开放的标准。因此,NAS装置厂商为了降低成本,通常都喜欢选用Linux和NFS。基于Linux的设备开发商,如果想同时支持NFS和CIFS,则可以通过在一个软件应用中仿真CIFS锁定支持实现。
CIFS
仿真识别一个来自Windows 客户的请求,并像一个实际的Windows
服务器一样提供服务,包括锁定服务。当用户打开一个文件时,CIFS仿真器向他提供这种服务,并拒绝其他并发地打开该文件的请求。从这一点来看,CIFS
仿真器即负责跟踪哪一个用户以什么顺序访问哪一个文件。
CIFS仿真的技术难点,在于如何处理NFS客户访问已经被Windows
客户打开和锁定的文件。要想CIFS仿真器工作正确,所有的客户访问请求,不管是NFS还是CIFS客户的请求,都应该通过CIFS仿真器,以确保
UNIX NFS 客户不操作Windows
客户已经打开和锁写的文件。这种NFS客户通过一个仿真器进行访问的方法,并不是标准的NFS功能,要求额外进行开发。
对于N A S装置来说,解决可供Windows 和UNIX 客户访问的双模式的另外一种方法,是在一个与平台无关的操作系统上实现一个独立的网络文件系统。虽然这种方法代价比较大,但是它可以最优性能满足多种访问方法。
如果用在N A S装置上的操作系统和文件系统与自身平台方案无关,那么所有的访问,不管它是采用何种平台或协议,都被专门的访问进程处理为一个应用服务,其中支持各种访问方法所采用的锁定机制。图1 2 - 1 7比较了两种用于解决锁定的方法。
2. 采用SAMBA的CIFS仿真
SAMBA是一种用于UNIX
系统(尤其是Linux系统)的CIFS仿真技术,它的名字来源于服务器消息块(SMB),而SMB是一种用于Windows
产品中处理CIFS的协议。因为SAMBA是一种开放源代码的自由软件,可以受益于大量的软件开发商,所以将来它可望成为一个高可靠性的带有完善锁定方案
的CIFS仿真器。
阅读(1045) | 评论(0) | 转发(0) |