RAID存储系统、存储控制器以及RAID阵列巡查方法与流程

文档序号:13664073阅读:539来源:国知局
RAID存储系统、存储控制器以及RAID阵列巡查方法与流程

本发明的实施方式涉及raid存储系统、存储控制器以及raid阵列巡查(patrol)方法。



背景技术:

以往,公知有一种raid存储系统。raid存储系统具备raid存储装置、和存储控制器。raid存储装置具备至少一个raid阵列,该至少一个raid阵列具有被称为redundantarraysofindependentdisks(raid:磁盘阵列)的结构(raid结构)。raid阵列一般使用多个硬盘驱动器(hdd)来构成。

存储控制器对向raid阵列的访问进行控制。存储控制器还进行用于在raid阵列内的多个hdd的一个发生了故障的情况下,基于其余的hdd内的数据来恢复发生故障的hdd内的数据的动作(所谓的重建(rebuild))。

但是,当在其余的hdd的任意一个中因介质错误那样的错误而无法正常地读数据的情况下,存储控制器无法进行重建。即,存储控制器无法将raid阵列中的raid结构复原。在这样的情况下,raid阵列成为至少2个hdd具有故障的多重故障。

专利文献

【专利文献1】日本特开2003-303057号公报

【专利文献2】日本特开2011-164868号公报

【专利文献3】国际公开第2009/001413号

为了避免上述的多重故障,存储控制器使用读操作来对构成raid阵列的所有hdd的所有存储区域进行巡查。通过该巡查,存储控制器例如事先检测介质错误。但是,近年来,由于raid阵列内的hdd的容量增加起来,所以对hdd(raid阵列)进行巡查所需要的时间也处于大幅增加的趋势。

另一方面,伴随着hdd的大容量化,容易引起被称为弱写(weak-write)的现象。弱写是指在使用头向hdd的介质(盘)写数据的情况下,由于该头的浮上高度因某些因素而变高,所以该介质上的相应位置的磁化变得不充分的现象。弱写还指由于如上述那样写时的磁化不充分,所以接下来无法通过用于从该位置读数据的读操作来正常地进行读的现象。作为弱写的一个重要因素,可举出介质上的微小的颗粒。即,由于颗粒进入到头与介质之间使得头的浮上高度变高,所以发生弱写。

因弱写引起的介质错误能够通过上述巡查进行检测且修复。但是,如果巡查时间伴随着hdd的大容量化而大幅增加,则导致到介质错误被检测出为止的时间也延长。于是,在到介质错误被检测出为止的时间的期间,例如在其他的hdd中发生介质错误而导致raid阵列成为多重故障的可能性变高。



技术实现要素:

本发明所要解决的课题在于,提供能够早期检测raid阵列中的介质错误的raid存储系统、存储控制器以及raid阵列巡查方法。

根据实施方式,raid存储系统具备:包括至少一个raid阵列的raid存储装置、和对向上述至少一个raid阵列的访问进行控制的存储控制器。上述至少一个raid阵列具有多个条带(stripe)组,上述多个条带组的每一个由包括冗余块的多个块的集合构成。上述存储控制器具备输入输出控制器和巡查控制器。上述输入输出控制器根据来自利用上述raid存储装置的主机装置的访问请求,执行向上述至少一个raid阵列内的被请求的条带组的写访问或者读访问。上述巡查控制器使用读操作对上述多个条带组中的被写访问的条带组比其他条带组优先地进行巡查。上述巡查控制器根据上述被优先地巡查的条带组的上述巡查的完成,来降低上述被优先地巡查的条带组的作为与上述巡查有关的优先等级的巡查优先等级。

附图说明

图1是表示包括一个实施方式涉及的raid存储系统的计算机系统的典型的硬件结构的框图。

图2是表示图1所示的raid存储装置的典型的raid结构的图。

图3是主要表示图1所示的存储控制器的典型的功能结构的框图。

图4是表示图3所示的管理表的数据结构例的图。

图5是表示在该实施方式中应用的巡查处理的典型的顺序的流程图。

图6是表示图5所示的巡查处理中包含的第1巡查处理的典型的顺序的流程图。

图7是表示图5所示的巡查处理中包含的第2巡查处理的典型的顺序的流程图。

图8是表示图5所示的巡查处理中包含的第3巡查处理的典型的顺序的流程图。

图9是表示第1至第3巡查处理的每一个中包含的等待时间重新设定处理的典型的顺序的流程图。

图10是表示在该实施方式中应用的中断处理的典型的顺序的流程图。

图11是表示在该实施方式的第1以及第2变形例中应用的raid存储装置的raid结构的图。

图12是表示在第1变形例中应用的管理表的数据结构例的图。

图13是表示在第2变形例中应用的管理表的数据结构例的图。

【附图标记说明】

10…raid存储系统,11、110…raid存储装置,12…存储控制器,111~113…raid阵列,111_1~111_4、112_1~112_4、113_1~113_4…hdd,123…存储器,124…本地hdd,125…cpu,126…巡查控制器,127…等待控制器,128…输入输出控制器,129、1291、1292…管理表。

具体实施方式

以下,参照附图对实施方式进行说明。

图1是表示包括一个实施方式涉及的raid存储系统的计算机系统的典型的硬件结构的框图。图1所示的计算机系统由raid存储系统10以及主机计算机(以下称为主机)20构成。即,计算机系统具备单一的主机。但是,计算机系统也可以具备多个主机。

主机20是服务器或者客户端个人计算机那样的物理计算机,将raid存储系统10(更详细而言为raid存储系统10的raid存储装置11)利用为自身的外部存储装置。主机20例如经由主机接口总线30与raid存储系统10(更详细而言为raid存储系统10的存储控制器12)连接。在本实施方式中,主机接口总线30是光纤信道(fc)。但是,主机接口总线30也可以是如小型计算机系统接口(scsi)、串行连接scsi(sas)、因特网scsi(iscsi)、以太网(注册商标)或者串行at附件(sata)那样的fc以外的接口总线。另外,主机20也可以经由存储区域网络(san)、因特网或者内联网那样的网络与raid存储系统10连接。

raid存储系统10具备raid存储装置11和存储控制器12。raid存储装置11经由存储接口总线13与存储控制器12连接。在本实施方式中,存储接口总线13是光纤信道(fc)。但是,存储接口总线13也可以与主机接口总线30同样是fc以外的接口总线。

raid存储装置11例如包括具有raid结构的raid阵列111。raid阵列111也被称为raid组,使用多个硬盘驱动器(hdd)、例如4个hdd111_1至111_4的集合而构成。

存储控制器12接受从主机20赋予的、使用了逻辑地址的访问(读访问或者写访问)的请求(输入输出请求),执行被请求的访问(输入输出)。在该访问的执行时,存储控制器13使用公知的地址变换表将逻辑地址变换为物理地址。逻辑地址是指包括被虚拟化的存储区域的逻辑单元内的地址。对被虚拟化的存储区域分配raid存储装置11内的存储区域(物理存储区域)。物理地址表示raid存储装置11所包含且与逻辑地址建立有对应关系的存储区域的物理位置。存储控制器13基于物理地址来访问raid存储装置11(更详细而言为raid存储装置11的raid阵列111内的条带组(stripgroup))。

存储控制器12具备主机接口控制器(以下称为hif控制器)121、存储接口控制器(以下称为sif控制器)122、存储器123、本地hdd124、和cpu125。hif控制器121对该hif控制器121与主机20之间的数据传输(数据传输协议)进行控制。hif控制器121接受来自主机的访问请求,并返回与该访问请求对应的响应。访问请求指定读数据或者写数据。hif控制器121若从主机20接收到访问请求,则将该访问请求传递至cpu125。接收到访问请求的cpu125对该访问请求进行处理。

