一种元数据的存储方法和装置的制造方法

文档序号:10724481阅读:516来源:国知局
一种元数据的存储方法和装置的制造方法
【专利摘要】本申请提供一种元数据的存储方法和装置,应用于包括N个成员磁盘的RAID中,RAID的冗余度为M,N大于M;该方法包括:维护成员磁盘与存储区域的映射关系;其中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储区域;在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并将元数据存储在该L个存储区域中。通过本申请的技术方案,可以节省磁盘的存储空间,提高空间利用率,提高元数据的操作效率和操作性能,更新速度效率高。
【专利说明】
一种元数据的存储方法和装置
技术领域
[0001 ]本申请涉及存储技术领域,尤其涉及一种元数据的存储方法和装置。【背景技术】
[0002]RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是一种将多块独立的物理磁盘,按照不同方式组合起来,形成一个磁盘组,从而提供比单个物理磁盘更高的存储性能,并提供数据备份的技术。根据不同的数据组织方式,常用的RAID可以包括 RAID0、RAID1、RAID5、RAID6、RAID10等。其中,组成RAID的物理磁盘称为成员磁盘,且该成员磁盘的空间包括元数据空间和数据空间,数据空间用于存储真实的数据,而元数据空间用于存储元数据。元数据包括用于管理RAID及其成员磁盘的数据,例如,RAID由哪些成员磁盘组成、RAID的状态、RAID的组织信息、成员磁盘的重建信息等。
[0003]RAID的每个成员磁盘都有自身的元数据,并存储在本成员磁盘的元数据空间。例如,成员磁盘1的元数据1存储在本成员磁盘1的元数据空间,成员磁盘2的元数据2存储在本成员磁盘2的元数据空间,成员磁盘3的元数据3存储在本成员磁盘3的元数据空间,以此类推。进一步的,在RAID的读写过程中,成员磁盘有可能掉线,因此为了保证成员磁盘的元数据不发生丢失,通常将每个成员磁盘的元数据都存储在所有成员磁盘上。如图1所示,将成员磁盘1的元数据1依次存储在成员磁盘1-成员磁盘8的元数据空间,将成员磁盘2的元数据 2依次存储在成员磁盘1-成员磁盘8的元数据空间,以此类推。
[0004]但是,如果成员磁盘的数量很多,则需要在每个成员磁盘的元数据空间都存储大量的元数据,例如,成员磁盘的数量为64个时,则每个成员磁盘的元数据空间都存储64个成员磁盘的元数据。这样,元数据占用的磁盘空间过大,导致磁盘空间的浪费。而且,需要将每个成员磁盘的元数据依次存储到每个成员磁盘的元数据空间,导致更新元数据的操作不能并发进行,更新速度效率低。
【发明内容】

