一种元数据的修改方法和元数据服务器的制作方法

文档序号:7703789阅读:222来源:国知局
专利名称:一种元数据的修改方法和元数据服务器的制作方法
技术领域
本发明实施例涉及通信技术领域,特别是涉及一种元数据的修改方法和 元数据服务器。
背景技术
文件系统是用于管理文件及目录的一个系统,传统的本地文件系统只 需要管理本地的文件和目录的信息。本地的文件系统主要是管理文件如何 存储在磁盘上以及提供上层安全的访问文件元数据以及数据信息的接口 , 在本地的文件系统中,通过一种读写锁、自旋锁、信号量的方式来保护本 地的资源访问不会产生冲突。
分布式文件系统是一种基于客户机/服务器模式的 一种文件系统,在这 种系统的应用环境中,分为客户端和服务端,数据和元数据信息都存放在 服务端。客户端需要修改某个文件的数据的时候,必须先从元数据服务器 上获得元数据信息,然后客户端再根据元数据信息去访问数据服务器做修 改操作,修改完后客户端再发送改动后的元数据信息到元数据服务器端。
目前对于元数据的访问采用了分布式锁的思想,将锁的客户端布置在 了客户端,锁的服务器端布置在元数据服务器上,客户端如果要操作某一 个元数据的时候,须先申请到该元数据的锁,这样在多个客户端操作元数 据的时候就可以防止数据的修改和读取的不 一致性。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺点当 一个客户端获得了某个元数据的写锁的时候,这个时候如果系统中有上千 个客户端的时候,可能会有几十个客户端向元数据服务器发送写锁请求的
5时候,那么这些写锁请求将不会被授权,这些申请的用户将处于等待状态, 对于客户来说在获取元数据的时候,长时间的处于等待状态,并在很大程 度上影响了访问数据的效率。