sif控制器122从cpu125接受与cpu125接收到的来自主机20的访问请求对应的访问指令(更详细而言为针对raid存储装置11的读指令或者写指令)。sif控制器122根据接收到的访问指令来执行向raid存储装置11的访问。

存储器123是如dram那样的可改写的易失性存储器。存储器123的存储区域的一部分被用于储存从本地hdd124加载的控制程序的至少一部分。存储器123的存储区域的另外的一部分被用于储存从本地hdd134加载的管理表129(图4)。存储器123的存储区域的其他的一部分被作为cpu125用的工作区域而使用。

本地hdd124中储存有控制程序。cpu125通过在存储控制器12起动时执行初始程序装入(ipl),来将本地hdd124中储存的控制程序的至少一部分加载到存储器123。ipl被储存在如rom或者flashrom那样的非易失性存储器。

cpu125例如是微处理器那样的处理器。cpu125按照被加载到存储器123中的控制程序,作为巡查控制器126、等待(wait)控制器127、以及输入输出控制器128(图3)发挥功能。即,cpu125通过执行存储器123中储存的控制程序,来控制raid存储系统10整体。此外,巡查控制器126、等待控制器127以及输入输出控制器128的至少一个也可以由硬件实现。

在本实施方式中,存储控制器12如图1所示那样与主机20独立设置。但是,存储控制器12也可以被内置于主机20。该情况下,存储控制器12(更详细而言为存储控制器12的功能)也可以通过使用主机20所具有的操作系统(os)的功能的一部分来实现。

另外,存储控制器12也可以设置于被安装到主机20的卡插槽而使用的卡。另外,也可以是存储控制器12的一部分内置于主机20、该存储控制器12的其余部分设置于卡。另外,也可以将主机20、存储控制器12、和raid存储装置11的一部分或者全部收纳于一个框体。

图2表示raid存储装置11(更详细而言为raid存储装置11的raid阵列111)的典型的raid结构。如前所述,raid存储装置11的raid阵列111具备hdd111_1至111_4。hdd111_1至111_4各自的存储区域为了管理而被分割成称为块b的小区域。块b也被称为条带(strip)。在本实施方式中,hdd111_1至111_4的存储区域的尺寸(即容量)相同,hdd111_1至111_4各自的块b的尺寸也相同。hdd111_i(i=1、2、3、4)的块b具有作为用于识别该块b的识别符的块编号。

raid阵列111例如具备条带组sg1至sgn。条带组sgj(j=1、2、…、n)由hdd111_1至111_4内的具有块编号j的块b的集合构成。即,条带组sgj横跨hdd111_1至111_4。在本实施方式中,块b的块编号是逻辑识别符(逻辑块地址),不表示该块b在hdd111_i中的物理位置。

raid阵列111例如应用raid5(raid等级5)。该情况下,条带组sgj内的一个块作为用于储存冗余数据(例如奇偶校验(parity)数据)的冗余块(奇偶校验块)而使用,其余的3个块作为用于储存数据的数据块而使用。在raid5中,冗余块以条带组为单位被规则地分散于hdd111_1至111_4。此外,如果raid阵列111内的各条带组sgj包括至少一个冗余块,则raid阵列111例如可以具有如raid1、raid4以及raid6那样的raid5以外的raid结构。

图3是主要表示图1所示的存储控制器12的典型的功能结构的框图。存储控制器12包括巡查控制器126、等待控制器127以及输入输出控制器128。

巡查控制器126为了早期检测raid阵列111的条带组sg1至sgn内的块b的故障,而以条带组为单位对该raid阵列111进行巡查。在本实施方式中,对条带组sg1至sgn赋予后述的巡查优先等级。巡查控制器126按照巡查优先等级来对条带组sg1至sgn进行巡查。

等待控制器127例如根据中断处理的状况来调整等待时间tw。中断处理例如包括遵照来自主机20的访问请求的访问动作,且在等待时间tw的期间被执行。等待时间tw是指为了中断处理(访问动作)不因与巡查有关的处理而被延迟,用于使与该巡查有关的处理例如以1个条带组为单位而等待的时间。将巡查控制器126使与巡查有关的处理等待时间tw的动作称为等待(wait)动作。

等待控制器127使用2个中断标志f[l]以及f[t]来管理中断处理的状况。中断标志f[l]以及f[t]例如被储存在存储器123的工作区域。中断标志f[l]被设定为第1状态f1以及第2状态f2的任意一个。中断标志f[l]的初始状态为f1。中断标志f[l]表示在上次的等待动作的期间至少发生了1次中断处理(访问动作)(f[l]=f2)还是没有(f[l]=f1)。中断标志f[t]也被设定为第1状态f1以及第2状态f2的任意一个。中断标志f[t]的初始状态为f1。中断标志f[t]表示在这次的等待动作的期间至少发生了1次中断处理(f[t]=f2)还是没有(f[t]=f1)。

输入输出控制器128例如接受基于来自主机20的访问请求的中断而执行中断处理。中断处理包括被请求的访问(输入输出)的执行。

图4表示图3所示的管理表129的数据结构例。管理表129例如具有与raid存储装置11(raid阵列111)内的全部的条带组sg1至sgn建立了对应关系的项目(entry)的组。管理表129的各个项目包括:条带组编号字段(field)、最终写时刻字段、最终读时刻字段、巡查状态字段、最终巡查时刻字段、巡查优先等级字段、以及写计数字段。以下,对与条带组sgj建立了对应关系的管理表129的项目内的各个字段进行说明。

条带组编号字段被用于保持条带组sgj的条带组编号sgn(=j)。最终写时刻字段被用于对表示向条带组sgj最后写数据的时刻(最终写时刻)lwt的信息进行保持。最终读时刻字段被用于对表示从条带组sgj最后读数据的时刻(最终读时刻)lrt的信息进行保持。此外,也可以取代时刻信息而使用时间信息。

巡查状态字段被用于对表示与条带组sgj的巡查有关的状态(巡查状态)ps的信息进行保持。巡查状态ps是s1至s3(第1至第3状态)的任意一个。

s1表示条带组sgj的巡查未实施。s2也表示条带组sgj的巡查未实施。s1以及s2的差别将后述。s3表示条带组sgj的巡查完成。

最终巡查时刻字段被用于对表示条带组sgj的巡查最后被实施的时刻(最终巡查时刻)lpt的信息进行保持。

巡查优先等级字段被用于对表示条带组sgj被赋予的与该条带组sgj的巡查的实施有关的优先等级(巡查优先等级)pp的信息进行保持。在本实施方式中,巡查优先等级pp是第1优先等级、第2优先等级、以及第3优先等级的任意一个。

第1至第3优先等级分别由符号1至3表示。第1优先等级表示最高的巡查优先等级。第2优先等级表示第2高的巡查优先等级,第3优先等级表示最低的巡查优先等级。

在本实施方式中,在管理表129被初始化的情况下,取代表示巡查优先等级pp的信息而对巡查优先等级字段设定表示无优先等级的信息。表示无优先等级的信息在图4中由符号skip表示,表示条带组sgj的巡查优先等级pp未被确定,条带组sgj被从巡查的对象排除。

这样,无优先等级与第1至第3优先等级不同,并不表示巡查优先等级pp。但是,也能够视为无优先等级是巡查优先等级pp的一个(特别的状态)。该情况下,条带组sgj的巡查优先等级pp(以下记作pp_sgj)的初始值是skip。

