第 12章 分布式文件系统分布式系统的关键部分:文件系统文件服务和文件服务器 (1)
文件服务:文件系统为客户所提供的内容的规范说明它描述了可用的原语,它们所使用参数以及执行的操作文件服务确定了文件系统对客户的界面文件服务器是一个运行于某些机器上的进程并帮助实现文件服务良好的分布式系统,用户不知道文件系统是如何实现的文件服务和文件服务器 (2)
文件服务器是在某台机器上运行的用户进程
( 有时是内核进程 )
系统会有多个文件服务器,提供不同的文件服务
12.1 分布式文件系统设计两个不同的部件:文件服务和目录服务文件服务:单个文件上的操作相关,诸如读,
写和添加目录服务:维护目录有关,在目录上加,删文件等等
12.2.1文件服务的接口什么是文件?
两种文件类型文件类型 1
文件是一个不加解释的字节序列文件信息的意义与结构全部由应用程序来决定操作系统对之无兴趣文件类型 2
文件可被组织成一串记录可使用操作系统调用来读写某个记录大多数支持把文件视作字节序列的概念而不是关键记录的序列文件属性不包括在文件内容中的有关文件的若干条信息常见的属性:所有者,文件大小,建立日期和访问许可文件服务通常会提供一些对属性进行读写操作的原语文件可否修改文件被创建之后,是否可被修改
通常它们可以
,不可改变的 (immutable)” 文件仅有 CREATE和 READ文件操作一个文件一旦创建,它就不能改变容易支持文件缓存和复制,
消除了由于文件改变而要更新所有副本所引起的问题文件保护 (1)
存取能力表每一个用户都持有一张称作存取能力表的票据用于它访问的每一个对象存取能力指定了哪种形式的访问是被允许的文件 保护 (2)
存取控制表一个文件对应一个隐式或显式的用户表指明可能访问该文件的用户及可能的访问形式两种类型文件服务,
文件的上载 /下载模式
远程访问模式文件上载 /下载模式 (1)
只提供两种操作:读文件和写文件
读操作:
是将整个文件从服务器送到申请的客户
写操作:
将整个文件从客户传递到服务器在服务器和客户之间移动整个文件文件可以按需要而保存在内存或本地磁盘上只提供了物理存储和传输文件上载 /下载模式 (2)
优点:概念上的简洁性没有复杂的文件服务接口整体文件传送效率很高
缺点:客户端必须有足够的存储空间只需文件一小部分,传整个文件浪费
(a) 上载 /下载模式
(b) 远程访问模式远程访问模式
文件服务提供打开和关闭文件,文件读和写,文件内的移动 ( LSEEK)
考察和修改文件属性等等操作
文件系统运行在服务器上,而不是客户机上
优点:在客户机上无须太多的空间,
消除零碎空间中放入整个文件的问题
12.1.2 目录服务器
提供创建和删除目录,对文件命名和改名把文件从一个目录移向另一个目录
文件命名规则:
可以是从 1到某个最大的数字,字符或一些特殊字符文件扩展名:
文件名划分为两部分,通常用一个,,”分开名字第二部分,称为文件扩展名,标识了文件的类型扩展名而用一个显性属性来达到这个目的目录和子目录目录下包含子目录,可把相关文件放在一起系统提供创建,删除,进入以及移动子目录和从子目录中查找文件的功能层次型文件系统子目录可再包含子目录从而形成树型目录目录的链接某些系统中,能创建到任一目录的链接或指针不仅构建树,而且构建任意目录图,功能更强设计分布式文件系统的一个关键问题所有机器和进程都应该对目录层次有相同的认识应有一个全局性的,并为所有机器所确认的根目录
(a) 两个文件服务器。矩形是目录,而园环是文件
(b) 所有客户机对某文件系统都有相同认识的系统
(c) 不同的客户机对某文件系统有不同认识的系统名称解析透明性定位透明性服务器可以在网络中随意移动,其路径名也无需改动文件在移动时无需改变其名称时,称为定位独立性在路径名中嵌入了服务器名称显然不是定位独立的不易实现的,是一个在分布式系统中所希望具有的性质名称解析三个处理方式:
机器+路径解析,诸如 /machine/path或
machine:path
把远程文件系统安装到本地文件层次中
对所有机器都视同一致的单一名称空间前两项容易实现后者较困难,需要仔细地设计两级名称解析 (1)
二级命名法对用户:文件 ( 及其它对象 ) 有符号名对机器:有系统内部使用二进制名要提供这两个名字解析间的一种映射在一个有多个自含文件服务器的系统中二进制名实质上就是一个本地的I -结点数通用名称解析方案:
二进制名指向服务器和里面的某个特定文件两级名称解析 (2)
符号链符号链是一个目录项,映射到一个 ( 服务器,
文件名 ) 中的字符串上通过字符串,可通过命名的服务器找到二进制名符号链本身实际上就是路径名两级名称解析 (3)
利用二进制名能力查找一个 ASCII码名字包括物理的或逻辑的机器号或适当的服务器网络地址物理地址就可用来向服务器发消息通过通过广播或者在名字服务器上查找能够定位一个虚拟地址
12.1.3 文件共享的语义
多用户文件共享要严格定义读与写语义
UNIX语义学当 READ操作接着 WRITE操作时
READ所返回的值正是刚写入的类似地,当两个 WRITE操作连续出现后跟一个 READ操作读的值是最后一次写的值
系统按绝对的时间序列执行所有操作且总是返回最后一次操作的值单一服务器文件系统在实践中,单一服务器文件系统性能,通常很差改进:允许客户机在其私有空间中维护文件本地副本客户在本地修改缓存区文件接着另一个客户从服务器读取该文件第二个客户会得到一个陈旧的文件解决方法:向服务器播送对缓存区文件的全部修改概念尽管简单,但处理是低效率的
(a) 在单处理器上,当 READ跟随 WRITE,返回的值是刚才写入的值
(b)有缓存区的分布式系统中,可能被返回的是陈旧值替代解法:会话语义( session semantics)
放松文件共享的语义学要求新的规则:,对打开文件的修改,仅对修改该文件的进程是初始可见的,
重新定义了正确的操作的实际行为当A关闭文件时,它送一个副本给服务器所以后续的 READ得到了所需要的新值会话语义的问题
更多的客户同时在同一个缓存区上修改会怎样?
一种解决方法:
当每个文件依次关闭时,其值回送给服务器
最后的结果取决于谁最后关闭不可更改文件操作只有 CREATE与 READ
虽然文件不能更新,但可以更新目录问题就不存在了共享文件的第四个方法:原子事务确保在事务中的所有调用都会按序执行不会被任何其它的,并发的事务所干扰方式 评论
UN I X 语义 在文件上的每一操作对所有进程均是立即可见的会话语义 在文件关闭之前,
变化对其它进程是不可见的不可变 文件 不能更新,简化了共享和复制处理原子事务 所有修改有,全是 - 或 - 全不是的性质
12.2.1 文件的使用文件使用的模式多数文件较小 (低于 1 0 k )
读比写要多得多读和写是顺序的,很少随机访问多数文件寿命很短文件共享是不寻常的平均看进程只使用少量文件存在不同特性的显然不同的文件类型
12.2.2 系统结构
“客户机和服务器有差别吗?,
在一些系统中 ( 比如,NFS)
客户机和服务器之间没有差别另一个极端客户机和服务器在软硬件上是完全不同的服务器甚至可以运行和客户机不同的操作系统怎样构造文件和目录服务一种方法:两种服务组织到单独的服务器里用户送一个符号名给目录服务器目录服务器返回服务器可以识别的二进制文件名
a
b
c
文件客户机查找 a/b/c
查找 b/c
查找 c
回应 c
目录在服务器 1
目录在服务器 2
目录在服务器 3
a
b
c
文件客户机 查找 b/c
查找 c
回应 c
查找 a/b/c
层次化目录层次化目录有可能分段处在多个服务器上经常地寻找路径名,特别是多重目录服务器费用会很昂贵提示快捷栈保存最近查找的名字以及查找的结果另一种方法:把它们分隔开拥有两个服务器将需要更多的通讯客户机的状态 (1)
一个派认为服务器应是无状态 (stateless)的当客户机向服务器发出请求,服务器执行了这个请求发送回答信息,在请求之间,没有保留客户机状态信息每个请求必须自我包含信息包含全文件名及文件内的偏移量,以允许服务器完成工作信息增加了消息的长度客户机的状态 (2)
另一派认为保留客户机请求间的状态信息是完全有必要的服务器状态容错 较短的请求消息无需 OP E N /C L O SE 调用 较好的性能不在表上浪费服务器空间 有可能预读打开文件数量无限制 较易实现客户机失效时不受影响 文件加锁有可能
12.2.3 缓存区处理 (Caching)
四个地方存放文件:
服务器硬盘服务器主存客户机硬盘 ( 若存在的话 )
客户机主存服务器硬盘所有文件在服务器的硬盘上文件可被所有客户机所访问一个文件只有一套拷贝,不存在一致性问题
3 421
网络客户机主内存客户机磁盘(可选) 服务器主内存服务器磁盘可存放文件的四个地方
13-9
服务器主存在服务器主存上缓存最近使用过的文件可使性能获得高的提升主存一般都比磁盘小需要算法决定文件的哪部分留在缓存区客户机的主存客户机主存有三种选择方案一最简单:把缓存文件直接放在用户进程自有地址空间中大多数进程只读一个文件一项所以在库中设缓存区并没有多大的价值在客户机主存中运用缓存区的不同方式
( a)无缓存区
( b)在每一进程中设缓存区
( c)在内核中设缓存区
( d)视作用户进程的缓存区管理器客户机缓存区地方是内核缺点是,需要内核的调用这种缓存区比在进程中设缓存区效果为好方案二:缓存区在不同的用户级缓存区管理器中优点:内核同文件系统代码无关容易编程,因为它它完全隔离且更具灵活性缓存区一致性客户机把不一致性引入了系统方法 评价遍写 工作,但不影响写的操作延迟写 更好的性能,但可能带来二义性闭写 满足会话语义要求集中控制 U N I X 语义,但鲁棒性和可伸缩性差不可改变的文件吸引力,可在机器上进行缓存处理的能力不用担心机器会有改变它的可能性
12.2.4 复制性 (replication)
分布式系统常常提供文件复制服务给他们的客户主要的原因中有:
可靠性:每一文件的各自独立的副本增强了可靠性有效性:即使在服务器关闭时,也允许访问文件性能:所有文件放在一台服务器上会造成性能瓶颈多服务器上复制文件,最轻载的将会被使用
C
S1
S2
S3
1
2
3
S1
S2C
S3
S1
S2C
S3
客户机服务器当前稍后稍后文件
Prog.c
1.14
1.21
2.16
2.43
3.19
3.41
符号名 多重二进制地址
(a)
(b) (c)
(a) 显式文件复制
(b) 空闲复制
(c) 使用组的文件复制
13-12
三种复制复制关键问题是透明度问题显式文件复制;空闲复制;组通讯显式文件复制程序员控制整个复制进程进程在某服务器上创建个文件如果需要的话,可以在其他服务器上备份多份如果目录服务器允许文件的多份拷贝同时存在那么备份的网上地址都与文件名相关只要给出文件名,所有的备份都能被找到空闲复制( Lazy replication)
每个文件只在一服务器中建立在服务器空闲时自动复制到另外的服务器中复制过程对用户透明在后台复制文件时,注意原文件是否已被修改过组通讯方式全部,写,调用同时发往所有服务器后备文件与原件同时产生空闲复制与组通讯方式主要有两个区别:
在空闲复制方式中只须一个服务器地址,而不是一个组;
空闲复制空闲时在后台进行而组通讯方式中,所有文件同时产生如何更新原本复制 (primary copy replication)
一台服务器被指定为主机 。 其它的当作辅机已复制文件需要更新时,首先告诉主机,把主机文件修改然后主机命令辅机,要求它们修改缺点:一旦被指定主机不能工作,对文件的修改不能进行复制更可靠的方法:,投票表决法 (voting)”
基本思想:无论读或写已复制文件时,用户应向多台服务器提出请求并获得同意
“幽灵表决法 (voting with ghost)”
在多数的应用中,读比写要更为多一般 N r 很小,而 N W几乎和 N一样一些服务器崩溃,法定写票权就不可能得到一台服务器崩溃就建立一个没有存储器的哑服务器幽灵不允许有读票权 ( 它根本没有任何文件 )
但可以参与写票权,它只是把写入的文件扔掉存在至少一台真实的服务器时,写操作才会成功
12.2.6 经验教训分布式文件系统上的经验 工作站有周期可用只要有可能就使用缓存区考察使用特性减小系统范围和变化只对最少的实体加以信任有可能时进行批处理
12.3 分布式文件系统发展趋势 (1)
新的硬件存储器便宜文件系统可以永久地常驻内存性能上的较大改进,极大的简化文件系统约结构 。
对文件系统可能会产生影响的技术是光盘快速光纤网络少量的,设计良好的硬件就可以解决用软件难于克服的困难很有可能,未来的分布式系统会得到各种专门化硬件的支持分布式文件系统发展趋势 (2)
可伸缩性广域网在未来各大洲的透明的分布式操作系统什么样的文件系统将为全世界呢? 现在,没有人能知道现在的部分解是 Internet
分布式系统必须处理庞杂机种的情况 - 异构网电子邮件,电子银行,电子娱乐活动等将改变文件应用,访问模式以及许多我们尚不知晓使用方式分布式文件系统发展趋势 (3)
移动用户发展最迅速的一个领域设计全球的,全透明的分布式文件系统供成百万移动的并且经常断开连接的用户使用分布式文件系统发展趋势 (4)
容错系统将在数据不完全情况下,仍可运行随着计算机普及到非专业人群中系统会瘫痪,难以被接受