一种存储阵列配置保存及仲裁方法转让专利

申请号 : CN201410728260.0

文献号 : CN104461388B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 钱文刘磊王道邦王清翰罗华周泽湘方仑

申请人 : 北京同有飞骥科技股份有限公司

摘要 :

本发明涉及一种存储阵列配置保存及仲裁方法,属于计算机存储技术领域,保存方法包括:首先从单盘中划分出配置区域和配置元数据区域;然后获取系统配置数据,对其压缩打包后从中计算出配置元数据;接下来将配置元数据写入存储阵列中所有盘的配置元数据区域;最后将配置数据写入存储阵列中所有盘的配置区域;仲裁方法包括:首先读取所有盘的配置元数据;然后根据系统序列号按照一定规则选出候选导出盘;接下来再从候选导出盘根据MD5和sequence裁决出导出盘;然后从导出盘导出配置数据并解压后保存供系统使用。与传统的配置管理方法相比:可以最大限度地恢复存储配置;向前兼容无配置管理的存储系统,方便系统升级。

权利要求 :

1.一种存储阵列配置仲裁方法,其特征在于:包括以下步骤:步骤一、遍历存有配置数据的存储阵列中的所有盘,将配置元数据读出,得到系统序列号serial_num、配置存储计数sequence和魔术号magic_num属性,其中magic_num用于存储配置区域扩容的大小;

步骤二、获取本机的序列号local_serial_num;

步骤三、根据magic_num过滤磁盘,选取magic_num最新的一组磁盘后再比较各个盘的serial_num,按照此属性将所有盘分组,按照一定规则选出候选导出盘;

步骤四、在候选导出盘中继续做仲裁,将配置数据不完整的盘从候选导出盘中淘汰;

步骤五、在剩下的候选导出盘中,选出配置数据最新的盘作为最后裁定的导出盘;

步骤六、从最后裁定的盘的配置区域导出配置数据;

步骤七、将导出的配置数据解压缩后保存到相应的位置下供系统使用。

2.根据权利要求1所述的一种存储阵列配置仲裁方法,其特征在于:所述按照一定规则选出候选导出盘包括以下规则:(1)判断各组的serial_num与local_serial_num是否相同,如果相同将该组中所有盘作为候选导出盘;如果没有相同的组,根据规则(2)选出候选导出盘;

(2)选出组内盘数目最多的一组,将改组内的所有盘作为候选导出盘。

3.根据权利要求1所述的一种存储阵列配置仲裁方法,其特征在于:所述配置数据不完整依据配置元数据中的MD5与根据配置数据计算出的MD5是否相同进行判别,相同表明数据完整,不相同表明数据不完整。

4.根据权利要求1-3任一所述的一种存储阵列配置仲裁方法,其特征在于:所述配置数据最新依据sequence进行判别,哪个盘上的数据元数据中的sequence最大表明该盘上的数据最新。

说明书 :

一种存储阵列配置保存及仲裁方法

技术领域

[0001] 本发明涉及一种存储阵列配置信息的管理方法,特别涉及一种存储阵列配置信息保存和仲裁方法,属于计算机存储技术领域。

背景技术

[0002] 在宽带化、移动互联网、物联网、社交网络、云计算的催生下,大数据时代悄然来临,美国互联网数据中心指出,互联网上的数据每年将增长50%,每两年便将翻一番,而目前世界上90%以上的数据是最近几年才产生的。
[0003] 随着大数据的发展,大规模存储阵列,因其将多块单盘组织起来发挥磁盘的高容量、高性能、高可靠性的特点而越来越多地被用来存储和管理企业、数据中心、计算中心的庞大数据。通常,一台高可用阵列除了存储单元外会随带一系列满足客户应用的服务,服务的各种配置信息、磁盘阵列自身的配置信息、网络管理信息、系统运行配置等,组成了存储阵列非常重要的配置信息,如何有效地管理这些配置信息,关系到存储系统是否能对外提供灵活可配置的应用服务、管理接口、以及存储系统服务的高可用性,阵列的运行可靠性等一系列问题。
[0004] 在现有技术中,管理存储阵列配置信息的方法有两种,一是将磁盘阵列中的磁盘各自划分出一小块区域,组织成RAID0或RAID1的形式,将配置信息分割成条带存入这一区域,这样做的弊端是当系统更换磁盘时,RAID将被破坏,配置信息将被损坏,无法保证高可用性。还有一种做法是将每块磁盘进行划分,划分出一块特定的区域专门存储配置,将配置信息打包,定期下刷到阵列的每一块单盘上,开机读取配置时,选取和下刷时计算的MD5码一致的配置使用。这样做的弊端是,系统增加服务或系统升级导致需要存储的配置信息大小增加,超出磁盘上所划分的区域时,配置信息将覆盖磁盘原有的数据区,造成数据损坏;再者,读取配置时没有高效地仲裁机制,仅仅使用MD5码,无法保证读出来的配置信息可用,比如说数据迁移时将原来阵列上所有的磁盘都被更换,此时无法找到和下刷时同样的MD5码,便无法仲裁哪一块磁盘的配置可靠。

