一种可动态异步调整raid级别的存储方法及存储系统的制作方法

文档序号:6630945阅读:124来源:国知局
一种可动态异步调整raid级别的存储方法及存储系统的制作方法
【专利摘要】本发明提供一种可动态异步调整RAID级别的存储方法及存储系统,首先通过在线模式生成初始虚拟磁盘,再在IO空闲时,采用后台模式增加或降低冗余度,由于增加或降低冗余度操作在后台进行,不需要占用在线模式时的IO资源,因此,为一种异步模式;另外,本发明中,每个块条带的RAID级别可均不相同,并可进行动态调整,从而提高了存储系统冗余级别调整的灵活性,更能满足用户存储需求。因此,本发明提供的可动态异步调整RAID级别的存储方法及存储系统,在不影响数据存取速度的前提下,充分利用空闲IO和空闲空间,从而提升安全级别,更适用于应用于云存储和集中化存储的大规模应用场合。
【专利说明】一种可动态异步调整RAID级别的存储方法及存储系统

【技术领域】
[0001]本发明属于数据存储【技术领域】,具体涉及一种可动态异步调整RAID级别的存储方法及存储系统。

【背景技术】
[0002]RAID (Redundant Arrays of Independent Disks,独立磁盘冗余阵列)技术已广泛应用于数据存储的各种场合,RAID技术分为几种不同的级别,可以分别提供不同的速度、安全性和性价比。根据实际情况选择适当的RAID级别可以满足用户对存储系统可用性、性能和容量的要求。
[0003]常用的RAID级别包括以下几种:RAIDO、RAID4和RAID5等。
[0004]其中,RAID O采用条带技术,对于由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块;然后,将不同物理磁盘的磁盘块组成一个条带;在数据存储过程中,首先将连续的数据按磁盘阵列中的物理磁盘的数量进行分段,得到相同大小的数据块,再以条带为单位,将各个数据块并行同时写入到阵列中的不同条带的不同磁盘块上,由于可以对数据进行并行读/写,具有数据访问速度快的优点;但是,由于RAID O不具有冗余能力,至少需要两个物理磁盘,只要其中一个物理磁盘出现损坏,则会导致整个磁盘阵列所保存的所有数据均不可用。
[0005]RAID 4也同样采用条带技术,其选取一块物理磁盘专门用于存储校验数据,称为校验盘;数据则分段存储在其他物理磁盘中。同一条带上,其他数据的改变均要修改校验数据。因此,当某一块物理磁盘出现损坏时,只需要将损坏物理磁盘更换为新的物理磁盘,然后再根据校验盘的校验数据,在新物理磁盘中重建损坏盘上的数据即可。利用单独的校验盘保护数据,提高了数据冗余存储能力,从而提高了数据存储的安全性。
[0006]RAID 5与RAID4区别在于,RAID 5不是以单独的物理磁盘作为校验盘,而是将校验数据交互存储于各个物理磁盘上。因此,1性能更加均衡,吞吐量及磁盘寿命均可最佳配置。相同之处在于,任何一个物理磁盘损坏,均不影响有效数据,缺失的数据可通过同一条带上的其他数据块生成出来。
[0007]对于RAID 4、RAID 5等具有校验位的存储系统,主要采用存储数据和校验数据同步存储结构,即:对于一个条带,只有将校验数据写完,才能认为这个条带被写完,该种存储结构的优点为:在突发性断电等灾难发生时,可以保证数据的稳定性,同时控制器设计较为简单。但随着云存储和集中化存储的大规模应用,由若干组单一 RAID组成的存储结构常常会因为一组RAID故障导致大面积应用瘫痪,放大了数据风险,这时,简单地增加冗余磁盘的数量,或者性能急剧下降,或者空间浪费惊人。所以,需要在空间利用率和存取性能上找到最佳点,如何在不影响数据存取速度的前提下,利用好存储的空闲1和空闲空间,从而提升安全级别,是当下存储产品需要解决的关键问题。


【发明内容】

