分布式系统阅读笔记(十二)-----分布式文件系统

一、介绍

一个分布式系统本质上就是一段程序能够存储和访问远程文件就像访问本地文件类似,能够允许任何连上网络上的用户都可以访问。在后面的记录中,主要是对2大文件系统NFS和AFS做详细的介绍和分析。

1、文件系统在最初的设计时往往是按照中心结点服务的方式构建,在中心节点服务器中保持着大量的文件资源。

2、对于文件系统的分块有下面的分法:1、目录模块。2、文件模块。3、访问控制模块。4、文件访问模块。5、Block文件块模块。6、设备模块,主要指的是磁盘IO,和缓存。

3、文件系统的作用主要有:组织,存储,命名,共享和保护文件的作用。

4、一个文件包括数据和属性,而一个目录是一个特殊类型的文件,本身不包含数据,他提供了一个文本名字对于一组内部文件标识符的映射。

5、在一个文件系统中,为了对于里面所有的文件进行有效的管理,在系统的元数据中会保存额外的一些文件信息。

6、对于一个分布式文件系统,有许多的要求:1、透明度,包括访问透明,扩展性透明。2、并发更新的控制。3、文件副本的存放。4、硬件操作系统的异构性。5、容错性。6、数据一致性问题。7、安全。8、效率性能方面,

7、一个文件服务的结构一般包括一个客户端模块和一个服务端模块。

二、文件服务结构

一个文件服务对于内部的组件构成进行了清晰的划分,包括3个组件1、纯文件的服务。2、目录服务。3、客户端模块。3个模块之间相互关联,其中文件服务和模块服务都是放在Server模块的。

1、在file Service中用UFID来标示每个独有的文件。

2、目录服务就提供一个name到一组UFID组的映射。

3、客户端模块只要通过和服务端定义好的一系列的接口的形式与服务端进行交互。

4、与文件对应的一系列定义的接口类似,对于目录服务也定义了一组接口。

5、在早起的模型中,对于文件的操作接口,每次都要在请求的时候额外传用户ID做认证检验,后来这种方式可以被kerberos认证所取代。

6、在文件系统中有文件组的概念,就是一堆文件的集合,文件组的标示采用了32位的IP的地址+16位的date时间加以区分,如果纯用IP地址是有问题的,因为文件组可以被移动到不同的机子上。

三、NFS文件系统

NFS中文叫做网络文件系统,计算机可以通过网络对于文件进行操作。

1、在NFS中,客户端和服务端模块是通过RPC的方式进行交互的。

2、在NFS中,为了实现访问的透明性,增加了VFS虚拟文件系统一层,在虚拟文件系统的下面,有对应的各个具体的文件系统的实现。

3、在NFS中,每个file的标识符用file Handles。

4、不同于传统的Unix文件系统,NFS文件系统是无状态的,他不保留客户端中打开的文件列表,在访问控制的检测时需要每次刷新请求,检测里面的用户标示。

5、NFS客户端中的本地文件挂载可以挂载在服务端文件系统的某个子树下,但是到时路径名字的转换得在客户端中进行转换,才能保证与服务端中的一致。

6、文件系统的挂载分为软挂载和硬挂载。

7、自动挂载技术。当客户端中存在一个空的挂载点时,服务端会发送消息,第一个回复的将会进行挂载操作。

8、服务端缓存策略,传统的Unix系统常用的办法就是主内存buffer空间,NFS服务端采取的策略是read ahead读优先和delayed-write延时写的策略,在客户端中则会维持着一系列客户端最近操作过的文件的结果,避免客户端的再次调用。

9、客户端的本地缓存的数据项,存在一定过期时间,超过一定时间会进行更新。NFS的性能通过在客户端缓存了文件块因而提升了许多。

四、AFS文件系统

AFS文件系统也是一个分布式文件系统。AFS最初的设计目标就是为了服务于大规模的用户和节点,他的高扩展性是器一大特点。他的其中非常有效的策略是在在客户端缓存了数百个用户最近用过的文件。

1、AFS中包括了2个重要组件,Venus和Vice,前者存在客户端,后者在Server中。文件服务在Vice中实现,目录在Venu中实现,AFS中的文件标识符采用96位的fid表示,类似于NFS的UFID。

2、AFS中缓存一致性的实现是基于call-base回调的方式。当服务端的文件发生update操作之后,他会发送请求给所有持有此文件副本的客户端,进行更新操作。

五、分布式文件系统的发展和改进

许多要求和性能已经在AFS和NFS中都得到了实现和改进,但是分布式文件系统的发展还是有很长的一段要走,比如在NFS中也可以实现类似于AFS的基于回调方式的更新操作。

参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon
Blair

时间: 2024-11-09 23:56:54

分布式系统阅读笔记(十二)-----分布式文件系统的相关文章

寒假阅读笔记十二

架构之美--最终用户应用架构(二) 今天,我阅读的是<架构之美>的第十二章,这一章主要讲的是Akonadi框架,让我充分了解了Akonadi框架是什么?怎么用? kde 4.1中的Akonadi是一个以mysql为存储管理的 KDE 4 存储接口.它分为两个部分,一个称之为 Akonadi服务器,一个是为用户程序提供的和Akonadi服务器打交道的库,Akonadi服务器是单独提供的程序,属于kde的支持部分的一个软件.用户库包含在kdepimlibs之中.Akonadi目前的主要应用是做为k