巡查优先等级pp_sgj在对条带组sgj实施了写数据的情况下与当前的状态无关地被设定为第1优先等级。即,对条带组sgj赋予第1优先等级。另外,巡查优先等级pp_sgj在从条带组sgj实施了读数据的情况下与当前的状态无关地被设定为第2优先等级。即,对条带组sgj赋予第2优先等级。

另外,巡查优先等级pp_sgj在第1或者第2优先等级的状态下条带组sgj(第1条带组)被巡查的情况下,根据该巡查的完成而被设定(变更)为第3优先等级。巡查优先等级pp_sgj进而在第3优先等级的状态下条带组sgj被巡查的情况下,在该巡查完成后也被维持为第3优先等级。

条带组sgj的巡查状态ps(以下记作ps_sgj)在初始状态下被设定为s1。另外,ps_sgj在从条带组sgj实施了读数据或者向条带组sgj实施了写数据的情况下也被设定为s1。

在本实施方式中,在被赋予了第1优先等级的一个以上第2条带组的巡查全部完成之前,对一个以上第3条带组赋予了第1优先等级的情况下,巡查控制器126在全部执行了第2条带组的巡查之后,执行第3条带组的巡查。由此,能够防止第3条带组(即,后被写访问的条带组)比第2条带组(即,先被写访问的条带组)先被巡查。为了这样的巡查顺序的控制,如前述那样,与第1状态s1不同地,第2状态s2被用作巡查状态ps。s2能够仅获取被赋予了第1优先等级的条带组sgj。具体而言,例如在按条带组编号顺序执行被赋予第1优先等级、且巡查状态ps处于s1的状态的第2条带组的巡查之前,巡查控制器126将第2条带组的巡查状态ps全部从s1变更为s2。

由此,巡查控制器126能够优先执行被赋予第1优先等级且巡查状态ps处于s2的状态的第2条带组的巡查。s1表示在对条带组sgj赋予了第1优先等级的情况下,处于虽然巡查未实施,但正等待巡查的状态(巡查等待状态)。与此相对,s2表示在对条带组sgj赋予了第1优先等级的情况下,处于巡查未实施且巡查等待已被解除的状态(即,可巡查状态)。

写计数字段被用于对向条带组sgj写了数据的次数(写计数)wc进行保持。

接下来,参照图5对本实施方式中应用的巡查处理进行说明。图5是表示巡查处理的典型的顺序的流程图。首先,巡查控制器126将管理表129如以下那样初始化(步骤a1)。

巡查控制器126对管理表129的项目(即,与条带组sg1至sgn建立了对应关系的项目)各自的最终写时刻字段、最终读时刻字段、以及最终巡查时刻字段例如设定00:00:00作为最终写时刻lwt、最终读时刻lrt、以及最终巡查时刻lpt的初始值。另外,巡查控制器126对管理表129的项目各自的巡查状态字段设定表示巡查的未实施的s1作为巡查状态ps的初始值。

另外,巡查控制器126对管理表129的项目各自的巡查优先等级字段设定表示无优先等级(巡查对象外)的skip。巡查控制器126还对管理表129的项目各自的写计数字段设定0作为写计数wc的初始值。由此,巡查控制器126完成管理表129的初始化(步骤a1)。图4表示了该初始化完成的时刻的管理表129的数据结构例。

在本实施方式中,设为在管理表129的项目(即,与条带组sg1至sgn建立了对应关系的项目)各自的条带组字段中预先设定了条带组sg1至sgn的条带组编号1至n。但是,条带组编号1至n也可以通过管理表129的初始化(步骤a1)来设定。

接下来,管理表129进入步骤a2。在步骤a2中,巡查控制器126通过参照管理表129的全部项目的巡查优先等级字段,来对巡查优先等级pp为第1优先等级的条带组的数进行计数,并将该数设定为计数cnt_p1的初始值。计数cnt_p1表示在巡查处理中应该被最优先巡查的条带组的数。在管理表129的初始化之后,计数cnt_p1立即被设定为0。

接下来,巡查控制器126对与巡查优先等级pp为第1优先等级的条带组建立了对应关系的管理表129的全部项目的巡查状态字段设定s2作为巡查状态ps(步骤a3)。即,巡查控制器126将被赋予了第1优先等级的条带组的巡查状态ps从s1变更为s2。s2表示处于被赋予了第1优先等级的条带组的巡查未实施、且该条带组的巡查等待已被解除的状态。

为了识别在被赋予了第1优先等级的条带组用的后述的第1巡查处理开始的时刻已经被赋予了第1优先等级的条带组、和在该第1巡查处理的开始后被赋予第1优先等级的条带组而执行步骤a3。通过该识别,管理表129,与在该第1巡查处理的开始后将被赋予第1优先等级的条带组相比,对在第1巡查处理开始的时刻已经被赋予了第1优先等级的条带组优先进行巡查。

另外,巡查控制器126为了指示被赋予了第1优先等级的条带组中的起始的条带组而设定指针ptr1(步骤a4)。在本实施方式中,巡查控制器126将被赋予了第1优先等级的条带组中的具有最小的条带组编号sgn的条带组决定为起始的条带组。

巡查控制器126若执行步骤a4,则将控制交接给等待控制器127。其中,在变量cnt_p1为0的情况、即不存在被赋予了第1优先等级的条带组的情况下,巡查控制器126实际上不执行步骤a3以及a4,将控制交接给等待控制器127。

接受该交接,等待控制器127将标志f[l]设定为表示未发生中断处理的第1状态f1(步骤a5),在此之后将控制返还给巡查控制器126。于是,巡查控制器126执行以被赋予了第1优先等级的条带组(第2条带组)为巡查对象的第1巡查处理(步骤a6)。第1巡查处理的详细情况将后述。

巡查控制器126若执行了第1巡查处理(步骤a6),则进入步骤a7。其中,在如管理表129刚刚初始化之后变量cnt_p1为0的情况下,巡查控制器126实际上不执行第1巡查处理地进入步骤a7。另外,如果在第1巡查处理(步骤a6)的开始后存在被赋予了第1优先等级的一个以上条带组(第3条带组),则巡查控制器126返回到步骤a2。

在步骤a7中,巡查控制器126为了指示被赋予了第2优先等级的条带组(第4条带组)中的起始的条带组而设定指针ptr2。此外,在如管理表129刚刚初始化之后那样不存在被赋予了第2优先等级的条带组的情况下,对指针ptr2例如设定无效值。

接下来,巡查控制器126将控制交接给等待控制器127。接受该交接,等待控制器127将标志f[l]设定为第1状态f1(步骤a8),在此之后将控制返还给巡查控制器126。于是,巡查控制器126执行以被赋予了第2优先等级的条带组为巡查对象的第2巡查处理(步骤a9)。第2巡查处理的详细情况将后述。

巡查控制器126若执行了第2巡查处理(步骤a9),则进入步骤a10。此外,在如管理表129刚刚初始化之后那样不存在被赋予了第2优先等级的条带组的情况下,巡查控制器126实际上不执行第2巡查处理地进入步骤a10。另外,在第2巡查处理的期间如果新出现被赋予了第1优先等级的一个以上的条带组,则巡查控制器126强制结束第2巡查处理而返回到步骤a2。

在步骤a10中,巡查控制器126为了指示被赋予了第3优先等级的条带组(第5条带组)中的起始的条带组而设定指针ptr3。此外,在如管理表129刚刚初始化之后那样不存在被赋予了第3优先等级的条带组的情况下,指针ptr3例如被设定为无效值。