[0008]针对现有技术存在的缺陷,本发明提供一种可动态异步调整RAID级别的存储方法及存储系统,可有效解决上述问题。
[0009]本发明采用的技术方案如下:
[0010]本发明还提供一种可动态异步调整RAID级别的存储方法,包括以下步骤:
[0011]SI,对于由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块;
[0012]对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PNiBN ;
[0013]然后,定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度;
[0014]将所有的已编号后的磁盘块存入已定义的所述存储池中;
[0015]S2,在所述存储池中定义SnRm列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件:
[0016]条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次;
[0017]条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量;
[0018]另外,在创建所述虚拟磁盘时,定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定:
[0019]a、每个块条带中的存储真正数据的磁盘块数量:m_h ;其中,将存储真正数据的磁盘块简称为数据块;
[0020]b、每个块条带中的存储校验值的磁盘块数量:h ;其中,将存储校验值的磁盘块简称为校验块;
[0021]C、每个块条带中允许增强的校验块数量:M ;
[0022]d、虚拟磁盘安全级别:Vs ;
[0023]S3,设按自上而下顺序共有η个原始块条带,分别记为:原始块条带1、原始块条带2…原始块条带η ;
[0024]设任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块i_l、磁盘块i_2..,磁盘块1-m ;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O < h < m,h为自然数;
[0025]S4,当进行写操作时,RAID控制器接收待写入虚拟磁盘的数据,根据数据在虚拟磁盘中的偏移地址和数据的容量大小,通过虚拟磁盘的结构定义,将所述数据分段,再计算分段后的数据需要写入的数据块的块地址以及校验块的块地址;然后,向计算后得到的数据块地址写入分段后的数据,向计算后得到的校验块地址写入校验数据,返回写成功;
[0026]当进行读操作时,将所述虚拟磁盘的空间地址和大小转换后,由并行线程进行读取、汇总,即可读出数据;
[0027]S4,具体包括:
[0028]S4.1,RAID控制器监控1模块的空闲状态,当监控到1模块空闲时,执行S4.2 ;
[0029]S4.2,所述虚拟磁盘增加块条带冗余度的操作:
[0030]如果同时满足以下条件:
[0031]当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集;
[0032]则:所述虚拟磁盘基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别;
[0033]所述虚拟磁盘降低块条带冗余度的操作:
[0034]如果当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
[0035]优选的,S2中,h为整数,且h> = O且h〈 = 5。
[0036]优选的,S2中,M为整数且0〈 = M〈 = 5。
[0037]优选的,所述优先级冗余策略包括:
[0038]基于预定义的虚拟磁盘安全级别Vs,虚拟磁盘安全级别越高,则表明虚拟磁盘的重要度越高,则其优先级别越高;
[0039]各个块条带所存储的具体数据的重要度,即:所存储的具体数据越重要,其优先级别越闻;
[0040]各个块条带最后执行存储操作的时间,即:最后执行存储操作的时间离当前时间的时间间隔越小,其优先级别越高。
[0041]优选的,S4.2中,所述预设校验算法为基于Reed-solomon算法设计的多元一次方程组原理,即:在该方程组的解为唯一的情况下,即可增加多级校验。
[0042]本发明还提供一种可动态异步调整RAID级别的存储系统,包括:
[0043]分割模块,用于对由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块;
[0044]编号模块,用于对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PN: BN;
[0045]存储池定义模块,用于定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度;
[0046]虚拟磁盘定义模块,用于在所述存储池中定义由η行m列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件:
[0047]条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次;
[0048]条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量;
[0049]还定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定:
[0050]a、每个块条带中的存储真正数据的磁盘块数量:m-h ;其中,将存储真正数据的磁盘块简称为数据块;
[0051]b、每个块条带中的存储校验值的磁盘块数量:h ;其中,将存储校验值的磁盘块简称为校验块;
[0052]C、每个块条带中允许增强的校验块数量:M ;
[0053]d、虚拟磁盘安全级别:Vs ;
[0054]数据块数量初始值以校验块数量初始值设置模块,对于任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块1-Ι、磁盘块i_2..,磁盘块1-m ;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O彡h < m,h为自然数;
[0055]1监控模块,用于监控1模块的空闲状态;
[0056]块条带冗余度增加模块,用于当所述1监控模块监控到1模块空闲时,且满足以下条件:当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集;
[0057]则:基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别;
[0058]块条带冗余度降低模块,用于当所述1监控模块监控到1模块空闲时,且当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
[0059]本发明的有益效果如下:
[0060]本发明提供的可动态异步调整RAID级别的存储方法及存储系统,采用后台模式增加或降低各个块条带的冗余度,有不影响在线数据存储速度的前提下,还利用空闲1和空闲空间,从而提升安全级别,更适用于应用于云存储和集中化存储的大规模应用场合。另夕卜,本发明中,每个块条带的RAID级别可进行动态调整,并且,各个块条带的RAID级别可不相同,提高了存储系统冗余级别调整的灵活性,更能满足用户存储需求。

