一种分布式文件系统的写锁定方法及系统的制作方法

文档序号:6339210阅读:305来源:国知局
专利名称:一种分布式文件系统的写锁定方法及系统的制作方法
技术领域
本发明涉及数据存储领域,具体地说,尤其涉及一种分布式文件系统的写锁定方 法及系统。
背景技术
在大型的分布式文件系统上,为了做到海量的并发性,同时又要保证文件系统数 据的一致性,通常是选择一个统一的锁定节点对分布式文件系统中存储的数据进行集中锁 定管理,该锁定节点可以为单一的服务器或集群,为便于表述,下文将锁定节点(锁定服务 器或集群)简称为锁定服务器。然而,随着多媒体产业的迅猛发展,出于成本、可靠性等多 方面的考虑,对于大型的分布式文件系统,越来越多的厂商或者企业采用云的方式来进行 存储。云存储是指通过集群应用、或分布式文件系统等功能,将网络中大量的各种不同类型 的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一 个系统,也就是说云存储是一个以数据存储和管理为核心的云计算系统。在云存储中,既要 考虑安全性,还要考虑成本,因此,如何部署云是关键。尤其是现在,云的规模越来越大,越 来越多的云将分布在多个地方,既而如何部署分布式文件系统的锁定服务器将变得异常复
ο在云存储中,若使用单一的锁定服务器来锁定分布式文件系统的核心部分。当多 个程序同时访问分布式系统中不同文件的不同文件偏移量时,需要依次访问该锁定服务器 以获得对特定文件的特定文件偏移量的写锁权限。此时,极大的限制了分布式文件系统的 访问吞吐能力,造成吞吐性能下降。而当多个程序同时访问分布式系统中同一个文件的同 一文件偏移量时,先访问的程序得到了该特定文件的特定文件偏移量的写锁权限。那么此 时,其他的访问程序只能在缓存中等待。只有当先访问的程序释放了该特定文件的特定 文件偏移量的写锁权限时,其他的程序才能获得数据该特定文件特定文件偏移量的写锁权 限。因此,单一的锁定服务器成为了对于巨型云写的瓶颈。

