第24卷第9期 2007年9月 计算机应用研究 Application Research of Computers Vo1.24 No.9 Sept.2007 分布式并行文件系统中锁管理的研究冰 赵 旺,曹强 (华中科技大学计算机科学与技术学院外存储国家专业实验室,武汉430074) 摘 要:分析了传统的分布式锁管理中范围锁的实现及其局限,给出了一种用于支持交叉访问模式的新的分布 式锁管理算法——DBM算法。分布式锁管理是分布式并行文件系统的关键组成部分之一。软件仿真实验表明 新算法在交叉访问模式下大大提高了系统并发度。 关键词:分布式并行文件系统;分布式锁管理;交叉访问模式;动态块管理算法 中图分类号:TP391 文献标志码:A 文章编号:1001—3695(2007)09—0037—03 Research on lock—management in distributed parallel file system ZHAO Wang,CAO Qiang (National Storage System,Laboratory,College of Computer Science&Technology,Huazhong University of Science&Technology,Wuhan 430074,China) Abstract:This paper analyzed the tradition implementation of extent lock and indicated its limitation.Then,gave a new lock management algorithm named DBM to support strided access pattern application,and contrasted the new and the old one by software simulation. Key words:distirbuted parallel ifle system;DLM;strided access pattern;DBM(dynamic block management)algorithm 分布式并行文件系统设计用于为多进程并行访问提供高 速I/O。这些进程往往分布在组成并行计算机或集群的大量 实现了一种类似的分布式锁机制。IBM的GPFS中实现一种 基于令牌的分布式记录锁(在后面讨论中称之为范围锁,以使 意义更明确一些)机制,但是系统仍然存在专门的全局锁管理 节点。CFS的Lustre" 中同时实现了这两种(资源锁和记录 锁)锁机制,分别用于管理元数据和文件数据,并实现了一种 意图锁(intent lock)的机制对元数据操作进行优化。本文的讨 论主要针对范围锁(extent lock,EL)。 节点或计算机上。图1描述了用于本文讨论的一个使用分布 式并行文件系统集群的典型视图。计算节点(n)通过高速交 换网络与I/O服务器(S)相连,数据存放在连接到各个服务器 的磁盘中。 为达到更高的性能,分布式并行文件系统采用类似RAID 的方法,将文件分片到多个节点中存放 。J。与多个节点共享 一个RAID卷不同,分布式并行文件系统可以同时使用多条不 2传统范围锁的实现及其局限 为了使用计算节点(即分布式并行文件系统的客户端)的 本地cache以提高I/O性能,EL返回的锁范围往往以页或固 定大小的块为单位。 GPFS和Lustre都采用了一种乐观的字节范围锁来同步文 同网络路径,从而消除了通常的I/0瓶颈。 为了保证多个计算节点共享系统中文件数据的一致性,系 统必须同步多个节点对共享文件数据的访问。分布式锁管理 (distributed lock manager,DLM)为实现这种同步提供了一种有 效手段。 件I/0。在这种机制中,服务器向获得锁的节点返回当前能够 获得的最大锁范围(以页或块为单位),而不仅仅是节点请求 的锁范围,因此称其为乐观的锁机制。当第一个节点写文件 时,它将获得整个文件范围的锁。只要没有其他节点访问同一 文件,它对文件的所有操作都可以在本地处理,而不必与其他 1 相关工作 关于DLM已经有很多研究。文献[4]对多种典型的DLM 性能进行了数学建模和仿真测试。文献[5]提出了用于分布 式文件系统的一种半抢占式锁。文献[6]对三种典型DLM的 性能进行了更为细致的数学分析和实验仿真。很多商业应用 中也都集成了分布式锁管理,如VAX/VMS、Oracle parallel server、HP OpenVMS、IBM GPFS、Red Hat GFS、CFS Lustre等。 一节点交换信息。当第二个节点写此文件时,它必须请求撤销第 个节点所拥有的至少一部分锁范围。第一个节点在收到撤 销请求后,检查文件是否仍在使用。如果文件已经关闭,文件 锁就会被释放,第二个节点可以获得整个文件范围的锁;否则, 只释放它不使用的部分锁,以使第二个节点可以获得其所需范 围的锁,完成写操作。一般情况下,只要多个节点不是写同一 VAX/VMS包含了一种简单的资源锁机制。Red Hat GFS中也 收稿日期:2006—06—09:修返日期:2006 09-11 基金项目:国家“973”计划资助项目(2004CB318203) 作者简介:赵旺(1982一),男,硕士研究生,主要研究方向为网络存储、分布式并行文件系统(zw200138@163.con1);曹强(1975一),男,副教授,硕 导,主要研究方向为计算机系统结构、存储系统. 维普资讯 http://www.cqvip.com ・38- 计算机应用研究 第24卷 文件的相同部分,每个节点都可以通过一次锁请求获得所需的 锁,从而完成写操作。 以上策略在分段访问模式(segmented access pattern) 中 (一个节点连续访问文件中较长的一段区域)性能较好,但在 交叉访问模式(strided access pattern)中(多个节点交叉访问文 写锁授权后,将所写数据发送到该块的BM节点。BM节点将 从其他节点接收到的数据合并到本地cache中,并在之后的某 个时刻将其刷新到服务器(图3(b))。 每个获得授权的EL锁都有一个超时值,当系统时间到达 此时刻时,服务器请求客户端撤销EL。客户端收到此请求后, 检查EL是否仍在使用,若没有,就删除EL,并向服务器发送 EL已撤销消息。服务器收到此消息后,就可以将此EL释放。 只要BML锁住的块上仍有EL存在,BML就不会被释放。 当被锁块上无EL时,服务器就为BML设置一个计时器。若直 件中一些不连续的小段)性能较差。在这种模式下,即使采用 谨慎的锁管理策略,只返回给节点所请求大小的锁范围,由于 传统EL锁的范围不能小于一个页或块,当多个节点写同一页 或块中的不同位置时,仍会发生不应有的锁冲突,使操作不能 并行,降低系统效率。为此,本文设计了一种新的分布式文件 范围锁管理算法,用于支持交叉访问模式的应用,较好地解决 了这一问题 到计时器超时,该块上仍无EL,则向BM发送BML cancel指 令,通知其释放BMLo BM接到此通知后,将数据刷新到服务 器(若需要的话),然后撤销BML并向服务器返回响应信息 (图3(C))。 3基于交叉访问模式的分布式文件范围锁 为了解决传统块范围的锁在交叉模式下的问题,引入块管 理者的概念和动态确定块管理者的机制,提出了DBM算法。 BML释放后,被锁块重新回到无BM的状态,下一个写该 块的节点将获得该块的BML,成为该块新的BM。 系统中每个被写的块都有一个管理节点,称为块管理者(block manager,BM),并在系统中增加一种锁来标志BM,称为块管理 者锁(block manager lock,BML)。只有BM可以cache该块,及 将修改之后的块刷新到1/O服务器。其他节点对该块的写操 (a)获得BML锁 (b)获得EL锁 作,都要通过BM来完成,它们对该块的修改发送到BM节点, 由BM将其合并到本地cache中,并最终提交到服务器。 3一DBM协议描述 为了简单起见,本部分在讨论时没有涉及读操作。 DBM协议基于原有的EL锁协议,增加了BML相关的状 态和操作,其协议状态图如图2所示。系统中每个数据块有三 种状态,即无锁(no lock)、BML(存在BML锁)、BML&ELs(存 在BML及一个或多个EL)。有四种操作用来进行状态的转 换,即BML grnta(BML锁授权)、BML cancel(BML锁撤销)、EL ragnt(EL锁授权)、EL cancel(EL锁撤销)。 (c)释放BML 图3 DBM协议过程描述 3.2 DBM算法实现 1)Client端算法描述在客户端需要维护三个队列,分别 为待发送锁请求队列、被阻塞锁队列(blocked)、已授权锁队列 (granted)。应用进程将锁请求放人待发送锁请求队列中,然 后阻塞。锁管理客户端进程不断扫描此队列,若有新请求就将 其发往服务器。同时,客户端锁管理进程,还要接收服务器发 过来的消息,根据不同的消息启动不同的处理动作。具体消息 类型及响应动作如表1所示。 表1 Client端消息接收及处理动作 图1分布式并行文件系统 集群典型视图 图2 DBM协议状态图 消息类型 动 作 BML ̄rant 标记本节点为响应块BM,将此块读到cache中 若系统中的块没有节点对其进行写操作,则此块无BM。 第一个在该块上申请写锁的节点,除获得所请求的范围锁外, 同时获得该块的块管理者锁,成为该块的BM(图3)。 收到一个写锁申请时,服务器首先查看申请范围所在块的 BML是否为空。若空,则服务器授权该锁请求,同时授权发送 此请求节点BML,使其成为该块的BM。成为BM的节点在执 行写操作前,首先将此块从服务器读到本地cache中,然后在 一EL ̄ramt EL..blocked BML_将此EL锁加人本地granted队列,唤醒等待此锁的进程 将此EL锁加入本地blckeod队列 cancel 将块写回服务器(若需要的话),删除BM标记,向服务器发送 BMLcanceld消息 e._EL_cncela 如果此EL已不再使用,则从本地锁队列中删除,并向服务器 发送EL_canceld消息 e2)Server端算法描述 服务器端算法要比客户端要复杂 些。首先,服务器端也要维护三个队列,待处理请求队列、被 阻塞锁队列(waiting)、已授权锁队列(grnt)。接收到新的锁 a本地完成写操作,修改后的数据在之后某一时刻将刷新到服务 器(图3(a))。若所在块的BML不为空,则服务器检查该锁是 请求放置在待处理请求队列中,锁管理服务器端进程不断扫描 此队列,以FIFO的方式依次处理每个请求。服务器也要处理 接收到的客户端消息,具体消息类型和相应动作如表2所示。 否与已存在范围锁冲突。若无冲突,则授权该锁;否则将其加 入该块的锁等待队列中。非BM节点不缓存数据,而是在获得 维普资讯 http://www.cqvip.com
第9期 赵旺,等:分布式并行文件系统中锁管理的研究 ’39・ 除此之外,服务器还要为EL和BML维护一些定时器,以在定 access pattern)共享服务器上的1个文件,并通过每10 000个 时器超时时向客户端发送EL—camce;或BML—cancel消息,从 请求中被阻塞的请求个数表征算法的并发程度。 而回收EL或BML锁资源。 实验结果如图4所示。从图4可以看出,当请求大小远小 表2服务器端算法实现 于(<0.1)块大小时,DBM算法的并发度明显优于传统的EL 算法;当请求大小达到0.5倍的块大小后,两种算法的并发度 若对应块无BM 标记该节点为BM,发送BML_grant 传送数据到客户端 相近,这与本文前面的分析是一致的。 将EL锁加入服务器grna!队列,发送 10 0o0 锁请求处理若与已授权EL无冲EL ̄p'ant 口— L 】X l^ /u lI 突 将EL锁加入服务器grant队列,发送 嚣8 ooo EL ̄rant 岛6 o0o 若与已授权EL有冲突 将EL加入waiting队列,发送EL— * 摆4 ooo blocked 口 2 ooo 0 o.o1 o 02 o.05 o.1 o.2 o.5 1 1.5 --i--DBM算法 十传统EL算法 请求大小/块大小 图4仿真实验结果 3.3 DBM算法分析 5结束语 DBM算使用了BML,且只有BM节点才能缓存数据块, 因此EL锁的授权时不必再将每个锁的范围都扩展到数据块 下一步,要通过数学模型和更完善的仿真系统进一步验证 边界,而可以只授权节点所请求范围。这样,当其他节点在 DBM算法的可行性,对节点失效、请求阻塞等情况下的算法进 该块上请求锁时,只要其请求范围与之前其他节点请求的范 行进一步的完善,并应用此算法来改造和完善实际的系统。 围不冲突,服务器就可以对其进行授权,使多个节点可以并 参考文献: 发访问同一个数据块。而传统的EL算法,每个锁范围都被 [1]LATHAM R,MILLER N,ROSS M,et a1 A next—generation parallel 扩展至块边界,每个块内的数据不能被多个节点并发访问, ifle system for Linux clusters[EB/OL].http://www LinuxWorld con 大大降低了系统并发度。传统的EL算法每次获得块范围的 锁后都将数据块读到本地cache。如果每次节点只是改写其 [2]Cluster File Systems,Inc Lustre:a scalable,high-performance file system[EB/OL] (2002-11-11) http://lustre org/docs/whitepa- 中极少的数据的话,这种做法就会造成极大的带宽浪费。 per pdf DBM算法对这种情况也有改进,只有BM缓存数据,其他节 [3]SCHMUCK F,HASKIN R GPFS:a Shared-disk file system for large 点将要修改的极少量数据发往BM。这种机制有效地节约了 computing clusters[C]//Prco of Conference on File and Storage 系统带宽,尤其是在每次修改的数据量远小于系统数据块大 Technologies(FAST’02) Monterey s n ],2002:231-24_4 小的情况下。 [4] BORN E.Analytical performance modeling of lock management in 当每次锁请求的范围接近系统数据块大小时,随着单数据 distirbuted systems[J] Distributed Systems Eng,1996,3(1): 块内并发访问可能性的减小,DBM算法将逐渐退化为传统的 68—76. EL算法,在并发度上不再占有优势;而且由于增加了管理 [5]BURMS R C,REES R M,LONG D D E.Semi—preempfible locksfor a distirbuted ifle system[C]//Proc of International Performance Com— BML的开销,性能甚至可能比传统EL实现更差。 pufing and Communication Conference.Phoenix:[s.n、],2000. 此外,为了保证客户端突然失效时系统的锁资源能够有效 397—404 回收,在EL锁很长时间没有被释放时,服务器可以通知客户 [6]KNOTFENBELT W J,ZAETAL S,HARRISON P G.Performance a— 端,然后强制删除该锁。在客户端对BML—cancel消息没有响 nalysis of three implementation strategies for distirbuted lock manage— 应时,服务器也应该强制删除该锁,或者可以在系统中增加类 ment[C]//Prco of IEEE Computers and Digital Techniques.2001: 似文献[7]的失效节点检测机制,将检测到的失效节点拥有的 148—176. 锁强制删除。 [7]BRAAM P J.The lustre storage architecture[EB/OL].http://lus- fIe.org/docs/lustre.pdf. 4实验仿真 [8]HEDGES R,LOEWE B,MCLARTY T,et a1.Parallel file system testing for the lunatic firnge:the care and feeding of restless I/O 为了验证DBM算法的实际效果,通过软件仿真进行了对 Power Users[C]//Proe of the 22nd IEEE/13th NASA Goddard 比实验。仿真程序模拟以下环境:10个客户端,1个I/O服务 Conference on Mass Storage Systems and Technologies(MSST 2005) 器,10个客户端同时访问(访问模式采用文献[8]中的strided Monterey:[s.n.],2005:11-14. (上接第1 1页)compensator for industiral robots[C]//IEEE International puter Vision and Image Understanding,2004,95(3):261—286. Conference on Neural Networks.1994:2797-2802. [4O]Lu T F,IlN G C I.An on-line relative position and orientation elror [39]ZHU Zhi—gang.Dynamic mutual calibration and view planning for COO— calibration methodology for work—cell robot operations[J].Robotics perative mobile robots with panoramic virtual stereo vision[J].Com— &Computer Integrated Manufacturing,1997,13(2):89.99.
因篇幅问题不能全部显示,请点此查看更多更全内容