一种对RAID进行控制的方法、装置和系统转让专利

申请号 : CN200910161791.5

文献号 : CN101630237B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕先锋曲锐陈光刘林超

申请人 : 成都市华为赛门铁克科技有限公司

摘要 :

本发明实施例公开了一种对RAID进行控制的方法、装置和系统。本发明实施例所提供的方法,实际上是在检测到RAID中有成员盘离线时,并不是直接将该成员盘的离线状态告知RAID控制器,而是将RAID控制器对离线成员盘下发的命令保存起来,为离线成员盘设置了一个安全时限,如果在安全时限内该离线成员盘又上线了,就将存储的RAID控制器对离线成员盘下发的命令返回给该成员盘,成员盘可以继续进行正常状态,从而避免了如同现有技术中直接将该成员盘离线状态汇报给RAID控制器,造成RAID进入降级模式的情况。本发明实施例所提供的方法是将安全时限内突发性成员盘离线和上线事件进行屏蔽,从而避免这种安全时限内的成员盘离线和上线事件导致RAID读写能力下降。

权利要求 :

1.一种对RAID进行控制的方法,其特征在于,包括:

检测RAID的成员盘是否离线;

在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;

检测所述离线成员盘是否上线;

在预设安全时限内检测到所述离线成员盘上线时,将临时保存的RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作。

2.根据权利要求1所述的方法,其特征在于,还包括:

在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线信息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败的信息。

3.根据权利要求2所述的方法,其特征在于,还包括:

所述RAID控制器检测所述离线成员盘所对应的扩展框是否下电;

在所述离线成员盘所对应的扩展框下电时,所述RAID控制器保存下电之前所述离线成员盘所在的RAID的成员盘的信息及状态;

所述RAID控制器检测所述扩展框是否上电;

在所述扩展框上电时,所述RAID控制器检测所述扩展框中成员盘中的信息与扩展框下电前保存的信息是否一致,如果一致,则恢复RAID至扩展框下电之前的状态。

4.根据权利要求3所述的方法,其特征在于,还包括:

在所述扩展框上电时,所述RAID控制器若检测到所述扩展框中成员盘中的信息与扩展框下电前保存的信息不一致,则保持RAID当前状态。

5.根据权利要求1~4任意一项所述的方法,其特征在于,还包括:在所述RAID的成员盘离线时,将所述离线成员盘的状态设置为异常状态。

6.根据权利要求1~4任意一项所述的方法,其特征在于,还包括:在预设安全时限内检测到所述离线成员盘上线时,将所述离线成员盘的状态设置为正常状态。

7.一种对RAID进行控制的离线检测装置,其特征在于,包括:第一检测单元,用于检测RAID的成员盘是否离线;

存储单元,用于在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;

第二检测单元,用于检测所述离线成员盘是否上线;

下发单元,用于在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作。

8.根据权利要求7所述的装置,其特征在于,还包括:

发送单元,用于在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线信息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败的信息。

9.一种对RAID进行控制的系统,其特征在于,包括:离线检测装置和RAID控制器,其中:所述离线检测装置,用于检测RAID的成员盘是否离线;在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作;在预设安全时限内未检测到所述离线成员盘上线时,在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线信息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败的信息;

所述RAID控制器,用于接收所述离线检测装置发送的RAID成员盘的离线信息,并检测所述离线成员盘所对应的扩展框是否下电;在所述离线成员盘所对应的扩展框下电时,保存扩展框下电前所述离线成员盘上存储的信息;检测所述扩展框是否上电;在所述扩展框上电时,检测所述扩展框中成员盘中的信息与扩展框下电前保存的信息是否一致,如果一致,则恢复RAID至扩展框下电之前的状态。

10.根据权利要求9所述的系统,其特征在于,

所述RAID控制器,还用于在所述扩展框上电时,若检测到所述扩展框中成员盘中的信息与扩展框下电前保存的信息不一致,则保持RAID当前状态。

说明书 :

