固态硬盘的备电检测方法、装置和系统的制作方法
【专利摘要】本发明实施例提供一种固态硬盘的备电检测方法、装置和系统,首先通过获取存储系统中的N个RAID组的配置信息和N个RAID组的状态,N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在N个RAID组中确定状态为正常状态的M个RAID组,而后再根据M个RAID组的配置信息控制M个RAID组同时进行放电测试,其中M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。能够在保证性能和数据安全性的情况下实现SSD备电检测。
【专利说明】固态硬盘的备电检测方法、装置和系统
【技术领域】
[0001]本发明实施例涉及存储【技术领域】,尤其涉及一种固态硬盘的备电检测方法、装置和系统。
【背景技术】
[0002]CPU、内存、硬盘作为计算机系统中的三大件,CPU和内存处理性能随着技术发展迅速提高,而传统的机械硬盘由于其机械部分的限制,性能提高缓慢,成为了系统性能的瓶颈。外置存储系统也面临同样的问题,使用机械硬盘的存储系统虽然可以提供较高的性能,但是对于性能要求较高的应用,仍然无法满足要求。而固态硬盘(英文:Solid StateDrives,简称:SSD)作为新兴的存储介质,由于其性能高的特点逐步取代了传统机械硬盘成为了高性能应用的首选。
[0003]但是,SSD有其自身的缺点,SSD为了提高性能,内部设计了大容量的缓存,而掉电后缓存内的数据会丢失,为了解决这个问题,SSD内部设计了备电。现在主流的备电采用超级电容备电方式,但是超级电容故障率高。
[0004]为了检测超级电容故障,SSD自身会定期通过放电测试进行电量检测,尤其是做精确电量检测时,由于放电过多,剩余电量无法保证数据可靠性,必须将SSD设置为透写,即将SSD的写缓存(cache)禁用(disable),这样会导致SSD性能严重降低。对于独立冗余磁盘阵列(英文:Redundant Arrays of Independent Disks,简称:RAID)组来说,这个盘就变成了“慢盘”,RAID组一般由多个SSD组成,若一个或者多个SSD变成“慢盘”,就会导致整个RAID组性能下降,严重的会导致业务中断。
【发明内容】
[0005]本发明实施例提供一种固态硬盘的备电检测方法、装置和系统,能够在保证性能和数据安全性的情况下实现备电检测。
[0006]第一方面,提供一种固态硬盘的备电检测方法,应用于存储系统,所述存储系统包括N个RAID组,N为正整数,所述方法包括:
[0007]获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种;
[0008]在所述N个RAID组中确定状态为正常状态的M个RAID组;
[0009]根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0010]结合第一方面,在第一种可能的实现方式中,所述根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度包括:
[0011 ] 在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序;
[0012]按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0013]结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD
保持回写状态。
[0014]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:
[0015]在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所述数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任一个SSD0
[0016]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一SSD失效包括所述第一 SSD掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
[0017]结合第一方面的第三或第四种可能的实现方式,在第五种可能的实现方式中,通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构包括:
[0018]通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。
[0019]结合第一方面,在第六种可能的实现方式中,
[0020]若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态;
[0021]若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态;
[0022]若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
[0023]第二方面,提供一种检测装置,应用于存储系统,所述存储系统包括N个RAID组,N为正整数,所述检测装置还包括:
[0024]获取模块,获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种;
[0025]识别模块,在所述N个RAID组中确定状态为正常状态的M个RAID组;
[0026]处理模块,根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0027]结合第二方面,在第一种可能的实现方式中,所述处理模块具体用于:
[0028]在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序;
[0029]按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0030]结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD
保持回写状态。
[0031]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述检测装置还包括:
[0032]重构模块,用于在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任一个SSD。
[0033]结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述第一SSD失效包括所述第一 SSD掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
[0034]结合第二方面的第三或第四种可能的实现方式,在第五种可能的实现方式中,所述重构模块具体用于:
[0035]通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。
[0036]结合第二方面,在第六种可能的实现方式中,
[0037]若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态;
[0038]若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态;
[0039]若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
[0040]本发明实施例提供一种固态硬盘的备电检测方法和装置,能够在保证性能和数据安全性的情况下实现备电检测。
[0041]第三方面,提供一种存储系统,所述存储系统包括N个RAID组,N为正整数,所述存储系统还包括:所述第二方面或其上述任一种实现方式所述的检测装置。
[0042]本发明实施例提供一种固态硬盘的备电检测方法、装置和系统,首先通过获取存储系统中的N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在所述N个RAID组中确定状态为正常状态的M个RAID组,而后再根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。相比现有技术中,RAID组内的SSD的放电测试是由SSD自身进行控制的,每个SSD无法感知其它的SSD什么时候进行放电测试,因此,SSD做放电测试时,只能转为透写。SSD透写时,会降低该RAID组的性能,本发明实施例提供的技术方案中通过检测装置统一指示各个RAID组进行放电测试,控制每个RAID组中进行放电测试的SSD数量不超过其冗余度,SSD放电测试时保持回写,因此不会影响到该RAID组的性能,即使在测试过程中发生故障、掉电或者被拔出,依然不会影响到该RAID组的性能,由于采用了检测装置对各个RAID组进行统一指示,因此能够得知各个RAID组中的每个SSD的状态,并且由于SSD均发生掉电或者被拔出的SSD数量不会超过该RAID的冗余度,所以当SSD故障后进行更换,或者掉电/被拔出的SSD重新启用后,能够对该SSD进行数据重构,从而能够在保证性能和数据安全性的情况下实现备电检测。
【专利附图】
【附图说明】
[0043]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明实施例提供一种固态硬盘的备电检测方法的流程示意图;
[0045]图2为本发明实施例提供另一种固态硬盘的备电检测方法的流程示意图;
[0046]图3为本发明实施例提供的一种存储系统的结构不意图;
[0047]图4为本发明实施例提供的一种检测装置的结构示意图;
[0048]图5为本发明实施例提供的另一种检测装置的结构示意图;
[0049]图6为本发明实施例提供的又一种检测装置的结构示意图。
【具体实施方式】
[0050]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]应理解,本发明实施例可应用于包括一个或多个RAID的存储系统,其中,RAID是指独立磁盘冗余阵列,可以理解为由独立磁盘构成的具有冗余能力的存储阵列。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中,可以让很多磁盘驱动器同时传输数据,而这些磁盘驱动器在逻辑上又是一个磁盘驱动器,所以使用RAID可以达到单个磁盘驱动器几倍、几十倍甚至上百倍的速率。RAID还可以通过数据校验提供容错功能。在很多RAID模式中都有较为完备的相互校验及恢复的措施,甚至可以是直接相互的镜像备份,从而大大提高了 RAID系统的冗余度,提高了系统的稳定性和数据的安全性。在以下本发明提供实施例中,RAID组可以是上述RAID,该RAID可以是由SSD组成的。
[0052]本发明实施例提供一种固态硬盘的备电检测方法,如图1所示,该方法包括:
[0053]步骤101、获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种。
[0054]步骤102、在所述N个RAID组中确定状态为正常状态的M个RAID组。
[0055]步骤103、根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0056]本发明实施例提供一种固态硬盘的备电检测方法、装置和系统,首先通过获取存储系统中的N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在所述N个RAID组中确定状态为正常状态的M个RAID组,而后再根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。相比现有技术中,RAID组内的SSD的放电测试是由SSD自身进行控制的,每个SSD无法感知其它的SSD什么时候进行放电测试,因此,SSD做放电测试时,只能转为透写。SSD透写时,会降低该RAID组的性能,本发明实施例提供的技术方案中通过检测装置统一指示各个RAID组进行放电测试,控制每个RAID组中进行放电测试的SSD数量不超过其冗余度,SSD放电测试时保持回写,因此不会影响到该RAID组的性能,即使在测试过程中发生故障、掉电或者被拔出,依然不会影响到该RAID组的性能,由于采用了检测装置对各个RAID组进行统一指示,因此能够得知各个RAID组中的每个SSD的状态,并且由于SSD均发生掉电或者被拔出的SSD数量不会超过该RAID的冗余度,所以当SSD故障后进行更换,或者掉电/被拔出的SSD重新启用后,能够对该SSD进行数据重构,从而能够在保证性能和数据安全性的情况下实现备电检测。
[0057]为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明的实施例提供的固态硬盘的备电检测方法进行详细说明,如图2所示,该方法包括:
[0058]步骤201、获取所述N个RAID组的配置信息和所述N个RAID组的状态。
[0059]其中,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种。
[0060]在对N个RAID组进行放电测试前,需要首先知道每个RAID组的RAID配置(或称为RAID类型),通常,当前RAID技术主要包含RAIDO?RAID7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:
[0061]RAIDO:RAID0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。RAIDO只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAIDO不能应用于数据安全性要求高的场合。
[0062]RAIDl:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID I可以提高读取性能。RAID I是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。
[0063]RAID0+1:也被称为RAIDlO标准,实际是将RAIDO和RAIDl标准结合的产物,在连续地以位或字节为单位分割数据并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥有RAIDO的超凡速度和RAID I的数据高可靠性,但是CPU占用率同样也更高,而且磁盘的利用率比较低。
[0064]RAID2:将数据条块化地分布于不同的SSD上,条块单位为位或字节,并使用称为“加重平均纠错码(海明码)”的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID2技术实施更复杂,因此在商业环境中很少使用。
[0065]RAID3:它同RAID2非常类似,都是将数据条块化分布于不同的SSD上,区别在于RAID3使用简单的奇偶校验,并用单块磁盘存放奇偶校验信息,该磁盘作为奇偶校验盘。如果一块磁盘失效,奇偶校验盘及其他数据盘可以重新产生数据;如果奇偶盘失效则不影响数据使用。RAID3对于大量的连续数据可提供很好的传输率,但对于随机数据来说,奇偶盘会成为写操作的瓶颈。
[0066]RAID4:RAID4同样也将数据条块化并分布于不同的磁盘上,但条块单位为块或记录。RAID4使用一块磁盘作为奇偶校验盘,每次写操作都需要访问奇偶校验盘,这时奇偶校验盘会成为写操作的瓶颈,因此RAID4在商业环境中也很少使用。
[0067]RAID5:RAID5不单独指定的奇偶盘,而是在所有磁盘上交叉地存取数据及奇偶校验信息。在RAID5上,读/写指针可同时对阵列设备进行操作,提供了更高的数据流量。RAID5更适合于小数据块和随机读写的数据。RAID3与RAID5相比,最主要的区别在于RAID3每进行一次数据传输就需涉及到所有的阵列盘;而对于RAID5来说,大部分数据传输只对一块磁盘操作,并可进行并行操作。在RAID5中有“写损失”,即每一次写操作将产生四个实际的读/写操作,其中两次为读旧的数据及奇偶信息,两次为写新的数据及奇偶信息。
[0068]RAID6:与RAID5相比,RAID6增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法,数据的可靠性非常高,即使两块磁盘同时失效也不会影响数据的使用。但RAID6需要分配给奇偶校验信息更大的磁盘空间,相对于RAID5有更大的“写损失”,因此“写性能”非常差。较差的性能和复杂的实施方式使得RAID6很少得到实际应用。
[0069]RAID7:这是一种新的RAID标准,其自身带有智能化实时操作系统和用于存储管理的软件工具,可完全独立于主机运行,不占用主机CPU资源。RAID7可以看作是一种存储计算机(Storage Computer),它与其他RAID标准有明显区别。除了以上的各种标准,我们还可以如RAID0+1那样结合多种RAID规范来构筑所需的RAID阵列,例如RAID5+0 (RAID50)就是一种应用较为广泛的阵列形式。用户一般可以通过灵活配置磁盘阵列来获得更加符合其要求的磁盘存储系统。
[0070]RAID组的RAID类型不同,其所包括的SSD数量、该RAID组的冗余度也不同,其中,所谓冗余度,就是从安全角度考虑多余的一个量,这个量就是为了保障仪器、设备或某项工作在非正常情况下也能正常运转,在这里可以理解为在不影响该RAID组正常工作的情况下,所述允许出现的失效SSD的最大数量,示例性的,RAID5的冗余度为1,RAID6的冗余度为2,RAID10(n+n)的冗余度为η (n+n为RAIDlO的SSD数量)等等。因此,需要获取的每个RAID组的配置信息应当包括该RAID组的SSD数量,以及该RAID组的冗余度,除此之外还应当获取该RAID组中每个SSD的标识,比如SSDID。
[0071]另外,所述N个RAID组的状态包括:正常状态、降级状态和失效状态中的一种,所述N个RAID组的状态可以通过其中任一个RAID组中的SSD的状态来确定,例如:
[0072]若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态;
[0073]若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态;
[0074]若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。在获取了所述N个RAID组的配置信息和状态后,执行步骤202。
[0075]步骤202、在所述N个RAID组中确定状态为正常状态的M个RAID组。
[0076]具体的,根据步骤201中获取的所述N个RAID组的状态后,在其中确定状态为正常状态的M个RAID组,用于对这M个RAID组进行后续放电测试,对于状态为失效状态和降级状态的RAID组不进行放电测试。
[0077]步骤203、在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序。
[0078]其中,每个RAID组中的每个SSD的放电测试周期可以包括每个RAID组中的每个SSD上次放电的时间和周期时长。根据每个SSD上次放电的时间和周期时长可以确定每个SSD在其所属的磁盘阵列中的放电测试顺序。当然,除此之外,也可能采用其他的策略来确定每个RAID组的中的各个SSD的放电测试顺序。
[0079]步骤204、按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0080]其中,需要说明的是RAID组的RAID类型不同,其放电测试顺序也不同以及同时进行放电测试的SSD数量也不同,只要控制每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量不超过该RAID组的冗余度即可,例如,图3所示,存储系统中包括3个RAID组,分别为RAID5、RAID6和RAIDlO (3+3),每个RAID组均由SSD组成,由于其冗余度分别为1、2、3,因此RAID5、RAID6和RAIDlO这三个RAID组同时可以进行放电测试的最大SSD数量也分别为1、2、3,故这三个RAID组的放电测试顺序可以如图3所示的顺序(其中序号相同的为可以同时进行放电测试的SSD),即RAID5的放电测试顺序由前到后分别为SSD0、SSD1、SSD2、SSD3、SSD4,RAID6的放电测试顺序为首先进行SSD5和SSD6的放电测试,再进行SSD7和SSD8的放电测试,最后进行SSD9和SSDlO的放电测试,RAIDlO的放电测试顺序为首先进行SSD11、SSD12、SSD13的放电测试,再进行SSD14、SSD15和SSD16的放电测试。
[0081]具体的放电测试过程中,可以根据每个SSD的标识(如前述SSDO?16)来对各个RAID组的放电测试进行控制。例如,当获得某一 RAID组的放电测试顺序后,系统中检测装置获取该放电测试顺序当前要进行放电测试的SSD的标识,而后系统中检测装置向该标识对应的SSD发送进行放电测试的指令,并且记录当前正在进行放电测试的SSD的标识,当该SSD完成放电测试后,系统中检测装置根据该RAID组的放电测试顺序进行下一个或多个SSD的放电测试。
[0082]另外,需要说明的是,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD保持回写(Write back)状态。回写,是指更新数据时,只是先把数据写入内存(cache,也称缓存),并不同步更新到存储介质(memory),只是在内存要写入新的数据时,才把内存的数据更新到存储介质,并释放内存的空间将新的数据再写入内存。采用回写,可以在SSD放电测试时保持SSD的性能不被降低。但是由于,保持回写状态时,一旦发生掉电或者该SSD被拔出时,该SSD的内存中的数据会丢失,因此,本发明实施例提供的检测方法中还可以包括:
[0083]步骤205、在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构。所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任一个SSD。
[0084]其中,所述第一 SSD失效包括所述第一 SSD掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
[0085]具体的,上述所有数据可以包括但不限于第一 SSD的内存和存储介质中的总数据,此时对所述第一 SSD的所有数据进行重构可以包括:通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。其原理是,由于一个RAID把数据和与数据相对应的奇偶校验信息存储到组成该RAID的各个SSD上。当该RAID中的SSD数据发生损坏后,只要出现数据损坏的SSD数量不超过其冗余度,可以利用剩下的其他SSD上存储的数据和数据相应的奇偶校验信息通过预设的算法去恢复被损坏的数据。由此可见,能够在保证性能和数据安全性的情况下实现备电检测。
[0086]综上所述,本发明实施例提供一种固态硬盘的备电检测方法,首先通过获取存储系统中的N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在所述N个RAID组中确定状态为正常状态的M个RAID组,而后再根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。相比现有技术中,RAID组内的SSD的放电测试是由SSD自身进行控制的,每个SSD无法感知其它的SSD什么时候进行放电测试,因此,SSD做放电测试时,只能转为透写。SSD透写时,会降低该RAID组的性能,本发明实施例提供的技术方案中通过检测装置统一指示各个RAID组进行放电测试,控制每个RAID组中进行放电测试的SSD数量不超过其冗余度,SSD放电测试时保持回写,因此不会影响到该RAID组的性能,即使在测试过程中发生故障、掉电或者被拔出,依然不会影响到该RAID组的性能,由于采用了检测装置对各个RAID组进行统一指示,因此能够得知各个RAID组中的每个SSD的状态,并且由于SSD均发生掉电或者被拔出的SSD数量不会超过该RAID的冗余度,所以当SSD故障后进行更换,或者掉电/被拔出的SSD重新启用后,能够对该SSD进行数据重构,从而能够在保证性能和数据安全性的情况下实现备电检测。
[0087]本发明实施例还提供一种检测装置01,应用于存储系统,所述存储系统包括N个RAID组,N为正整数,如图4所示,所述检测装置01包括:
[0088]获取模块011,获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种;
[0089]识别模块012,在所述N个RAID组中确定状态为正常状态的M个RAID组;
[0090]处理模块013,根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0091]可选的,所述处理模块013可以具体用于:
[0092]在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序;
[0093]按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0094]可选的,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD保持回写状态。
[0095]可选的,如图5所示,所述检测装置01还可以包括:
[0096]重构模块014,用于在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一RAID组中的任一个SSD。
[0097]可选的,所述第一 SSD失效包括所述第一 SSD掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
[0098]可选的,所述重构模块014可以具体用于:
[0099]通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。
[0100]可选的,
[0101]若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态;
[0102]若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态;
[0103]若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
[0104]可选的,所述N个RAID组为独立磁盘冗余阵列RAID。
[0105]本实施例用于实现上述各方法实施例,本实施例中各个单元的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
[0106]综上所述,本发明实施例提供一种检测装置,首先通过获取存储系统中的N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在所述N个RAID组中确定状态为正常状态的M个RAID组,而后再根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。相比现有技术中,RAID组内的SSD的放电测试是由SSD自身进行控制的,每个SSD无法感知其它的SSD什么时候进行放电测试,因此,SSD做放电测试时,只能转为透写。SSD透写时,会降低该RAID组的性能,本发明实施例提供的技术方案中通过检测装置统一指示各个RAID组进行放电测试,控制每个RAID组中进行放电测试的SSD数量不超过其冗余度,SSD放电测试时保持回写,因此不会影响到该RAID组的性能,即使在测试过程中发生故障、掉电或者被拔出,依然不会影响到该RAID组的性能,由于采用了检测装置对各个RAID组进行统一指示,因此能够得知各个RAID组中的每个SSD的状态,并且由于SSD均发生掉电或者被拔出的SSD数量不会超过该RAID的冗余度,所以当SSD故障后进行更换,或者掉电/被拔出的SSD重新启用后,能够对该SSD进行数据重构,从而能够在保证性能和数据安全性的情况下实现备电检测。
[0107]本发明实施例还提供一种检测装置02,应用于存储系统,所述存储系统包括N个RAID组,N为正整数,如图6所示,所述检测装置02包括:处理器021、存储器022和接口023,处理器021、存储器022和接口 023通过总线024相连接,接口 023用于与其他设备通信,存储器022用于存储计算机程序0221,处理器021用于执行该计算机程序0221,处理器021执行该计算机程序0221用于:
[0108]获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种;
[0109]在所述N个RAID组中确定状态为正常状态的M个RAID组;
[0110]根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0111]可选的,处理器021执行该计算机程序0221可以具体用于:
[0112]在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序;
[0113]按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
[0114]可选的,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD保持回写状态。
[0115]可选的,处理器021执行该计算机程序0221可以还用于:
[0116]在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任一个SSD0
[0117]可选的,所述第一 SSD失效包括所述第一 SSD掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
[0118]可选的,处理器021执行该计算机程序0221可以具体用于:
[0119]通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。
[0120]可选的,若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态;
[0121]若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态;
[0122]若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
[0123]可选的,所述N个RAID组为独立磁盘冗余阵列RAID。
[0124]本实施例用于实现上述各方法实施例,本实施例中各个单元的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
[0125]综上所述,本发明实施例提供一种检测装置,首先通过获取存储系统中的N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种,其次在所述N个RAID组中确定状态为正常状态的M个RAID组,而后再根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。相比现有技术中,RAID组内的SSD的放电测试是由SSD自身进行控制的,每个SSD无法感知其它的SSD什么时候进行放电测试,因此,SSD做放电测试时,只能转为透写。SSD透写时,会降低该RAID组的性能,本发明实施例提供的技术方案中通过检测装置统一指示各个RAID组进行放电测试,控制每个RAID组中进行放电测试的SSD数量不超过其冗余度,SSD放电测试时保持回写,因此不会影响到该RAID组的性能,即使在测试过程中发生故障、掉电或者被拔出,依然不会影响到该RAID组的性能,由于采用了检测装置对各个RAID组进行统一指示,因此能够得知各个RAID组中的每个SSD的状态,并且由于SSD均发生掉电或者被拔出的SSD数量不会超过该RAID的冗余度,所以当SSD故障后进行更换,或者掉电/被拔出的SSD重新启用后,能够对该SSD进行数据重构,从而能够在保证性能和数据安全性的情况下实现备电检测。
[0126]本发明实施例还提供一种存储系统,所述存储系统包括N个RAID组,N为正整数,所述存储系统还包括:前述实施例所述的检测装置01或02。
[0127]在本发明所提供的几个实施例中,应该理解到,所提供的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0128]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0129]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0130]上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(Random Access Memory, RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0131]本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
【权利要求】
1.一种固态硬盘SSD的备电检测方法,其特征在于,应用于存储系统,所述存储系统包括N个独立磁盘冗余阵列RAID组,N为正整数,所述方法包括: 获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种; 在所述N个RAID组中确定状态为正常状态的M个RAID组; 根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
2.根据权利要求1所述的方法,其特征在于,所述根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度包括: 在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序; 按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
3.根据权利要求1或2所述的方法,其特征在于,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD保持回写状态。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任意一个SSD0
5.根据权利要求4所述的方法,其特征在于,所述第一SSD失效包括所述第一 SSD失效、掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
6.根据权利要求4或5所述的方法,其特征在于,通过所述第一RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构包括: 通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质中的总数据进行重构。
7.根据权利要求1所述的方法,其特征在于, 若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态; 若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态; 若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
8.一种检测装置,其特征在于,应用于存储系统,所述存储系统包括N个RAID组,N为正整数,所述检测装置还包括: 获取模块,获取所述N个RAID组的配置信息和所述N个RAID组的状态,所述N个RAID组中的每个RAID组的配置信息包括该RAID组的SSD数量和冗余度,每个RAID组的状态包括正常状态、降级状态和失效状态中的一种; 识别模块,在所述N个RAID组中确定状态为正常状态的M个RAID组; 处理模块,根据所述M个RAID组的配置信息控制所述M个RAID组同时进行放电测试,其中所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
9.根据权利要求8所述的检测装置,其特征在于,所述处理模块具体用于: 在所述M个RAID组中,根据每个RAID组中的每个SSD的放电测试周期获取该RAID组的SSD放电测试顺序,所述SSD放电测试顺序用于指示每个RAID组中的每个SSD在该RAID组中的放电测试顺序; 按照每个RAID组的SSD放电测试顺序指示每个RAID组中的每个SSD进行放电测试,其中每个RAID组进行放电测试时该RAID组中同时进行放电测试的SSD的数量小于或等于该RAID组的冗余度。
10.根据权利要求8或9所述的检测装置,其特征在于,所述M个RAID组中的每个RAID组进行放电测试时,该RAID组中进行放电测试的SSD保持回写状态。
11.根据权利要求10所述的检测装置,其特征在于,所述检测装置还包括: 重构模块,用于在第一 RAID组中的第一 SSD进行放电测试时,若检测到所述第一 SSD失效,则通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的所有数据进行重构;所述第一 RAID组为所述M个RAID组中的任一个RAID组,所述第一 SSD为所述第一 RAID组中的任一个SSD。
12.根据权利要求11所述的检测装置,其特征在于,所述第一SSD失效包括所述第一SSD失效、掉电,或者所述第一 SSD被拔出;所述第一 RAID组中其他的正常SSD包括:所述第一 RAID组中除所述第一 SSD外当前未进行放电测试的SSD。
13.根据权利要求11或12所述的检测装置,其特征在于,所述重构模块具体用于: 通过所述第一 RAID组中其他的正常SSD对所述第一 SSD的内存和存储介质的总数据进行重构。
14.根据权利要求8所述的检测装置,其特征在于, 若任一个RAID组中不存在损坏的SSD,则该RAID组的状态为所述正常状态; 若任一个RAID组中存在损坏的SSD,所述损坏的SSD数量小于或者等于该RAID组的冗余度,则该RAID组的状态为所述降级状态; 若任一个RAID组中存在损坏的SSD,且所述损坏的SSD数量大于该RAID组的冗余度,则该RAID组的状态为所述失效状态。
15.一种存储系统,其特征在于,所述存储系统包括N个RAID组,N为正整数,所述存储系统还包括:权利要求8至14任一项所述的检测装置。
【文档编号】G06F11/22GK104484252SQ201410829093
【公开日】2015年4月1日 申请日期:2014年12月26日 优先权日:2014年12月26日
【发明者】徐明军, 霍杰 申请人:华为技术有限公司