[0005]本申请提供一种元数据的存储方法,应用于包括N个成员磁盘的独立磁盘冗余阵列RAID中,所述RAID的冗余度为M,N大于M;所述方法包括:
[0006]维护成员磁盘与存储区域的映射关系;其中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护所述成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储区域;
[0007]在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并将所述元数据存储在该L个存储区域中。[00〇8]所述L的确定方式具体包括:确定元数据的备份数量L为所述RAID的冗余度M加1。
[0009]所述从N个成员磁盘中选取L个成员磁盘的过程,具体包括:针对每个成员磁盘,从 N个成员磁盘中选取所述成员磁盘,并从剩余的N-1个成员磁盘中选取L-1个成员磁盘。
[0010]所述从剩余的N-1个成员磁盘中选取L-1个成员磁盘的过程,具体包括:从剩余的 N-1个成员磁盘中,选取与所述成员磁盘相邻的L-1个成员磁盘;其中,与所述成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空间中,如果位于所述成员磁盘后面的成员磁盘数量不小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的连续L-1个成员磁盘; 如果位于所述成员磁盘后面的成员磁盘数量小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的所有成员磁盘,剩下的成员磁盘是从所述成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘。
[0011]所述从L个成员磁盘的每个成员磁盘中选取一个存储区域的过程,具体包括:在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区域至第L个存储区域。
[0012]所述将所述元数据存储在该L个存储区域的过程,具体包括:在需要存储至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘对应的L个存储区域处在不同的成员磁盘,则并发执行将所述至少两个成员磁盘的元数据存储在对应的L个存储区域的过程。
[0013]所述方法还包括:
[0014]在需要读取成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并从该L个存储区域的一个存储区域中读取元数据。
[0015]所述方法还包括:
[0016]当N个成员磁盘中有成员磁盘发生异常时,如果在所述RAID中增加新成员磁盘,则利用所述映射关系,从未发生异常的成员磁盘中获取发生异常的成员磁盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域。
[0017]本申请提供一种元数据的存储装置,应用于包括N个成员磁盘的独立磁盘冗余阵列RAID中,所述RAID的冗余度为M,N大于M;所述装置包括:
[0018]维护模块,用于维护成员磁盘与存储区域的映射关系;其中,在维护成员磁盘与存储区域的映射关系的过程中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从 L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护所述成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储区域;
[0019]处理模块,用于在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并将所述元数据存储在该L个存储区域中。
[0020]所述维护模块,具体用于在确定所述L的过程中,确定元数据的备份数量L为所述 RAID的冗余度M加1;在从N个成员磁盘中选取L个成员磁盘的过程中,针对每个成员磁盘,从所述N个成员磁盘中选取所述成员磁盘,并从剩余的N-1个成员磁盘中选取L-1个成员磁盘; 在从剩余的N-1个成员磁盘中选取L-1个成员磁盘的过程中,从剩余的N-1个成员磁盘中,选取与所述成员磁盘相邻的L-1个成员磁盘;在从所述L个成员磁盘的每个成员磁盘中选取一个存储区域的过程中,在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区域至第L个存储区域;其中,与所述成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空间中,如果位于所述成员磁盘后面的成员磁盘数量不小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的连续L-1个成员磁盘,如果位于所述成员磁盘后面的成员磁盘数量小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的所有成员磁盘, 剩下的成员磁盘是从所述成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘;
[0021]所述处理模块,具体用于在将所述元数据存储在该L个存储区域的过程中,当需要存储至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘对应的L个存储区域处在不同的成员磁盘,则并发执行将所述至少两个成员磁盘的元数据存储在对应的L个存储区域的过程;
[0022]所述处理模块,还用于在需要读取成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并从该L个存储区域的一个存储区域中读取元数据;和/ 或,所述处理模块,还用于当所述N个成员磁盘中有成员磁盘发生异常时,如果在所述RAID 中增加新成员磁盘时,则利用所述映射关系,从未发生异常的成员磁盘中获取发生异常的成员磁盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域。
[0023]基于上述技术方案,本申请实施例中,可以只将元数据存储在少量成员磁盘的存储区域中,而不是将元数据存储在所有成员磁盘的存储区域中,从而避免元数据占用的磁盘空间过大,避免磁盘空间的浪费,节省磁盘的存储空间,提高空间利用率。而且,可以并发执行将至少两个成员磁盘的元数据存储在存储区域的过程,提高元数据的操作效率和操作性能,更新速度效率高。【附图说明】
[0024]为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0025]图1是将每个成员磁盘的元数据都存储在所有成员磁盘的示意图;
[0026]图2是本申请一种实施方式中的元数据的存储方法的流程图;
[0027]图3是本申请一种实施方式中的元数据存储的结构示意图;
[0028]图4和图5是本申请一种实施方式中的成员磁盘发生异常的示意图;[〇〇29]图6是本申请一种实施方式中的存储设备的硬件结构图;[〇〇3〇]图7是本申请一种实施方式中元数据的存储装置的结构图。【具体实施方式】[0031 ]在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。[〇〇32]应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时” 或“响应于确定”。
[0033]针对现有技术中存在的问题,本申请实施例中提出一种元数据的存储方法,该方法可以应用于包括N个成员磁盘的RAID中,且RAID的冗余度为M。在一个例子中,RAID的冗余度是指RAID正常读写时,允许发生异常的成员磁盘的最大数量,如RAID5的冗余度为1, RAID6的冗余度为2。基于此,当发生异常的成员磁盘的数量小于等于RAID的冗余度时,RAID 仍可以正常读写。为了实现RAID正常读写的过程,则成员磁盘的数量N大于RAID的冗余度M。
[0034]在一个例子中,成员磁盘的空间包括元数据空间和数据空间,数据空间用于存储真实的数据,而元数据空间用于存储元数据。在本申请实施例的后续过程中,该元数据包括用于管理RAID及其成员磁盘的数据,例如,RAID由哪些成员磁盘组成、RAID的状态、RAID的组织信息、成员磁盘的重建信息等。
[0035]在一个例子中,RAID的每个成员磁盘都有自身的元数据,例如,成员磁盘1具有对应的元数据1,成员磁盘2具有对应的元数据2等,以此类推。
[0036]在上述应用场景下,如图2所示,该元数据的存储方法可以包括以下步骤:[〇〇37]步骤201,维护成员磁盘与存储区域的映射关系;其中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储区域。
[0038]步骤202,在需要存储成员磁盘的元数据时,利用上述映射关系,查询该成员磁盘对应的L个存储区域,并将该元数据存储在该L个存储区域中。[〇〇39]针对步骤201,在一个例子中,L的确定方式具体可以包括但不限于:确定元数据的备份数量L为RAID的冗余度M加1。当然,元数据的备份数量L只要大于RAID的冗余度M,且小于等于成员磁盘的数量N即可,并不限制L的具体数值,如元数据的备份数量L为RAID的冗余度M加2、加3、加4等。
[0040]其中,为了保证RAID可以正常读写,则需要记录所有成员磁盘的元数据。因此,为了实现当发生异常的成员磁盘的数量小于等于RAID的冗余度时,RAID仍然可以正常读写, 针对每个成员磁盘的元数据,则除了发生异常的成员磁盘之外,至少还需要有一个成员磁盘中记录有该元数据,这样,就可以保证RAID中记录所有成员磁盘的元数据,继而正常读写。例如,成员磁盘1的元数据1记录在成员磁盘1、成员磁盘2和成员磁盘3的元数据空间,假设RAID的冗余度为2,则当成员磁盘1发生故障时,由于只有一个成员磁盘发生故障,而RAID 的冗余度为2,因此RAID可以正常读写,而此时成员磁盘2和成员磁盘3的元数据空间中存在元数据1,因此,可以保证RAID的正常读写。当成员磁盘1和成员磁盘2发生故障时,由于只有两个成员磁盘发生故障,而RAID的冗余度为2,因此RAID可以正常读写,而此时成员磁盘3的元数据空间中存在元数据1,因此,可以保证RAID的正常读写。当成员磁盘1、成员磁盘2和成员磁盘3发生故障时,由于有三个成员磁盘发生故障,而RAID的冗余度为2,因此RAID无法正常读写,也就不用保证至少还有一个成员磁盘中记录有元数据1。[〇〇41] 在上述过程中,可以保证RAID的正常读写的原因是:当数据写入到故障成员磁盘1 的数据空间的某个块时,由于成员磁盘1已经故障,因此会通过冗余算法将数据写入到其它成员磁盘的数据空间的某个块,而成员磁盘1的数据空间中,该块的数据就是错误的。当成员磁盘1的故障恢复时,RAID需要知道成员磁盘1的数据空间中,该块的数据是错误的信息, 因此需要在元数据1中记录这个信息,并通过在多个成员磁盘的元数据空间中存储元数据 1,使得RAID可以知道成员磁盘1的数据空间中,该块的数据是错误的信息,继而正常读写。 [〇〇42]基于上述分析,则元数据的备份数量L需要大于RAID的冗余度M。此外,为了节省磁盘的存储空间,提高空间利用率,则元数据的备份数量L越小越好。因此基于上述两个策略, 则元数据的备份数量L可以为RAID的冗余度M加1。
[0043]在一个例子中,需要在每个成员磁盘的元数据空间中划分出L个存储区域,例如, 当L为4时,则可以在每个成员磁盘的元数据空间中,划分出第一个存储区域、第二个存储区域、第三个存储区域、第四个存储区域等。其中,在划分存储区域时,则每个存储区域的大小需要大于等于元数据的大小。
[0044]在一个例子中,从N个成员磁盘中选取L个成员磁盘的过程,具体可以包括但不限于如下方式:针对每个成员磁盘,从N个成员磁盘中选取该成员磁盘,并从剩余的N-1个成员磁盘中选取L-1个成员磁盘。例如,当N为8, L为4时,针对成员磁盘1,则选取该成员磁盘1,并从剩余的7个成员磁盘中选取3个成员磁盘,如选取成员磁盘3、成员磁盘5、成员磁盘7。当然,也可以采用其它方式选取成员磁盘,如针对成员磁盘1,则选取成员磁盘2、成员磁盘4、 成员磁盘6、成员磁盘8等。本申请实施例中,对于选取成员磁盘的方式不再赘述,只要能够选取出L个不同的成员磁盘即可,以上述从N个成员磁盘中选取该成员磁盘,并从剩余的N-1 个成员磁盘中选取L-1个成员磁盘为例进行说明。
[0045]在一个例子中,从剩余的N-1个成员磁盘中选取L-1个成员磁盘的过程,具体可以包括但不限于如下方式:从剩余的N-1个成员磁盘中,选取与成员磁盘相邻的L-1个成员磁盘。其中,与成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空间中,如果位于成员磁盘后面的成员磁盘数量不小于L-1个,则L-1个成员磁盘包括位于成员磁盘后面的连续L-1 个成员磁盘;如果位于成员磁盘后面的成员磁盘数量小于L-1个,则L-1个成员磁盘包括位于成员磁盘后面的所有成员磁盘,剩下的成员磁盘是从成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘。当然,也可以采用其它方式选取L-1个成员磁盘,如针对成员磁盘1, 不是选取成员磁盘2、成员磁盘3、成员磁盘4,而是选取成员磁盘2、成员磁盘5、成员磁盘8 等。本申请实施例中,对于选取L-1个成员磁盘的方式不再赘述,只要能够选取出L-1个不同的成员磁盘即可,以上述从剩余的N-1个成员磁盘中,选取与成员磁盘相邻的L-1个成员磁盘为例进行说明。
[0046]在一个例子中,从L个成员磁盘的每个成员磁盘中选取一个存储区域的过程,具体可以包括但不限于如下方式:在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区域至第L个存储区域。例如,从第一个成员磁盘选取第一个存储区域,从第二个成员磁盘选取第二个存储区域,以此类推,从第L个成员磁盘选取第L个存储区域。当然,也可以采用其它方式选取存储区域,如从第一个成员磁盘选取第二个存储区域,从第二个成员磁盘选取第三个存储区域,以此类推,从第L个成员磁盘选取第一个存储区域。本申请实施例中,对于从每个成员磁盘中选取一个存储区域的方式不再赘述,只要能够从每个成员磁盘中选取一个存储区域即可,以上述在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区域至第L个存储区域为例进行说明。
[0047]以下结合图3所示的应用场景对上述过程进行详细说明。在图3中,N个成员磁盘分别为成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4、成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8,此外,RAID的冗余度M为3。
[0048]在确定元数据的备份数量L的过程中,可以确定L为M+1,S卩L为4。
[0049]在成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4、成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8的元数据空间中分别划分出4个存储区域,即第一个存储区域、第二个存储区域、第三个存储区域、第四个存储区域等。
[0050]在从N个成员磁盘中选取L个成员磁盘的过程中,针对成员磁盘1,选择的4个成员磁盘可以包含成员磁盘1,也可以不包含成员磁盘1,以包含成员磁盘1为例。对于剩下的3个成员磁盘,可以从成员磁盘2、成员磁盘3、成员磁盘4、成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8中,随机选择3个成员磁盘,也可以选取与成员磁盘1相邻的3个成员磁盘,以选取与成员磁盘1相邻的3个成员磁盘为例。对于其它成员磁盘,处理与成员磁盘1的处理类似。
[0051]在成员磁盘列表空间中,依次包含成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4、 成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8。对于成员磁盘1,位于成员磁盘1后面的成员磁盘数量为7个,不小于3个,因此针对成员磁盘1,选择的4个成员磁盘为成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4。同理,针对成员磁盘2,选择的4个成员磁盘为成员磁盘2、成员磁盘3、成员磁盘4、成员磁盘5。针对成员磁盘3,选择的4个成员磁盘为成员磁盘3、成员磁盘 4、成员磁盘5、成员磁盘6。针对成员磁盘4,选择的4个成员磁盘为成员磁盘4、成员磁盘5、成员磁盘6、成员磁盘7。针对成员磁盘5,选择的4个成员磁盘为成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8。对于成员磁盘6,位于成员磁盘6后面的成员磁盘数量为2个,小于3个,因此针对成员磁盘6,选择的4个成员磁盘为成员磁盘6、成员磁盘7、成员磁盘8、成员磁盘1,成员磁盘7和成员磁盘8是成员磁盘后面的所有成员磁盘,而成员磁盘1是从成员磁盘列表空间的首个成员磁盘开始的成员磁盘。针对成员磁盘7,选择的4个成员磁盘为成员磁盘7、成员磁盘8、成员磁盘1、成员磁盘2,成员磁盘8是成员磁盘后面的所有成员磁盘,而成员磁盘1和成员磁盘2是从成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘。针对成员磁盘8, 选择的4个成员磁盘为成员磁盘8、成员磁盘1、成员磁盘2、成员磁盘3,成员磁盘1、成员磁盘 2和成员磁盘3是从成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘。[〇〇52]在从L个成员磁盘的每个成员磁盘中选取一个存储区域的过程中,针对成员磁盘 1,选择的4个成员磁盘分别为成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4,因此为成员磁盘1选取的存储区域可以为成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4的任意存储区域, 如成员磁盘1的第一个存储区域、成员磁盘2的第一个存储区域、成员磁盘3的第一个存储区域、成员磁盘4的第一个存储区域。在一个例子中,针对成员磁盘1选择的存储区域可以为: 成员磁盘1的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘4的第四个存储区域。对于其它成员磁盘,选取存储区域的方式与针对成员磁盘1选取存储区域的方式相同,在此不再赘述。[〇〇53]基于上述分析,对于每个成员磁盘来说,横向对应自身及后面相邻的L-1个成员磁盘,纵向依次对应第一个存储区域、第二个存储区域、以此类推、第L个存储区域。因此,成员磁盘与存储区域的映射关系可以如图3所示,成员磁盘1与成员磁盘1的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘4的第四个存储区域的映射关系;成员磁盘2与成员磁盘2的第一个存储区域、成员磁盘3的第二个存储区域、成员磁盘4的第三个存储区域、成员磁盘5的第四个存储区域的映射关系;以此类推,成员磁盘8 与成员磁盘8的第一个存储区域、成员磁盘1的第二个存储区域、成员磁盘2的第三个存储区域、成员磁盘3的第四个存储区域的映射关系。[〇〇54]针对步骤202,在需要存储成员磁盘1的元数据时,可以利用上述映射关系,查询到该成员磁盘1对应的L个存储区域,即成员磁盘1的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘4的第四个存储区域,因此,可以将成员磁盘1的元数据分别存储在成员磁盘1的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘4的第四个存储区域。同理,在需要存储其它成员磁盘的元数据时,其存储方式与成员磁盘1的元数据的存储方式类似,在此不再赘述。
[0055]在一个例子中,将元数据存储在L个存储区域的过程,具体可以包括但不限于如下方式:在需要存储至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘对应的L个存储区域处在不同的成员磁盘,则可以并发执行将所述至少两个成员磁盘的元数据存储在对应的L个存储区域的过程。
[0056]其中,在元数据的写入过程中,可以控制同时对不冲突的成员磁盘进行并发操作, 在写入某块成员磁盘的元数据时,可以同时写入与该成员磁盘不对应相同成员磁盘的其它成员磁盘的元数据。例如,针对成员磁盘1,对应成员磁盘1、成员磁盘2、成员磁盘3、成员磁盘4,而针对成员磁盘5,对应成员磁盘5、成员磁盘6、成员磁盘7、成员磁盘8,因此,成员磁盘 1对应的4个存储区域与成员磁盘5对应的4个存储区域,处在不同的成员磁盘,两个成员磁盘对应的所有存储区域未发生重合,因此,在将成员磁盘1的元数据分别存储在成员磁盘1 的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘 4的第四个存储区域的过程中,可以同时将成员磁盘5的元数据分别存储在成员磁盘5的第一个存储区域、成员磁盘6的第二个存储区域、成员磁盘7的第三个存储区域、成员磁盘8的第四个存储区域。此外,可以并发执行将成员磁盘2和成员磁盘6的元数据存储在对应的存储区域的过程,可以并发执行将成员磁盘3和成员磁盘7的元数据存储在对应的存储区域的过程,可以并发执行将成员磁盘4和成员磁盘8的元数据存储在对应的存储区域的过程。而对于其它组合,由于所有存储区域发生重合,因此不可以并发执行,如成员磁盘1和成员磁盘4的存储区域,在成员磁盘4上发生重合。
[0057]基于上述技术方案,本申请实施例中,可以只将元数据存储在少量成员磁盘的存储区域(如RAID的冗余度M+1个存储区域)中,而不是将元数据存储在所有成员磁盘的存储区域中,从而避免元数据占用的磁盘空间过大,避免磁盘空间的浪费,节省磁盘的存储空间,提高空间利用率。而且,可以并发执行将至少两个成员磁盘的元数据存储在存储区域的过程,提高了元数据的操作效率和操作性能,且更新速度效率更高,为用户提供了更加流畅的业务体验。
[0058]本发明实施例中,针对元数据的读取过程,则在需要读取成员磁盘的元数据时,可以利用成员磁盘与存储区域的映射关系,查询该成员磁盘对应的L个存储区域,并从该L个存储区域的一个存储区域中读取元数据。
[0059]例如,在需要读取成员磁盘1的元数据时,可以利用成员磁盘与存储区域的映射关系,查询到成员磁盘1的L个存储区域为:成员磁盘1的第一个存储区域、成员磁盘2的第二个存储区域、成员磁盘3的第三个存储区域、成员磁盘4的第四个存储区域。基于此,则从任意一个存储区域读取成员磁盘1的元数据,如可以成员磁盘1的第一个存储区域中读取成员磁盘1的元数据,或者,可以从成员磁盘2的第二个存储区域中读取成员磁盘1的元数据,或者, 可以从成员磁盘3的第三个存储区域中读取成员磁盘1的元数据,或者,可以从成员磁盘4的第四个存储区域中读取成员磁盘1的元数据。
[0060]在一个例子中,针对元数据的读取过程,在需要读取至少两个成员磁盘的元数据时,可以并发读取至少两个成员磁盘的元数据,只要不在同一个成员磁盘上并发读取至少两个成员磁盘的元数据即可。例如,在需要读取成员磁盘1和成员磁盘2的元数据时,可以从成员磁盘1的第一个存储区域中读取成员磁盘1的元数据,并同时从成员磁盘2的第一个存储区域中读取成员磁盘2的元数据,而不在成员磁盘2上同时读取成员磁盘1和成员磁盘2的元数据。[〇〇61]在一个例子中,针对元数据的读取过程,在读取元数据时,可以指定需要读取元数据的第一个成员磁盘(即元数据对应的成员磁盘),直接读取该成员磁盘的第一个存储区域中的元数据。如果读取成功,则可以结束元数据的读取过程。如果读取失败,则可以读取紧邻其后的第一个成员磁盘的第二个存储区域中的元数据。如果读取成功,则可以结束元数据的读取过程。如果读取失败,则可以读取紧邻其后的第二个成员磁盘的第三个存储区域中的元数据;以此类推,一直读取到正确的元数据,并结束元数据的读取过程。
[0062]例如,在读取成员磁盘1的元数据时,元数据对应的成员磁盘为成员磁盘1,因此需要读取元数据的第一个成员磁盘为成员磁盘1。基于此,直接读取成员磁盘1的第一个存储区域中的元数据。如果读取成功,则结束元数据的读取过程。如果读取失败,则读取成员磁盘2的第二个存储区域中的元数据。如果读取成功,则结束元数据的读取过程。如果读取失败,则读取成员磁盘3的第三个存储区域中的元数据。如果读取成功,则结束元数据的读取过程。如果读取失败,则读取成员磁盘4的第四个存储区域中的元数据;以此类推,一直读取到正确的元数据,并结束元数据的读取过程。
[0063]本申请实施例中,针对元数据的恢复过程,当N个成员磁盘中有成员磁盘发生异常时,如果在RAID中增加新成员磁盘,则可以利用成员磁盘与存储区域的映射关系,从未发生异常的成员磁盘中获取到发生异常的成员磁盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域中。
[0064]其中,成员磁盘发生异常可以包括但不限于:成员磁盘掉线、成员磁盘发生介质错误等。
[0065]其中,在成员磁盘发生异常时,该成员磁盘上记录的元数据不可操作,但是在未发生异常的成员磁盘上,元数据(即备份的元数据)仍然存在,此时发生异常的成员磁盘的元数据仍可以正常读写,如图4所示,为3块成员磁盘发生异常的示意图。虽然成员磁盘3、成员磁盘4、成员磁盘5发生异常,但是,成员磁盘3的元数据,仍然存储在成员磁盘6上,可以基于成员磁盘6读写成员磁盘3的元数据。此外,成员磁盘4的元数据,仍然存储在成员磁盘6和成员磁盘7上,可以基于成员磁盘6和成员磁盘7读写成员磁盘4的元数据。成员磁盘5的元数据,仍然存储在成员磁盘6、成员磁盘7和成员磁盘8上,可以基于成员磁盘6、成员磁盘7和成员磁盘8读写成员磁盘5的元数据。
[0066]在一个例子中,由于成员磁盘3的元数据只存储在成员磁盘6上,因此元数据只有一份,该元数据丢失的风险很大。基于此,当有成员磁盘发生异常时,如果在RAID中增加新成员磁盘,即使用新成员磁盘替换发生异常的成员磁盘,进行元数据恢复,则可以利用成员磁盘与存储区域的映射关系,从未发生异常的成员磁盘中获取到发生异常的成员磁盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域中。如图5所示,当使用新成员磁盘替换发生异常的成员磁盘3时,则从成员磁盘6的第四个存储区域读取成员磁盘3的元数据,将成员磁盘3的元数据写入到新成员磁盘的第一个存储区域;从成员磁盘2的第一个存储区域读取成员磁盘2的元数据,将成员磁盘2的元数据写入到新成员磁盘的第二个存储区域;从成员磁盘1的第一个存储区域读取成员磁盘1的元数据,将成员磁盘1的元数据写入到新成员磁盘的第三个存储区域;从成员磁盘8的第一个存储区域读取成员磁盘8的元数据,将成员磁盘8的元数据写入到新成员磁盘的第四个存储区域。
[0067]基于与上述方法同样的申请构思,本申请实施例中还提供了一种元数据的存储装置,该元数据的存储装置应用在存储设备上。该元数据的存储装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在的存储设备的处理器,读取非易失性存储器中对应的计算机程序指令形成的。 从硬件层面而言,如图6所示,为本申请提出的元数据的存储装置所在的存储设备的一种硬件结构图,除了图6所示的处理器、非易失性存储器外,存储设备还可以包括其他硬件,如负责处理报文的转发芯片、网络接口、内存等;从硬件结构上来讲,该存储设备还可能是分布式设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0068]如图7所示,为本申请提出的一种元数据的存储装置的结构图,可以应用于包括N 个成员磁盘的独立磁盘冗余阵列RAID中,其中,所述RAID的冗余度为M,所述N大于所述M;所述元数据的存储装置具体包括:
[0069]维护模块11,用于维护成员磁盘与存储区域的映射关系;其中,在维护成员磁盘与存储区域的映射关系的过程中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护所述成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储区域;
[0070]处理模块12,用于在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,将所述元数据存储在该L个存储区域中。
[0071]所述维护模块11,具体用于在确定所述L的过程中,确定元数据的备份数量L为所述RAID的冗余度M加1;在从N个成员磁盘中选取L个成员磁盘的过程中,针对每个成员磁盘, 从所述N个成员磁盘中选取所述成员磁盘,并从剩余的N-1个成员磁盘中选取L-1个成员磁盘;在从剩余的N-1个成员磁盘中选取L-1个成员磁盘的过程中,从剩余的N-1个成员磁盘中,选取与所述成员磁盘相邻的L-1个成员磁盘;在从所述L个成员磁盘的每个成员磁盘中选取一个存储区域的过程中,在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区域至第L个存储区域;其中,与所述成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空间中,如果位于所述成员磁盘后面的成员磁盘数量不小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的连续L-1个成员磁盘,如果位于所述成员磁盘后面的成员磁盘数量小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的所有成员磁盘,剩下的成员磁盘是从所述成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘;
[0072]所述处理模块12,具体用于在将所述元数据存储在该L个存储区域的过程中,当需要存储至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘对应的L个存储区域处在不同的成员磁盘,则并发执行将所述至少两个成员磁盘的元数据存储在对应的L个存储区域的过程;
[0073]所述处理模块12,还用于在需要读取成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储区域,并从该L个存储区域的一个存储区域中读取元数据;和/ 或,所述处理模块12,还用于当所述N个成员磁盘中有成员磁盘发生异常时,如果在所述 RAID中增加新成员磁盘时,则利用所述映射关系,从未发生异常的成员磁盘中获取发生异常的成员磁盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域。
[0074]其中,本申请装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0075]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图, 附图中的模块或流程并不一定是实施本申请所必须的。
[0076]本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0077]以上公开的仅为本申请的几个具体实施例,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
【主权项】
1.一种元数据的存储方法,其特征在于,应用于包括N个成员磁盘的独立磁盘冗余阵列 RAID中,所述RAID的冗余度为M,N大于M;所述方法包括:维护成员磁盘与存储区域的映射关系;其中,针对每个成员磁盘,从N个成员磁盘中选 取L个成员磁盘,并从L个成员磁盘的每个成员磁盘中选取一个存储区域,并维护所述成员 磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据 空间中被划分出L个存储区域;在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储 区域,并将所述元数据存储在该L个存储区域中。2.根据权利要求1所述的方法,其特征在于,所述L的确定方式具体包括:确定元数据的 备份数量L为所述RAID的冗余度M加1。3.根据权利要求1所述的方法,其特征在于,所述从N个成员磁盘中选取L个成员磁盘的 过程,具体包括:针对每个成员磁盘,从N个成员磁盘中选取所述成员磁盘,并从剩余的N-1 个成员磁盘中选取L-1个成员磁盘。4.根据权利要求3所述的方法,其特征在于,所述从剩余的N-1个成员磁盘中选取L-1个 成员磁盘的过程,具体包括:从剩余的N-1个成员磁盘中,选取与所述成员磁盘相邻的L-1个 成员磁盘;其中,与所述成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空间中,如果 位于所述成员磁盘后面的成员磁盘数量不小于L-1个,则所述L-1个成员磁盘包括位于所述 成员磁盘后面的连续L-1个成员磁盘;如果位于所述成员磁盘后面的成员磁盘数量小于L-1 个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的所有成员磁盘,剩下的成员磁盘是 从所述成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘。5.根据权利要求3所述的方法,其特征在于,所述从L个成员磁盘的每个成员磁盘中选 取一个存储区域的过程,具体包括:在从第一个成员磁盘至第L个成员磁盘的顺序上,依次 选取第一个存储区域至第L个存储区域。6.根据权利要求1所述的方法,其特征在于,所述将所述元数据存储在该L个存储区域 的过程,具体包括:在需要存储至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘 对应的L个存储区域处在不同的成员磁盘,则并发执行将所述至少两个成员磁盘的元数据 存储在对应的L个存储区域的过程。7.根据权利要求1所述的方法,其特征在于,所述方法还包括:在需要读取成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘对应的L个存储 区域,并从该L个存储区域的一个存储区域中读取元数据。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:当N个成员磁盘中有成员磁盘发生异常时,如果在所述RAID中增加新成员磁盘,则利用 所述映射关系,从未发生异常的成员磁盘中获取发生异常的成员磁盘中记录的元数据,并 将获取的元数据存储在所述新成员磁盘的存储区域。9.一种元数据的存储装置,其特征在于,应用于包括N个成员磁盘的独立磁盘冗余阵列 RAID中,所述RAID的冗余度为M,N大于M;所述装置包括:维护模块,用于维护成员磁盘与存储区域的映射关系;其中,在维护成员磁盘与存储区 域的映射关系的过程中,针对每个成员磁盘,从N个成员磁盘中选取L个成员磁盘,并从L个 成员磁盘的每个成员磁盘中选取一个存储区域,并维护所述成员磁盘与选取的L个存储区域的映射关系;L大于M,L小于等于N,且在每个成员磁盘的元数据空间中被划分出L个存储 区域;处理模块,用于在需要存储成员磁盘的元数据时,利用所述映射关系,查询该成员磁盘 对应的L个存储区域,并将所述元数据存储在该L个存储区域中。10.根据权利要求9所述的装置,其特征在于,所述维护模块,具体用于在确定所述L的过程中,确定元数据的备份数量L为所述RAID 的冗余度M加1;在从N个成员磁盘中选取L个成员磁盘的过程中,针对每个成员磁盘,从所述 N个成员磁盘中选取所述成员磁盘,并从剩余的N-1个成员磁盘中选取L-1个成员磁盘;在从 剩余的N-1个成员磁盘中选取L-1个成员磁盘的过程中,从剩余的N-1个成员磁盘中,选取与 所述成员磁盘相邻的L-1个成员磁盘;在从所述L个成员磁盘的每个成员磁盘中选取一个存 储区域的过程中,在从第一个成员磁盘至第L个成员磁盘的顺序上,依次选取第一个存储区 域至第L个存储区域;其中,与所述成员磁盘相邻的L-1个成员磁盘是指:在成员磁盘列表空 间中,如果位于所述成员磁盘后面的成员磁盘数量不小于L-1个,则所述L-1个成员磁盘包 括位于所述成员磁盘后面的连续L-1个成员磁盘,如果位于所述成员磁盘后面的成员磁盘 数量小于L-1个,则所述L-1个成员磁盘包括位于所述成员磁盘后面的所有成员磁盘,剩下 的成员磁盘是从所述成员磁盘列表空间的首个成员磁盘开始的连续成员磁盘;所述处理模块,具体用于在将所述元数据存储在该L个存储区域的过程中,当需要存储 至少两个成员磁盘的元数据时,如果所述至少两个成员磁盘对应的L个存储区域处在不同 的成员磁盘,则并发执行将所述至少两个成员磁盘的元数据存储在对应的L个存储区域的 过程;所述处理模块,还用于在需要读取成员磁盘的元数据时,利用所述映射关系,查询该成 员磁盘对应的L个存储区域,并从该L个存储区域的一个存储区域中读取元数据;和/或,所 述处理模块,还用于当所述N个成员磁盘中有成员磁盘发生异常时,如果在所述RAID中增加 新成员磁盘时,则利用所述映射关系,从未发生异常的成员磁盘中获取发生异常的成员磁 盘中记录的元数据,并将获取的元数据存储在所述新成员磁盘的存储区域。
【文档编号】G06F3/06GK106095330SQ201610375013
【公开日】2016年11月9日
【申请日】2016年5月30日
【发明人】杨二垒
【申请人】杭州宏杉科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1