一种对RAID进行控制的方法、装置和系统

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种对RAID进行控制的方法、装置和系统。

背景技术

[0002] 随着信息技术的发展,网络带宽和处理器性能都得到了飞快的提升。但是计算机最重要的外部存储设备-磁盘,不但一直没有摆脱系统性能瓶颈的角色,而且在数据安全上也存在潜在的隐患。一旦磁盘损坏,其造成的损失可能是无法估量的。而独立磁盘冗余阵列(RAID,Redundant Array of IndependentDisks)技术,则是目前采用的最广泛的用来提升磁盘存储性能和数据安全的技术。
[0003] RAID通过将多个磁盘组合成一个阵列,将数据有选择性的分布在这个阵列上,达到提高数据读写速度的目的;同时利用镜像冗余或者校验冗余技术,将写入磁盘的数据进行备份,达到提升数据安全性的目的。
[0004] 当RAID(RAID0除外)中的一个成员盘失效后,RAID控制器通过调整该RAID中其他成员盘的功能来保证数据的一致性,使该RAID继续工作,这种工作模式为降级模式。 [0005] 当RAID中的某个成员盘离线导致RAID工作在降级模式时,该RAID的读写性能下降;如果该RAID中的多个成员盘都离线则可能进一步造成RAID故障,数据丢失。 发明内容
[0006] 有鉴于此,本发明实施例提供一种对RAID进行控制的方法、装置和系统,对RAID进行保护,保证RAID的读写能力不受影响。
[0007] 为实现上述目的,本发明实施例提供了如下技术方案:
[0008] 一种对RAID进行控制的方法,其特征在于,包括:
[0009] 检测RAID的成员盘是否离线;
[0010] 在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;
[0011] 检测所述离线成员盘是否上线;
[0012] 在预设安全时限内检测到所述离线成员盘上线时,将临时保存的RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作。 [0013] 一种对RAID进行控制的离线检测装置,其特征在于,包括:
[0014] 第一检测单元,用于检测RAID的成员盘是否离线;
[0015] 存储单元,用于在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;
[0016] 第二检测单元,用于检测所述离线成员盘是否上线;
[0017] 下发单元,用于在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作。
[0018] 一种对RAID进行控制的系统,其特征在于,包括:离线检测装置和RAID控制器,其中:
[0019] 所述离线检测装置,用于检测RAID的成员盘是否离线;在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作;在预设安全时限内未检测到所述离线成员盘上线时,在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线信息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败的信息;
[0020] 所述RAID控制器,用于接收所述离线检测装置发送的RAID成员盘的离线信息,并检测所述离线成员盘所对应的扩展框是否下电;在所述离线成员盘所对应的扩展框下电时,保存扩展框下电前所述离线成员盘上存储的信息;检测所述扩展框是否上电;在所述扩展框上电时,检测所述扩展框中成员盘中的信息与扩展框下电前保存的信息是否一致,如果一致,则恢复RAID至扩展框下电之前的状态。
[0021] 可见,在本发明实施例中,检测到RAID中有成员盘离线时,并不是直接将该成员盘的离线状态告知RAID控制器,而是将RAID控制器对离线成员盘下发的命令保存起来,为离线成员盘设置了一个安全时限,如果在安全时限内该离线成员盘又上线了,就将存储的该RAID控制器对离线成员盘下发的命令返回给该成员盘,成员盘可以继续进行正常状态,从而避免了如同现有技术中直接将该成员盘离线状态汇报给RAID控制器,造成RAID进入降级模式的情况。本发明实施例所提供的方法是将安全时限内突发性成员盘离线和上线事件进行了屏蔽,从而避免这种安全时限内的成员盘离线和上线事件导致RAID读写能力的下降。

附图说明

[0022] 为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1为本发明一实施例所提供的方法的流程图;
[0024] 图2为本发明另一实施例所提供的方法的流程图;
[0025] 图3为本发明另一实施例所提供的方法的流程图;
[0026] 图4为本发明一实施例所提供的一装置的结构示意图;
[0027] 图5为本发明一实施例所提供的系统的结构示意图。