发明内容
本发明针对现有技术的不足,提供一种分布式文件系统的写锁定方法以及系统, 不但能够保证在硬件投入不增加的情况下,提高分布式文件系统锁定提交的吞吐能力,而 且还能随着分布式文件系统的扩容而同步扩容,具有很好的可扩展性。为解决上述技术问题,本发明提供了以下技术方案一种分布式文件系统的写锁定方法,包括以下步骤当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请 求时,上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求 客户端;下层锁定服务器根据所述文件请求客户端发来的对所述文件中定数据块特定数 据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。在本发明的一种实施例中,当所述上层数据位置寄存服务器提取所述文件的数据 块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存服务器则首 先为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信息,从而把所 述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中。在本发明的一种实施例中,所述文件请求客户端在向所述下层锁定服务器发送对 所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请求 客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓存 中且已被锁定,则所述文件请求客户端不向所述下层锁定服务器发送锁定请求,若所述特 定数据部分未被锁定,则所述文件请求客户端向所述下层锁定服务器发送锁定请求。在本发明的一种实施例中,所述下层锁定服务器根据所述文件请求客户端的发来 的对所述特定数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具体为当所述下层锁定服务器接收到所述文件请求客户端发来的对所述特定数据块特 定数据部分的锁定请求时,所述下层锁定服务器判断当前是否为第一次接收到对所述特定 数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相 应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据块特定数 据部分的锁定请求信息。在本发明的一种实施例中,所述下层锁定服务器根据接收到的所述文件请求客户 端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数据部分的写锁权 限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据部 分发送给所述文件请求客户端,具体为当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块 特定数据部分的读写锁定请求时,所述下层锁定服务器检查当前数据块锁定信息表中所述 特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息 表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据块服务器返回所述特定 数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块 特定数据部分的写锁定请求时,所述下层锁定服务器则检查当前所述特定数据部分的锁定 情况,若所述特定数据部分未被锁定,则在所述数据块状态信息表中将所述特定数据部分 的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据部分已被 锁定,则执行锁定失败策略。在本发明的一种实施例中,所述文件请求客户端向所述下层锁定服务器发送对所 述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部分 在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中所 述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所述 特定数据块且未被锁定,则判断所述特定数据部分命中,并向所述下层锁定服务器发送写 锁定请求。同时,本发明还提供了一种分布式文件系统的写锁定系统,包括设置于系统内的 上层数据位置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位置寄存选择路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述 文件的数据块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件 请求客户端发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块 特定数据部分的写锁权限信息返回给所述文件请求客户端。在本发明的一种实施例中,所述上层数据位置寄存选择路径模块在提取所述文件 的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存选择 路径模块还用于为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信 息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器 中。在本发明的一种实施例中,所述文件请求客户端在向所述下层数据锁定模块发送 对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请 求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓 存中且已被锁定,则所述文件请求客户端不向所述下层数据锁定模块发送锁定请求,若所 述特定数据部分未被锁定,则所述文件请求客户端向所述下层数据锁定模块发送锁定请 求。在本发明的一种实施例中,所述下层数据锁定模块根据所述文件请求客户端发 来的对所述特定数据块特定数据部分的锁定请求,创建所述数据块锁定状态信息表,具体 为当所述下层数据锁定模块接收到所述文件请求客户端发来的对所述特定数据块 特定数据部分的锁定请求时,所述下层数据锁定模块判断当前是否为第一次接收到对所述 特定数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及 其相应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据部分 的锁定请求信息。在本发明的一种实施例中,所述下层数据锁定模块根据接收到的所述文件请求客 户端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数据部分的写锁 权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据 部分发送给所述文件请求客户端,具体为当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据 块特定数据部分的读写锁请求时,所述下层数据锁定模块检查当前数据块锁定状态信息表 中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状 态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据存储模块返回所 述特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败 策略;当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据 块特定数据部分的写锁定请求时,所述下层数据锁定模块则检查当前所述数据块锁定状态 信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块 状态信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求 客户端;若所述特定数据块已被锁定,则执行锁定失败策略。在本发明的一种实施例中,所述文件请求客户端向所述下层数据锁定模块发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部 分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中 所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所 述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层锁定服务器发 送写锁定请求。由于采用了以上技术方案,使本发明具备的有益效果在于通过上层数据位置寄 存服务器为文件请求客户端请求的一个或者多个文件中的确定唯一的数据块路径,从而把 所述文件的数据块路径上的不同数据块的写锁权限分发到下层锁定服务器中,并将所述文 件的数据块路径信息返回给所述文件请求客户端;文件请求客户端根据从上层数据位置寄 存服务器处获得的所述数据块路径信息,向下层锁定服务器发起写打开所述文件中某一个 特定数据块特定数据部分的请求信息,并从相应的下层锁定服务器内获得所述特定数据块 的写锁定权限信息。如此,上层数据存储位置存储服务器将所述文件的所有数据块的写锁 权限分发到下层的一个或者多个下层锁定服务器中,摒弃了传统的采用单一的锁定服务器 来锁定分布式文件系统的锁定方法,一方面减少了上层数据位置寄存服务器的锁定服务器 的负载;另一方面,也真正地实现下层锁定服务器管理分布式系统中相应下层数据块服务 器内存储的数据的写锁权限,从而在不增加分布式文件系统硬件资源的情况下,提高分布 式文件系统锁定提交的吞吐能力。同时,使用本发明提供的锁定方法,可以用在一个或者多 个上层数据位置寄存服务器的分布式文件系统中,因此,该锁定方法的提高系统吞吐量的 能力还能随着分布式文件系统的扩容而同步扩容,具有很好的可扩展性。