发明内容

[0005] 本发明的目的是为解决现有技术存储中服务配置因存储介质故障而丢失,无法弹性扩展,以及数据迁移时无法仲裁导出正确配置的问题,提供一种基于异构平台的磁盘阵列配置保存和仲裁方法,应用于计算机存储领域存储设备中。
[0006] 本发明的目的是通过以下技术方案实现的:
[0007] 一种存储阵列配置保存方法,包括以下步骤:
[0008] 步骤一、将磁盘阵列中的单盘划分出保存配置信息需要的区域;
[0009] 如将其划分出五个区域:RAID元数据区域,RAID坏块重映射预留区域,数据区域,配置区域和配置信息元数据区域,分别用来存储RAID组织信息,磁盘阵列重映射区域,存入系统中的数据,系统配置信息,配置信息存储和仲裁用到的区域是配置区域和配置信息元数据区域。;
[0010] 步骤二、获取系统配置数据,对其压缩打包后从中计算出配置元数据,包括属性:配置数据大小,MD5值,系统序列号(serial_num)配置存储计数(sequence)和魔术号(magic_num);
[0011] 各个属性的意义和获取方法如下:
[0012] (1)配置信息包大小(size)。用系统命令计算出配置压缩包的大小,将配置包从指定路径写入磁盘时,需要指定大小,即这里的配置信息包的大小;
[0013] (2)MD5值(md5)。利用MD校验算法根据配置包的内容计算出一个特定的值,用于特定唯一地标示这个包;
[0014] (3)系统序列号(serial_num)。用于特定唯一地标示这台存储阵列,一般采用存储阵列的系统盘序列号或主板序列号,因为这些系统组件一般不会更换,所以serial_num能够稳定唯一地标识一台阵列;
[0015] (4)配置存储计数(sequence)。由于配置会不定期地被用户改变,改变后的配置会立即存到磁盘中,为了标识配置被存了多少次,以在开机导出配置时获得最新的配置,将sequence作为最新的标记;
[0016] (5)魔术号(magic_num)。用于扩展配置区域,当系统升级,新的系统配置容量增大,超出原先划分出的配置区域大小时,为了避免直接将配置下刷覆盖RAID中的有用数据,特采用魔术号这一机制;
[0017] 步骤三、将上述计算出的配置元数据写入磁盘配置元数据区域;
[0018] 步骤四、将配置信息打包并写入磁盘的配置区域。
[0019] 配置仲裁在开机时进行,开机时需将各项服务的配置信息导出,凭借这些配置信息开启服务以保证存储系统的自动化运行,由于配置下刷时在每块磁盘上都存有一份配置,配置仲裁需在众多磁盘中选出满足如下条件的配置将其导出供系统及服务使用,即是本机原来的配置或最多磁盘原先使用的配置,配置信息无损坏,配置为最新。
[0020] 一种存储阵列配置仲裁方法,包括以下步骤:
[0021] 步骤一、遍历存有配置数据的存储阵列中的所有盘,首先将元数据读出,得到serial_num、sequence和magic_num等属性;
[0022] 步骤二、获取本机的序列号local_serial_num;
[0023] 步骤三、根据magic_num过滤磁盘,选取magic_num最新的一组磁盘后再比较各个磁盘的serial_num,并按照此属性将盘分组,按照一定规则选出候选导出盘;
[0024] 候选导出盘可以按以下规则选择:
[0025] 选择和本机序列号相同的一组盘作为候选导出磁盘,若没有一张盘的serial_num和local_serial_num相同,表示此机更换了所有磁盘,此时仍需按serial_num进行分组,选出将相同serial_num最多的一组磁盘作为候选导出磁盘;
[0026] 步骤四、在候选导出磁盘中继续做仲裁,将配置数据不完整的盘从候选导出盘中淘汰;
[0027] 如根据配置数据计算出MD5,若和元数据MD5不一致,表示配置在系统运行的过程被损坏,无法使用,将磁盘从候选导出磁盘中淘汰;
[0028] 步骤五、在剩下的磁盘中,选出配置数据最新的盘作为最后裁定的导出盘;
[0029] 如利用排序算法计算出sequence值最大的磁盘,表明它的配置信息最新,那么该盘为最后裁定的导出磁盘;
[0030] 步骤六、从最后裁定的配置磁盘中导出相应的配置信息,具体做法为:根据magic_num计算获得配置区域大小,结合配置信息元数据区域大小从磁盘分区信息找到配置下刷的起始位置,读出元数据中表明的配置大小的数据包,即为配置信息;
[0031] 步骤七、将导出的配置信息包解压到相应的路径下供开机后系统应用、服务使用。
[0032] 有益效果
[0033] 对比现有技术,本发明方法具有以下有益效果:
[0034] 1.本发明方法提供了基于异构平台的存储阵列配置的灵活管理机制,该机制保证了配置数据的高一致性、可靠性和有效性,具体原理如下:
[0035] 配置数据的一致性保证:利用读出配置前后MD5值一致保证配置写入、读出前后的一致性;
[0036] 配置数据的可靠性保证:通过将配置信息分布存储在不同的磁盘上,并使用魔术号机制保证配置数据的可靠性;
[0037] 配置信息的有效性保证:通过配置仲裁机制,找到和本机序列号一致或大多数磁盘使用的配制,在这一基础上,找到未损坏并且最新的配置供系统使用,保证了配置数据的可用性;
[0038] 2.本发明方法适用的配置信息广泛,包括但不限于各种系统所使用到的应用、服务配置、系统本身的网络、硬盘配置等。
[0039] 3.本发明方法适用的存储介质并不局限于普通硬盘,还可包括固态硬盘等其他可存储数据的设备。