在以下的说明中,将指针ptru(u=1、2、3)指示的条带组记作条带组sg_ptru。另外,将条带组sg_ptru的最终写时刻、最终读时刻、巡查状态、最终巡查时刻、巡查优先等级、以及写计数分别记作最终写时刻lwt_ptru、最终读时刻lrt_ptru、巡查状态ps_ptru、最终巡查时刻lpt_ptru、巡查优先等级pp_ptru、以及写计数wc_ptru。另外,将与条带组sg_ptru建立了对应关系的管理表129的项目记作项目e_ptru。

接下来,巡查控制器126将控制交接给等待控制器127。接受该交接,等待控制器127将标志f[l]设定为第1状态f1(步骤a11),在此之后将控制返还给巡查控制器126。

于是,巡查控制器126对与被赋予了第3优先等级的条带组建立了对应关系的管理表129的项目的巡查状态字段设定表示巡查的未实施的s1作为巡查状态ps(步骤a12)。由此,当前被赋予了第3优先等级的条带组全部作为巡查对象被处理。

接下来,巡查控制器126执行以被赋予了第3优先等级的条带组为巡查对象的第3巡查处理(步骤a13)。第3巡查处理的详细情况将后述。如果在第3巡查处理的期间新出现被赋予了第1优先等级的一个以上的条带组,则巡查控制器126返回到步骤a2。

根据遵照图5的流程图的上述的巡查处理可知,在存在用符号skip表示的无优先等级的一个以上的条带组(第6条带组)的情况下,巡查控制器126在该巡查处理中将该第6条带组从巡查对象除去。第6条带组是在管理表129的初始化后一次也未被访问的条带组。因此,根据本实施方式,通过抑制第6条带组的巡查,能够对其他条带组(即,被赋予了第1至第3优先等级的任意一个的条带组)高效地进行巡查。

接下来,参照图6对第1巡查处理(图5的步骤a6)的详细情况进行说明。图6是表示第1巡查处理的典型的处理顺序的流程图。首先,巡查控制器126将控制交接给等待控制器127。接受该交接,等待控制器127将标志f[t]设定为表示未产生中断处理的第1状态f1(步骤a21),在此之后将控制返还给巡查控制器126。

于是,巡查控制器126判断计数cnt_p1是否大于0、即应该被最优先巡查的条带组是否存在一个以上(步骤a22)。如果计数cnt_p1大于0(步骤a22的是),则巡查控制器126通过参照管理表129,来判定指针ptr1指示的条带组sg_ptr1的巡查状态ps_ptr1是否是s2(步骤a23)。

如果ps_ptr1是s2(步骤a23的是),则巡查控制器126判断为根据在这次的第1巡查处理开始前执行了的写动作已经对条带组sg_ptr1赋予第1优先等级,是这次的第1巡查处理中的巡查对象。该情况下,巡查控制器126将计数cnt_p1自减1(步骤a24),在此之后对条带组sg_ptr1如以下那样进行巡查。

首先,巡查控制器126执行用于从条带组sg_ptr1读数据的读操作(步骤a25),并判定是否能正常地读数据(步骤a26)。如果产生了无法从条带组sg_ptr1正常读数据的错误(步骤a26的否),则巡查控制器126将该错误判定为介质错误,而如以下那样执行错误修复处理(步骤a27)。

首先,设为从条带组sg_ptr1内的2个数据块正常读了数据,但从此外的一个数据块无法正常读数据。将前者的2个块称为正常数据块,将后者的一个数据块称为错误数据块。该情况下,巡查控制器126基于从条带组sg_ptr1内的2个正常数据块读的数据、以及从条带组sg_ptr1内的冗余块读的冗余数据(奇偶校验数据)来执行公知的重建处理。由此,巡查控制器126将错误数据块的数据恢复。

这里,将包含错误数据块的hdd记作hdd111_i。该情况下,巡查控制器126,代替错误数据块,而将条带组sg1至sgn的任意一个都未使用的hdd111_i内的块(即,空块)分配给条带组sg_ptr1。由此,巡查控制器126结束错误修复处理(步骤a27),并进入步骤a28。与此相对,如果从条带组sg_ptr1正常读了数据(步骤a26的是),则巡查控制器126跳过步骤a27而进入步骤a28。

在步骤a28中,巡查控制器126将与条带组sg_ptr1建立了对应关系的管理表129的项目e_ptr1的内容更新。即,巡查控制器126将管理表129的项目e_ptr1中的巡查状态ps_ptr1以及巡查优先等级pp_ptr1分别更新为s3以及3(第3优先等级)。另外,巡查控制器126将项目e_ptr1中的表示最终巡查时刻lpt_ptr1的信息更新为表示当前时刻。

巡查控制器126若执行了步骤a28,则进入步骤a29。另一方面,如果ps_ptr1不是s2(步骤a23的否),则巡查控制器126判断为条带组sg_ptr1的巡查优先等级pp_ptr1根据在这次的第1巡查处理开始后执行了的写动作而被设定为第1优先等级。鉴于此,巡查控制器126判断为条带组sg_ptr1不是这次的第1巡查处理中的巡查对象,跳过步骤a24至a28而进入步骤a29。

在步骤a29中,巡查控制器126通过执行等待(wait)动作,来等待所设定的等待时间tw。即,巡查控制器126将第1巡查处理中断等待时间tw的期间。若经过等待时间tw,则巡查控制器126将控制交接给等待控制器127。

于是,等待控制器127执行用于重新设定等待时间tw的等待时间重新设定处理(步骤a30)。即,在等待时间重新设定处理中,等待控制器127根据基于来自主机20的访问请求而由输入输出控制器128执行的访问动作(中断处理)的状况,来调整等待时间tw。等待时间重新设定处理的详细情况将后述。

接下来,等待控制器127将当前的标志f[t]的状态设定为标志f[l](步骤a31)。即,等待控制器127将这次执行的等待动作(步骤a29)视为上次的等待动作,将当前的标志f[t]的状态作为表示在上次的等待动作的期间是否发生了中断处理的状态而保存于标志f[l]。然后,等待控制器127将控制返还给巡查控制器126。

于是,巡查控制器126为了指示被赋予了第1优先等级的下一个条带组而使指针ptr1前进(步骤a32)。被赋予了第1优先等级的下一个条带组是指被赋予了第1优先等级的条带组中、具有当前的指针ptr1所指示的条带组sg_ptr1的条带组编号的接下来小的条带组编号的条带组。然后,巡查控制器126返回到步骤a21,再次执行从该步骤a21开始的处理。

另一方面,设为计数cnt_p1不大于0(步骤a22的否)。该状态在如管理表129刚刚初始化之后那样地计数cnt_p1被设定为0的情况,或者因从步骤a21开始的处理被反复进行、即因计数cnt_p1的自减1(步骤a24)被反复进行而使得计数cnt_p1达到了0的情况下产生。该情况下,巡查控制器126通过参照管理表129,来判定是否存在被赋予了第1优先等级的条带组(步骤a33)。

如果存在被赋予了第1优先等级的条带组(步骤a33的是),则巡查控制器126判断为在第1巡查处理的期间新出现被赋予了第1优先等级的一个以上的条带组。该情况下,巡查控制器126为了巡查在第1巡查处理的期间出现的被赋予了第1优先等级的条带组,而从遵照图6的流程图的第1巡查处理(图5的步骤a6)返回到图5的步骤a2。

