CN102088484A - 一种分布式文件***的写锁定方法及*** - Google Patents
一种分布式文件***的写锁定方法及*** Download PDFInfo
- Publication number
- CN102088484A CN102088484A CN2010105966195A CN201010596619A CN102088484A CN 102088484 A CN102088484 A CN 102088484A CN 2010105966195 A CN2010105966195 A CN 2010105966195A CN 201010596619 A CN201010596619 A CN 201010596619A CN 102088484 A CN102088484 A CN 102088484A
- Authority
- CN
- China
- Prior art keywords
- data block
- lock
- lower floor
- particular data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
- G06F16/1774—Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种分布式文件***的写锁定方法及***,所述方法包括以下步骤:当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请求时,上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求客户端;下层锁定服务器根据所述文件请求客户端发来的对所述文件中特定数据块中特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。本发明不但能够保证在硬件投入不增加的情况下,提高分布式文件***锁定提交的吞吐能力,而且还能随着分布式文件***的扩容而同步扩容,具有很好的可扩展性。
Description
技术领域
本发明涉及数据存储领域,具体地说,尤其涉及一种分布式文件***的写锁定方法及***。
背景技术
在大型的分布式文件***上,为了做到海量的并发性,同时又要保证文件***数据的一致性,通常是选择一个统一的锁定节点对分布式文件***中存储的数据进行集中锁定管理,该锁定节点可以为单一的服务器或集群,为便于表述,下文将锁定节点(锁定服务器或集群)简称为锁定服务器。然而,随着多媒体产业的迅猛发展,出于成本、可靠性等多方面的考虑,对于大型的分布式文件***,越来越多的厂商或者企业采用云的方式来进行存储。云存储是指通过集群应用、或分布式文件***等功能,将网络中大量的各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个***,也就是说云存储是一个以数据存储和管理为核心的云计算***。在云存储中,既要考虑安全性,还要考虑成本,因此,如何部署云是关键。尤其是现在,云的规模越来越大,越来越多的云将分布在多个地方,既而如何部署分布式文件***的锁定服务器将变得异常复杂。
在云存储中,若使用单一的锁定服务器来锁定分布式文件***的核心部分。当多个程序同时访问分布式***中不同文件的不同文件偏移量时,需要依次访问该锁定服务器以获得对特定文件的特定文件偏移量的写锁权限。此时,极大的限制了分布式文件***的访问吞吐能力,造成吞吐性能下降。而当多个程序同时访问分布式***中同一个文件的同一文件偏移量时,先访问的程序得到了该特定文件的特定文件偏移量的写锁权限。那么此时,其他的访问程序只能在缓存中等待。只有当先访问的程序释放了该特定文件的特定文件偏移量的写锁权限时,其他的程序才能获得数据该特定文件特定文件偏移量的写锁权限。因此,单一的锁定服务器成为了对于巨型云写的瓶颈。
发明内容
本发明针对现有技术的不足,提供一种分布式文件***的写锁定方法以及***,不但能够保证在硬件投入不增加的情况下,提高分布式文件***锁定提交的吞吐能力,而且还能随着分布式文件***的扩容而同步扩容,具有很好的可扩展性。
为解决上述技术问题,本发明提供了以下技术方案:
一种分布式文件***的写锁定方法,包括以下步骤:
当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请求时,上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求客户端;
下层锁定服务器根据所述文件请求客户端发来的对所述文件中定数据块特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。
在本发明的一种实施例中,当所述上层数据位置寄存服务器提取所述文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存服务器则首先为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中。
在本发明的一种实施例中,所述文件请求客户端在向所述下层锁定服务器发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层锁定服务器发送锁定请求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层锁定服务器发送锁定请求。
在本发明的一种实施例中,所述下层锁定服务器根据所述文件请求客户端的发来的对所述特定数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具体为:
当所述下层锁定服务器接收到所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求时,所述下层锁定服务器判断当前是否为第一次接收到对所述特定数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据块特定数据部分的锁定请求信息。
在本发明的一种实施例中,所述下层锁定服务器根据接收到的所述文件请求客户端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数据部分的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据部分发送给所述文件请求客户端,具体为:
当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的读写锁定请求时,所述下层锁定服务器检查当前数据块锁定信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据块服务器返回所述特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;
当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的写锁定请求时,所述下层锁定服务器则检查当前所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略。
在本发明的一种实施例中,所述文件请求客户端向所述下层锁定服务器发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所述特定数据块且未被锁定,则判断所述特定数据部分命中,并向所述下层锁定服务器发送写锁定请求。
同时,本发明还提供了一种分布式文件***的写锁定***,包括设置于***内的上层数据位置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位置寄存选择路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述文件的数据块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件请求客户端发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。
在本发明的一种实施例中,所述上层数据位置寄存选择路径模块在提取所述文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存选择路径模块还用于为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中。
在本发明的一种实施例中,所述文件请求客户端在向所述下层数据锁定模块发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层数据锁定模块发送锁定请求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层数据锁定模块发送锁定请求。
在本发明的一种实施例中,所述下层数据锁定模块根据所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求,创建所述数据块锁定状态信息表,具体为:
当所述下层数据锁定模块接收到所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求时,所述下层数据锁定模块判断当前是否为第一次接收到对所述特定数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据部分的锁定请求信息。
在本发明的一种实施例中,所述下层数据锁定模块根据接收到的所述文件请求客户端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数据部分的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据部分发送给所述文件请求客户端,具体为:
当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的读写锁请求时,所述下层数据锁定模块检查当前数据块锁定状态信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据存储模块返回所述特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;
当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的写锁定请求时,所述下层数据锁定模块则检查当前所述数据块锁定状态信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据块已被锁定,则执行锁定失败策略。
在本发明的一种实施例中,所述文件请求客户端向所述下层数据锁定模块发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层锁定服务器发送写锁定请求。
由于采用了以上技术方案,使本发明具备的有益效果在于:通过上层数据位置寄存服务器为文件请求客户端请求的一个或者多个文件中的确定唯一的数据块路径,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到下层锁定服务器中,并将所述文件的数据块路径信息返回给所述文件请求客户端;文件请求客户端根据从上层数据位置寄存服务器处获得的所述数据块路径信息,向下层锁定服务器发起写打开所述文件中某一个特定数据块特定数据部分的请求信息,并从相应的下层锁定服务器内获得所述特定数据块的写锁定权限信息。如此,上层数据存储位置存储服务器将所述文件的所有数据块的写锁权限分发到下层的一个或者多个下层锁定服务器中,摒弃了传统的采用单一的锁定服务器来锁定分布式文件***的锁定方法,一方面减少了上层数据位置寄存服务器的锁定服务器的负载;另一方面,也真正地实现下层锁定服务器管理分布式***中相应下层数据块服务器内存储的数据的写锁权限,从而在不增加分布式文件***硬件资源的情况下,提高分布式文件***锁定提交的吞吐能力。同时,使用本发明提供的锁定方法,可以用在一个或者多个上层数据位置寄存服务器的分布式文件***中,因此,该锁定方法的提高***吞吐量的能力还能随着分布式文件***的扩容而同步扩容,具有很好的可扩展性。
附图说明
图1为本发明一种实施例的工作架构图;
图2为本发明另一种实施例的工作流程图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
目前,为了解决单一的锁定服务器造成的巨型云写的瓶颈问题,如图1所示,本发明提供了一种分布式文件***的写锁定方法及***,其主要构思是:在分布式文件***的下层,使用多个分散的锁定服务器来共同锁定分布式文件***中存储的数据。与传统的单一的锁定服务器相比,本发明将要锁定的分布式文件***中存储的数据的锁定权限分摊到下层的多个不同的文件***数据服务器中。具体地讲,该文件***数据服务器主要包括下层锁定服务器和下层数据块服务器,其中,下层数据块服务器主要用来存储分布式文件***中的数据块信息,而下层锁定服务器则主要是用于锁定存储在下层数据块服务器的数据,即对该数据块服务器中的数据的锁定权限进行管理。这里说的锁定权限主要指的是分布式文件***中数据的写锁权限。具体地说,该写锁定方法是通过上层数据位置寄存服务器为文件请求客户端请求打开的一个或者多个文件的文件确定一个唯一完整数据块路径,从而该文件的数据块路径上的不同数据块的写锁权限分发到多个下层锁定服务器中的。实际上,在上层数据位置存储服务器内,存储有大量的存储在下层数据块服务器内的数据块路径信息,在***内部,也将存储在下层数据块服务器内的数据块路径信息称为元数据。在上层数据位置寄存服务器处,采用专门的锁定服务器来锁定元数据。而在下层,则使用分散的多个下层锁定服务器来锁定存储在下层数据块服务器内的数据块。当下层锁定服务器接收到文件请求客户端发来的对该文件中特定数据块特定数据部分的锁定请求时,下层锁定服务器便将所述特定数据块特定数据部分的写锁权限信息返回给文件请求客户端。
本发明提供的写锁定方法采用分散的多个下层锁定服务器来锁定分布式文件***中的数据的目的,主要是为了减少上层数据位置寄存服务器的锁定服务器的负载。同时,通过上层数据位置寄存服务器将文件请求客户端请求打开的文件内的不同数据块的写锁权限分发到下层锁定服务器中,使得下层的文件***数据服务器不再是上层锁定服务器的一个缓冲,真正实现了下层锁定服务器管理分布式文件***中数据的写锁权限。该写锁定方法在单或多上层数据位置寄存服务器中都可以广泛的使用,若在多个上层数据位置寄存服务器中使用时,各个上层数据位置寄存服务器不具有主备用关系。
在本发明的一种实施例中,当所述上层数据位置寄存服务器提取某个特定文件的数据块路径信息且发现没有该文件的数据块路径信息时,例如没有发现有文件A的数据块路径信息,则表明此时上层数据位置寄存服务器是第一次接收到文件请求客户端发来的对该特定文件A的写打开请求,那么,上层数据位置寄存服务器则首先为该特定文件A创建一个唯一完整的数据块路径,并记录文件A的数据块路径信息。通过文件数据块路径的创建,从而把文件A的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中,从而实现最细粒度的(字节级)的锁定。其中该数据块路径能够描述该文件A内所有数据块的路径信息,主要包括该文件数据块路径上有哪些数据块以及这些数据块存储在哪个下层数据块服务器内。需要说明的是,此时,下层锁定服务器并不知道自己管理了这些数据块的写锁权限。
当再有文件请求客户端向上层数据位置寄存服务器发送写打开文件A的请求时,由于此时文件A的唯一完整的数据块路径已经创建,因此,上层数据位置寄存服务器能够提取到文件A的数据块路径信息,并返回给文件请求客户端。应当说明的是,第一次发送写打开文件A请求的文件请求客户端和第二次发送写打开文件A请求的文件请求客户端可以为同一个文件请求客户端,也可以为不同的文件请求客户端。同时当这两个文件请求客户端需要写锁定该文件A中的同一个数据块时,他们都会访问存储该数据块的同一个下层数据块服务器。
在本发明的一种实施例中,文件请求客户端在向下层锁定服务器发送文件A中对特定数据块特定数据部分的锁定请求之前,还判断该特定数据部分在文件请求客户端本地缓存中的锁定情况。在此,为表述方便,将特定数据块简称为数据块B。若数据块B特定数据部分已经在文件请求客户端本地缓存中并且已经被该文件请求客户端锁定,则该文件请求客户端不需要向下层锁定服务器发送锁定请求,可以直接开始写数据块B特定数据部分的操作;若数据块B特定数据部分未被锁定,此时可能有两种情况,一种是在该文件请求客户端的本地缓存中没有数据块B特定数据部分,另一种情况则是在该文件请求客户端的本地缓存中有数据块B特定数据部分,但是该特定数据部分没有被锁定,对于这两种情况,该文件请求客户端都会向下层锁定服务器发送锁定请求。
在本发明的一种实施例中,下层锁定服务器根据文件请求客户端发来的对该特定数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具体方式为:当下层锁定服务器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表示上层数据位置寄存服务器,具体步骤如下:
S1:文件请求客户端Fac向上层数据位置寄存服务器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特定数据部分的请求;
S10:Fas检查当前数据块锁定状态信息表数据块B中特定数据部分是否被锁定,若未被锁定,下层锁定服务器在数据块锁定状态信息表中将数据块B的特定数据部分的锁定状态标记为锁定,并返回锁定成功给文件请求客户端;若已被锁定,则执行锁定失败策略;
S11:Fac检查fas返回的状态,如果返回锁定成功,则向用户返回锁定成功并开始写的操作;如果收到执行锁定失败策略,则可以向用户返回锁定失败或者等待一段时间后继续请求锁定。
同时,本发明还提出了一种分布式文件***的写锁定***,包括设置于***内的上层数据位置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位置寄存选择路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述文件的数据块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件请求客户端发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。
需要说明的是,在上述的实施例中,只是为了表述方便,才以文件请求客户端需要锁定数据块B特定数据部分为例进行说明。实际上,在分布式文件***中,下层的文件***数据服务器中存储有大量的以数据块形式存储的数据。上层数据位置寄存服务器将同一文件划分成多个数据块,并存储在同一个或者是不同的下层文件***数据服务器内,通常是存储在不同的文件***数据服务器内,具体是存储在数据块服务器内。也就是说,同一个下层文件***数据服务器内会存储有很多来自于不同文件的数据块。而一旦上层数据位置寄存服务器确定了某个文件的一个唯一完整的数据块路径,那么,所有的文件请求客户端需要锁定该文件中的某一个数据块某个特定数据部分时,都只能通过这个唯一的数据块路径访问并进行相应的锁定操作。也就是说此时,该数据块的锁定权限已经被分发到下层文件***数据服务器内。而上层数据位置寄存服务器在接收到文件请求客户端的写打开某个文件的锁定请求时,只会选择确定的一条副本数据块路径,所以本身没有提高上层数据位置寄存服务器的负载。自此以后,对分布式文件***中某个数据块的写锁定都与上层数据位置寄存服务器没有关系。
而由于下层文件***数据服务器较多,所以每个文件***数据服务器管理的数据块是有限的,因此,每一个文件***数据服务器需要管理的数据块的写锁权限也是有限的,所以下层文件***数据服务器的负载也不会提高太多,因此不会影响下层文件***数据服务器的正常工作。通过采用多个文件***数据服务器分摊了现有分布式文件***中单一锁定服务器的锁定负载,在不提高该分布式文件***本身硬件投入的情况下,提高了分布式文件***锁定提交的吞吐量。在实际应用中,可以选择一个数据位置寄存服务器(单master),也可以选择多个数据位置寄存服务器(多master)。若在上层使用多个数据位置寄存服务器,并通过多个数据位置寄存服务器将分布式文件***内的数据写锁权限的分发到海量的下层文件***数据服务器内,那么随着分布式文件***中下层文件***数据服务器的增长,本锁定***可以跟随分布式文件***的扩容而扩容,从而具有很好的扩展性。
在写打开同一个文件的前提下,除了第一次向上层数据位置寄存服务器发送写打开该文件请求的文件请求客户端端以外,其他的每一个文件请求客户端都只需要与上层数据位置寄存服务器通讯一次,就可以获得需要锁定的数据部分所在的文件的数据块路径信息。若该文件请求客户端需要再次获得该数据块的写锁权限时,该文件请求客户端只需要向下层数据存储服务器发送锁定请求,即可从下层锁定服务器内获得该数据块的写锁权限。这样就减少了文件请求客户端与上层位置寄存服务器通讯的次数。其中,该数据块的写锁权限包括该数据块中存储的所有数据的写锁权限。而对于同一个文件请求客户端来说,只需要与上层的数据位置寄存器进行一次通讯即可,使得上层数据位置寄存服务器基本上可以保持与不支持写锁的文件***有同样的性能,从而减少了不必要的通讯开销。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (12)
1.一种分布式文件***的写锁定方法,其特征在于,包括以下步骤:
当上层数据位置寄存服务器接收到文件请求客户端发来的写打开某个文件的请求时,上层数据位置寄存服务器提取所述文件的数据块路径信息,并返回给所述文件请求客户端;
下层锁定服务器根据所述文件请求客户端发来的对所述文件中特定数据块中特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。
2.如权利要求1所述的方法,其特征在于,当所述上层数据位置寄存服务器提取所述文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存服务器则首先为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中。
3.如权利要求1所述的方法,其特征在于,所述文件请求客户端在向所述下层锁定服务器发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层锁定服务器发送锁定请求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层锁定服务器发送锁定请求。
4.如权利要求3所述的方法,其特征在于,所述下层锁定服务器根据所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求,创建数据块锁定状态信息表,具体为:
当所述下层锁定服务器接收到所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求时,所述下层锁定服务器判断当前是否为第一次接收到对所述特定数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据块特定数据部分的锁定请求信息。
5.如权利要求4所述的方法,其特征在于,所述下层锁定服务器根据接收到的所述文件请求客户端的锁定请求以及返回给所述文件请求客户端所述特定数据块特定数据部分的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据部分发送给所述文件请求客户端,具体为:
当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的读写锁定请求时,所述下层锁定服务器检查当前数据块锁定信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据块服务器返回所述特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;
当所述下层锁定服务器接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的写锁定请求时,所述下层锁定服务器则检查当前所述数据块锁定状态信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略。
6.如权利要求5所述的方法,其特征在于,所述文件请求客户端向所述下层锁定服务器发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层锁定服务器发送写锁定请求。
7.一种分布式文件***的写锁定***,其特征在于,包括设置于***内的上层数据位置寄存选择路径模块,下层数据锁定模块以及下层数据存储模块;上层数据位置寄存选择路径模块用于接收文件请求客户端发来的写打开某个文件的请求,并提取所述文件的数据块路径信息返回给所述文件请求客户端;下层数据锁定模块用于根据所述文件请求客户端发来的对所述文件中特定数据块特定数据部分的锁定请求,将所述特定数据块特定数据部分的写锁权限信息返回给所述文件请求客户端。
8.如权利要求7所述的方法,其特征在于,所述上层数据位置寄存选择路径模块在提取所述文件的数据块路径信息且发现没有所述文件的数据块路径信息时,所述上层数据位置寄存选择路径模块还用于为所述文件创建唯一完整的数据块路径,并记录所述文件的数据块路径信息,从而把所述文件的数据块路径上的不同数据块的写锁权限分发到所述下层锁定服务器中。
9.如权利要求7所述的方法,其特征在于,所述文件请求客户端在向所述下层数据锁定模块发送对所述特定数据块特定数据部分的锁定请求之前,还判断所述特定数据部分在所述文件请求客户端本地缓存中的锁定情况,若所述特定数据部分已经在所述文件请求客户端本地缓存中且已被锁定,则所述文件请求客户端不向所述下层数据锁定模块发送锁定请求,若所述特定数据部分未被锁定,则所述文件请求客户端向所述下层数据锁定模块发送锁定请求。
10.如权利要求9所述的方法,其特征在于,所述下层数据锁定模块根据所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求,创建所述数据块锁定状态信息表,具体为:
当所述下层数据锁定模块接收到所述文件请求客户端发来的对所述特定数据块特定数据部分的锁定请求时,所述下层数据锁定模块判断当前是否为第一次接收到对所述特定数据块的锁定请求,若是,则在所述数据块锁定状态信息表中加入所述特定数据块及其相应的锁定请求信息;若否,则在所述数据块锁定状态信息表中检索所述特定数据部分的锁定请求信息。
11.如权利要求10所述的方法,其特征在于,所述下层数据锁定模块根据接收到的所述文件请求客户端的锁定请求以及返回给所述文件请求客户端的所述特定数据块特定数据部分的写锁权限信息,判断是否通知下层数据块服务器将所述文件请求客户端所需要的所述特定数据部分发送给所述文件请求客户端:
当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的读写锁请求时,所述下层数据锁定模块检查当前数据块锁定状态信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块锁定状态信息表中将所述特定数据部分的锁定状态标记为锁定,并通知下层数据存储模块返回所述特定数据部分给所述文件请求客户端;若所述特定数据部分已被锁定,则执行锁定失败策略;
当所述下层数据锁定模块接收到所述文件请求客户端发送来的对所述特定数据块特定数据部分的写锁定请求时,所述下层数据锁定模块则检查当前所述数据块锁定状态信息表中所述特定数据部分的锁定情况,若所述特定数据部分未被锁定,则在所述数据块状态信息表中将所述特定数据部分的锁定状态标记为锁定,并返回锁定成功所述文件请求客户端;若所述特定数据块已被锁定,则执行锁定失败策略。
12.如权利要求11所述的方法,其特征在于,所述文件请求客户端向所述下层数据锁定模块发送对所述特定数据块特定数据部分的读写锁定请求或写锁定请求之前,还检查所述特定数据部分在本地缓存中的命中情况,若所述本地缓存中没有所述特定数据部分,则判断没有命中所述特定数据部分,并向所述下层锁定服务器发送读写锁定请求;若所述本地缓存中有所述特定数据部分且未被锁定,则判断命中所述特定数据部分,并向所述下层锁定服务器发送写锁定请求。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010596619.5A CN102088484B (zh) | 2010-12-20 | 2010-12-20 | 一种分布式文件***的写锁定方法及*** |
PCT/CN2011/083694 WO2012083797A1 (zh) | 2010-12-20 | 2011-12-08 | 一种分布式文件***的写锁定方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010596619.5A CN102088484B (zh) | 2010-12-20 | 2010-12-20 | 一种分布式文件***的写锁定方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102088484A true CN102088484A (zh) | 2011-06-08 |
CN102088484B CN102088484B (zh) | 2014-12-10 |
Family
ID=44100096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010596619.5A Active CN102088484B (zh) | 2010-12-20 | 2010-12-20 | 一种分布式文件***的写锁定方法及*** |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102088484B (zh) |
WO (1) | WO2012083797A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012083797A1 (zh) * | 2010-12-20 | 2012-06-28 | 中兴通讯股份有限公司 | 一种分布式文件***的写锁定方法及*** |
CN103095686A (zh) * | 2012-12-19 | 2013-05-08 | 华为技术有限公司 | 热点元数据访问控制方法和服务器 |
CN104281442A (zh) * | 2013-07-12 | 2015-01-14 | 富泰华工业(深圳)有限公司 | 文件处理***及方法 |
CN104471528A (zh) * | 2012-04-23 | 2015-03-25 | 谷歌公司 | 将文件类型与网络存储服务中的应用相关联 |
CN104573428A (zh) * | 2013-10-12 | 2015-04-29 | 方正宽带网络服务股份有限公司 | 一种提高服务器集群资源有效性的方法及*** |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN105320512A (zh) * | 2014-07-30 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 分配主干权限的方法及装置 |
CN105681367A (zh) * | 2014-11-17 | 2016-06-15 | ***通信集团公司 | 一种共享文件内容的方法、服务器和客户端 |
CN103647850B (zh) * | 2013-12-25 | 2017-01-25 | 北京京东尚科信息技术有限公司 | 一种分布式版本控制***的数据处理方法、设备及*** |
CN106855871A (zh) * | 2015-12-09 | 2017-06-16 | 阿里巴巴集团控股有限公司 | 一种数据迁移的方法和装置 |
CN107146075A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 请求处理方法及装置 |
CN108647285A (zh) * | 2018-05-04 | 2018-10-12 | 北京小米移动软件有限公司 | 分布式文件***中重命名方法、装置及分布式文件*** |
CN111274208A (zh) * | 2018-12-05 | 2020-06-12 | 杭州海康威视***技术有限公司 | 锁定文件的方法和装置 |
CN116055565A (zh) * | 2023-01-28 | 2023-05-02 | 北京蓝色星际科技股份有限公司 | 一种数据传输方法、***、装置、电子设备及存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106559282A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种锁定文件管理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925515B2 (en) * | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构*** |
CN101706802A (zh) * | 2009-11-24 | 2010-05-12 | 成都市华为赛门铁克科技有限公司 | 一种数据写入、修改及恢复的方法、装置及服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102088484B (zh) * | 2010-12-20 | 2014-12-10 | 南京中兴新软件有限责任公司 | 一种分布式文件***的写锁定方法及*** |
-
2010
- 2010-12-20 CN CN201010596619.5A patent/CN102088484B/zh active Active
-
2011
- 2011-12-08 WO PCT/CN2011/083694 patent/WO2012083797A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925515B2 (en) * | 2001-05-07 | 2005-08-02 | International Business Machines Corporation | Producer/consumer locking system for efficient replication of file data |
CN1771495A (zh) * | 2003-05-07 | 2006-05-10 | 国际商业机器公司 | 分布式文件服务体系结构*** |
CN101706802A (zh) * | 2009-11-24 | 2010-05-12 | 成都市华为赛门铁克科技有限公司 | 一种数据写入、修改及恢复的方法、装置及服务器 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012083797A1 (zh) * | 2010-12-20 | 2012-06-28 | 中兴通讯股份有限公司 | 一种分布式文件***的写锁定方法及*** |
CN104471528A (zh) * | 2012-04-23 | 2015-03-25 | 谷歌公司 | 将文件类型与网络存储服务中的应用相关联 |
CN104471528B (zh) * | 2012-04-23 | 2019-01-08 | 谷歌有限责任公司 | 将文件类型与网络存储服务中的应用相关联 |
CN103095686A (zh) * | 2012-12-19 | 2013-05-08 | 华为技术有限公司 | 热点元数据访问控制方法和服务器 |
CN103095686B (zh) * | 2012-12-19 | 2016-06-08 | 华为技术有限公司 | 热点元数据访问控制方法和服务器 |
CN104281442A (zh) * | 2013-07-12 | 2015-01-14 | 富泰华工业(深圳)有限公司 | 文件处理***及方法 |
CN104573428B (zh) * | 2013-10-12 | 2018-02-13 | 方正宽带网络服务股份有限公司 | 一种提高服务器集群资源有效性的方法及*** |
CN104573428A (zh) * | 2013-10-12 | 2015-04-29 | 方正宽带网络服务股份有限公司 | 一种提高服务器集群资源有效性的方法及*** |
CN103647850B (zh) * | 2013-12-25 | 2017-01-25 | 北京京东尚科信息技术有限公司 | 一种分布式版本控制***的数据处理方法、设备及*** |
CN105320512A (zh) * | 2014-07-30 | 2016-02-10 | 腾讯科技(深圳)有限公司 | 分配主干权限的方法及装置 |
CN105320512B (zh) * | 2014-07-30 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 分配主干权限的方法及装置 |
CN105681367A (zh) * | 2014-11-17 | 2016-06-15 | ***通信集团公司 | 一种共享文件内容的方法、服务器和客户端 |
CN105224255A (zh) * | 2015-10-14 | 2016-01-06 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN105224255B (zh) * | 2015-10-14 | 2018-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种存储文件管理方法及装置 |
CN106855871A (zh) * | 2015-12-09 | 2017-06-16 | 阿里巴巴集团控股有限公司 | 一种数据迁移的方法和装置 |
CN106855871B (zh) * | 2015-12-09 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种数据迁移的方法和装置 |
CN107146075A (zh) * | 2016-03-01 | 2017-09-08 | 阿里巴巴集团控股有限公司 | 请求处理方法及装置 |
CN107146075B (zh) * | 2016-03-01 | 2020-11-10 | 创新先进技术有限公司 | 请求处理方法及装置 |
CN108647285A (zh) * | 2018-05-04 | 2018-10-12 | 北京小米移动软件有限公司 | 分布式文件***中重命名方法、装置及分布式文件*** |
CN108647285B (zh) * | 2018-05-04 | 2021-06-22 | 北京小米移动软件有限公司 | 分布式文件***中重命名方法、装置及分布式文件*** |
CN111274208A (zh) * | 2018-12-05 | 2020-06-12 | 杭州海康威视***技术有限公司 | 锁定文件的方法和装置 |
CN116055565A (zh) * | 2023-01-28 | 2023-05-02 | 北京蓝色星际科技股份有限公司 | 一种数据传输方法、***、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2012083797A1 (zh) | 2012-06-28 |
CN102088484B (zh) | 2014-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102088484B (zh) | 一种分布式文件***的写锁定方法及*** | |
CN102591970B (zh) | 一种分布式键-值查询方法和查询引擎*** | |
US8566299B2 (en) | Method for managing lock resources in a distributed storage system | |
US9405574B2 (en) | System and method for transmitting complex structures based on a shared memory queue | |
US9069835B2 (en) | Organizing data in a distributed storage system | |
CN103312624B (zh) | 一种消息队列服务***和方法 | |
US8935560B2 (en) | System and method of file locking in a network file system federated namespace | |
CN106936899B (zh) | 分布式统计分析***的配置方法及分布式统计分析*** | |
US8832113B2 (en) | Data management apparatus and system | |
CN103067433B (zh) | 一种分布式存储***的数据迁移方法、设备和*** | |
WO2010072083A1 (zh) | 基于web应用的数据库***及其数据管理方法 | |
US9749445B2 (en) | System and method for updating service information for across-domain messaging in a transactional middleware machine environment | |
CN105025053A (zh) | 基于云存储技术的分布式文件的上传方法及其*** | |
CN103067461B (zh) | 一种文件的元数据管理***以及元数据管理方法 | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
WO2001084338A2 (en) | Cluster configuration repository | |
CN111984696B (zh) | 一种新型数据库和方法 | |
WO2021057108A1 (zh) | 一种读数据方法、写数据方法及服务器 | |
CN103237046A (zh) | 支持混合云存储应用的分布式文件***及实现方法 | |
CN101576915A (zh) | 一种分布式b+树索引***及构建方法 | |
CN103310000A (zh) | 元数据管理方法 | |
CN101771723A (zh) | 数据同步方法 | |
CN104750757B (zh) | 一种基于HBase的数据存储方法和设备 | |
CN104951475B (zh) | 分布式文件***和实现方法 | |
CN101778131A (zh) | 数据同步*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |