标签:
突然感觉艺术细胞爆发啊,刚刚去Utown吃饭,一路上发现许多美丽的景色,拿手机一直拍,哈哈,元旦好心情~~不扯淡,还有两篇博客以及半本书要做呢,加油!!
这篇博客介绍的是Andrew File System(AFS),跟上一篇的NFS是同一类型的,都是分布式文件系统。
与NFS不同,AFS的设计目标是可扩展性,也就是说使得系统规模扩张,支持多的client等等。
在单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需要操作这个文件的时候就不用缓存的数据了。
完成的操作流程
为了便于描述,我们假设我们需要操作文件/home/remzi/notes.txt,见下图(其中的home FID就是目录"/home"的FID,可以认为是已知的):
此外,AFS做了一个修改,如果两个client在同一个机器上面,则client A修改文件,client B立刻就知到这个文件过时了。哈哈,就跟本地一样。 如果一个文件同时被两个client修改,那么怎么处理?哈哈,按照client关闭该文件的时间先后顺序,后关闭文件的那个client所做的修改被保存。这也确保了,每次文件修改都是由一个client完成的。
宕机 这个呢,AFS就有点麻烦了,毕竟client和server之间有了“共享信息”。具体而言,是这样:
?1.http://pages.cs.wisc.edu/~remzi/OSTEP/dist-afs.pdf
?
标签:
原文地址:http://www.cnblogs.com/xubenben/p/4197743.html