LazyHybrid(LH)算法是美国加利福尼亚圣克鲁兹大学存储系统研究中心提出的。 原文Efficient Metadata Management in Large Distributed File Systems 下载:http://download.csdn.net/detail/zhangliangaws/6852159 一、算法
LazyHybrid(LH)算法是美国加利福尼亚圣克鲁兹大学存储系统研究中心提出的。
原文Efficient Metadata Management in Large Distributed File Systems
下载:http://download.csdn.net/detail/zhangliangaws/6852159
一、算法主要思想:
1.元数据的存放
LH维护一个全局性的元数据查询表(Metadata Look-up Table)。这张表放在每个MDS上,并且Client可以下载到本地。
表1 :把哈希值划分到不同元数据服务器。
表2: 一个目录实例,目录下的odsd目录下面又有若干子目录,他们被存放到不同的元数据服务器上。
LH算法首先使用文件的路径名作为哈希函数的键值来计算哈希结果,并以该结果为索引来查找元数据查询表,找到对应的元数据服务器的序号。然后再到对应的元数据服务器进行存取访问。
2.元数据文件的访问权限。
LH使用唯一的双入口访问控制列表(ACL)结构来确定文件的访问权限:每个文件或目录分别都有代表文件权限和路径权限的两个ACL表。
文件权限是指文件本身的访问权限;路径权限是文件权限和父目录路径权限结合在一起的权限。由于父目录路径权限也有类似的定义,所以获得路径权限的过程 代表了整个路径(一直到文件名)的权限的过程。这样与路径名散列相结合就可以访问元数据,从而避免了纯散列算法中需要遍历文件路径的各层目录来确定该文件最终访问权限的繁琐操作。
3.数据一致性问题
主MDS采用广播方式更新系统所有节点,并使用版本号来控制各节点MLT的数据一致性问题。
4.其他特点
LH算法采用一种懒惰的元数据更新策略提高了系统的整体相应速度。包括目录改名操作时延迟更新目录名,
5.算法的不足
LH算法的不足是目录改名,链接和访问权限的修改等扩展性操作会给存储系统引入额外的开销,影响系统的性能。
二、延迟元数据更新策略下的元数据迁移实例
比如对表二中的/obsd/src 目录进行改名操作,改为/obsd/src_backup。表3:改名后的/obsd/src目录入口。 通过对/obsd/src做Hash,客户端比对MLT找到MDS2 上/obsd/src的元数据。在MDS2更新请求修改的文件名和修改时间之后,他向父目录/obsd发送更新通知。 服务器保留/obsd/src这个名字,直到他内部的/obsd/src的元数据全部根据/obsd/src_backup的hash值迁移到新的位置。
MDS1在成功更新目录入口信息,并且成功更新/obsd/src的元数据之后发送确认,MDS2一旦收到就同步广播给其他MDS对/obsd/src的改名,并增加一个新的目录入口。
图4 改名后注册新的入口
访问改名后的目录的情形: 分为目录改名完成和没完成两种情形,如果没有完成改名,并且找不到访问的对象那么会返回一个失败信息给客户端。否则在权限允许的情况下,都可以正常返回结果。
(文中第三部分花了很多篇幅讲延迟更新,如果有必要可以以后再细读)