Andrew File System
Andrew File System
突然感觉艺术细胞爆发啊,刚刚去Utown吃饭,一路上发现许多美丽的景色,拿手机一直拍,哈哈,元旦好心情~~不扯淡,还有两篇博客以及半本书要做呢,加油!!
1. 本文介绍什么
这篇博客介绍的是Andrew File System(AFS),跟上一篇的NFS是同一类型的,都是分布式文件系统。
2. AFS的设计目标
与NFS不同,AFS的设计目标是可扩展性,也就是说使得系统规模扩张,支持多的client等等。
3. 设计思想
在单server多client的架构下,要增强系统可扩展性主要就是要减轻server的负担,通过设计为server减负成了设计主要目的。
那么首先来看NFS,文件的读写每次都要由client向server发出请求,然后才能操作,这对server是一个很大的负担,事实上根据局域性原理,很短的时间内被操作的文件很可能会被多次操作;其次,为了保持client端cache数据不至于过时,client需要每隔相对较短的时间(3秒)跟server同步一次信息,这也是一个很大的负担。
于是,AFS的改进也主要是从这而开始的。
AFS的解决方法是一种被称之为whole-file caching的方法,也就是说每次操作文件,就直接将整个文件从server端读出来然后存在本地磁盘中,这样后续的操作就可以在本地执行了,而不用server的参与。这减少了server的很多工作量。
对于第二个问题,AFS的做法是一种被称之为call back的方法,与其client过来问server某个文件是否过时(大多数情况都是没有过时),不如在文件过时的时候由server通知client。概括的来说就是,server知道各个client所缓存的文件,那么当一个文件被修改的时候,server通知client,这样下一次client需要操作这个文件的时候就不用缓存的数据了。
4. 具体设计细节
- 命名空间
采用File identifier(FID)来标识文件,FID由三部分组成,卷标示符、文件标示符、以及一个"uniquifier"(这个东西是为了在文件删除的时候用来回收再利用卷标示符以及文件标示符的,就不展开了)
基本架构跟NFS是一样的的,还是这样:
完成的操作流程
为了便于描述,我们假设我们需要操作文件/home/remzi/notes.txt,见下图(其中的home FID就是目录"/home"的FID,可以认为是已知的):
- client 首先向server发出请求,以便获得文件夹remzi的FID,使用命令Fetch(home FID, "remzi");
- server端收到请求后,寻找remezi文件夹,然后设置一个标志callback以便“记住”该client缓存的文件夹“memezi”的信息,最后返回文件夹remezi的FID以及文件夹的内容(文件夹也是一种“文件”);
- client将remezi文件夹的内容存储在本地磁盘,并且在本地设置文件夹remezi的callback状态;
- 同样,client获得了文件foo.txt的FID、foo.txt的内容并且设置了callback状态,server也设置了文件foo.txt的callback;
- client对该文件执行read操作,则直接为转化为本地read操作;
- client关闭文件,此时检查文件是否被改变,如果被改变了,则将文件发给server以便更新server;否则,正常关闭即可。
- 假设client改变了文件内容并关闭文件了,则server接收到新的foo.txt之后更新到磁盘上的本地文件(也会更新cache,这个跟NFS一样的),同时通知缓存了文件foo.txt的client发出通知,修改client存储的foo.txt文件的callback状态;
- client再次打开文件foo.txt,则按照路径/home/remezi/foo.txt一步步检查callback状态,如果没有过时则继续在本地操作就可以了;否则,重复上面的过程。
此外,AFS做了一个修改,如果两个client在同一个机器上面,则client A修改文件,client B立刻就知到这个文件过时了。哈哈,就跟本地一样。 如果一个文件同时被两个client修改,那么怎么处理?哈哈,按照client关闭该文件的时间先后顺序,后关闭文件的那个client所做的修改被保存。这也确保了,每次文件修改都是由一个client完成的。
宕机 这个呢,AFS就有点麻烦了,毕竟client和server之间有了“共享信息”。具体而言,是这样:
- client 宕机
一旦client宕机然后重启,那么此时client就不相信任何存储在磁盘上的文件了,磁盘上的文件在client重启后第一次打开的时候需要跟server确认一下。 - server宕机
这个是一个很大的事故,因为server失去了跟client之间的“共享信息”,已经没有办法或者client在哪些文件上留下callback了。那么,一旦server宕机并重启,则所有client在磁盘上存储的文件/夹都被认为是可疑的,在server宕机重启后第一次打开,需要跟server确认一下,同时在server上重新留下callback。
这要求server重启后,每个client及时获知。一般而言可以server重启后向每个client发消息说明自己重启了。
- client 宕机
5. 参考文献
❝
1.http://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf
❞
Andrew File System的更多相关文章
- 谷歌三大核心技术(一)The Google File System中文版
谷歌三大核心技术(一)The Google File System中文版 The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个 ...
- The Google File System 中文版
摘要 我们设计并实现了Google文件系统,一个面向分布式数据密集型应用的.可伸缩的分布式文件系统.虽然运行在廉价的日用硬件设备上,但是它依然了提供容错功能,为大量客户机提供了很高的总体性能. 虽然与 ...
- 【转】谷歌三大核心技术(一)The Google File System中文版
The Google File System中文版 译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的.可伸缩的分布式文件系统.GFS虽然运行在廉价 ...
- Google File System中文版
英文原文地址: Google File system 译文原文地址: The Google File System中文版 Google File System中文版 摘要 我们设计并实现了Google ...
- The Google File System中文版
译者:alex 摘要 我们设计并实现了Google GFS文件系统,一个面向大规模数据密集型应用的.可伸缩的分布式文件系统.GFS虽然运行在廉价的普遍硬件设备上,但是它依然了提供灾难冗余的能力,为大量 ...
- 大数据理论篇HDFS的基石——Google File System
Google File System 但凡是要开始讲大数据的,都绕不开最初的Google三驾马车:Google File System(GFS), MapReduce,BigTable. 为这一切的基 ...
- Colossus: Successor to the Google File System (GFS)
Colossus is the successor to the Google File System (GFS) as mentioned in the recent paper on Spanne ...
- Design and Implementation of the Sun Network File System
Introduction The network file system(NFS) is a client/service application that provides shared file ...
- 乌版图 read-only file system
今天在启动虚拟机的时候,运行命令svn up的时候,提示lock,并且read-only file system,这个....我是小白啊,怎么办?前辈在专心写代码,不好打扰,果断找度娘啊 于是乎,折腾 ...
随机推荐
- 读<<我是IT小小鸟>>
<倔强><怒放的生命>以歌曲的含义来引入文章,让文章可以与音乐产生共鸣让读者可以直接明了的就直击到本篇文章的中心含义是非常受用的,在文中写了许多以自己为视角,以自己的成长经历来 ...
- Log4Net的使用研究(一)
等待研究中………… 20160421 标题:C#使用Log4Net记录日志 文章地址: http://www.cnblogs.com/wangsaiming/archive/2013/01/11/ ...
- 基于 IBM WAS ND v6.1 搭建稳定高效的集群环境
如今的电子商务及电子政务应用系统的发展已经到了一个新的阶段,应用系统的成熟度和可用性都达到了更高的水准.因此庞大的部署规模和海量的用户访问成为目前大型电子商务及电子政务应用系统的显著特征.在这样的情况 ...
- (一)MySQL基础篇
1.mysql简介 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库. 主流的数据库有:sqlserver,mysql,Oracle.SQLite.Access.MS SQL Se ...
- 分享几个IP获取地理位置的API接口(最全面的了)
转载;https://cloud.tencent.com/developer/article/1152362 全网首发,最全的IP接口,不服来辩!博主找了几个小时的资料,又手动抓取到了几个接口补充进来 ...
- Oracle忘记密码如何重置
昨天安装Oracle11g R2的时候给scott用户设置密码,当时没有显示而且还只以输入一次,可能密码输入错误,结果今天用scott用户登录果然密码不对,还好sys和system用户都正常,就进去给 ...
- ADO.NET DBHelper 类库
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Vue数据绑定和响应式原理
Vue数据绑定和响应式原理 当实例化一个Vue构造函数,会执行 Vue 的 init 方法,在 init 方法中主要执行三部分内容,一是初始化环境变量,而是处理 Vue 组件数据,三是解析挂载组件.以 ...
- hive 排序和聚集
1.order by 是对数据进行全排序,属于标准排序语句 order by 会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)只有一个reducer,会导致当输入规 ...
- BZOJ4408 [Fjoi 2016]神秘数 【主席树】
题目链接 BZOJ4408 题解 假如我们已经求出一个集合所能凑出连续数的最大区间\([1,max]\),那么此时答案为\(max + 1\) 那么我们此时加入一个数\(x\),假若\(x > ...