与此相对,如果不存在被赋予了第1优先等级的条带组(步骤a33的否),则巡查控制器126为了巡查被赋予了第2优先等级的条带组,而结束遵照图6的流程图的第1巡查处理(图5的步骤a6),并如前述那样进入步骤a7(图5)。

在上述的说明中,在执行了步骤a2至a5之后执行第1巡查处理(步骤a6)。但是,也可以是步骤a2至a5包含于第1巡查处理、且在该第1巡查处理的起始执行。即,在第1巡查处理中,可以首先执行步骤a2至a5,在此之后执行从步骤a21开始的处理。

接下来,参照图7对第2巡查处理(图5的步骤a9)的详细情况进行说明。图7是表示第2巡查处理的典型的处理顺序的流程图。首先,巡查控制器126将控制交接给等待控制器127。接受该交接,等待控制器127与第1巡查处理的开始时同样地将标志f[t]设定为第1状态f1(步骤a41),在此之后将控制返还给巡查控制器126。

于是,巡查控制器126通过基于指针ptr2参照管理表129的项目e_ptr2,来判定指针ptr2是否指示被赋予了第2优先等级的条带组(步骤a42)。如果指针ptr2指示被赋予了第2优先等级的条带组(步骤a42的是),则巡查控制器126判定指针ptr2所指示的条带组sg_ptr2的巡查状态ps_ptr2是否是s1(步骤a43)。

如果ps_ptr2是s1(步骤a43的是),则巡查控制器126判断为条带组sg_ptr2的巡查未实施,条带组sg_ptr2是第2巡查处理中的巡查对象。该情况下,巡查控制器126与第1巡查处理中的条带组sg_ptr1的巡查同样地对条带组sg_ptr2进行巡查。

即,巡查控制器126执行用于从条带组sg_ptr2读数据的读操作(步骤a44),并判断是否能正常读数据(步骤a45)。如果不能正常读(步骤a45的否),则巡查控制器126执行错误修复处理(步骤a46),并进入步骤a47。与此相对,如果正常读了数据(步骤a45的是),则巡查控制器126跳过步骤a46而进入步骤a47。

在步骤a47中,巡查控制器126将与条带组sg_ptr2建立了对应关系的管理表129的项目e_ptr2的内容更新。即,巡查控制器126将管理表129的项目e_ptr2中的巡查状态ps_ptr2以及巡查优先等级pp_ptr2分别更新为s3以及3(第3优先等级)。另外,巡查控制器126将项目e_ptr2中的表示最终巡查时刻lpt_ptr2的信息更新为表示当前时刻。

巡查控制器126若执行了步骤a47,则进入步骤a48。另一方面,如果ps_ptr2不是s1(步骤a43的否),则巡查控制器126判断为条带组sg_ptr2不是这次的第2巡查处理中的巡查对象。该情况下,巡查控制器126跳过步骤a44至a47而进入步骤a48。

在步骤a48中,巡查控制器126通过执行等待动作而等待所设定的等待时间tw。即,巡查控制器126将第2巡查处理中断时间tw。若经过等待时间tw,则巡查控制器126将控制交接给等待控制器127。

于是,等待控制器127执行等待时间重新设定处理(步骤a49)。等待时间重新设定处理的详细情况将后述。接下来,等待控制器127将当前的标志f[t]的状态设定为标志f[l](步骤a50)。即,等待控制器127将当前的标志f[t]的状态作为表示在上次的等待动作中是否发生了中断处理的状态而保存于标志f[l]。然后,等待控制器127将控制返还给巡查控制器126。

于是,巡查控制器126通过参照管理表129,来判定是否存在被赋予了第1优先等级的条带组(步骤a51)。如果不存在被赋予了第1优先等级的条带组(步骤a51的否),则巡查控制器126判断为在第2巡查处理的期间未出现被赋予了第1优先等级的条带组。该情况下,巡查控制器126进入步骤a52。

在步骤a52中,巡查控制器126为了指示被赋予了第2优先等级的下一个条带组而使指针ptr2前进。其中,在不存在被赋予了第2优先等级的下一个条带组的情况下,巡查控制器126对指针ptr2设定无效值。巡查控制器126若执行了步骤a52则返回到步骤a41,再次执行从该步骤a41开始的处理。

与此相对,如果存在被赋予了第1优先等级的条带组(步骤a51的是),则巡查控制器126判断为在第2巡查处理的期间新出现被赋予了第1优先等级的一个以上的条带组。该情况下,巡查控制器126为了使被赋予了第1优先等级的条带组的巡查优先,即便是第2巡查处理的中途,也强制结束该第2巡查处理。然后,巡查控制器126返回到图5的步骤a2。

这里,与上述的例子不同,设为指针ptr2不指示被赋予了第2优先等级的条带组(步骤a42的否)。即,设为对指针ptr2设定了无效值。该状态在如管理表129刚刚初始化之后那样地不存在在第2巡查处理的开始时刻被赋予了第2优先等级的条带组的情况,或者在出现被赋予了第1优先等级的条带组之前被赋予了第2优先等级的条带组的巡查全部完成的情况下产生。该情况下,巡查控制器126结束遵照图7的流程图的第2巡查处理(图5的步骤a9),并如前述那样进入步骤a10(图5)。

在上述的说明中,在执行了步骤a7以及a8之后执行第2巡查处理(步骤a9)。但是,也可以是步骤a7以及a8包含于第2巡查处理且在该第2巡查处理的起始被执行。即,在第2巡查处理中,可以首先执行步骤a7以及a8,在此之后执行从步骤a41开始的处理。

接下来,参照图8对第3巡查处理(图5的步骤a10)的详细情况进行说明。图8是表示第3巡查处理的典型的处理顺序的流程图。首先,巡查控制器126将控制交接给等待控制器127。接受该交接,等待控制器127与第1巡查处理的开始时同样地将标志f[t]设定为第1状态f1(步骤a61),在此之后将控制返还给巡查控制器126。

于是,巡查控制器126通过基于指针ptr3参照管理表129的项目e_ptr3,来判定指针ptr3是否指示被赋予了第3优先等级的条带组(步骤a62)。如果指针ptr3指示被赋予了第3优先等级的条带组(步骤a62的是),则巡查控制器126判定指针ptr3所指示的条带组sg_ptr3的巡查状态ps_ptr3是否是s1(步骤a63)。

如果ps_ptr3是s1(步骤a63的是),则巡查控制器126判断为条带组sg_ptr3的巡查未实施、条带组sg_ptr3是第3巡查处理中的巡查对象。该情况下,巡查控制器126与第1巡查处理中的条带组sg_ptr1的巡查同样地对条带组sg_ptr3进行巡查。

即,巡查控制器126执行用于从条带组sg_ptr3读数据的读操作(步骤a64),判定是否能正常读数据(步骤a65)。如果未能正常读(步骤a65的否),则巡查控制器126执行错误修复处理(步骤a66),并进入步骤a67。与此相对,如果正常读了(步骤a65的是),则巡查控制器126跳过步骤a66而进入步骤a67。

在步骤a67中,巡查控制器126将与条带组sg_ptr3建立了对应关系的管理表129的项目e_ptr3的内容更新。即,巡查控制器126将管理表129的项目e_ptr3中的巡查状态ps_ptr3更新为s3。另外,巡查控制器126将项目e_ptr3中的表示最终巡查时刻lpt_ptr3的信息更新成表示当前时刻。由此,巡查控制器126完成步骤a67。因此,条带组sg_ptr3的巡查优先等级pp_ptr3被维持为第3优先等级。