分布式系统阅读笔记(二十)-----分布式多媒体系统

介绍 现在的分布式系统大有越来越往分布式多媒体系统的应用上走的趋势了.多媒体的应用本质上是对于持续数据流的一种消耗.包括音频以及视频,音频是由一个个audio Sample组成,而视频则是video frame组成.有时因为网络条件的原因,他是可以允许部分的延时的,延时造成的丢包率在一定比率上也是可以接受的.在多媒体应用中,很在意的quality of service服务质量的要求,因此他这里需要Qos Manager的角色. 1.分布式多媒体的应用往往是要求是实时的,这就要求系统对于QoS的控

分布式系统阅读笔记(二十二)-----时钟和时钟同步

时钟的基本概念 时钟 时钟在一般意义上指的是一个计算机的物理时间,每个计算机都会包括他们自己的物理时钟,不同的计算机的物理可能会不同. 时钟漂移 经过在同个地方的计算机,他们的物理也有可能会不一样,如果他们从刚刚开始相同的时间计时开始,过了1过月,1年也可能会有快又慢,这在专业名词上讲叫做时间漂移.本质的原因是每秒的时间偏移,经过日记月累之后,就会有可能达到1秒钟的差距,解决的办法很简单,就是过一段时间之后,将时间纠正回来就可以了. UTC UTC全称是Coordinated Universal

面对软件错误构建可靠的分布式系统(阅读笔记)

阅读笔记 joe Armstrong 段先德 译 核心问题:如何在存在软件错误的情况下编写具有合理行为的软件 ,如何避免像死锁.死循环等问题 ERLANG的世界观,一切皆进程.将任务分离成层次化的一系列任务,强隔离的进程负责来执行每个具体化的任务,进程之间不共享状态(实际上ETS跨越了这个准则). 只能通过消息传递来通信,必须注意进程消息的堵塞问题 工作者和监督者构成一个完整的系统,监督者的作用就是监控整个系统的运行状况.并对突发情况进行可靠的处理. behaviour库的设计思想就是将程序的并

【翻译笔记】Hadoop分布式文件系统

摘要 Hadoop分布式文件系统(HDFS)设计用来可靠的存储超大数据集,同时以高速带宽将数据集传输给用户应用. 在一个超大集群中,数以千计的服务器直接接触存储器和执行用户应用任务.通过许多服务器的分布式存储和计算,资源随需求增长的时候仍然可以保持经济性. 我们解释了HDFS架构,同时介绍了我们在雅虎使用HDFS去管理25PB企业数据的经验. 1.介绍和相关工作 Hadoop的一个重要特点是将数据和计算能力划分为小部分,通过许多(数千)主机运行,这些主机并行计算得到他们的结果.一个Hadoop集

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];

Hadoop阅读笔记(二)——利用MapReduce求平均数和去重

前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一年……我在博客园-_-#,希望用dt的代码燃烧脑细胞,温暖小心窝. 上篇<Hadoop阅读笔记(一)——强大的MapReduce>主要介绍了MapReduce的在大数据集上处理的优势以及运行机制,通过专利数据编写Demo加深了对于MapReduce中输入输出数据结构的细节理解.有了理论上的指导,仍

虚拟机VMWare学习笔记十二 - 将物理机抓取成虚拟机

1. 安装VMware vCenter Converter Standalone Client 运行虚拟机,File -- Virtualize a Physical Machine 这时如果电脑中没有VMware vCenter Converter Standalone Client ,则会进行安装. 安装过程 之后图标会出现在桌面上,双击运行 选择连接到本地服务器,登陆 点击转换计算机 这个,可以将本地计算机抓取成虚拟机,也可以将其他可以访问的计算机(需知道管理员用户名及密码)抓取成虚拟机.

swift 笔记 (十二) —— 下标

下标 swift允许我们为 类,结构体,枚举 定义下标,以更便捷的方式访问一大堆属性.比如Array和Dictionary都是结构体,swift的工程师已经为这两个类型提供好了下标操作的代码,所以,我们才可以通过 myArray[2]这种方式,读取和改写这个struct中保存的数据.而且,一个类型中可以定义多种下标访问方式(重载,关于重载,在后面的笔记中会提到,这里先不用太在意) 下标可以定义为"读写"型的,也可以定义为"只读"型,这种行为,是通过定义一组操作完成的

《Hibernate学习笔记十二》学生、课程、分数关系的设计与实现

<Hibernate学习笔记十二>学生.课程.分数关系的设计与实现 这个马士兵老师的Hibernate视频学习的一个题目,这里面要用到多对多.多对一的关联关系以及联合主键,因此觉得挺好的,自己写篇博文来记录下. 先考虑数据库表 1.学生表:为简单起见,只考虑了学生id和学生姓名,其中id为主键 2.课程表:为简单起见,只考虑了课程id和课程名称,其中id为主键 3.分数表 分数表有两种解决方案 3.1 第一种为:使用联合主键:student_id 和 course_id 3.2 第二种:不使用