附图说明

[0040] 图1为本发明一种基于异构平台的存储阵列配置保存及仲裁方法的磁盘区域划分示意图;
[0041] 图2为本发明一种基于异构平台的存储阵列配置保存及仲裁方法的配置信息结构划分示意图;
[0042] 图3为本发明一种基于异构平台的存储阵列配置保存及仲裁方法的配置仲裁机制流程图。

具体实施方式

[0043] 本发明提供一种基于异构平台的磁盘阵列配置保存和仲裁方法,应用于存储设备,下面以一个实施例为例结合附图对本发明方法的内容作具体描述:
[0044] 如图1所示,根据步骤一,将每块磁盘划分为如下几个区域,其中头16KB为RAID元数据区域,32MB为RAID坏块重映射区域,数据区后64MB为配置信息存储区域,最后的512Byte为配置信息元数据区域,中间为RAID数据区域;
[0045] 根据步骤二,在配置存储前,作为优选,可将配置数据打包,按图2所示根据打包后的配置数据计算出配置元数据size,md5,sequence,serial_num和magic_num,其中magic_num根据步骤二在有扩展需要的情况下新建RAID时创建;
[0046] 根据步骤三,将上述计算出的配置元数据写入磁盘配置元数据区域,即磁盘最后512Byte的位置;
[0047] 根据步骤四,将配置数据存入磁盘配置区域,即512byte+64MB的位置开始写入,具体写入大小由元数据中的size属性决定。
[0048] 随着时间的推移以及系统应用的增加,其配置信息也会随之增长,当当前分配的配置区域大小不能满足配置数据需求时,则需要对配置区域进行扩容。本实施例将magic_num用于标记占用数据区的多少,因为不同的系统版本对于扩容的大小不一样,因此magic_num的值也不一样。新的系统中如果沿用老版本的RAID,则不标记magic_num,表示扩容大小为0。如果创建新的RAID,那么在创建RAID的同时读取目前的版本号,计算出该版本扩容大小,得到magic_num标记到配置头文件中。对应的,该新RAID也会根据扩容后的配置区域大小重新划分数据区域大小,确保二者不会有重叠区域,从而确保下刷配置时就不会刷到数据区域。因此在下刷配置时,首先判断元数据中有没有magic_num,如果没有,表示新的系统延用旧版本的RAID,用于扩展的区域还是存储着数据,不能被覆盖,还是在原来的配置区域存储配置信息,此时判断如果配置数据大小超出原配置区域大小,则以报警的形式通知管理员重新规划存储分区并迁移一部分数据;否则如果有magic_num,表示建立新的RAID,按照magic_num的值在最新RAID的所有磁盘的扩容后的配置区域存储数据,然后下刷配置。
[0049] 举例如下:如果新版本的系统需要对配置区域扩容,则先预设版本号以及扩容大小。存储配置时,先在头文件中读magic_num,若读到,则按其大小在新的配置区写配置,比如magic_num计算出是5M,则在512byte+64MB+5MB的位置写配置,如果没有读到,则如果配置的size不超过64M,还是往512byte+64MB的地方写,否则以报警的形式通知管理员重新划分分区并迁移部分数据。而上文中提到magic_num的值是在新建RAID的时候写入的,写入前先读取当前的版本号,根据版本号计算需要扩容的大小,写入magic_num。
[0050] 事实上,上面举的例子中的磁盘区域划分大小是一种比较优化的划分方式,在具体实施过程中,可根据具体存储使用空间,配置大小和存储介质容量因地制宜地进行划分,已达到更为有效地利用空间的目的。
[0051] 如图3所示,配置仲裁的具体步骤如下:
[0052] 根据步骤一、按照系统disk_table遍历所有存有配置信息的盘,从各块磁盘的最后512Byte,将配置元数据读出,从元数据中获取到serial_num、sequence和magic_num等属性;
[0053] 根据步骤二、获取本机的序列号local_serial_num,假定此时采用系统盘序列号作为本机序列号,那么根据系统盘ID,利用系统命令获取系统盘系列号存入local_serial_num;
[0054] 根据步骤三、根据magic_num过滤磁盘,选取magic_num最大的一组磁盘(如果所有磁盘都没有magic_num,则选取所有磁盘;否则按magic_num进行排序,选择最大的一组磁盘,表明其版本最新)后再比较各个磁盘元数据中的serial_num,假定有磁盘A、B、C、D、E、F,磁盘A、B、C的serial_num为X,D、E的serial_num为Y、F的serial_num为Z,local_serial_num为Y,则D、E为候选导出磁盘,若local_serial_num为W,此时没有一张盘的serial_num和local_serial_num相同,表示此机更换了所有磁盘,那么按相同serial_num最多的一组磁盘作为候选导出磁盘的原则,选A、B、C为候选导出磁盘;
[0055] 根据步骤四、假设这里选择了A、B、C为候选导出磁盘,在A、B、C中继续做仲裁,计算出MD5,假设A磁盘配置计算出的MD5值和元数据中所获取MD5不一致,则将A磁盘淘汰,继续从B、C中选择;
[0056] 根据步骤五、在B、C中读出sequence,假设B的sequence比C大,表示B的配置比较新,那么选择B盘为最后裁定的导出磁盘,如果B和C的sequence一样大,那么B和C的配置信息具有同等的有效性,导出谁都一样,导出ID号在前的B盘;
[0057] 根据步骤六、按照磁盘区域所划分的大小,从B盘的后512Byte+64MB+magic_num的位置读出配置数据,读出数据的大小由配置元数据的size属性决定;
[0058] 根据步骤七、将配置数据恢复到系统配置位置中,就完成了系统配置的仲裁过程。
[0059] 本发明方法不仅适用于通用X86平台,还适用于其它架构的平台,如基于MIPS架构的国产平台龙芯,已用该方法实现配置管理并用于生产,和X86平台相比,龙芯平台功耗更低,性能和稳定性方面也在国产平台内具有领先水平。
[0060] 以上所述仅为本发明的较佳实施方法而已,并不用以限制本发明,凡在本发明的设计思路内,不管所使用何种阵列架构、何种RAID级别,何种类型存储介质,配置信息及磁盘区域划分所做的任何修改、改进等,均应包含在本发明保护的范围之内。