发明内容
本发明实施例提供一种元数据的修改方法和元数据服务器,以提高修 改元数据的效率。
根据本发明的一方面,提供一种元数据的修改方法,包括
将多个客户端发送的修改同 一元数据的写锁申请緩冲至循环申请队
列;
将所述多个客户端发送的修改同 一 元数据的修改数据緩沖至循环操 作队列;
从所述循环操作队列中获取与所述循环申请队列中的最后申请的写 锁申请对应的^f奮改数据;
根据所述修改数据对所述元数据进行修改。 根据本发明的另一方面,还提供一种元数据服务器,包括 元数据模块,用于提供元数据;
锁管理模块,用于将多个客户端发送的修改同 一元数据的写锁申请和 所述写锁申请对应的修改数据分别緩冲至循环申请队列和循环操作队列, 并从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁 申请对应的修改数据,根据所述修改数据对所述元数据进行修改。
采用上述提供的元数据的修改方法和元数据服务器,通过将修改同一 元数据的多个写锁申请緩冲至循环申请队列,并将该多个写锁申请的修改 数据緩冲至循环操作队列,并采用在循环申请队列中最后申请的客户端发 送的修改数据对元数据修改,从而提高修改元数据的效率。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对 实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地, 下面描述中的附图仅仅是本发明的 一些实施例,对于本领域普通技术人员 来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的 附图。
图1为本发明实施例的写锁申请的元数据服务器的结构示意图; 图2为本发明实施例的修改元数据的元数据服务器的结构示意图; 图3为本发明实施例的元数据的修改方法的流程图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进 行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没 有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的 范围。
图1为本发明实施例的写锁申请的元数据服务器的结构示意图。 在本实施例中,客户端组IO与元数据服务器20通信连接,客户端组 10用于当需要修改元数据服务器20中的元数据时,发送写锁申请至元数 据服务器20。在本实施例中,客户端组10包括第一客户端組101、第二
客户端组102.....第n客户端组10n。
在本实施例中,当第一客户端组101、第二客户端组102.....第n
客户端组10n需修改同一元数据时,第一客户端组101、第二客户端组
102.....第n客户端组10n分别发送写锁申请至元数据服务器20。在图
l中所示,第一客户端组101发送写锁申请1至元数据服务器20,第二客 户端组102发送写锁申请2至元数据服务器20,第n客户端组10n发送写锁申请n至元数据服务器20。
在本实施例是,元数据服务器20包括锁管理模块200及元数据模块 210。元数据模块210用于提供元数据。锁管理模块200用于将多个客户 端发送的修改同 一 元数据的写锁申请和所述写锁申请对应的修改数据分 别緩冲至循环申请队列和循环操作队列,并从所述循环操作队列中获取与 所述循环申请队列中的最后申请的写锁申请对应的修改数据,根据所述修 改数据对所述元数据进行修改。在本实施例中,锁管理模块200包括循环 申请子模块2000,循环申请子模块2000用于接收客户端发送的多个写锁 申请,并将该多个写锁申请緩沖至长度为L的循环申请队列。在本实施例 中,循环申请子模块2000还用于将在预定时间内接收的多个写锁申请緩 冲至长度为L的循环申请队列。在本实施例中,若该多个写锁申请的数量 K超过L时,循环申请子模块2000将L个写锁申请緩沖至循环申请队列, 并将剩余的写锁申请緩冲至等待队列;若该多个写锁申请的数量K没有超 过L时,循环申请子模块2 0 0 0将K个写锁申请緩冲于循环申请队列。
在本实施例中,为充分理解本发明,假设客户端包括6个客户端,即 n取6,当然,n也可以取大于6或小于6的值。假设同一元数据的写锁申 请的顺序为第二客户端、第一客户端、第三客户端、第六客户端、第五客 户端、第四客户端,即第二客户端为最先申请,第四客户端为最后申请。
循环申请子模块2000还用于当将多个写锁申请緩冲至循环申请队列 后,返回该多个写锁申请的授权锁至相对应的客户端。如图1所示,返回 写锁申请1的授权锁1至第一客户端组101,返回写锁申请1的授权锁2 至第二客户端组102,返回写锁申请n的授:权锁n至第n客户端组10n。 在本实施例中,循环申请子模块2000还用于配置每个授权锁一个时间值, 即每个授权锁对应一个时间值,可以理解为接收每个写锁申请时,有一个 接收的时间,以表示写锁申请的先后顺序,当返回授权锁时,这个时间值 表示该写锁申请处于循环申请队列的顺序。图2为本发明实施例的修改元数据的元数据服务器的结构示意图。
在本实施例中,当客户端组IO接收至元数据服务器20返回的授权锁 后,发送同一元数据的修改数据至元数据服务器20。如图2所示,第一客 户端组101发送修改数据的修改操作1至元数据服务器20,第二客户端组 102发送修改数据的修改操作1至元数据服务器20,第n客户端组10n 发送修改数据的修改操作n至元数据服务器20。
在本实施例中,锁管理才莫块200还包括循环操作子才莫块2002,循环操 作子模块2002用于接收客户端组10发送的修改同 一元数据的多个修改数 据。在本实施例中,循环操作子模块2002还用于将该多个修改数据緩冲 至循环操作队列。在本实施例中,循环操作子模块2002根据接收的顺序 将该多个修改数据緩冲至循环操作队列,并返回修改操作成功的消息至客 户端组IO。如图2所示,返回修改操作1的成功1至第一客户端组101, 返回修改操作2的成功2至第二客户端组102,返回修改操作n的成功n 至第n客户端组10n。
在本实施例中,假设接收的顺序为第六客户端、第四客户端、第一客 户端、第三客户端、第二客户端、第五客户端。当然,也可以进行其它排 列。
在本实施例中,循环操作子模块2002还用于根据循环操作队列和循 环申请队列对元数据进行修改操作。在本实施例中,循环操作子模块2002 先获取循环申请队列中的写锁申请的先后顺序,并获取最后申请的写锁申 请,再从循环操作队列中获取与该最后申请的写锁申请对应的修改数据, 最后根据该修改数据对元数据模块210中的该元数据进行修改操作。循环 操作子模块2002还用于当完成修改操作后,清空循环操作队列和循环申 请队列。
可以理解为最先申请的写锁申请的修改数据的操作是最先进行的, 之后按申请顺序进行操作,即第二客户端需最先进行修改操作,其次为第一客户端、第三客户端、第六客户端、第五客户端、第四客户端,当6个
客户端都修改完元数据后,即第四客户端修改完元数据后,元数据模块210 中储存的元数据为第四客户端修改完的元数据,而第一客户端、第三客户 端、第六客户端、第五客户端修改后的数据都被第四客户端修改后的元数 据覆盖,可以理解为最后申请的第四客户端修改完的元数据为有效的元数 据,因此,为避免不断的修改元数据模块210中的同一元数据,采用在循 环申请队列中最后申请的客户端发送的修改数据。
在本实施例中,当元数据服务器20空闲时,若此时循环操作子模块 2002接收到非最后申请的客户端发送的修改数据,可进行修改操作,但当 接收到最后申请的客户端发送的修改数据后,并进行修改操作,之后接收 的非最后申请的客户端发送的修改数据不被采用。当元数据服务器20不 空闲,循环操作子模块2002将所接收的客户端组IO发送的修改数据緩冲 至循环操作队列。
在本实施例中,所述锁管理模块200还包括恢复子模块2004,用于当 所述元数据服务器20死机后,接收所述客户端组10发送的修改同一元数 据的锁信息,所述锁信息为所述授权锁的时间值,根据所述锁信息恢复所 述循环申请子模块2000中所述同一元数据的循环申请队列和所述循环操 作子模块2002中的循环操作队列
本发明实施例提供的元数据服务器,通过在锁管理模块中设置循环申 请队列和循环操作队列,采用在循环申请队列中最后申请的客户端发送的 修改数据,即筛选出多个元数据修改操作请求的写锁申请中有效的写锁申 请,并根据筛选出的写锁申请的修改数据对元数据进行修改,从而可以减 少磁盘的操作次数,以提高修改元数据的效率,并不需要使客户端都处于 等待状态,最终提高了访问数据的效率。
图3为本发明实施例的元数据的修改方法的流程图。
在本实施例中,步骤S300,接收多个客户端发送的修改同一元数据的写锁申请。在本实施例中,当多个客户端需修改同一元数据时,每个客户 端需发送修改该元数据的写锁申请。
步骤S302,将该写锁申请緩沖至循环申请队列,并返回授权锁的消息 至客户端。在本实施列中,对每个写锁申请,返回与该写锁申请相对应的 授权锁的消息至客户端。在本实施例中,根据接收的顺序将该多个写锁申 请緩沖至循环申请队列,其中,每个授权锁对应一个时间值,可以理解为 接收每个写锁申请时,有一个接收的时间,以表示写锁申请的先后顺序, 当返回授权锁时,这个时间值表示该写锁申请处于循环申请队列的顺序。
步骤S304,接收客户端发送的修改同一元数据的多个修改数据,并根 据接收的顺序将多个修改数据緩冲至循环操作队列,及返回修改操作成功 的消息至客户端。
步骤S306,从所述循环操作队列中获取与所述循环申请队列中的最后 申请的写锁申请对应的修改数据,根据所述修改数据对所述元数据进行修 改。在本实施例中,先获取循环申请队列中的写锁申请的先后顺序,并获 取最后申请的写锁申请,再从循环操作队列中获取与该最后申请的写锁申 请对应的修改数据,最后根据该修改数据对该元数据进行修改操作。
步骤S308,当完成修改操作后,清空循环操作队列和循环申请队列。
本发明实施例提供的元数据的修改方法,通过将修改同 一元数据的多 个写锁申请緩冲至循环申请队列,并将该多个写锁申请的修改数据緩沖至 循环操作队列,采用在循环申请队列中最后申请的客户端发送的修改数 据,即筛选出多个元数据修改操作请求的写锁申请中有效的写锁申请,并 根据筛选出的写锁申请的修改数据对元数据进行修改,从而可以减少磁盘 的操作次数,以提高修改元数据的效率,并不需要使客户端都处于等待状 态,最终提高了访问数据的效率。
在本实施例中,当处理修改元数据的操作的过程中,服务器突然死机, 此时,服务器过行重新启动以恢复之前的处理操作,可以按以下流程操作
iiA:接收多个客户端发送的修改同一元数据的锁信息,锁信息为授权 锁的时间值;
B:根据锁信息恢复同一元数据的循环申请队列和循环操作队列,并 进行相应的修改处理操作。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分 流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存 储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法 的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆 体(Read-Only Memory, ROM)或随才几存〗诸i己忆体(Random Access Memory, RAM)等。
最后应说明的是以上实施例仅用以说明本发明的技术方案而非对其进 行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技 术人员应当理解其依然可以对本发明的技术方案进行修改或者等同替换, 而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的 4青神和范围。
权利要求
1、一种元数据的修改方法,其特征在于,包括将多个客户端发送的修改同一元数据的写锁申请缓冲至循环申请队列;将所述多个客户端发送的修改同一元数据的修改数据缓冲至循环操作队列;从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁申请对应的修改数据;根据所述修改数据对所述元数据进行修改。
2、 根据权利要求1所述的方法,其特征在于,所述将多个客户端发送的修改同 一 元数据的写锁申请緩冲至循环申请队列的步骤包括根据接收的顺序将所述多个客户端发送的修改同 一元数据的写锁申请緩冲至所述循环申请队列。
3、 根据权利要求2所述的方法,其特征在于,所述将多个客户端发送的修改同 一 元数据的写锁申请緩沖至循环申请队列之后的步骤包括返回所述写锁申请对应的授权锁的消息至所述多个客户端,以使所述多个客户端发送修改同 一元数据的修改数据。
4、 根据权利要求2所述的方法,其特征在于,所述授权锁的消息包括授权锁的时间值,当在修改操作中突然死机时,进行恢复的过程包括接收所述多个客户端发送的修改同一元数据的锁信息,所述锁信息为所述授权锁的时间值;根据所述锁信息恢复所述同 一 元数据的循环申请队列和循环操作队列,并进行相应的<奮改处理#:作。
5、 根据权利要求1所述的方法,其特征在于,所述将所述多个客户端发送的修改同一元数据的修改数据緩冲至循环操作队列的步骤包括根据接收的顺序将所述多个客户端发送的修改同 一 元数据的修改数据緩沖至所述循环操作队列。
6、 根据权利要求5所述的方法,其特征在于,所述将所述多个客户端 发送的修改同一元数据的修改数据緩冲至循环操作队列之后的步骤包括返回所述修改数据相对应的修改操作成功的消息至所述多个客户端。
7、 根据权利要求1所述的方法,其特征在于,所述根据所述循环申请 队列和循环操作队列对所述元数据进行修改的步骤包括获取所述循环申请队列中的写锁申请的先后顺序; 获取最后申请的写锁申请。
8、 一种元数据服务器,其特征在于,包括 元数据模块,用于提供元数据;锁管理模块,用于将多个客户端发送的修改同 一元数据的写锁申请和 所述写锁申请对应的修改数据分别緩冲至循环申请队列和循环操作队列, 并从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁 申请对应的修改数据,根据所述修改数据对所述元数据进行修改。
9、 根据权利要求8所述的元数据服务器,其特征在于,所述锁管理模块 包括循环申请子模块,用于根据接收的顺序将所述多个客户端发送的修改同 一元数据的写锁申请緩沖至所述循环申请队列,并返回所述写锁申请对应 的授权锁的消息至所述多个客户端,以使所述多个客户端发送修改同 一元数 据的修改数据。
10、 根据权利要求9所述的元数据服务器,其特征在于,所述锁管理模 块还包括循环操作子模块,用于根据接收的顺序将所述多个客户端发送的修改同 一元数据的修改数据緩冲至所述循环操作队列,返回所述修改数据相对应 的修改操作成功的消息至所述多个客户端。
11、 根据权利要求1G所述的元数据服务器,其特征在于,所述循环操作子模块还用于获取所述循环申请队列中的写锁申请的先后顺序,获取最后申请的写锁申请,从所述循环操作队列中获取与所述最后申请的写锁申请对应的修改数据,根据所述修改数据对所述元数据进行修改操作。
12、根据权利要求IO所述的元数据服务器,其特征在于,所述授权锁的消息包括授权锁的时间值,所述锁管理模块还包括恢复子模块,用于当所述元数据服务器死机后,接收所述多个客户端发送的修改同一元数据的锁信息,所述锁信息为所述授权锁的时间值,根据所述锁信息恢复所述循环申请子模块中所述同 一元数据的循环申请队列和所述循环操作子模块中的循环操作队列。
全文摘要
本发明实施方式公开了一种元数据的修改方法,包括将多个客户端发送的修改同一元数据的写锁申请缓冲至循环申请队列;将所述多个客户端发送的修改同一元数据的修改数据缓冲至循环操作队列;从所述循环操作队列中获取与所述循环申请队列中的最后申请的写锁申请对应的修改数据;根据所述修改数据对所述元数据进行修改。本发明实施方式还提供一种元数据服务器,以提高修改元数据的效率。
文档编号H04L12/56GK101488924SQ20091010547
公开日2009年7月22日 申请日期2009年2月16日 优先权日2009年2月16日
发明者兵 代, 远 袁 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1