具体实施方式

[0028] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例公开了一种对RAID进行控制的方法、装置和系统,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步 详细说明。
[0029] 参见图1,本发明一实施例所提供的方法包括:
[0030] S101,检测RAID的成员盘是否离线。
[0031] S102,在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存。
[0032] S103,检测所述离线成员盘是否上线。
[0033] S104,在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作。 [0034] 现有技术中,RAID中的各个成员盘都是由RAID控制器进行控制的。如果RAID控制器检测到某一成员盘离线后,会通过调整该RAID中其他成员盘的功能来保证数据的一致性,使该RAID在降级模式下工作。但是此时,RAID的读写能力都下降了,实际上影响了正常的读写。
[0035] 本发明实施例所提供的方法,在检测到RAID中有成员盘离线时,并不是直接将该成员盘的离线状态告知RAID控制器,而是将RAID控制器对离线成员盘下发的命令保存起来,为离线成员盘设置了一个安全时限,如果在安全时限内该离线成员盘又上线了,就将存储的该RAID控制器对离线成员盘下发的命令返回给该成员盘,成员盘可以继续进行正常状态,从而避免了如同现有技术中直接将该成员盘离线状态汇报给RAID控制器,造成RAID进入降级模式的情况。本发明实施例所提供的方法是将安全时限内突发性成员盘离线和上线事件进行了屏蔽,从而避免这种安全时限内的成员盘离线和上线事件导致RAID读写能力的下降。
[0036] 当然了,并不是所有的成员盘在离线之后都能够在安全时限内再次上线,所以在实际应用中,图1所述的方法还包括:
[0037] S105,在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线消息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败。
[0038] 通过上述两个步骤,对不能在安全时限内上电的成员盘进行了有效的处 理,保证了整个RAID的正常工作。
[0039] 下面结合具体的应用场景对本发明实施例所提供的方法进行详细描述。 [0040] 本发明实施例所提供的方法可以应用于多种RAID级别。以RAID5为例,假设有一RAID5阵列,其中具有5个成员盘。为描述方便,依次记为1号成员盘~5号成员盘。参见图2,结合上述场景,本发明实施例所提供的方法包括:
[0041] S201,对1号成员盘~5号成员盘的运行状态进行检测。
[0042] S202,判断是否检测到成员盘离线,如果是,进入步骤S203,如果否,返回步骤S201。
[0043] S203,确定离线成员盘为4号成员盘。
[0044] 为描述方便,假设4号成员盘离线。当然,一次也可能有多个成员盘离线的情况,与一个成员盘离线做同样的处理,此处以一个成员盘离线的情况为例进行说明。 [0045] S204,将4号成员盘设置为状态异常,并且将RAID控制器对4号成员盘下发的命令进行临时保存。
[0046] 之所以要将RAID控制器对4号成员盘下发的命令进行保存实际上是因为此时4号成员盘已经离线了,目前这些命令4号成员盘无法处理,为防止数据的丢失,所以暂时进行保存。
[0047] S205,判定上述离线成员盘的离线时间是否已经到达安全时限,如果否,进入步骤S206,如果是,进入步骤S208。
[0048] S206,判定是否检测到4号成员盘上线,如果是,进入步骤S207,否则,进入步骤S205。
[0049] S207,将4号成员盘设置为状态正常,将所保存的RAID控制器对4号成员盘下发的命令发送给4号成员盘,以使4号成员盘恢复工作。
[0050] 通过S205~S207可以看出,安全时限是当前系统可以容忍的一个时间阈值。这个时间阈值实际上是给4号成员盘的一个等待时间。将本该由4号成员盘处理的命令进行临时存储,如果在安全时限内,4号成员盘上线,就恢复了正常状态,这个过程中,4号成员盘离线、上线的过程就被屏蔽了起来,不会对RAID产生影响。
[0051] S208,将4号成员盘设置为离线状态,将4号成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线消息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败。
[0052] S209,RAID控制器对1、2、3、5号成员盘进行调整后1、2、3、5号成员以调整后的状态继续工作。
[0053] 本发明实施例所提供的方法,将安全时限内RAID的成员盘离线-上线的过程进行有效的屏蔽,避免了因成员盘短暂离线即造成RAID进入降级模式的情况,保证了RAID的读写能力,从而提高了RAID的运行效率。
[0054] RAID中的成员盘在进行工作时是相互影响的,如果RAID离线的成员盘过多,就不仅仅是使RAID降级,而是会导致RAID变为故障状态。
[0055] 造成RAID成员盘离线的原因很多,其中,扩展框下电是非常典型的一种。实际应用中,通过扩展框可以挂接更多磁盘,从而获得更大的存储空间。扩展框如果下电将导致与扩展框相连接的所有RAID的成员盘全部离线。显然,这种情况的出现会给RAID所在的系统带来非常恶劣的影响,因此,为了扩展框上电后使RAID能够快速自恢复,参见图3,仍然应用图2所示的实施例对应的场景,本发明实施例所提供的方法为:
[0056] S301,对1号成员盘~5号成员盘的运行状态进行检测。
[0057] S302,确定离线成员盘数目,并判断当前磁盘阵列中未离线的成员盘数目是否大于预设成员盘数目阈值,如果否,进入步骤303,如果是,返回步骤S301。 [0058] 实际应用中,每一种RAID级别都需要一定的成员盘数目来保证它的基本运行,将这个必要的成员盘数目即为成员盘数目阈值。当RAID中可用的成员盘数目少于成员盘数目阈值时,该RAID就无法正常工作了。
[0059] 为描述方便,以RAID5为例,假设当前场景中RAID5阵列的3、4、5号成员盘的状态都为离线状态。该RAID5阵列共有5个成员盘,现在有三个离线,只剩下两个。而对RAID5阵列来说,要保证正常工作,至少需要3个成员盘。故可以将RAID5阵列的成员盘数目阈值设置为3个。5个成员3个离线,显然,剩下的2个成员盘数目已经小于成员盘数目阈值,不能再支持RAID5正常工作。S303,检测到当前磁盘阵列的扩展框下电,进入步骤S304。 [0060] 可选地,也可以在检测到RAID成员盘离线时即检测当前RAID的扩展框是否下电,而不需要根据未下电磁盘数进行判定,这样做,安全性更高。
[0061] S304,保存扩展框下电前所述离线成员盘所在的RAID的成员盘的信息以及状态。 [0062] S305,检测到前述扩展框上电,进入步骤S306。
[0063] S306,在所述扩展框上电时,检测所述扩展框中成员盘中的信息与扩展框下电前保存的信息是否一致,如果一致,则恢复RAID5至扩展框下电之前的状态。 [0064] 可选地,还可以根据离线成员盘的数量,将RAID设置为降级或者故障状态。 [0065] 可选地,在所述扩展框上电时,若检测到所述扩展框中成员盘中的信息与扩展框下电前保存的信息不一致,则保持RAID当前状态。在所述扩展框上电时,当检测到所述扩展框中成员盘中的信息与扩展框下电前保存的信息不一致,则认为RAID成员盘发生变化,此时由于新接入磁盘内的数据不正确,因此RAID不能恢复,RAID将保持当前状态,如果RAID在下电时的状态被设置为降级或故障,则就保持为降级或者故障状态。 [0066] 本发明实施例所提供的方法,对RAID中大多数成员盘离线的状况进行了进一步的分析,当确定造成大多数成员盘下电的原因为扩展框下电时,通过对各个成员盘的信息进行及时存储保证了在扩展框上电后RAID成员盘信息的快速恢复,从而避免了RAID数据丢失的情况,提高了RAID的安全性。
[0067] 本发明实施例还提供一种对RAID进行控制的离线检测装置,参见图4,该装置包括:
[0068] 第一检测单元401,用于检测RAID的成员盘是否离线;
[0069] 存储单元402,用于在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;
[0070] 第二检测单元403,用于检测所述离线成员盘是否上线;
[0071] 下发单元404,用于在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员 盘,以使所述离线成员盘恢复工作。
[0072] 在本发明一实施例中,图4所示的装置可以位于设备驱动层。
[0073] 本发明实施例所提供的离线检测装置,在检测到RAID中有成员盘离线时,并不是直接将该成员盘的离线状态告知RAID控制器,而是将RAID控制器对离线成员盘下发的命令保存起来,并为离线成员盘设置了一个安全时限,如果在安全时限内该离线成员盘又上线了,即可将存储的该RAID控制器对离线成员盘下发的命令返回给该离线成员盘,该离线成员盘可以继续进行正常状态,从而避免了现有技术中直接将该成员盘离线状态汇报给RAID控制器,造成RAID进入降级状态的情况。本发明实施例所提供的装置将安全时限内突发性成员盘离线和上线事件进行了屏蔽,从而避免这种安全时限内的成员盘离线和上线事件导致RAID读写能力的下降。
[0074] 实际应用中,并不是所有的离线成员盘都能够在安全时限内再次上线,所以,为了不影响RAID的正常运行,在本发明另一实施例中,图4所示的装置还包括: [0075] 发送单元405,用于在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线消息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败。
[0076] 实际应用中,每一个RAID都需要一定的成员盘数目来保证它的基本运行,这个必要的成员盘数目即为成员盘数目阈值。当一个RAID中可用的成员盘数目少于成员盘数目阈值时,该RAID就无法正常工作了。
[0077] 参见图5,针对上述情况,本发明实施例还提供一种对RAID进行控制的系统,包括:离线检测装置501和RAID控制器502,其中:
[0078] 所述离线检测装置501,用于检测RAID的成员盘是否离线;在所述RAID的成员盘离线时,将RAID控制器对离线成员盘下发的命令进行临时保存;在预设安全时限内检测到所述离线成员盘上线时,将临时保存的所述RAID控制器对离线成员盘下发的命令发送至所述离线成员盘,以使所述离线成员盘恢复工作;在预设安全时限内未检测到所述离线成员盘上线时,将成员盘的离线信 息发送给RAID控制器,以使RAID控制器更新RAID的状态,所述离线消息包括所述离线成员盘执行RAID控制器对离线成员盘下发的命令失败; [0079] 所述RAID控制器502,用于接收所述离线检测装置发送的RAID成员盘的离线信息,并检测所述离线成员盘所对应的扩展框是否下电;在所述离线成员盘所对应的扩展框下电时,保存扩展框下电前所述离线成员盘上存储的信息;检测所述扩展框是否上电;在所述扩展框上电时,检测所述扩展框中成员盘中的信息与扩展框下电前保存的信息是否一致,如果一致,则恢复RAID至扩展框下电之前的状态。
[0080] 可选地,所述RAID控制器,还用于在所述扩展框上电时,若检测到所述扩展框中成员盘中的信息与扩展框下电前保存的信息不一致,则保持RAID当前状态。 [0081] 本发明实施例所提供的系统,在通过离线检测装置检测到RAID中有成员盘离线时,并不是直接将该成员盘的离线状态告知RAID控制器,而是将RAID控制器对离线成员盘下发的命令保存起来,并为离线成员盘设置了一个安全时限,如果在安全时限内该离线成员盘又上线了,即可将存储的该RAID控制器对离线成员盘下发的命令返回给该离线成员盘,该离线成员盘可以继续进行正常状态,从而避免了现有技术中直接将该成员盘离线状态汇报给RAID控制器,造成RAID进入降级状态的情况。同时,本发明实施例所提供的系统中的RAID控制器对RAID中大多数成员盘离线的状况进行了进一步的分析,当确定扩展框下电时,通过对各个成员盘的信息和状态进行及时存储保证了在扩展框上电后RAID成员盘信息的快速恢复,从而避免了RAID数据丢失的情况,提高了RAID的安全性。 [0082] 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0083] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。