元数据读写方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,具体涉及一种元数据读写方法和装置。
【背景技术】
[0002]随着IT系统的发展,数据规模越来越大,目前已有很多公司采用分布式存储系统对海量数据进行存储和管理,而元数据管理是分布式系统中不可或缺的模块。分布式存储系统的元数据具有变更频繁、集中管理、存储节点多,集群元数据庞大、管理节点采用一主多备模式等特点,所以在设计分布式存储系统时需考虑如何对元数据进行高效的管理。
[0003]现有技术中大多采用基于日志的元数据读写方法,图1为现有技术的日志元数据管理示意图,系统初始部署时,由分布式系统管理软件(Zooke印er,ZK)选出主管理节点,需要读写元数据时,由主管理节点负责完成读写操作;当主管理节点发生故障,ZK从多个备管理节点中选择出新的主管理节点,新的主管理节点从共享存储中恢复元数据。一次写操作主要有以下步骤:(1)元数据写入元数据日志区;(2)元数据写入元数据区;(3)删除元数据日志区中的元数据。
[0004]为了保证元数据的原子性,一次写操作需要串行地执行上述三个步骤,包括两次写元数据和一次删除日志区元数据。因此,当系统集群规模大、元数据量大且操作频繁时,使用基于日志的元数据读写方法表现出存储效率较低的问题。
【发明内容】
[0005]本发明提供了一种元数据读写方法和装置,以解决当数据量大时元数据存储效率低,从而实现了在保证原子性的前提下,提升大块数据下元数据的存储效率。
[0006]第一方面,本发明实施例提供了一种元数据写方法,所述方法包括:
[0007]从内存中获取有效区域指针;
[0008]当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区;
[0009]当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区,并将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。
[0010]结合第一方面,在第一方面的第一种可能的实现方式中,当向所述第二元数据区写入所述元数据失败时,则所述有效区域指针指仍指向所述第一元数据区。
[0011]结合第一方面,在第二种可能的实现方式中,当所述有效区域指针指向所述共享存储的第二元数据区,则将元数据写入所述共享存储的第一元数据区;当向所述第一元数据区写入所述元数据成功后,将所述有效区域指针指向所述第一元数据区,并将指向所述第一元数据区的有效区域指针保存到所述共享存储的指针区。
[0012]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,当向所述第一元数据区写入所述元数据失败时,则所述有效区域指针仍指向所述第二元数据区。
[0013]结合第一方面或者第一方面的上述三种可能的实现方式中任意一种可能的实现方式,在第四种可能的实现方式中,所述从内存中获取有效区域指针具体为:主管理节点从内存中获取有效区域指针。
[0014]结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,当所述主管理节点故障时,备管理节点从内存中获取有效区域指针。
[0015]第二方面,本发明实施例提供了一种元数据读方法,所述方法包括:
[0016]从内存中获取有效区域指针;
[0017]当所述有效区域指针指向共享存储的第一元数据区,从所述第一元数据区读取元数据,并将所述元数据写入所述内存;当所述有效区域指针指向所述共享存储的第二元数据区,从所述第二元数据区读取元数据,并将所述元数据写入所述内存。
[0018]结合第二方面,在第二方面的第一种可能的实现方式中,所述从内存中获取有效区域指针具体为:主管理节点从内存中获取有效区域指针。
[0019]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,当所述主管理节点故障时,备管理节点从内存中获取有效区域指针。
[0020]第三方面,本发明实施例提供了一种元数据写装置,所述装置包括:获取单元、写入单元,修改单元;
[0021]获取单元,用于从内存中获取有效区域指针,并发送给所述写入单元;
[0022]写入单元,用于当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区;
[0023]修改单元,用于当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区。
[0024]结合第三方面,在第三方面的第一种可能的实现方式中,所述写入单元还用于将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。
[0025]结合第三方面,在第三方面的第二种可能的实现方式中,所述修改单元还用于当向所述第二元数据区写入所述元数据失败时,则所述有效区域指针仍指向所述第一元数据区。
[0026]结合第三方面,在第三种可能的实现方式中,所述写入单元还用于当所述有效区域指针指向所述第二元数据区,则将元数据写入所述第一元数据区。
[0027]结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述修改单元还用于当向所述第一元数据区写入所述元数据成功后,将所述有效区域指针指向所述第一元数据区。
[0028]结合第三方面的第四种可能的实现方式,在第五种可能的实现方式中,所述写入单元还用于将指向所述第一元数据区的有效区域指针保存到所述共享存储的指针区。
[0029]结合第三方面的第二种可能的实现方式,在第六种可能的实现方式中,所述修改单元还用于当向所述第一元数据区写入所述元数据失败时,则所述有效区域指针指仍指向所述第二元数据区。
[0030]结合第三方面或者第三方面的上述六种可能的实现方式中任意一种可能的实现方式,在第七种可能的实现方式中,所述获取单元具体用于主管理节点从内存中获取有效区域指针。
[0031]结合第三方面的第七种可能的实现方式,在第八种可能的实现方式中,所述获取单元还用于当所述主管理节点故障时,备管理节点从内存中获取有效区域指针。
[0032]第四方面,本发明实施例提供了一种元数据读装置,所述装置包括:获取单元、读取单元、写入单元;
[0033]获取单元,用于从内存中获取有效区域指针,并发送给所述读取单元;
[0034]读取单元,用于当所述有效区域指针指向共享存储的第一元数据区,从所述第一元数据区读取元数据,并发送给所述写入单元;当所述有效区域指针指向所述共享存储的第二元数据区,从所述第二元数据区读取元数据,并发送给所述写入单元;
[0035]写入单元,用于将接收到的所述元数据写入所述内存。
[0036]结合第四方面,在第四方面的第一种可能的实现方式中,所述获取单元具体用于主管理节点从所述内存中获取有效区域指针。
[0037]结合第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述获取单元还用于当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。
[0038]通过上述方案,在写元数据时通过有效区域指针确定有效的元数据区,交替写第一元数据区和第二元数据区,写成功后将指针指向最后写成功的元数据区,写元数据失败则不修改指针,进而使得分布式系统的元数据保存在共享存储中,并天然保存一份快照,在读元数据时依据当前指针的指向先选择有效的元数据区,然后从有效的元数据区读取元数据。该方法仅需要写一次元数据加一次指针,从而在保证元数据的原子性前提下,提升了大块元数据的存储效率。另外,元数据读写
操作由主管理节点负责管理,如果主管理节点发生故障,备管理节点可以通过读取指针和元数据快照数据从共享存储中进行集群恢复。
【附图说明】
[0039]图1为现有技术的日志元数据管理示意图;
[0040]图2为本发明实施例提供的指针元数据管理应用场景示意图;
[0041]图3为本发明实施例提供的元数据写方法实施例的流程图;
[0042]图4为本发明实施例提供的元数据读方法实施例的流程图;
[0043]图5为本发明实施例提供的元数据写装置实施例的结构示意图;
[0044]图6为本发明实施例提供的元数据读装置实施例的结构示意图;
[0045]图7为本发明实施例提供的一种元数据写装置的硬件实现示意图;
[0046]图8为本发明实施例提供的一种元数据读装置的硬件实现示意图。
【具体实施方式】
[0047]为了使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它的实施例,都属于本发明保护的范围。
[0048]首先,图2为本发明指针元数据管理应用场景示意图,如图2所示,共享存储上保存元数据的空间被分为指针区、第一元数据区、第二元数据区。对于所述空间的划分没有具体限定,可以根据业务需要进行划分。ZK负责选出主管理节点,主管理节点负责元数据读写操作管理,当主管理节点发生故障时,ZK从备管理节点选择出新的主管理节点,新的主管理节点从共享存储中恢复元数据。
[0049]由于将共享存储上保存元数据的空间划分为指针区、第一元数据区、第二元数据区,首先从内存中获取有效区域指针,通过有效区域指针的指向确定有效的元数据区,当有效区域指针指向第一元数据区,则将元数据写入第二元数据区;当向第二元数据区写入元数据成功后,将有效区域指针指向第二元数据区,并将指向第二元数据区的有效区域指针保存到共享存储的指针区。该方法使得在保证元数据原子性的同时,还提升了大块数据下元数据的存储效率。
[0050]下面以图3为例详细说明本发明实施例提供的一种元数据写方法,图3为本发明元数据写方法实施例的流程图。如图3所示,该实施例的元数据写方法包括以下步骤:
[0051]步骤301,从内存中获取有效区域指针;
[0052]获取有效区域指针的目的是为了向第一元数据区或者第二元数据区进行元数据的写入操作;
[0053]步骤302,当有效区域指针指向共享存储的第一元数据区,则将元数据写入共享存储的第二元数据区;
[0054]从内存中状取有效区域指针,判断有效区域指针的指向,如果有效区域指针指向共享存储的第一元数据区,就将内存中的元数据写入共享存储的第二元数据区。
[0055]步骤303,当向第二元数据区写入所述元数据成功后,将有效区域指针指向第二元数据区,并将指向第二元数据区的有效区域指针保存到共享存储的指针区。
[0056]如果向第二元数据区写入元数据成功,就修改有效区域指针指向第二元数据区,同时将指向第二元数据区的有效区域指针保存到共享存储的指针区。如果向第二元数据区写入元数据失败时,则不修改有效区域指针,即有效区域指针仍指向第一元数据区。
[0057]在步骤302的另一种可能的情况,当有效区域指针指向共享存储的第二元数据区,则将元数据写入第一元数据区;当向第一元数据区写入元数据成功后,将有效区域指针指向第一元数据区,并将指向第一元数据区的有效区域指针保存到共享存储的指针区。当向第一元数据区写入元数据失败时,则有效区域指针指仍指向第二元数据区。
[0058]再如图2所示,因为在分布式管理系统中,元数据读写操作管理都是由主管理节点负责的,所以通常来说,在步骤301中,都是主管理节点从内存中获取有效区域指针,但是主管理节点有可能无法进行读取,原因是主管理节点可能发生故障等其他导致无法读取的原因,此时,备管理节点将会替代主管理节点,之前由主管理节点完成的工作由备管理节点来完成,例如从内存中获取有效区域指针等操作。进而从共享存储中恢复元数据。
[0059]本发明实施例的元数据写方法,分布式系统的元数据保存在内存中,然而保存在内存中带来的弊端是掉电后数据会丢失,因此,需将内存中的元数据保存到共享存储中,其中共享存储可以是共享磁盘、硬盘,但不限于此,共享存储可为其它存储介质。将共享存储上保存元数据的空间划分为指针区、第一元数据区、第二元数据区。在写元数据时通过有效区域指针确定有效元数据区,进而交替写第一元数据区和第二元数据区,写成功后将指针指向最后写成功的元数据区,如果写失败,则不修改指针。最终使得共享存储的第一元数据区和第二元数据区各保存一份元数据,指针区保存有效区域指针。该方法仅需要写一次元数据加一次指针,因此,与现有技术基于日志的元数据管理相比,在保证元数据的原子性前提下,提升了大块元数据的存储效率,同时也为元数据保存了一份快照。
[0060]下面以图4为例详细说明本发明实施例提供的一种元数据读方法,图4为本发明元数据读方法实施例的流程图。如图4所示,该实施例的元数据读方法包括以下步骤:
[0061]步骤401,从内存中获取有效区域指针;
[0062]获取有效区域指针的目的是为了从共享存储的第一元数据区或者第二元数据区进行元数据的读取操作;
[0063]步骤402,当有效区域指针指向共享存储的第一元数据区,从第一元数据区读取元数据,并将元数据写入内存;当有效区域指针指向共享存储的第二元数据区,从第二元数据区读取元数据,并将元数据写入所述内存。
[0064]在读元数据时依据当前指针的指向选择有效的元数据区,如果有效区域指针指向第一元数据区,就从第一元数据区读出元数据,同时将该元数据保存到内存中,如果有效区域指针指向第二元数据区,就从第二元数据区读出元数据,同时将该元数据保存到内存中。
[0065]再如图2所示,因为在分布式管理系统中,元数据读写操作管理都是由主管理节点负责的,所以通常来说,在步骤301中,都是主管理节点从内存中获取有效区域指针,但是主管理节点有可能无法进行读取,原因是主管理节点可能发生故障等其他导致无法读取的原因,此时,备管理节点将会替代主管理节点,之前由主管理节点完成的工作由备管理节点来完成,例如从内存中获取有效区域指针等操作。进而从共享存储中恢复元数据。
[0066]本发明实施例的元数据读方法,在读元数据时依据当前指针的指向选择有效的元数据区,然后再读出元数据并写入内存,这与现有技术的日志元数据管理相比,在保证元数据的原子性前提下,提升了大块元数据的存储效率。
[0067]图5为本发明元数据写装置实施例的结构示意图,本发明实施例提供的元数据写装置用以实现写方法实施例,如图5所示,一种元数据写装置包括:获取单元501、写入单元502,修改单元503 ;
[0068]获取单元501,用于从内存中获取有效区域指针,并发送给写入单元;
[0069]获取单元501从内存中获取有效区域指针的目的是为了向第一元数据区或者第二元数据区进行元数据的写入操作,获取单元501将获取到的有效区域指针发送给写入单元 502.
[0070]写入单元502,用于当有效区域指针指向共享存储的第一元数据区,则将元数据写入共享存储的第二元数据区;
[0071]写入单元502接收有效区域指针,由于有效区域指针的指向共享存储的第一元数
据区,因此将元数据写入共享存储的第二元数据区。
[0072]修改单元503,用于当向第二元数据区写入元数据成功后,将有效区域指针指向第二元数据区。
[0073]当向第二元数据区写入元数据成功后,修改单元503将有效区域指针指向第二元数据区,同时写入单元502将指向第二元数据区的有效区域指针保存到共享存储的指针区。如果向第二元数据区写入元数据失败时,则不修改有效区域指针,即有效区域指针仍然指向第一元数据区。
[0074]另一种可能的情况中,当有效区域指针指向共享存储的第二元数据区,则写入单元502将元数据写入第一元数据区;当向第一元数据区写入元数据成功后,修改单元503将有效区域指针指向第一元数据区,同时写入单元502将指向第一元数据区的有效区域指针保存到共享存储的指针区。当向第一元数据区写入元数据失败时,则有效区域指针指仍指向第二元数据区。
[0075]再如图2所示,因为在分布式管理系统中,元数据读写操作管理都是由主管理节点负责的,所以通常来说,都是主管理节点从内存中获取有效区域指针,但是主管理节点有可能无法进行读取,原因是主管理节点可能发生故障等其他导致无法读取的原因,此时,备管理节点将会替代主管理节点,从共享存储中恢复元数据。
[0076]本发明实施例提供的元数据写装置用以实现写方法实施例,在写元数据时通过指针交替写第一元数据区和第二元数据区,写元数据成功后将指针指向最后写成功的元数据区,写元数据失败则不修改指针,与现有技术的日志元数据管理相比,仅需要写一次元数据加一次指针即可保证原子性,还提升了大块元数据的存储效率,同时也为元数据保存了一份快照。另外,主管理节点负责元数据写操作管理,在主管理节点发生故障时,备管理节点可以通过读取指针和元数据快照数据进行集群恢复。
[0077]需要说明的是,本发明实施例提供的一种元数据写装置所包括的各个单元只是按照功能逻辑进行划分的,但并不限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0078]图6为本发明元数据读装置实施例的结构示意图,本发明实施例提供的元数据读装置用以实现读方法实施例,如图6所示,一种元数据读装置包括:获取单元601、读取单元602、写入单元603。
[0079]获取单元601,用于从内存中获取有效区域指针,并发送给读取单元;
[0080]获取单元601获取有效区域指针的目的是为了从共享存储的第一元数据区或者第二元数据区读取元数据,然后将获取到的有效区域指针发送给读取单元602 ;
[0081]读取单元602,用于当有效区域指针指向共享存储的第一元数据区,从第一元数据区读取元数据,并发送给写入单元;当有效区域指针指向共享存储的第二元数据区,从第二元数据区读取元数据,并发送给写入单元;
[0082]读取单元602根据有效区域指针的指向来从共享存储的第一元数据区或者第二元数据区读取元数据,然后将读取到的元数据发送给写入单元。
[0083]写入单元603,用于将接收到的元数据写入内存。
[0084]再如图2所示,因为在分布式管理系统中,元数据读写操作管理都是由主管理节点负责的,所以通常来说,都是主管理节点从内存中获取有效区域指针,但是主管理节点有可能无法进行读取,原因是主管理节点可能发生故障等其他导致无法读取的原因,此时,备管理节点将会替代主管理节点,从共享存储中恢复元数据。
[0085]本发明实施例提供的元数据读装置用以实现读方法实施例,在读元数据时依据当前指针的指向选择有效的元数据区,然后再读出元数据,这与现有技术的日志元数据管理相比提升了大块元数据的存储效率。另外,主管理节点负责元数据读操作管理,在主管理节点发生故障时,备管理节点可以通过读取指针和元数据快照数据进行集群恢复。
[0086]需要说明的是,本发明实施例提供的一种元数据读装置所包括的各个单元只是按照功能逻辑进行划分的,但并不限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0087]相应的,本发明实施例还提供了一种元数据写装置的硬件实现,具体如图7所示。本实施例包括网络接口 71、处理器72和存储器73。系统总线74用于连接网络接口 71、处理器72和存储器73。
[0088]网络接口 71用于与物联网终端、物联网接入网关、承载网、物联网服务网关和应用服务器通信。
[0089]存储器73可以是永久存储器,例如硬盘驱动器和闪存,存储器73中具有软件模块和设备驱动程序。软件模块能够执行本发明上述方法的各种功能模块;设备驱动程序可以是网络和接口驱动程序。
[0090]在启动时,这些软件组件被加载到存储器73中,然后被处理器72访问并执行如下指令:
[0091]从内存中获取有效区域指针;
[0092]当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区;
[0093]当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区,并将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。
[0094]进一步的,所述处理器72访问存储器73的软件组件后,执行以下过程的指令:
[0095]当向所述第二元数据区写入所述元数据失败时,则所述有效区域指针指仍指向所述第一元数据区。
[0096]进一步的,所述处理器72访问存储器73的软件组件后,执行以下过程的指令:
[0097]当所述有效区域指针指向所述共享存储的第二元数据区,则将元数据写入所述共享存储的第一元数据区;当向所述第一元数据区写入所述元数据成功后,将所述有效区域指针指向所述第一元数据区,并将指向所述第一元数据区的有效区域指针保存到所述共享存储的指针区。当向所述第一元数据区写入所述元数据失败时,则所述有效区域指针仍指向所述第二元数据区。
[0098]进一步的,所述从内存中获取有效区域指针的指令具体为:主管理节点从所述内存中获取有效区域指针。
[0099]进一步的,所述处理器72访问存储器73的软件组件后,执行以下过程的指令:
[0100]当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。
[0101]本发明实施例提供的元数据写装置用以实现前述实施例中的写方法,在写元数据时通过指针交替写第一元数据区和第二元数据区,写元数据成功后将指针指向最后写成功的元数据区,写元数据失败则不修改指针,与现有技术的日志元数据管理相比,仅需要写一次元数据加一次指针即可保证原子性,还提升了大块元数据的存储效率,同时也为元数据保存了一份快照。另外,主管理节点负责元数据写操作管理,在主管理节点发生故障时,备管理节点可以通过读取指针和元数据快照数据进行集群恢复。
[0102]相应的,本发明实施例还提供了一种元数据读装置的硬件实现,具体如图8所示。本实施例包括网络接口 81、处理器82和存储器83。系统总线84用于连接网络接口 81、处理器82和存储器83。
[0103]网络接口 81用于与物联网终端、物联网接入网关、承载网、物联网服务网关和应用服务器通信。
[0104]存储器83可以是永久存储器,例如硬盘驱动器和闪存,存储器83中具有软件模块和设备驱动程序。软件模块能够执行本发明上述方法的各种功能模块;设备驱动程序可以是网络和接口驱动程序。
[0105]在启动时,这些软
件组件被加载到存储器83中,然后被处理器82访问并执行如下指令:
[0106]从内存中获取有效区域指针;
[0107]当所述有效区域指针指向共享存储的第一元数据区,从所述第一元数据区读取元数据,并将所述元数据写入所述内存;当所述有效区域指针指向所述共享存储的第二元数据区,从所述第二元数据区读取元数据,并将所述元数据写入所述内存。
[0108]进一步的,所述从内存中获取有效区域指针的指令具体为:主管理节点从所述内存中获取有效区域指针。
[0109]进一步的,所述处理器82访问存储器83的软件组件后,执行以下过程的指令:
[0110]当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。
[0111]本发明实施例提供的元数据读装置用以实现前述实施例中的读方法,在读元数据时依据当前指针的指向选择有效的元数据区,然后再读出元数据,这与现有技术的日志元数据管理相比提升了大块元数据的存储效率。另外,主管理节点负责元数据读操作管理,在主管理节点发生故障时,备管理节点可以通过读取指针和元数据快照数据进行集群恢复。
[0112]本领域技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0113]结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0114]以上所述的【具体实施方式】,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的【具体实施方式】而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种元数据写方法,其特征在于,所述方法包括: 从内存中获取有效区域指针; 当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区; 当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区,并将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。2.根据权利要求1所述的方法,其特征在于,当向所述第二元数据区写入所述元数据失败时,则所述有效区域指针指仍指向所述第一元数据区。3.根据权利要求1所述的方法,其特征在于,当所述有效区域指针指向所述共享存储的第二元数据区,则将元数据写入所述共享存储的第一元数据区;当向所述第一元数据区写入所述元数据成功后,将所述有效区域指针指向所述第一元数据区,并将指向所述第一元数据区的有效区域指针保存到所述共享存储的指针区。4.根据权利要求3所述的方法,其特征在于,当向所述第一元数据区写入所述元数据失败时,则所述有效区域指针仍指向所述第二元数据区。5.根据权利要求1-4任一所述的方法,其特征在于,所述从内存中获取有效区域指针具体为:主管理节点从所述内存中获取有效区域指针。6.根据权利要求5所述的方法,其特征在于,当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。7.—种元数据读方法,其特征在于,所述方法包括: 从内存中获取有效区域指针; 当所述有效区域指针指向共享存储的第一元数据区,从所述第一元数据区读取元数据,并将所述元数据写入所述内存;当所述有效区域指针指向所述共享存储的第二元数据区,从所述第二元数据区读取元数据,并将所述元数据写入所述内存。8.根据权利要求7所述的方法,其特征在于,所述从内存中获取有效区域指针具体为:主管理节点从所述内存中获取有效区域指针。9.根据权利要求8所述的方法,其特征在于,当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。10.一种元数据写装置,其特征在于,所述装置包括:获取单元、写入单元,修改单元; 获取单元,用于从内存中获取有效区域指针,并发送给所述写入单元; 写入单元,用于当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区; 修改单元,用于当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区。11.根据权利要求10所述的装置,其特征在于,所述写入单元还用于将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。12.根据权利要求10所述的装置,其特征在于,所述修改单元还用于当向所述第二元数据区写入所述元数据失败时,则所述有效区域指针仍指向所述第一元数据区。13.根据权利要求10所述的装置,其特征在于,所述写入单元还用于当所述有效区域指针指向所述第二元数据区,则将元数据写入所述第一元数据区。14.根据权利要求13所述的装置,其特征在于,所述修改单元还用于当向所述第一元数据区写入所述元数据成功后,将所述有效区域指针指向所述第一元数据区。15.根据权利要求14所述的装置,其特征在于,所述写入单元还用于将指向所述第一元数据区的有效区域指针保存到所述共享存储的指针区。16.根据权利要求12所述的装置,其特征在于,所述修改单元还用于当向所述第一元数据区写入所述元数据失败时,则所述有效区域指针指仍指向所述第二元数据区。17.根据权利要求10-16任一所述的装置,其特征在于,所述获取单元具体用于主管理节点从所述内存中获取有效区域指针。18.根据权利要求17所述的装置,其特征在于,所述获取单元还用于当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。19.一种元数据读装置,其特征在于,所述装置包括:获取单元、读取单元、写入单元; 获取单元,用于从内存中获取有效区域指针,并发送给所述读取单元; 读取单元,用于当所述有效区域指针指向共享存储的第一元数据区,从所述第一元数据区读取元数据,并发送给所述写入单元;当所述有效区域指针指向所述共享存储的第二元数据区,从所述第二元数据区读取元数据,并发送给所述写入单元; 写入单元,用于将接收到的所述元数据写入所述内存。20.根据权利要求19所述的装置,其特征在于,所述获取单元具体用于主管理节点从所述内存中获取有效区域指针。21.根据权利要求20所述的装置,其特征在于,所述获取单元还用于当所述主管理节点故障时,备管理节点从所述内存中获取有效区域指针。
【专利摘要】本发明涉及一种元数据读写方法和装置,所述方法包括:从内存中获取有效区域指针;当所述有效区域指针指向共享存储的第一元数据区,则将元数据写入所述共享存储的第二元数据区;当向所述第二元数据区写入所述元数据成功后,将所述有效区域指针指向所述第二元数据区,并将指向所述第二元数据区的有效区域指针保存到共享存储的指针区。本发明提供的元数据读写方法和装置在保证原子性的前提下,提升了大块数据下元数据的存储效率。
【IPC分类】G06F17/30
【公开号】CN105488047
【申请号】CN201410472909
【发明人】王振宇, 岑新星
【申请人】华为技术有限公司
【公开日】2016年4月13日
【申请日】2014年9月16日