图1为本发明一种实施例的工作架构图;图2为本发明另一种实施例的工作流程图。
具体实施例方式下面通过具体实施方式
结合附图对本发明作进一步详细说明。目前,为了解决单一的锁定服务器造成的巨型云写的瓶颈问题,如图1所示,本发 明提供了一种分布式文件系统的写锁定方法及系统,其主要构思是在分布式文件系统的 下层,使用多个分散的锁定服务器来共同锁定分布式文件系统中存储的数据。与传统的单 一的锁定服务器相比,本发明将要锁定的分布式文件系统中存储的数据的锁定权限分摊到 下层的多个不同的文件系统数据服务器中。具体地讲,该文件系统数据服务器主要包括下 层锁定服务器和下层数据块服务器,其中,下层数据块服务器主要用来存储分布式文件系 统中的数据块信息,而下层锁定服务器则主要是用于锁定存储在下层数据块服务器的数 据,即对该数据块服务器中的数据的锁定权限进行管理。这里说的锁定权限主要指的是分 布式文件系统中数据的写锁权限。具体地说,该写锁定方法是通过上层数据位置寄存服务 器为文件请求客户端请求打开的一个或者多个文件的文件确定一个唯一完整数据块路径, 从而该文件的数据块路径上的不同数据块的写锁权限分发到多个下层锁定服务器中的。实 际上,在上层数据位置存储服务器内,存储有大量的存储在下层数据块服务器内的数据块 路径信息,在系统内部,也将存储在下层数据块服务器内的数据块路径信息称为元数据。在上层数据位置寄存服务器处,采用专门的锁定服务器来锁定元数据。而在下层,则使用分散 的多个下层锁定服务器来锁定存储在下层数据块服务器内的数据块。当下层锁定服务器接 收到文件请求客户端发来的对该文件中特定数据块特定数据部分的锁定请求时,下层锁定 服务器便将所述特定数据块特定数据部分的写锁权限信息返回给文件请求客户端。本发明提供的写锁定方法采用分散的多个下层锁定服务器来锁定分布式文件系 统中的数据的目的,主要是为了减少上层数据位置寄存服务器的锁定服务器的负载。同时, 通过上层数据位置寄存服务器将文件请求客户端请求打开的文件内的不同数据块的写锁 权限分发到下层锁定服务器中,使得下层的文件系统数据服务器不再是上层锁定服务器的 一个缓冲,真正实现了下层锁定服务器管理分布式文件系统中数据的写锁权限。该写锁定 方法在单或多上层数据位置寄存服务器中都可以广泛的使用,若在多个上层数据位置寄存 服务器中使用时,各个上层数据位置寄存服务器不具有主备用关系。在本发明的一种实施例中,当所述上层数据位置寄存服务器提取某个特定文件的 数据块路径信息且发现没有该文件的数据块路径信息时,例如没有发现有文件A的数据块 路径信息,则表明此时上层数据位置寄存服务器是第一次接收到文件请求客户端发来的对 该特定文件A的写打开请求,那么,上层数据位置寄存服务器则首先为该特定文件A创建一 个唯一完整的数据块路径,并记录文件A的数据块路径信息。通过文件数据块路径的创建, 从而把文件A的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中,从 而实现最细粒度的(字节级)的锁定。其中该数据块路径能够描述该文件A内所有数据块 的路径信息,主要包括该文件数据块路径上有哪些数据块以及这些数据块存储在哪个下层 数据块服务器内。需要说明的是,此时,下层锁定服务器并不知道自己管理了这些数据块的 写锁权限。当再有文件请求客户端向上层数据位置寄存服务器发送写打开文件A的请求时, 由于此时文件A的唯一完整的数据块路径已经创建,因此,上层数据位置寄存服务器能够 提取到文件A的数据块路径信息,并返回给文件请求客户端。应当说明的是,第一次发送写 打开文件A请求的文件请求客户端和第二次发送写打开文件A请求的文件请求客户端可以 为同一个文件请求客户端,也可以为不同的文件请求客户端。同时当这两个文件请求客户 端需要写锁定该文件A中的同一个数据块时,他们都会访问存储该数据块的同一个下层数 据块服务器。在本发明的一种实施例中,文件请求客户端在向下层锁定服务器发送文件A中对 特定数据块特定数据部分的锁定请求之前,还判断该特定数据部分在文件请求客户端本地 缓存中的锁定情况。在此,为表述方便,将特定数据块简称为数据块B。若数据块B特定数 据部分已经在文件请求客户端本地缓存中并且已经被该文件请求客户端锁定,则该文件请 求客户端不需要向下层锁定服务器发送锁定请求,可以直接开始写数据块B特定数据部分 的操作;若数据块B特定数据部分未被锁定,此时可能有两种情况,一种是在该文件请求客 户端的本地缓存中没有数据块B特定数据部分,另一种情况则是在该文件请求客户端的本 地缓存中有数据块B特定数据部分,但是该特定数据部分没有被锁定,对于这两种情况,该 文件请求客户端都会向下层锁定服务器发送锁定请求。在本发明的一种实施例中,下层锁定服务器根据文件请求客户端发来的对该特定 数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具体方式为当下层锁定服
9务器C接收到文件请求客户端发来的对该数据块B特定数据部分的锁定请求时,下层锁定 服务器C需要判断当前是否为第一次接收到文件请求客户端发来的对该数据块B的锁定请 求,若是,下层锁定服务器C此时才知道自己管理了该数据块B的写锁权限。同时也表明存 储在下层锁定服务器C内的现有数据块锁定状态信息表中,还没有数据块B的相关信息。此 时下层锁定服务器C在数据块锁定状态信息表中加入该数据块B的条目及其数据块B相应 的锁定请求信息;若否,则下层锁定服务器C只需要在当前的数据块锁定状态信息表中检 索数据块B特定数据部分的锁定请求信息即可。在本发明的一种实施例中,假设下层锁定服务器C不是第一次接收到文件请求客 户端发来的对数据块B特定数据部分的锁定请求,也就是说,此时,下层锁定服务器C会根 据接收到的文件请求客户端的不同锁定请求检索数据块B特定数据部分的相关写锁权限, 并返回给该文件请求客户端数据块B特定数据部分的写锁权限信息,同时判断是否通知下 层锁定服务器C对应的下层数据块服务器将文件请求客户端所需要的特定数据部分发送 给该文件请求客户端,具体地说当下层锁定服务器接收到文件请求客户端发来的对数据 块B特定数据部分D的读写锁定请求时,其中,对于用户来说,该特定数据部分D即为文件A 的偏移量。下层锁定服务器检查当前数据块锁定信息表中特定数据部分D的锁定情况,若 特定数据部分D未被锁定,此时,表明特定数据部分D还没有被其他程序锁定,则在数据块 锁定状态信息表中将特定数据部分D的锁定状态标记为锁定,并通知下层数据块服务器返 回特定数据部分D给文件请求客户端;需要说明的是,对于同一个数据块,其中会包含很多 数据信息,而文件请求客户端需要锁定的可能只是众多数据信息中的某几页信息。在此,将 这些数据信息分为多个部分,那么文件请求客户端需要锁定的则是多个部分中的某一个部 分。若两个文件请求客户端同时写同一个数据块B中不同的数据部分时,则这两个文件请 求客户端是可以同时进行写操作的。换句话说,从用户的角度来说,如果两个用户需要写锁 定的是同一个文件中不同的文件偏移量,那么这两个用户就可以同时进行写操作。若特定 数据部分D已被锁定,此时,表明特定数据部分D已经被其他程序锁定,则使用相应的锁定 失败策略;当下层锁定服务器接收到文件请求客户端发送来的对数据块B特定数据部分的 写锁定请求时,下层锁定服务器检查当前数据块锁定信息表中特定数据部分的锁定情况, 若特定数据部分未被锁定,则在数据块状态信息表中将特定数据部分的锁定状态标记为锁 定,并返回锁定成功所述文件请求客户端;若特定数据部分已被锁定,则使用相应的锁定失 败策略,具体地说,锁定失败策略包括锁定失败或者其他的策略。进一步说,当文件请求客户端接收到数据块B特定数据部分锁定成功的消息后, 将写锁定成功的消息返回给操作用户,用户就可以对数据块B特定数据部分执行开始写或 修改的操作了。若文件请求客户端接收到对数据数据部分的执行相应的锁定失败策略的时 候,文件请求客户端可以选择等待继续锁定,或者直接返回写锁定失败给操作用户,此时, 用户则没有对数据块B特定数据部分进行写的权限。实际上,文件请求客户端向下层数据存储服务器C发送对数据块B特定数据部分 的读写锁定请求或写锁定请求之前,还检查特定数据部分在本地缓存中的命中情况。若本 地缓存中没有特定数据部分,即说明本地缓存中没有存储文件请求客户端需要锁定的数 据,则判断没有命中特定数据块部分,并向下层锁定服务器C发送读写锁定请求;若本地缓存中有特定数据部分,即表明文件请求客户端之前对数据块B特定数据部分执行过读操作 或者是写操作,只是此时该特定数据部分还没有被文件请求客户端写锁定,则判断命中该 特定数据部分,并向下层锁定服务器C发送写锁定请求。也就是说,若一个文件客户端之前 对特定数据块部分执行过读操作或者写操作,当其再一次请求该特定数据部分时,则只需 要向下层锁定服务器发送写锁定请求即可。如图2所示,是本发明一种实施例的方法流程图,结合图2,对本发明实施例进行 详细解释。为表述方便,以文件请求客户端需要锁定文件A中数据块B特定数据部分为例 进行详细说明,其中,Fac表示文件请求客户端,Fas表示下层的文件系统服务器(包括下层 数据块服务器和下层锁定服务器),Flr表示上层数据位置寄存服务器,具体步骤如下Sl 文件请求客户端he向上层数据位置寄存服务器Flr发出的写打开文件A的 请求信息;S2 上层数据位置寄存服务器Fl r接收文件请求客户端Fac发出的写打开文件A 的请求信息并提取文件A的数据块路径信息,即chunk信息,若Flr提取不到文件A的chunk 信息,Flr判断当前是第一次接收到文件请求客户端发来的写打开文件A的请求,并为文件 A创建一个能够完整地描述文件A内所有数据块的唯一的完整的chunk,并记录该chunk信 息。若Flr能够提取到文件A的chunk信息,则Flr直接提取文件A的chunk信息,并返回 给文件请求客户端;S3 =Fac判断数据块B特定数据部分在本地缓存中的锁定情况,若特定数据块部分 在Fac本地缓存中并且已经被锁定,则转到步骤S4 ;若特定数据部分没有被锁定,则转到步 骤S5 ;S4 已判断特定数据部分已被锁定,则Fac返回用户锁定成功,可以进行写数据块 B特定数据部分的操作;S5:Fac判断数据块B特定数据部分在本地缓存中的命中情况,若未命中,则转到 S6,若命中,则转到S9 ;S6 =Fac向Fas内的下层数据存储服务器发送读写锁定数据块B特定数据部分的 请求;S7 :Fas检查当前数据块锁定状态信息表数据块B中特定数据部分是否被锁定,若 未被锁定,下层锁定服务器在数据块锁定状态信息表中将数据块B的特定数据部分的锁定 状态标记为锁定,并返回该特定数据部分给文件请求客户端;若已被锁定,则执行锁定失败 策略;S8 =Fac检查fas返回的状态,如果返回需要的特定数据部分,则向用户返回锁定 成功并开始写的操作;如果收到执行锁定失败策略,则可以向用户返回锁定失败或者等待 一段时间后继续请求锁定。S9 =Fac向Fas内的下层数据存储服务器发送写锁定数据块B特定数据部分的请 求;SlO =Fas检查当前数据块锁定状态信息表数据块B中特定数据部分是否被锁定, 若未被锁定,下层锁定服务器在数据块锁定状态信息表中将数据块B的特定数据部分的锁 定状态标记为锁定,并返回锁定成功给文件请求客户端;若已被锁定,则执行锁定失败策 略;
Sll :Fac检查fas返回的状态,如果返回锁定成功,则向用户返回锁定成功并开始 写的操作;如果收到执行锁定失败策略,则可以向用户返回锁定失败或者等待一段时间后 继续请求锁定。同时,本发明还提出了一种分布式文件系统的写锁定系统,包括设置于系统内的 上层数据位置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位 置寄存选择路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述 文件的数据块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件 请求客户端发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块 特定数据部分的写锁权限信息返回给所述文件请求客户端。需要说明的是,在上述的实施例中,只是为了表述方便,才以文件请求客户端需要 锁定数据块B特定数据部分为例进行说明。实际上,在分布式文件系统中,下层的文件系统 数据服务器中存储有大量的以数据块形式存储的数据。上层数据位置寄存服务器将同一文 件划分成多个数据块,并存储在同一个或者是不同的下层文件系统数据服务器内,通常是 存储在不同的文件系统数据服务器内,具体是存储在数据块服务器内。也就是说,同一个下 层文件系统数据服务器内会存储有很多来自于不同文件的数据块。而一旦上层数据位置寄 存服务器确定了某个文件的一个唯一完整的数据块路径,那么,所有的文件请求客户端需 要锁定该文件中的某一个数据块某个特定数据部分时,都只能通过这个唯一的数据块路径 访问并进行相应的锁定操作。也就是说此时,该数据块的锁定权限已经被分发到下层文件 系统数据服务器内。而上层数据位置寄存服务器在接收到文件请求客户端的写打开某个文 件的锁定请求时,只会选择确定的一条副本数据块路径,所以本身没有提高上层数据位置 寄存服务器的负载。自此以后,对分布式文件系统中某个数据块的写锁定都与上层数据位 置寄存服务器没有关系。而由于下层文件系统数据服务器较多,所以每个文件系统数据服务器管理的数据 块是有限的,因此,每一个文件系统数据服务器需要管理的数据块的写锁权限也是有限的, 所以下层文件系统数据服务器的负载也不会提高太多,因此不会影响下层文件系统数据服 务器的正常工作。通过采用多个文件系统数据服务器分摊了现有分布式文件系统中单一 锁定服务器的锁定负载,在不提高该分布式文件系统本身硬件投入的情况下,提高了分布 式文件系统锁定提交的吞吐量。在实际应用中,可以选择一个数据位置寄存服务器(单 master),也可以选择多个数据位置寄存服务器(多master)。若在上层使用多个数据位置 寄存服务器,并通过多个数据位置寄存服务器将分布式文件系统内的数据写锁权限的分发 到海量的下层文件系统数据服务器内,那么随着分布式文件系统中下层文件系统数据服务 器的增长,本锁定系统可以跟随分布式文件系统的扩容而扩容,从而具有很好的扩展性。在写打开同一个文件的前提下,除了第一次向上层数据位置寄存服务器发送写打 开该文件请求的文件请求客户端端以外,其他的每一个文件请求客户端都只需要与上层数 据位置寄存服务器通讯一次,就可以获得需要锁定的数据部分所在的文件的数据块路径信 息。若该文件请求客户端需要再次获得该数据块的写锁权限时,该文件请求客户端只需 要向下层数据存储服务器发送锁定请求,即可从下层锁定服务器内获得该数据块的写锁权 限。这样就减少了文件请求客户端与上层位置寄存服务器通讯的次数。其中,该数据块的写 锁权限包括该数据块中存储的所有数据的写锁权限。而对于同一个文件请求客户端来说,只需要与上层的数据位置寄存器进行一次通讯即可,使得上层数据位置寄存服务器基本上 可以保持与不支持写锁的文件系统有同样的性能,从而减少了不必要的通讯开销。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发 明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱 离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护 范围。
权利要求
1.一种分布式文件系统的写锁定方法,其特征在于,包括以下步骤当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请求时, 上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求客户 端;下层锁定服务器根据所述文件请求客户端发来的对所述文件中特定数据块中特定数 据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求 客户端。
2.如权利要求1所述的方法,其特征在于,当所述上层数据位置寄存服务器提取所述 文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存 服务器则首先为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信 息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器 中。
3.如权利要求1所述的方法,其特征在于,所述文件请求客户端在向所述下层锁定服 务器发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所 述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户 端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层锁定服务器发送锁定请 求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层锁定服务器发送锁 定请求。
4.如权利要求3所述的方法,其特征在于,所述下层锁定服务器根据所述文件请求客 户端发来的对所述特定数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具 体为当所述下层锁定服务器接收到所述文件请求客户端发来的对所述特定数据块特定数 据部分的锁定请求时,所述下层锁定服务器判断当前是否为第一次接收到对所述特定数据 块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相应的 锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据块特定数据部 分的锁定请求信息。
5.如权利要求4所述的方法,其特征在于,所述下层锁定服务器根据接收到的所述文 件请求客户端的锁定请求以及返回给所述文件请求客户端所述特定数据块特定数据部分 的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特 定数据部分发送给所述文件请求客户端,具体为当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定 数据部分的读写锁定请求时,所述下层锁定服务器检查当前数据块锁定信息表中所述特定 数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中 将所述特定数据部分的锁定状态标记为锁定,并通知下层数据块服务器返回所述特定数据 部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定 数据部分的写锁定请求时,所述下层锁定服务器则检查当前所述数据块锁定状态信息表中 所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态信息 表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略。
6.如权利要求5所述的方法,其特征在于,所述文件请求客户端向所述下层锁定服务 器发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特 定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断 没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓 存中有所述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层锁定 服务器发送写锁定请求。
7.一种分布式文件系统的写锁定系统,其特征在于,包括设置于系统内的上层数据位 置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位置寄存选择 路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述文件的数据 块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件请求客户端 发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块特定数据部 分的写锁权限信息返回给所述文件请求客户端。
8.如权利要求7所述的方法,其特征在于,所述上层数据位置寄存选择路径模块在提 取所述文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位 置寄存选择路径模块还用于为所述文件创建唯一完整的数据块路径,并记录所述文件的数 据块路径信息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层 锁定服务器中。
9.如权利要求7所述的方法,其特征在于,所述文件请求客户端在向所述下层数据锁 定模块发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在 所述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客 户端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层数据锁定模块发送锁定 请求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层数据锁定模块发 送锁定请求。
10.如权利要求9所述的方法,其特征在于,所述下层数据锁定模块根据所述文件请求 客户端发来的对所述特定数据块特定数据部分的锁定请求,创建所述数据块锁定状态信息 表,具体为当所述下层数据锁定模块接收到所述文件请求客户端发来的对所述特定数据块特定 数据部分的锁定请求时,所述下层数据锁定模块判断当前是否为第一次接收到对所述特定 数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相 应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据部分的锁 定请求信息。
11.如权利要求10所述的方法,其特征在于,所述下层数据锁定模块根据接收到的所 述文件请求客户端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数 据部分的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的 所述特定数据部分发送给所述文件请求客户端当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特 定数据部分的读写锁请求时,所述下层数据锁定模块检查当前数据块锁定状态信息表中所 述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据存储模块返回所述 特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策 略;当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特 定数据部分的写锁定请求时,所述下层数据锁定模块则检查当前所述数据块锁定状态信息 表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态 信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户 端;若所述特定数据块已被锁定,则执行锁定失败策略。
12.如权利要求11所述的方法,其特征在于,所述文件请求客户端向所述下层数据锁 定模块发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所 述特定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则 判断没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本 地缓存中有所述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层 锁定服务器发送写锁定请求。
全文摘要
本发明公开了一种分布式文件系统的写锁定方法及系统,所述方法包括以下步骤当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请求时,上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求客户端;下层锁定服务器根据所述文件请求客户端发来的对所述文件中特定数据块中特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。本发明不但能够保证在硬件投入不增加的情况下,提高分布式文件系统锁定提交的吞吐能力,而且还能随着分布式文件系统的扩容而同步扩容,具有很好的可扩展性。
文档编号G06F17/30GK102088484SQ201010596619
公开日2011年6月8日 申请日期2010年12月20日 优先权日2010年12月20日
发明者朱鹏, 江凌生, 王瑜 申请人:南京中兴新软件有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1