巡查控制器126若执行了步骤a67,则进入步骤a68。另一方面,如果ps_ptr3不是s1(步骤a63的否),则巡查控制器126判断为条带组sg_ptr3不是这次的第3巡查处理中的巡查对象。该情况下,巡查控制器126跳过步骤a64至a67而进入步骤a68。

这里,与上述的例子不同,设为指针ptr3不指示被赋予了第3优先等级的条带组(步骤a62的否)。即,设为指针ptr3被设定了无效值。该状态在如管理表129刚刚初始化之后那样不存在在第3巡查处理的开始时刻被赋予了第3优先等级的条带组的情况,或者在被赋予了第1优先等级的条带组出现之前被赋予了第3优先等级的条带组的巡查全部完成的情况下产生。该情况下,巡查控制器126也进入步骤a68。

在步骤a68中,巡查控制器126通过执行等待动作,来等待所设定的等待时间tw。即,巡查控制器126将第3巡查处理中断时间tw。若经过等待时间tw,则巡查控制器126将控制交接给等待控制器127。

于是,等待控制器127执行等待时间重新设定处理(步骤a69)。等待时间重新设定处理的详细情况将后述。接下来,等待控制器127将当前的标志f[t]的状态设定为标志f[l](步骤a70)。即,等待控制器127将当前的标志f[t]的状态保存于标志f[l]。然后,等待控制器127将控制返还给巡查控制器126。

于是,巡查控制器126通过参照管理表129,来判定是否存在被赋予了第1优先等级的条带组(步骤a71)。如果不存在被赋予了第1优先等级的条带组(步骤a71的否),则巡查控制器126判断为在第3巡查处理的期间未出现被赋予了第1优先等级的条带组。该情况下,巡查控制器126进入步骤a72。

在步骤a72中,巡查控制器126为了指示被赋予了第3优先等级的下一个条带组而使指针ptr3前进。其中,在不存在被赋予了第3优先等级的下一个条带组的情况下,巡查控制器126将指针ptr3设定为无效值。巡查控制器126若执行了步骤a72,则返回到步骤a61,再次执行从该步骤a61开始的处理。

另一方面,如果存在被赋予了第1优先等级的条带组(步骤a71的是),则巡查控制器126判断为在第3巡查处理的期间新出现被赋予了第1优先等级的一个以上的条带组。该情况下,巡查控制器126为了使被赋予了第1优先等级的条带组的巡查优先,即使是第3巡查处理的中途,也强制结束该第3巡查处理。然后,巡查控制器126返回到图5的步骤a2。

如上所述,根据本实施方式,巡查控制器126将被写访问了的条带组的巡查优先等级设定为比其他条带组高的优先等级(具体为第1优先等级)。由此,巡查控制器126能够比其他条带组优先巡查被写访问了的条带组。因此,能够早期检测如弱写那样的因写访问引起的介质错误,而将raid阵列中的多重故障的产生防患于未然。

并且,巡查控制器126在巡查了被写访问的条带组之后,将该被巡查了的条带组的巡查优先等级降低(具体而言,降低为比被读访问的条带组的巡查优先等级低的第3优先等级),直至该被巡查了的条带组再次被写访问。由此,能够防止无论被写访问的条带组是否已经被巡查,都比应该被巡查的其他条带组(例如被读访问的条带组)优先巡查的情况。

接下来,参照图9对等待时间重新设定处理(图6的步骤a30、图7的步骤a49以及图8的步骤a69)的详细情况进行说明。图9是表示等待时间重新设定处理的典型的处理顺序的流程图。在本实施方式中,图6的步骤a30、图7的步骤a49以及图8的步骤a69分别执行的等待时间重新设定处理的顺序是相同的。

首先,等待控制器127判定当前的标志f[l]以及f[t]是否都被设定为第2状态f2(步骤a81)。在本实施方式中,标志f[l]在第1至第3巡查处理各个巡查处理之前刚刚被设定为第1状态f1(图5的步骤a5、a8以及a11)。另一方面,标志f[t]在第1至第3巡查处理各自的循环的起始被设定为第1状态f1(图6的步骤a21、图7的步骤a41、以及图8的步骤a61)。另外,在第1至第3巡查处理各自的循环中,在第1至第3巡查处理分别被中断(图6的步骤a29、图7的步骤a48、以及图8的步骤a68)、且等待时间重新设定处理(图6的步骤a30、图7的步骤a49、以及图8的步骤a69)被执行之后,该时刻下的标志f[t]的状态被保存于标志f[l](图6的步骤a31、图7的步骤a50、以及图8的步骤a70)。另外,标志f[t]在巡查处理被中断的期间执行了中断处理的情况下,如后述那样,在中断处理的例如起始被设定为第2状态f2(图10的步骤a91)。

因此,如果在连续的两次巡查处理中断(等待动作)的期间都发生至少1次中断处理,则标志f[l]以及f[t]都被设定为第2状态f2。与此相对,如果在连续的两次等待动作的期间都未发生中断处理,则标志f[l]以及f[t]都被设定为第1状态f1。

鉴于此,如果标志f[l]以及f[t]都被设定为第2状态f2(步骤a81的是),则等待控制器127判定为中断处理的频度高(是第1等级)。该情况下,等待控制器127为了使中断处理(特别是中断处理中包含的访问动作)比巡查处理充分优先,而增加等待时间tw(步骤a82)。即,等待控制器127将等待时间tw例如增加一定时间δt。

与此相对,如果标志f[l]以及f[t]的至少一方被设定为第1状态f1(步骤a81的否),则等待控制器127判定是否标志f[l]以及f[t]都被设定为第1状态f1(步骤a83)。如果标志f[l]以及f[t]都被设定为第1状态f1(步骤a83的是),则等待控制器127判定为中断处理的频度低(是比第1等级低的第2等级)。该情况下,等待控制器127为了降低使中断处理比巡查处理优先的程度,而减少等待时间tw(步骤a84)。即,等待控制器127将等待时间tw例如减少一定时间δt。

与此相对,如果标志f[l]以及f[t]的一方被设定为第1状态f1,另一方被设定为第2状态f1(步骤a83的否),则等待控制器127判定为中断处理的频度是中等程度(第1等级与第2等级之间的第3等级)。该情况下,等待控制器127将等待时间tw维持为当前值(步骤a85)。

在本实施方式中,等待控制器127为了增减等待时间tw而将等待时间tw例如增加或者减少一定时间δt。但是,等待控制器127也可以将等待时间tw增加或者减少一定比例。

接下来,参照图10对本实施方式中应用的中断处理进行说明。图10是表示中断处理的典型的处理顺序的流程图。在本实施方式中,来自主机20的访问请求例如按照由hif控制器121接受的顺序被设定为访问请求列表。访问请求列表例如具有队列(queue)结构,被储存于存储器123。在本实施方式中,设定于访问请求列表的访问请求在中断处理中被执行。中断处理在访问请求列表中至少设定有一个访问请求的情况下,在等待控制器127处于与巡查有关的处理的等待状态(中断状态)的时间tw的期间主要由输入输出控制器128执行。处于与巡查有关的处理的等待状态的期间是指等待控制器127的等待动作(图6的步骤a29、图7的步骤a48以及图9的步骤a68)的期间。

在中断处理中,首先输入输出控制器128将控制交接给等待控制器127。接受该交接,等待控制器127将中断标志f[t]设定为第2状态(步骤a91),并将控制返还给输入输出控制器128。于是,输入输出控制器128从访问请求列表取出接下来应该执行的访问请求(例如在该时刻为最早的访问请求),并判定该取出的访问请求是否是读请求(即是否是写请求)(步骤a92)。

