一种集群文件系统的访问装置和方法
【专利摘要】本发明提供一种集群文件系统的访问装置和方法,应用在集群系统的访问节点上,该装置执行以下处理流程:在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息;在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源,如果本节点没有权限访问所述共享资源,则返回或等待;如果本节点有权限访问所述共享资源,则更新所述资源锁信息,然后访问所述共享资源。通过本发明的技术方案,有效降低了集群文件系统锁管理的复杂度。
【专利说明】一种集群文件系统的访问装置和方法
【技术领域】
[0001]本发明涉及集群【技术领域】,尤其涉及一种集群文件系统的访问装置和方法。
【背景技术】
[0002]计算机集群是一种计算机系统,它通过一组松散集成的计算机软件和硬件连接起来,高度紧密地协作完成计算工作。集群系统中的单个计算机通常称为集群节点,各个集群节点之间通过局域网连接。集群计算机通常用来改进单个计算机的计算速度和可靠性。
[0003]随着高性能微处理器、高速互联网和高性能分布式计算的快速发展,以及各种应用对于计算能力需求的日益增长,集群技术获得了快速的发展。集群系统具有低成本、高性能、高扩展性、高吞吐量和易用性等特点,提供了强大的批处理和并行计算的能力。
[0004]集群文件系统(Cluster File System)是供集群系统中的多个物理服务器节点访问的文件系统。集群文件系统广泛应用于数据中心,提供了多节点并发访问的功能。
【发明内容】
[0005]有鉴于此,本发明提供一种集群文件系统的访问装置和方法,应用在集群系统的访问节点上。
[0006]具体地,所述装置包括:
[0007]锁获取模块,用于在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息,所述资源锁信息是当前访问所述共享资源的访问节点写入的;
[0008]锁判断模块,用于在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源:如果本节点没有权限访问所述共享资源,则返回或等待;
[0009]锁更新模块,用于在本节点有权限访问所述共享资源时,更新所述资源锁信息,然后访问所述共享资源。
[0010]所述方法包括:
[0011]在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息,所述资源锁信息是当前访问所述共享资源的访问节点写入的;
[0012]在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源:
[0013]如果本节点没有权限访问所述共享资源,则返回或等待;
[0014]如果本节点有权限访问所述共享资源,则更新所述资源锁信息,然后访问所述共
享资源。
[0015]由以上技术方案可见,本发明将资源锁信息存储在共享资源所在磁盘上的对应的位置,有效地避开了分布式的锁管理,降低了集群文件系统的锁管理的复杂度,并规避了访问节点重启所引起的各种异常问题。【专利附图】
【附图说明】
[0016]图1是本发明一种实施例中集群文件系统的访问装置的逻辑结构图;
[0017]图2是本发明一种实施例中集群文件系统的访问方法的流程示意图。
【具体实施方式】
[0018]在集群文件系统中,并发访问是多个物理服务器节点(以下简称访问节点)对于相同共享资源的同时访问。为了同步不同的访问节点对于同一个共享资源的并发访问,就有了一个分布式的资源锁管理。分布式资源锁是指共享资源,比如文件、数据或者目录等,都有对应的锁队列。这些锁队列是存储在每个访问节点的内存中。在同步并发访问的时候,各个访问节点之间通过报文交换锁信息,以确定本地是否可以持有对应共享资源的锁或者兼容锁,是否具有访问共享资源的权限。在没有取得锁资源的时候,请求该共享资源的访问节点通常需要等待,直到持有该锁的访问节点将其释放掉,自己持有该资源的锁后,才能访问对应的共享资源。
[0019]将资源锁分布在不同的访问节点上,增加了锁管理的复杂度,而且还可能引起不同访问节点之间相互竞争等待,有可能造成死锁的情况出现,进而会导致整个集群阻塞。当持有资源锁的访问节点出现宕机或者断电等异常情况时,可能会要求其他访问节点去恢复其持有的资源锁,从而造成整个集群系统的访问节点在故障的时候,性能和效率都很低,导致集群中其他处于正常状态的访问节点等待过久。
[0020]一些集群文件系统通过访问节点重启的方式来解决上述问题,但是访问节点重新启动,会造成该节点上正在运行的其他业务中断,影响用户体验。在分布式锁管理中,各个访问节点由于不能准确判断集群的健康情况,可能会造成正常运行的访问节点重新启动,从而导致服务中断的问题。
[0021]针对上述问题,本发明提供一种集群文件系统的访问装置,该装置作为一个逻辑装置,应用在集群系统的访问节点上。作为该逻辑装置的运行载体的访问节点,其硬件环境通常至少都包括有CPU、内存以及非易失性存储器,当然还可能包括各种转发芯片等硬件。请参考图1和图2,所述装置在逻辑层面包括有:锁获取模块、锁判断模块以及锁更新模块。在本发明的一种实施方式中,所述装置在运行过程中执行如下步骤:
[0022]步骤101,在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息。本步骤由锁获取模块执行。
[0023]不同于现有的实现方式中将资源锁的持有分布在不同的访问节点上,本发明将资源锁存放在集群文件系统中的磁盘上。集群系统内的所有访问节点在请求访问共享资源之前不再需要进行报文交换来获取资源锁,而是统一去集群文件系统各个共享资源所在磁盘上的对应的位置获取相应的资源锁信息,根据所述资源锁信息的具体内容来判断是否有权限访问该共享资源。
[0024]具体地,集群文件系统的每个共享资源都对应有一个资源锁信息,所述资源锁信息存储在所述共享资源所在磁盘上的对应的位置,所述资源锁信息是当前访问所述共享资源的访问节点写入的,且在本访问节点访问结束后清空所述资源锁信息中的内容,使其内容为空。所述对应的位置可以是所述共享资源在磁盘的存储位置中的前一段字节,也可以是针对不同类型的文件系统进行不同的设置,比如,在Linux的ext系列的文件系统中,在文件inode中存储当前访问节点的资源锁信息。
[0025]步骤102,判断所述资源锁信息的内容是否为空,如果非空,说明此刻有其他访问节点在访问所述资源锁信息,需要对资源锁信息的内容进行进一步的分析,故转步骤103 ;如果所述资源锁信息的内容为空,说明此刻没有其他访问节点在访问所述共享资源,本节点有权限访问所述共享资源,转步骤104。本步骤由锁判断模块执行。
[0026]步骤103,根据本节点的访问类型和所述资源锁信息判断是否有权限访问所述共享资源,如果本节点没有权限访问所述共享资源,则返回或等待。本步骤由锁判断模块执行。
[0027]步骤104,更新所述资源锁信息,然后访问所述共享资源。本步骤由锁更新模块执行。
[0028]步骤105,在本节点访问结束后清空所述资源锁信息,以便其他访问节点进行访问。本步骤由锁更新模块执行。
[0029]上述步骤中,所述资源锁信息是当前访问所述共享资源的访问节点写入的,根据所述资源锁信息,可以判断出本节点是否具有访问权限。
[0030]具体地,所述资源锁信息包括:资源锁类型。所述资源锁类型包括:共享读锁和排他写锁。其中,所述共享读锁表示当前访问节点的访问类型是读访问,由于读访问不会改变共享资源的数据内容,所以允许其他访问节点同时进行读访问的操作,但是其他访问节点不能进行写访问,因为,如果此时有访问节点进行写访问,就有可能会影响到其他访问节点读访问的数据准确性。所述排他写锁表示当前访问节点的访问类型是写访问,拥有排他写锁的访问节点可以对共享资源进行写访问,此时,其他访问节点没有权限访问所述共享资源。
[0031]所述访问节点在访问共享资源的时候,具体的访问类型分为读访问和写访问。本步骤中对于访问权限的判断依据所述访问类型可以分为以下两种情况:
[0032]第一种情况:本节点的访问类型是读访问。此时,锁判断模块查看所述资源锁信息中的资源类型,在所述资源类型为共享读锁时,由于本节点是读访问,不会影响其他访问节点的读访问操作,所以,本访问节点有权限访问所述共享资源。在所述资源类型为排他写锁时,表示本节点没有权限访问所述共享资源,此时可以返回或者等待。
[0033]第二种情况:本节点的访问类型是写访问。由于本节点的写访问要更改所述共享资源的数据,所以不论此时所述资源锁类型是排他写锁还是共享读锁,本节点都没有权限访问所述共享资源,锁判断模块就不需要查看所述资源锁类型,直接返回或者等待。
[0034]在集群文件系统中,如果某个正在访问共享资源的访问节点突然发生故障,集群系统内的其他访问节点无法及时得知,这就会造成其他访问节点没有权限访问所述共享资源,整个系统效率低下的情况。在本发明的一种优选实施方式中,所述资源锁信息还包括:时间戳,所述时间戳用于记录当前访问节点对所述共享资源的访问或更新时间。在访问共享资源的过程中,访问节点还能够通过定期更新所述时间戳,来通知其他访问节点本节点运行正常。通过所述时间戳,其他访问节点也可以及时地判断出正在访问共享资源的访问节点是否故障,进而减少等待时间。
[0035]具体地,在配置集群文件系统时,为该系统内的所有访问节点配置相同或相近的系统时间,各个访问节点的时间误差在预定的时间间隔Tl之内。管理员可以使用NTP等方式来配置节点的系统时间,以确保所有节点的系统时间差在几秒钟内。所述预定的时间间隔Tl也是访问节点对于共享资源访问的超时时间,即,如果访问节点的访问时间超过Tl,就默认该访问节点故障或异常退出。
[0036]所述锁判断模块,在上述两种情况中判断本节点没有访问权限之前,进一步比对所述时间戳和本节点当前的时间。如果所述时间戳和本节点当前的时间的差值在所述预定的时间间隔Tl内,说明此时正在访问所述共享资源的访问节点状态正常,本节点没有权限访问所述共享资源,返回或等待。如果所述时间戳和本节点当前的时间的差值超过Tl,说明此时正在访问所述共享资源的访问节点异常,本节点可以取得访问权限。
[0037]进一步地,所述资源锁信息还包括:访问节点主机名或者IP地址。记录访问节点的主机名或者IP地址,其他的访问节点可以清楚地得知具体是哪个节点正在访问所述共享资源。而网管可以通过所述主机名或者IP地址对共享资源设置访问权限,同时也可以根据日志查看具体的共享资源被哪些访问节点访问以及访问的频率等相关信息。
[0038]所述资源锁信息可以设置为如下格式:23个字节的访问节点主机名或者IP地址、8个字节时间戳以及I个字节的资源锁类型。所述资源锁类型可以用O或者I来标识,比如O代表共享读锁,I代表排他写锁。当然,本领域技术人员也可以设置为其他格式,在此不再累述。
[0039]进一步地,所述锁更新模块,在本节点访问所述共享资源时,按照预定的时间间隔T2更新所述时间戳,其中,T2小于Tl,优选地,T2小于Tl的一半。比如,将Tl设置为I分钟,T2为20秒。
[0040]本发明尤其适用于大数据块的访问,比如在虚拟化管理的过程中,可以用于对于虚拟机大镜像文件的分布式共享访问。
[0041]本发明将资源锁信息存储在共享资源所在的磁盘上,有效地避开了分布式的锁管理,降低了集群文件系统的锁管理的复杂度,并规避了访问节点重启所引起的各种异常问题。
[0042]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1.一种集群文件系统的访问装置,应用在集群系统的访问节点上,其特征在于,所述装置包括: 锁获取模块,用于在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息,所述资源锁信息是当前访问所述共享资源的访问节点与入的; 锁判断模块,用于在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源:如果本节点没有权限访问所述共享资源,则返回或等待; 锁更新模块,用于在本节点有权限访问所述共享资源时,更新所述资源锁信息,然后访问所述共享资源。
2.根据权利要求1所述的装置,其特征在于, 所述资源锁信息包括:资源锁类型,所述资源锁类型包括:共享读锁和排他写锁, 所述锁判断模块在本节点的访问类型是读访问时,查看所述资源锁信息中的资源类型,并在所述资源类型为共享读锁时,确定本节点有权限访问所述共享资源,在所述资源类型为排他写锁时,确定本节点没有权限访问所述共享资源; 所述锁判断模块在本节点的访问类型是写访问时,确定本节点没有权限访问所述共享资源。
3.根据权利要求2所述的装置,其特征在于, 所述资源锁信息还包括:时间戳,所述时间戳用于记录当前访问节点对所述共享资源的访问或更新时间; 所述锁判断模块在本节点的访问类型是读访问,且所述资源锁类型为排他写锁时以及本节点的访问类型是写访问时,还包括比对所述时间戳和本节点当前的时间, 如果所述时间戳和本节点当前的时间的差值在预定的时间间隔Tl内,则确定本节点没有权限访问所述共享资源, 如果所述时间戳和本节点当前的时间的差值超过Tl,则确定本节点有权限访问所述共孚资源; 所述锁更新模块,进一步用于在本节点访问所述共享资源时,按照预定的时间间隔T2更新所述时间戳,T2小于Tl。
4.根据权利要求3所述的装置,其特征在于,所述锁判断模块进一步用于在所述资源锁信息为空时,确定本节点有权限访问所述共享资源;所述锁更新模块,进一步用于在所述资源锁信息为空时,将自身的访问信息写入所述资源锁信息,访问所述共享资源,并按照预定的时间间隔更新时间戳。
5.根据权利要求1所述的装置,其特征在于,所述锁更新模块,进一步用于在本节点访问结束后清空所述资源锁信息。
6.一种集群文件系统的访问方法,应用在集群系统的访问节点上,其特征在于,所述方法包括: 在访问磁盘上的共享资源前,从所述共享资源所在磁盘上的对应的位置获取该共享资源的资源锁信息,所述资源锁信息是当前访问所述共享资源的访问节点写入的; 在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源: 如果本节点没有权限访问所述共享资源,则返回或等待; 如果本节点有权限访问所述共享资源,则更新所述资源锁信息,然后访问所述共享资源。
7.根据权利要求6所述的方法,其特征在于, 所述资源锁信息包括:资源锁类型,所述资源锁类型包括:共享读锁和排他写锁, 在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源的过程中包括: 在本节点的访问类型是读访问时,查看所述资源锁信息中的资源类型,并在所述资源类型为共享读锁时,确定本节点有权限访问所述共享资源,在所述资源类型为排他写锁时,确定本节点没有权限访问所述共享资源; 在本节点的访问类型是写访问时,确定本节点没有权限访问所述共享资源。
8.根据权利要求7所述的方法,其特征在于, 所述资源锁信息还包括:时间戳,所述时间戳用于记录当前访问节点对所述共享资源的访问或更新时间; 在所述资源锁信息非空时,根据本节点的访问类型和所述资源锁信息判断本节点是否有权限访问所述共享资源的过程中还包括:在本节点的访问类型是读访问,且所述资源锁类型为排他写锁时以及本节 点的访问类型是写访问时,比对所述时间戳和本节点当前的时间, 如果所述时间戳和本节点当前的时间的差值在预定的时间间隔Tl内,则确定本节点没有权限访问所述共享资源, 如果所述时间戳和本节点当前的时间的差值超过Tl,则确定本节点有权限访问所述共孚资源; 其中,当前访问节点按照预定的时间间隔T2更新所述时间戳,T2小于Tl。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括: 在所述资源锁信息为空时,确定本节点有权限访问所述共享资源,将自身的访问信息写入所述资源锁信息,访问所述共享资源,并按照预定的时间间隔更新时间戳。
10.根据权利要求6所述的方法,其特征在于,所述方法还包括: 在本节点访问结束后清空所述资源锁信息。
【文档编号】H04L29/08GK103458036SQ201310398904
【公开日】2013年12月18日 申请日期:2013年9月3日 优先权日:2013年9月3日
【发明者】郭中华 申请人:杭州华三通信技术有限公司