【专利附图】

【附图说明】
[0061]图1为本发明提供的可动态异步调整RAID级别的存储方法的原理示意图;
[0062]图2为本发明提供的可动态异步调整RAID级别的存储系统的结构示意图。

【具体实施方式】
[0063]以下结合附图对本发明进行详细说明:
[0064]本发明提供一种可动态异步调整RAID级别的存储方法,如图1所示,为用于说明本发明存储方法的原理示意图,包括以下步骤:
[0065]SI,对于由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块;
[0066]对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PNiBN ;
[0067]参考图1,共有6个物理磁盘,每一个物理磁盘均被分割为4个磁盘块,因此,对于第I个物理磁盘,物理磁盘号PN为PD_A,磁盘块号BN分别为O、1、2和3,因此,磁盘块编号分别为:PD_A0、PD_A1、PD_A2和PD_A3 ;同样,对于第2个物理磁盘,物理磁盘号PN为Η)_B,磁盘块号BN分别为0、1、2和3,因此,磁盘块编号分别为:PD_B0、PD_B1、PD_B2和PD_B3 ;对于第3-6个物理磁盘,物理磁盘号PN分别为PD_C、PD_D.PD_E.PD_F,每一个磁盘块号BN均为0、1、2和3,具体的磁盘块编号不再赘述。
[0068]然后,定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度;
[0069]将所有的已编号后的磁盘块存入已定义的所述存储池中;
[0070]S2,在所述存储池中定义SnRm列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件:
[0071]条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次;
[0072]也就是说,每个块条带中所有的磁盘块编号(PN:BN)的集合中,不同的PN仅允许出现一次,即每个块条带中不允许有相同的物理磁盘的不同磁盘块出现。例如,如图1,在块条带I中,共有5个磁盘块,其编号分别为:PD_A2、PD_B0、PD_C3、PD_D2和PD_E3,分别来自于5个不同的物理磁盘;再例如,对于PD_A0、PD_A1、PD_A2和PD_A3这4个磁盘块,均来自于物理磁盘PD_A,因此,这4个磁盘块中,当任意一个磁盘块出现在条带I时,其他3个磁盘块均不允许出现在条带I中。
[0073]条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量;
[0074]另外,在创建所述虚拟磁盘时,定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定:
[0075]a、每个块条带中的存储真正数据的磁盘块数量:m-h ;其中,将存储真正数据的磁盘块简称为数据块;
[0076]b、每个块条带中的存储校验值的磁盘块数量:h ;其中,将存储校验值的磁盘块简称为校验块;
[0077]C、每个块条带中允许增强的校验块数量:M ;
[0078]d、虚拟磁盘安全级别:Vs ;
[0079]实际应用中,h为整数,且h> = O且h〈 = 5,即h = 0、1、2、3、4或5。现有技术中的RAID级别,每个块条带包括的校验块数量的最大值为3,本发明中,每个块条带包括的校验块数量的最大值为5,比现有技术增加一个冗余度。M为整数且0〈 = M〈 = 5,即M = O、1、2、3、4或5,也就是说,根据实际需要,每个块条带既可不包含校验块数量,即为RAIDO级另O,也可以最多支持5个校验块,也就是说,每个块条带的冗余度变化范围非常大。
[0080]S3,设按自上而下顺序共有η个原始块条带,分别记为:原始块条带1、原始块条带2…原始块条带η ;
[0081]设任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块i_l、磁盘块i_2..,磁盘块1-m ;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O < h < m,h为自然数;
[0082]参考图1,初始化时,共生成4个原始块条带,分别为原始块条带1、原始块条带2、原始块条带3和原始块条带4 ;并且,在初始时,每个原始块条带所包含的数据块数量均相等,例如,每个原始块条带均包括4个数据块;然后,每个原始块条带可均不包括校验块,即为4+0在线数据模式;也可以均包括I个校验块,为4+1在线数据模式,类推的,也可以设计为4+2在线数据模式或4+3在线数据模式。初始时,每个原始块条带所包含的磁盘块均为在线磁盘块,另外,每个原始块条带的冗余度(即包含的校验块数量)根据实际需求设置,所设置的校验块数量越少,冗余度越低,但空间利用率越高;相反,所设置的校验块数量越多,冗余度越多,但空间利用率越低。因此,根据需求,在空间利用率和冗余度之间找到最佳的设置校验块的数量即可。
[0083]S4,当进行写操作时,RAID控制器接收待写入虚拟磁盘的数据,根据数据在虚拟磁盘中的偏移地址和数据的容量大小,通过虚拟磁盘的结构定义,将所述数据分段,再计算分段后的数据需要写入的数据块的块地址以及校验块的块地址;然后,向计算后得到的数据块地址写入分段后的数据,向计算后得到的校验块地址写入校验数据,返回写成功;
[0084]当进行读操作时,将所述虚拟磁盘的空间地址和大小转换后,由并行线程进行读取、汇总,即可读出数据;
[0085]S4,具体包括:
[0086]S4.1,RAID控制器监控1模块的空闲状态,当监控到1模块空闲时,执行S4.2 ;
[0087]S4.2,所述虚拟磁盘增加块条带冗余度的操作:
[0088]如果同时满足以下条件:
[0089]当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集;
[0090]则:所述虚拟磁盘基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别;通过本步骤,由于按优先级先后顺序增加各个块条带的冗余度,因此,在某一时刻,各个块条带的冗余度是不相同的,由此实现动态改变各个块条带冗余级别的效果。
[0091]其中,优先级冗余策略包括但不限于以下几种策略:(1)基于预定义的虚拟磁盘安全级别Vs,虚拟磁盘安全级别越高,则表明虚拟磁盘的重要度越高,则其优先级别越高;
(2)各个块条带所存储的具体数据的重要度,即:所存储的具体数据越重要,其优先级别越高;(3)各个块条带最后执行存储操作的时间,即:最后执行存储操作的时间离当前时间的时间间隔越小,其优先级别越高。
[0092]其中,预设校验算法可以为基于Reed-solomon算法设计的多元一次方程组原理,即:在该方程组的解为唯一的情况下,即可增加多级校验。
[0093]所述虚拟磁盘降低块条带冗余度的操作:
[0094]如果当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
[0095]通过本步骤,由于按优先级先后顺序降低各个块条带的冗余度,因此,在某一时刻,各个块条带的冗余度是不相同的,由此实现动态改变各个块条带冗余级别的效果。
[0096]例如,在初始时,生成4+1在线数据模式,即,初始生成的每一个块条带均为RAIDl级别,包括4个数据块和I个校验块,通过低级别的RAID进行实时在线保护,保证了数据读取速度;然后,当1空闲且有空闲空间时,对每个块条带动态增加I个冗余度,即增加I个校验块,从而增加存储系统的安全级别;如果存储空间允许,再不断增加校验块,每扩增一个校验块,即增加了存储系统的一个安全级别,并且,不同条带支持的冗余级别不同;当1空闲且空闲空间不够时,对每个块条带动态降低冗余度,从而释放可用空间。
[0097]由此可见,本发明中,首先通过在线模式生成初始虚拟磁盘,然后,在1空闲时,采用后台模式增加或降低冗余度,由于增加或降低冗余度的操作是在后台进行的,不需要占用在线模式时的1资源,因此,为一种异步模式;另外,本发明中,每个块条带的RAID级别可均不相同,并可进行动态调整,允许用户根据实际需要,优先将某个特定的块条带增加冗余度,从而提高了存储系统冗余级别调整的灵活性,更能满足用户存储需求。因此,本发明提供的可动态异步调整RAID级别的存储方法及存储系统,在不影响数据存取速度的前提下,充分利用空闲1和空闲空间,从而提升安全级别,更适用于应用于云存储和集中化存储的大规模应用场合。
[0098]如图2所示,本发明还提供一种可动态异步调整RAID级别的存储系统,包括:
[0099]分割模块,用于对由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块;
[0100]编号模块,用于对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PN: BN;
[0101]存储池定义模块,用于定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度;
[0102]虚拟磁盘定义模块,用于在所述存储池中定义由η行m列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件:
[0103]条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次;
[0104]条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量;
[0105]还定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定:
[0106]a、每个块条带中的存储真正数据的磁盘块数量:m_h ;其中,将存储真正数据的磁盘块简称为数据块;
[0107]b、每个块条带中的存储校验值的磁盘块数量:h ;其中,将存储校验值的磁盘块简称为校验块;
[0108]C、每个块条带中允许增强的校验块数量:M ;
[0109]d、虚拟磁盘安全级别:Vs ;
[0110]数据块数量初始值以校验块数量初始值设置模块,对于任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块1-Ι、磁盘块i_2..,磁盘块1-m ;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O彡h < m,h为自然数;
[0111]1监控模块,用于监控1模块的空闲状态;
[0112]块条带冗余度增加模块,用于当所述1监控模块监控到1模块空闲时,且满足以下条件:当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集;
[0113]则:基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别;
[0114]块条带冗余度降低模块,用于当所述1监控模块监控到1模块空闲时,且当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
[0115]综上所述,本发明提供的可动态异步调整RAID级别的存储方法及存储系统,在空间利用率和存取性能上找到最佳点,在不影响数据存取速度的前提下,充分利用好存储的空闲1和空闲空间,从而提升安全级别。
[0116]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
【权利要求】
1.一种可动态异步调整RAID级别的存储方法,其特征在于,包括以下步骤: SI,对于由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块; 对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PN:BN ; 然后,定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度; 将所有的已编号后的磁盘块存入已定义的所述存储池中; S2,在所述存储池中定义SnRm列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件: 条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次; 条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量; 另外,在创建所述虚拟磁盘时,定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定: a、每个块条带中的存储真正数据的磁盘块数量:m-h;其中,将存储真正数据的磁盘块简称为数据块; b、每个块条带中的存储校验值的磁盘块数量:h;其中,将存储校验值的磁盘块简称为校验块; C、每个块条带中允许增强的校验块数量:M ; d、虚拟磁盘安全级别:Vs ; S3,设按自上而下顺序共有η个原始块条带,分别记为:原始块条带1、原始块条带2...原始块条带η ; 设任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块1-Ι、磁盘块i_2..,磁盘块1-m ;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O < h < m,h为自然数; S4,当进行写操作时,RAID控制器接收待写入虚拟磁盘的数据,根据数据在虚拟磁盘中的偏移地址和数据的容量大小,通过虚拟磁盘的结构定义,将所述数据分段,再计算分段后的数据需要写入的数据块的块地址以及校验块的块地址;然后,向计算后得到的数据块地址写入分段后的数据,向计算后得到的校验块地址写入校验数据,返回写成功; 当进行读操作时,将所述虚拟磁盘的空间地址和大小转换后,由并行线程进行读取、汇总,即可读出数据; S4,具体包括: S4.1,RAID控制器监控1模块的空闲状态,当监控到1模块空闲时,执行S4.2 ; S4.2,所述虚拟磁盘增加块条带冗余度的操作: 如果同时满足以下条件: 当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集; 则:所述虚拟磁盘基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别; 所述虚拟磁盘降低块条带冗余度的操作: 如果当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
2.根据权利要求1所述的可动态异步调整RAID级别的存储方法,其特征在于,S2中,h为整数,且h> = O且h〈 = 5。
3.根据权利要求1所述的可动态异步调整RAID级别的存储方法,其特征在于,S2中,M为整数且0〈 = M〈 = 5。
4.根据权利要求1所述的可动态异步调整RAID级别的存储方法,其特征在于,所述优先级冗余策略包括: 基于预定义的虚拟磁盘安全级别Vs,虚拟磁盘安全级别越高,则表明虚拟磁盘的重要度越高,则其优先级别越高; 各个块条带所存储的具体数据的重要度,即:所存储的具体数据越重要,其优先级别越闻; 各个块条带最后执行存储操作的时间,即:最后执行存储操作的时间离当前时间的时间间隔越小,其优先级别越高。
5.根据权利要求1所述的可动态异步调整RAID级别的存储方法,其特征在于,S4.2中,所述预设校验算法为基于Reed-solomon算法设计的多元一次方程组原理,即:在该方程组的解为唯一的情况下,即可增加多级校验。
6.一种可动态异步调整RAID级别的存储系统,其特征在于,包括: 分割模块,用于对由多个物理磁盘组成的磁盘阵列,将每一个物理磁盘进行分割处理,由此得到多个磁盘块; 编号模块,用于对每一个所述磁盘块进行编号,该编号由物理磁盘号PN和磁盘块号BN联合组成,记为PN: BN; 存储池定义模块,用于定义存储池,所述存储池具有磁盘块分配表和块条带冗余度标识表;其中,所述块条带冗余度标识表用于记录每个块条带的冗余度; 虚拟磁盘定义模块,用于在所述存储池中定义由η行m列个磁盘块组成的虚拟磁盘,每一行的所有磁盘块形成一个磁盘块条带,简称为块条带;并约定所述块条带符合如下2个条件: 条件1、每个块条带中,具有相同物理磁盘号PN的磁盘块仅允许出现一次; 条件2、每个块条带具有的磁盘块数量需满足在创建所述虚拟磁盘时所设定的最少磁盘块数量; 还定义或默认定义所述虚拟磁盘的数据冗余级别,该数据冗余级别由如下4个参数决定: a、每个块条带中的存储真正数据的磁盘块数量:m-h;其中,将存储真正数据的磁盘块简称为数据块; b、每个块条带中的存储校验值的磁盘块数量:h;其中,将存储校验值的磁盘块简称为校验块; C、每个块条带中允许增强的校验块数量:M ; d、虚拟磁盘安全级别:Vs ; 数据块数量初始值以校验块数量初始值设置模块,对于任意一个原始块条带i均由m个磁盘块组成,按自左向右的顺序,分别记为:磁盘块i_l、磁盘块i_2..,磁盘块1-m;并且,所述原始块条带的m个磁盘块均为在线磁盘块;每一个所述原始块条带具有的m个磁盘块中,配置h个用于存储校验值的校验块,其他m-h个磁盘块为用于存储真正数据的数据块;其中,O彡h < m,h为自然数; 1监控模块,用于监控1模块的空闲状态; 块条带冗余度增加模块,用于当所述1监控模块监控到1模块空闲时,且满足以下条件:当前所述存储池的空闲磁盘块数量超过设定值;并且,存在校验块数量小于最大数量M的第一块条带集; 则:基于优先级冗余策略,按优先级从高到低顺序分别对所述第一块条带集中的各个块条带增加一个级别的冗余处理,即:为所获取的块条带增加一个校验块,并基于预设校验算法,向所增加的校验块中写入校验数据;更新所述块条带冗余度标识表中的块条带冗余度;重复本步骤,不断对各个块条带增加冗余度,改变各个块条带的RAID级别; 块条带冗余度降低模块,用于当所述1监控模块监控到1模块空闲时,且当前所述存储池的空闲磁盘块数量低于设定值,则按优先级从低到高顺序分别对各个块条带回收一个校验块,降低块条带的冗余级别;更新所述块条带冗余度标识表中的块条带冗余度标识;然后,在存储池的所述磁盘块分配表标识所回收的所述校验块为自由状态,使其可作为数据块使用。
【文档编号】G06F3/06GK104267913SQ201410559584
【公开日】2015年1月7日 申请日期:2014年10月20日 优先权日:2014年10月20日
【发明者】张宇 申请人:北京北亚时代科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1