如果取出的访问请求是读请求(步骤a92的是),则输入输出控制器128执行该读请求(步骤a93)。由此,例如从raid阵列111内的条带组rsg的数据块读了数据。于是,输入输出控制器128将控制交接给巡查控制器126。

接受该交接,巡查控制器126将与条带组rsg建立了对应关系的管理表129的项目e_rsg的内容如以下那样更新(步骤a94)。巡查控制器126将管理表129的项目e_rsg中的巡查状态ps_rsg以及巡查优先等级pp_rsg分别更新(设定)为s1以及2(第2优先等级)。另外,巡查控制器126将管理表129的项目e_rsg中的表示最终读时刻lrt_rsg的信息更新为表示当前时刻。

另一方面,如果取出的访问请求是写请求(步骤a92的否),则输入输出控制器128执行该写请求(步骤a95)。由此,例如对raid阵列111内的条带组wsg的数据块写数据。于是,输入输出控制器128将控制交接给巡查控制器126。

接受该交接,巡查控制器126将与条带组wsg建立了对应关系的管理表129的项目e_wsg的内容如以下那样更新(步骤a96)。巡查控制器126将管理表129的项目e_wsg中的巡查状态ps_wsg以及巡查优先等级pp_wsg分别更新(设定)为s1以及1(第1优先等级)。另外,巡查控制器126将项目e_wsg中的表示最终写时刻lwt_wsg的信息更新为表示当前时刻。巡查控制器126还将项目e_wsg中的写计数wc_wsg自加1。

若通过巡查控制器126更新了管理表129(步骤a94或者a96),则输入输出控制器128结束遵照图10的流程图的中断处理。这里,由于即使中断处理结束也不经过期间tw,所以巡查控制器126依然处于与巡查有关的处理的等待状态。该情况下,如果访问请求列表中残存有未执行的访问请求,则输入输出控制器128再次开始中断处理。另外,即使访问请求列表中残存有未执行的访问请求,如果由于经过了期间tw所以再开始与巡查有关的处理,则输入输出控制器128也等待接下来与巡查有关的处理被中断。

<第1变形例>

接下来,参照图11以及图12对上述实施方式的第1变形例进行说明。图11表示在第1变形例中,取代图1所示的raid存储装置11而应用的raid存储装置110的典型的raid结构。图12表示在第1变形例中,取代图3所示的管理表129而应用的管理表1291的数据结构例。更详细而言,图12表示与图5的步骤a1相当的初始化完成的时刻的管理表1291的数据结构例。

图11所示的raid存储装置110除了图1以及图2所示的raid阵列111之外,例如还包括raid阵列112以及113。即,raid存储装置110包括3个raid阵列111至113。

在第1变形例中,除了raid存储装置110以外的raid存储系统的构成、以及raid存储系统内的存储控制器12的功能结构分别与图1以及图3的相同。因此,如果必要,则可在图1中,将raid存储装置11以及raid阵列111分别置换为raid存储装置110以及raid阵列111至113。另外,在图3中,将管理表129置换为管理表1291。

raid阵列111至113分别具有作为用于识别raid阵列111至113的识别符的raid阵列编号ran、例如1至3。在第1变形例中,对利用raid存储装置110的用户而言,raid阵列111至113的重要度不同。这里,raid阵列111的重要度最高,以下,按照raid阵列112、以及raid阵列113的顺序重要度变低。

如图11所示,raid阵列112具备hdd112_1至112_4,raid阵列113具备hdd113_1至113_4。在第1变形例中,raid阵列111至113都使用4个hdd的集合而构成。但是,分别构成raid阵列111至113的hdd的数量只要为2以上(多个)即可,另外,分别构成raid阵列111至113的hdd的数量不需要相同。

raid阵列111如前述那样,具备具有条带组编号(sgn)1至n的n个条带组sg1至sgn。raid阵列112具备具有条带组编号n+1至k(k>n+1)的k-n个条带组sgn+1至sgk。raid阵列113具备具有条带组编号k+1至m(m>k+1)的m-k个条带组sgk+1至sgm。

raid阵列112以及113与raid阵列111同样应用raid5(raid等级5)。但是,如果raid阵列111至113内的各条带组sgj(j=1、2、…、m)包括至少一个冗余块,则raid阵列111至113也可以具有例如raid1、raid4以及raid6那样的raid5以外的raid结构。

图12所示的管理表1291例如具有与raid存储装置110(raid阵列111至113)内的全部的条带组sg1至sgm建立了对应关系的项目的组。管理表1291的项目的每一个与图4所示的管理表129的项目的每一个相同,包括条带组编号字段、最终写时刻字段、最终读时刻字段、巡查状态字段、最终巡查时刻字段、巡查优先等级字段、以及写计数字段。图12所示的管理表1291的项目的每一个除了这些字段以外,还包括raid阵列编号字段、以及raid阵列优先等级字段。以下,对与条带组sgj建立了对应关系的项目内的raid阵列编号字段、以及raid阵列优先等级字段进行说明。

raid阵列编号字段被用于对包括条带组sgj的raid阵列的raid阵列编号ran进行保持。raid阵列优先等级字段被用于对与包括条带组sgj的raid阵列的巡查有关的优先等级(以下称为raid阵列优先等级)rap进行保持。

在raid阵列编号字段以及raid阵列优先等级字段中,通过与图5的步骤a1相当的初始化处理分别设定raid阵列编号ran以及raid阵列优先等级rap。图12表示该初始化处理完成的时刻的管理表1291的数据结构例。

在第1变形例中,raid阵列111至113的raid阵列优先等级rap由主机20按照基于该raid阵列111至113的重要度的用户的指示来指定。这里,raid阵列111、112以及113的raid阵列优先等级rap通过上述的初始化处理,如图12所示,分别被设定为1、3以及2。rap=1表示raid阵列优先等级最高,以下,按照rap=2、以及rap=3的顺序raid阵列优先等级变低。

接下来,对第1变形例中的巡查处理进行说明。第1变形例中的巡查处理的顺序的概略与上述实施方式大致相同。首先,巡查控制器126执行与图5的步骤a1相当的初始化处理。然后,等待控制器127按照raid阵列111至113的raid阵列优先等级,对raid存储装置110(raid阵列111至113)内的被赋予了第1优先等级的条带组(第7条带组)如以下那样进行巡查。

首先巡查控制器126通过与图5的步骤a6相当的第1巡查处理,对第7条带组中的、被赋予了最高的raid阵列优先等级的raid阵列111(即,具有最高的raid阵列优先等级的raid阵列111)所包含的条带组进行巡查。此外,在第1巡查处理之前,还进行与图5的步骤a2至a5相当的处理。

接下来,巡查控制器126通过与图5的步骤a6相当的第1巡查处理,对第7条带组中的、被赋予了第2高的raid阵列优先等级的raid阵列113所包含的条带组进行巡查。接下来,巡查控制器126通过与图5的步骤a6相当的第1巡查处理,对第7条带组中的、被赋予了第3高的(即,最低的)raid阵列优先等级的raid阵列112所包含的条带组进行巡查。这样,巡查控制器126在第7条带组的巡查中,越是raid阵列优先等级更高的raid阵列内的条带组则越优先对其进行巡查。

