OpenAFS学习手札(1)

来源:百度文库 编辑:神马文学网 时间:2024/04/20 15:31:54
OpenAFS学习手札(1)- -
这里,我开始我的《OpenAFS学习手札》。
接触AFS完全是因为工作的原因,原来项目设计的时候就是要把静态文件:项目本身和用户的上传的静态文件,集中化后台化管理。当时想到的就是最简单的NFS。事实证明NFS是简单可靠易行的方法。随着项目的发展NFS的不足之处开始显现,由于我们的项目使用单一目录存储,所以文件存储的扩容就成了问题,虽然NFS可以嵌套mount,但是这不符合我们单一目录的要求;如果以后项目的需求需要将静态文件成为一个单独域,公开在公网上,NFS的安全性不能符合要求;随着访问量的增加文件读取的效率是个问题,NFS是现取文件,如果站点分布各地,效率就不能符合要求;我们可能需要分布我们的站点,需要分布式的文件系统,而NFS不能算分布式。因为以上的情况,我们需要找一个替代NFS的方案,硬件实现的话成本太高,于是我们考虑到了AFS,据说AFS在全美有最大的分布式文件系统。
Google上可以查到的参考资料全是英文的,我查到比较全的资料只有OpenAFS站点(http://www.openafs.org)上的官方资料,并且跟着官方手册做一样会遇到很多头疼的问题。现在,研究AFS有一些时间后,我决定把我学习中的心得写出来,并简易翻译一些OpenAFS手册的原文。未必理解都正确,主要是我希望能和有兴趣的朋友分享交流。
1 OpenAFS简介
AFS是一个分布式的文件系统。由Carnegie Mellon大学首先发起,Transarc Corporation (现在的IBM Pittsburgh Labs)开发并支持。它提供一个客户端-服务器的文件共享构架,为数据提供了独立的可分配的透明环境。IBM开放了AFS的源代码。现在就叫做OpenAFS。
关键字:
一个分布的文件系统:AFS可以让用户在存储在网络上共享并访问资源,就像用户访问自己本地文件一样简单。这个文件系统还有另一个之所以叫做“分布式”的原因是:文件可以存储在很多不同的机器上,但是对于在任何一台机器上的用户来说都可以使用。
服务器和客户端(Server and Clients): 实际上AFS将文件存储在网络上的一个子网机器中,叫做文件服务器(file server machines)。文件服务器提供对网络里其他机器的文件存储和发布服务(也包扩其他专门的服务)。客户端就是用户用来读取和存储AFS文件的工具。
单元(Cells):虽然你的AFS cell是独立可管理的,你或许想组织你的本地文件使得来自其他cells的用户也能够访问。AFS可以上cells把他们的本地文件空间联合成全球文件空间,并且对于用户来说是透明的,他们无需知道文件存储在什么地方。AFS其实是为用户提供了一个统一命名空间(uniform namespace)。
卷(Volumes):AFS将文件存放在volumes中,使得文件的分布和维护一个统一的命名空间成为可能。volumes是磁盘空间的一种单位,是一组有关联文件的容器,把他们放在一个分区上,volumes的大小可以变化,但默认情况下小于一个分区。volumes对于系统管理员和用户来说很重要,小卷使得易于被从一个分区移到另一个,或者甚至是在机器间移动。系统管理员可以通过移动volumes得到最大效率保证负载均衡(有点疑惑?)另外,很多cells会把每个用户的home-dir存放在不同的volume中,而volumes对应了目录结构。这样当volumes移动的时候目录内容也会跟着移动。AFS记录文件的移动,volumes的移动是被自动记录的,用户无需跟踪文件的位置。
复制和缓存(Replication and Caching):AFS在服务器和客户端集成了专门的一套功能来保证效率和可靠性。在服务器端:AFS可以让管理员复制常用的volumes,比如流行的软件。复制的意思是把一个volumes的相同只读拷贝(也叫克隆)放在不止一台机器上,这样如果一台机器故障,就不会影响用户的工作。复制同样意味着一台机器不会因为有常用文件而被过度访问--负载过重(overburdened)。在客户端:AFS使用缓存提高效率。当用户访问一个文件的时候,缓存控制器(Cache Manager)会自动定位服务器并将文件放在缓存中(cache可能是在硬盘上也可能是在内存里),这样用户不必每次访问这个文件都要向file server发请求了。AFS可以保证文件的及时性,这叫作callback。
相互认证和访问控制列表(Mutual Authentication and Access Control Lists ):
2 获得OpenAFS
目前使用较多的平台是linux。我在安装配置的时候的平台是RedHat linux 9.0。虽然现在开发版本已经到了1.3.66,但是最后一个稳定版本还是1.2.11,保险起见我选择了1.2.11。大家可以在http://www.openafs.org/release/latest.html 上看到OpenAFS支持的各个版本下载的链接。
这里是RedHat linux 9.0下各个RPM包的下载链接:
RedHat linux 9.0
openafs-1.2.11-rh9.0.1.i386.rpm (4MB)
[MD5: 00125ed16592abdf1dce438afc06dedc]openafs-1.2.11-rh9.0.1.src.rpm (13MB)
[MD5: cd4a2ef067947b8179439f6e9f23c254]openafs-client-1.2.11-rh9.0.1.i386.rpm (425KB)
[MD5: 7cdd137b7e771bb6e0f0d96ffe91186f]openafs-compat-1.2.11-rh9.0.1.i386.rpm (5KB)
[MD5: 09d0eb6cbe5eddabdba26f381c77bb62]openafs-debuginfo-1.2.11-rh9.0.1.i386.rpm (2MB)
[MD5: bd82a59774947e59c7f20bab22672783]openafs-devel-1.2.11-rh9.0.1.i386.rpm (985KB)
[MD5: cd69b86fa76d068fc989960c7785c945]openafs-kernel-1.2.11-rh9.0.1.i386.rpm (6MB)
[MD5: e6150ce18281dbb060fb21043f8b52b0]openafs-kernel-source-1.2.11-rh9.0.1.i386.rpm (659KB)
[MD5: 391a36a4aaab5f2d90c876d9bf8010d2]openafs-kpasswd-1.2.11-rh9.0.1.i386.rpm (91KB)
[MD5: e314df48fb5023ff215977ebfd532980]openafs-krb5-1.2.11-rh9.0.1.i386.rpm (103KB)
[MD5: c03a1b0f518b95e08cdb39121b30b2e4]openafs-server-1.2.11-rh9.0.1.i386.rpm (1236KB)
[MD5: 86c50877e34a08ff0f591038ab892987]
今天就到这里,看来翻译量不少,呵呵,加油!
_xyz