这里,设为在第7条带组的巡查的期间,raid阵列111至113内新出现了被赋予了第1优先等级的条带组(第8条带组)。该情况下,巡查控制器126与上述实施方式同样,在完成了第7条带组的巡查之后,对raid阵列111至113内的第8条带组进行巡查。其中,巡查控制器126按照raid阵列111至113的raid阵列优先等级来对raid阵列111至113内的第8条带组进行巡查。第7以及第8条带组分别相当于上述实施方式中的第2以及第3条带组。

然后,巡查控制器126按照raid阵列111至113的raid阵列优先等级,对raid阵列111至113内的被赋予了第2优先等级的条带组(第9条带组)进行巡查。第9条带组相当于上述实施方式中的第4条带组。如果在第9条带组的巡查的期间,raid阵列111至113内新出现被赋予了第1优先等级的条带组(第10条带组),则巡查控制器126即使不全部完成第9条带组的巡查,也按照raid阵列111至113的raid阵列优先等级对raid阵列111至113内的第10条带组进行巡查。

然后,巡查控制器126按照raid阵列111至113的raid阵列优先等级,对raid阵列111至113内的被赋予了第3优先等级的条带组(第11条带组)进行巡查。第11条带组相当于上述实施方式中的第5条带组。如果在第11条带组的巡查的期间,raid阵列111至113内新出现被赋予了第1优先等级的条带组(第12的条带组),则巡查控制器126即使不全部完成第11条带组的巡查,也按照raid阵列111至113的raid阵列优先等级对raid阵列111至113内的第12的条带组进行巡查。

根据第1变形例,在raid存储装置具备多个raid阵列的情况下,对多个raid阵列的的每一个赋予与巡查有关的优先等级(更详细而言,是作为raid阵列间的优先等级的raid阵列优先等级rap)。这样,在第1变形例中,不仅对各raid阵列内的条带组分别赋予与巡查有关的优先等级(巡查优先等级pp),对多个raid阵列也分别赋予与巡查有关的优先等级(raid阵列优先等级rap)。由此,在第1变形例中,即便是被赋予了相同优先等级的条带组,越是被赋予了更高的raid阵列优先等级rap的raid阵列(例如,更重要的raid阵列)内的条带组,则越被优先巡查。因此,根据第1变形例,能够更高效地执行多个raid阵列的巡查。

<第2变形例>

接下来,在图11的基础上参照图13对上述实施方式的第2变形例进行说明。第2变形例也和第1变形例同样,取代图1所示的raid存储装置11而使用图11所示的raid存储装置110。图13表示在第2变形例中,取代图12所示的管理表1291而应用的管理表1292的数据结构例。

图13所示的管理表1292与图12所示的管理表1291同样,具有与raid存储装置110(raid阵列111至113)内的全部的条带组sg1至sgm建立了对应关系的项目的组。管理表1292与管理表1291的不同点在于,管理表1292的项目的每一个还包括错误计数字段。

鉴于此,对与条带组sgj(j=1、2、…、m)建立了对应关系的管理表1292的项目内的错误计数字段进行说明。错误计数字段被用于将通过条带组sgj的巡查而检测出错误的次数保持为错误计数ec。该错误计数字段通过与图5的步骤a1相当的初始化处理而被设定为初始值0。

在第2变形例中,raid阵列111、112以及113的raid阵列优先等级rap的初始值与第1变形例相同,分别为1、3以及2。第2变形例与第1变形例的不同点在于,基于通过raid阵列111至113各自的巡查而检测出的错误的总数来变更raid阵列111至113的raid阵列优先等级rap。

在第2变形例中,巡查控制器126在与图5的步骤a1相当的初始化处理之后,立即与第1变形例同样地对raid阵列111至113内的被赋予了第1至第3优先等级(巡查优先等级)的条带组按照该条带组的巡查优先等级、以及raid阵列111至113的初始设定的raid阵列优先等级来进行巡查。即,对于raid阵列111至113内的被赋予了相同的优先等级的条带组的巡查,巡查控制器126按照raid阵列111内的条带组、raid阵列113内的条带组、以及raid阵列112内的条带组的顺序进行巡查。

若raid阵列111至113内的被赋予了第1至第3优先等级的条带组的巡查进行一次,则巡查控制器126将与raid阵列111至113所包含的条带组建立了对应关系的管理表1292内的项目的错误计数字段的值(错误计数ec)按每个raid阵列进行汇总。即,巡查控制器126基于与raid阵列111至113所包含的条带组建立了对应关系的错误计数(ec),取得raid阵列111至113各自的总错误计数。

接下来,巡查控制器126将raid阵列111至113的raid阵列优先等级按照总错误计数的降序重新设定。即,巡查控制器126对与raid阵列111至113中的、总错误计数最多的raid阵列所包含的全部的条带组建立了对应关系的管理表1292内的项目的raid阵列优先等级字段,设定表示第1位的(即最高的)raid阵列优先等级rap的值(=1)。另外,巡查控制器126对与raid阵列111至113中的、总错误计数第2多的raid阵列所包含的全部的条带组建立了对应关系的管理表1292内的项目的raid阵列优先等级字段,设定表示第2位的(即,第2高的)raid阵列优先等级rap的值(=2)。并且,巡查控制器126对与raid阵列111至113中的、总错误计数最少的raid阵列所包含的全部的条带组建立了对应关系的管理表1292内的项目的raid阵列优先等级字段,设定表示第3位的(即,最低的)raid阵列优先等级rap的值(=3)。

另外,巡查控制器126将管理表1292的全部项目的错误计数ec都初始化为值0。其中,被维持为值0的错误计数ec不必一定需要被初始化。

然后,巡查控制器126重新开始raid阵列111至113的巡查。即,巡查控制器126对raid阵列111至113内的被赋予了第1至第3优先等级(巡查优先等级)的条带组按照该条带组的巡查优先等级、以及raid阵列111至113的被重新设定(更新)的raid阵列优先等级进行巡查。

如上述那样,根据第2变形例,巡查控制器126能够在以raid阵列111至113内的被赋予了第1至第3优先等级的条带组为对象的最初的巡查进行了一次之后,根据raid阵列111至113的巡查中的错误检测状况来重新设定对raid阵列111至113赋予的raid阵列优先等级。由此,巡查控制器126能够对被赋予了相同的优先等级的条带组中的、通过巡查而检测出错误(介质错误)的频度越高的raid阵列内的条带组,越优先对其进行巡查。

在第2变形例中,条带组sgj的错误计数ec表示通过该条带组sgj的巡查而检测出错误的次数。即,条带组sgj的错误计数ec在该条带组sgj通过第1至第3巡查处理的任意巡查而检测出错误的情况下都自加1。

但是,条带组sgj的错误计数ec也可以仅表示通过第1巡查处理中的该条带组sgj的巡查而检测出错误的次数。即,条带组sgj的错误计数ec可以仅在通过对该条带组sgj赋予了第1优先等级的状态下执行的巡查而检测出错误的情况下自加1。该情况下,只要每当raid阵列111至113内的被赋予了第1优先等级的条带组的巡查进行一次,巡查控制器126便将raid阵列111至113所包含的条带组错误计数ec按每个raid阵列进行汇总即可。

根据以上说明的至少一个实施方式,能够早期地检测raid阵列中的介质错误。

对本发明的几个实施方式进行了说明,但这些实施方式只是例示,并不意图对发明的范围进行限定。这些新的实施方式能够被以其他的各种方式实施,在不脱离发明主旨的范围能够进行各种省略、置换、变更。这些实施方式以及其变形包含在发明的范围、主旨中,并且,包含在技术方案所记载的发明和其等同的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1