CN1955940B - Raid系统、raid控制器及其重建或拷回处理方法 - Google Patents
Raid系统、raid控制器及其重建或拷回处理方法 Download PDFInfo
- Publication number
- CN1955940B CN1955940B CN2006100570621A CN200610057062A CN1955940B CN 1955940 B CN1955940 B CN 1955940B CN 2006100570621 A CN2006100570621 A CN 2006100570621A CN 200610057062 A CN200610057062 A CN 200610057062A CN 1955940 B CN1955940 B CN 1955940B
- Authority
- CN
- China
- Prior art keywords
- request
- processing
- normal
- raid
- reconstruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
RAID系统、RAID控制器及其重建或拷回处理方法。所述RAID系统访问物理盘,并按照主机I/O请求执行重建或拷回处理,来实现高速重建或拷回处理,而不干扰正常I/O处理。当构成RAID构成的多个盘装置中的一个盘装置发生故障时,控制器执行重建或拷回处理,来重构该RAID。在重建或拷回中,控制器从一个盘读出数据,并将该数据写入另一盘,所以判断正常I/O的存在,并当正常I/O不存在时,同时执行这些不同盘驱动器的读出和写入。这样,减少了重建或拷回时间。
Description
技术领域
本发明涉及RAID系统,在该系统中,数据被冗余存储在多个盘装置中,当部分盘装置发生故障时,通过用来自其它盘装置的数据进行重建和拷回来重构该冗余构成;本发明还涉及RAID控制器及其重建或拷回处理方法;更具体地,本发明涉及一种用于减少重建和拷回处理时间的RAID系统、RAID控制器及其重建或拷回处理方法。
背景技术
随着各种数据逐渐被计算机化并在计算机上被处理,目前,能够独立于执行数据处理的主计算机(host computer)而有效地、高可靠性地存储大量数据的数据存储装置(外部存储装置)的重要性日益增加。
作为这种数据存储装置,正在使用盘阵列装置,其包括多个盘装置(例如磁盘装置,光盘装置)和用于控制该多个盘装置的盘控制器。该盘阵列装置利用RAID(廉价盘冗余阵列)构成实现数据冗余,以提高可靠性。
在这种盘阵列装置中,如果构成RAID组的盘装置故障,失去了冗余,则必须恢复该冗余。图14是说明用于这种冗余恢复的RAID 5的重建功能的图。为了主动维护,为构成RAID 5的0号(#0)、1号(#1)、2号(#2)和3号(#3)这四个盘装置安装了备用盘装置HS(热备盘)。
该盘装置组160被连接到一对盘控制器110。每个盘控制器110具有:盘适配器140,用于控制与盘装置组160的接口;控制单元120;和通道适配器100,用于控制与主机(未示出)的接口。
如果构成RAID 5的四个盘装置中的0号盘装置故障,则该故障的0号盘装置以外的1号、2号和3号盘装置的数据经盘适配器140被读到控制单元120的数据缓冲器(未示出)或高速缓存存储器,并执行XOR操作,来创建冗余数据。
所创建的冗余数据经由盘适配器140被写到所述备用盘装置HS,以恢复冗余。这被称为“重建功能”。在RAID 1情况下,被读出的数据直接被写入该备用盘装置HS。
另一方面,图15是说明了拷回功能的图。在已完成了图14中的重建的状态下用新的盘装置NEW替换故障的0号盘装置时,执行拷回处理。换句话说,被写入该备用盘装置HS中的冗余数据被写回该新的盘装置NEW。
为了在处理来自主机的I/O请求的同时执行该重建或拷回处理,提出了用于平衡(balance)这些请求的数量的方法(例如,日本专利申请特开第2004-295860号)。
如图16所示,在重建或拷回处理的情况下,在完成从原1号盘驱动器的读出处理之后,执行到写入目的地的2号盘驱动器的写入处理,即使不存在正常I/O(主机I/O、内部I/O),也是如此。
换句话说,如果用于管理重建或拷回处理的OVSM模块向RAID控制模块(其执行RAID访问)请求一次拷回,则该RAID控制模块完成1号盘驱动器的读出,然后执行到2号盘驱动器的写入。并且RAID控制模块接收来自2号盘驱动器的写入完成,向OVSM模块报告所请求的拷回已完成,然后,OVSM模块执行下一拷回请求处理。
因此为了在接受正常的I/O处理的同时执行重建或拷回处理,不能一次执行一台盘装置的全部处理。所以分部分地以恢复盘装置的数据量的次数执行从正常盘装置读出数据并将其写入写目的盘装置的操作。
例如,在重建情况下,从正常的盘装置中读出数据,如果不是RAID1(镜像),则创建冗余数据,并将该数据写到备用盘装置HS或新的盘装置NEW;在拷回情况下,从备用盘装置HS读出数据,并将其写入新的盘装置NEW。
常规地,对于这些操作,读和写被认为是一体的,读和写被作为一个单位处理,因而除非一次读和写处理完成,否则不能开始下一个读和写处理。
因此如果不存在正常I/O,则与盘装置的正常性能比较,重建或拷回完成前的时间长。近来,由于数据库容量的增加和盘装置存储容量的增加,重建或拷回完成前的时间正变得更长。
在某些情况下,可以向系统制造商的CE(客户工程师)请求重建或拷回的操作,这意味着在这些处理完成之前,CE必须在设备安装地点,因而增加了CE的处理等待时间,并要求减少这种处理时间。
发明内容
鉴于前述问题,本发明的目的是提供用于在处理正常I/O请求的同时执行重建或拷回处理时,提高重建或拷回处理的性能的RAID系统、RAID控制器及其重建或拷回处理方法。
本发明的另一个目的是提供用于在平衡地处理正常I/O请求和重建或拷回时,减少重建或拷回的完成时间的RAID系统、RAID控制器及其重建或拷回处理方法。
本发明的又一个目的是提供一种用于判断正常I/O请求的存在并高速地执行重建或拷回处理的RAID系统、RAID控制器及其重建或拷回处理方法。
为了实现这些目的,本发明是一种RAID系统,该RAID系统用于访问所连接的盘装置,并按照由主机请求的I/O请求执行该I/O请求,该RAID系统包括:构成了RAID的多个所述盘装置;和控制器,该控制器用于当多个盘装置中的一个发生故障时,执行读出该故障盘装置之外的盘装置的数据,并分部分多次地将该数据写到备用盘装置或新的盘装置的操作,以执行用于重构RAID构成的重建或拷回处理,其中,所述控制器包括:RAID控制模块,其判断是否在预定时间内包括来自所述主机的I/O请求在内的正常I/O请求没有到达,并且,如果经过预定时间所述正常I/O请求到达,则基于缺省值进行正常处理;重建或拷回模块,如果经过预定时间所述正常I/O请求没有到达,则发出用于一次所述重建或拷回的读出请求和写入请求,从而所述RAID控制模块连续执行用于重建或拷回的读出处理和写入处理;并且,如果经过预定时间所述正常I/O请求到达,则执行正常处理;以及进度表,用于管理所述重建或拷回处理的进度状态;所述重建或拷回模块按照所述进度表发出用于一次重建或拷回处理的所述读出请求和所述写入请求,并更新所述进度表。
本发明也是一种RAID控制器,该RAID控制器用于访问所连接的盘装置并按照由主机请求的I/O请求执行该I/O请求,该RAID控制器包括:第一接口电路,用于控制与所述主机的接口;第二接口电路,用于控制与构成该RAID的所述多个盘装置的接口;和控制器,该控制器用于当多个盘装置中的一个发生故障时,执行读出该故障盘装置之外的盘装置的数据,并分部分多次地将该数据写到备用盘装置或新的盘装置的操作,以执行用于重构RAID构成的重建或拷回处理,其中,所述控制器包括:RAID控制模块,其判断是否在预定时间内包括来自主机的I/O请求在内的正常I/O请求没有到达,并且如果经过预定时间所述正常I/O请求到达,则基于缺省值执行正常处理;重建或拷回模块,如果经过预定时间所述正常I/O请求没有到达,则发出用于一次所述重建或拷回的读出请求和写入请求,从而所述RAID控制模块连续执行用于重建或拷回的读出处理和写入处理;并且,如果经过预定时间所述正常I/O请求到达,则执行正常处理;以及进度表,用于管理所述重建或拷回处理的进度状态;所述重建或拷回模块按照所述进度表发出用于一次重建或拷回处理的所述读出请求和所述写入请求,并更新所述进度表。
本发明也是一种用于RAID系统的重建或拷回处理方法,该RAID系统访问所连接的盘装置并按照由主机请求的I/O请求执行该I/O请求,所述方法包括以下步骤:重建或拷回处理,用于当构成所述RAID的多个盘装置中的一个发生故障时,执行读出该故障盘装置之外的盘装置的数据,并分部分多次地将该数据写到备用盘装置或新的盘装置的操作,以执行用于重构RAID构成的重建或拷回处理;判断是否在预定时间内正常I/O请求(包括来自主机的I/O请求)没有到达;如果经过预定时间所述正常I/O请求没有到达,则同时执行所述重建或拷回中的对一个盘装置的读出处理和对另一个盘装置的写入处理;以及如果经过预定时间所述正常I/O请求到达,则交替执行所述正常I/O请求和用于一次所述重建或拷回的对所述盘装置的读出和写入中的一个的请求。
在本发明中,优选地,控制器记录每次正常I/O请求处理完成时的该正常I/O请求的处理完成时间,并比较该处理完成时间和当前时间,来判断是否在预定时间内正常I/O请求没有到达。
此外,在本发明中,优选地,控制器包括进度表,用于管理重建或拷回处理的进度状态,并按照进度表创建用于一次重建或拷回处理的读出请求,并依据该重建或拷回的并行写入和读出的完成更新该进度表。
同样,在本发明中,优选地,控制器还包括:RAID控制模块,其将请求分为直至读(up to read)处理和自写起(from write)处理,来执行用于重建或拷回的请求;以及重建或拷回模块,用于向RAID控制模块发出独立的重建或拷回处理的读出请求和写入请求。
同样,在本发明中,优选地,重建或拷回模块判断在预定时间内正常I/O请求没有到达时的情况和在预定时间内正常I/O请求到达时的情况之间的转换,并按照判断结果并行发出重建或拷回的读出请求和写入请求。
同样,在本发明中,优选地,在预定时间内正常I/O请求到达的情况转变为经过预定时间正常I/O请求没有到达的情况时,控制器发出用于一次重建或拷回处理的读出请求;并当所述读出请求的处理完成时,并行发出用于重建或拷回的读出请求和写入请求。
同样,在本发明中,优选地,当构成该RAID的多个盘装置中的一个发生故障时,控制器执行读出故障盘装置之外的盘装置的数据,并分部分多次地将该数据写入备用盘装置的操作,并在执行了该用于重构该RAID构成的重建处理之后,控制器执行读出备用盘装置中的数据并将该数据分部分多次地写入所提供的用以替换该故障盘装置的新盘装置的操作,来执行拷回处理。
在本发明中,在重建或拷回中,从一个盘读出数据,并写入到另一盘,因此判断正常I/O存在,当正常I/O不存在时,同时执行这些不同盘驱动器的读出和写入。这样,就减少了重建或拷回的时间。
附图说明
图1是说明按照本发明的实施例的盘阵列装置的方框图;
图2是说明图1中的控制模块的方框图;
图3是说明图1和图2中控制模块的固件的功能方框图;
图4是说明图3中固件细节的方框图;
图5是说明按照本发明的实施例的重建或拷回处理的流程图;
图6是说明图5中的处理的时序图;
图7是说明图5中的处理操作的图;
图8是说明按照本发明实施例的重建或拷回并行处理的时序图;
图9是说明图4中RAID控制模块的处理的流程图;
图10是说明图4中RAID控制模块的另一处理的流程图;
图11是按照本发明实施例的动态和静态状态转换图;
图12是说明按照本发明实施例的重建或拷回模块的请求处理的流程图;
图13是说明按照本发明实施例的重建或拷回模块的响应处理的流程图;
图14是说明常规的重建处理的图;
图15是说明常规的拷回处理的图;以及
图16是说明常规的拷回处理的时序图。
具体实施方式
现在按盘阵列装置(RAID系统)、线程构成(thread configuration)、重建或拷回处理、重建或拷回的并行处理和其它实施例的顺序说明本发明的实施例。
盘阵列装置
图1是说明按照本发明的实施例的盘阵列装置的方框图,图2是说明图1中的控制模块的方框图。
虽然图1示出了具有两个控制模块的小规模盘阵列装置作为示例,但是本发明能够完全一样地应用于具有四个控制模块的中规模盘阵列装置和具有八个控制模块的大规模盘阵列装置。
如图1所示,盘阵列装置具有:用于安装保存数据用的多个盘装置的多个盘柜(disk enclosure)2-0到2-3;和多个(在本例中是2个)控制模块(RAID控制器)4-0到4-1,其被安装在未示出的主计算机(数据处理设备)和多个盘柜2-0到2-3之间。
每个控制模块4-0到4-1具有控制器40、通道适配器(第一接口部分:图1中的CA)41、盘适配器(第二接口部分:图1中的DA)42a和42b、和DMA(直接存储器访问)引擎(通信部分:图1中的DMA)43。
将参照图1和图2说明控制模块4-0到4-1。控制器40基于来自主计算机的处理请求(读出请求或写入请求)执行读出/写入处理,并具有存储器40b和控制单元40a。
存储器40b包括高速缓存区和其他工作区,该高速缓存区通过保存盘柜2-0到2-3中的多个盘中保存的部分数据,而用作该多个盘的高速缓存。
控制单元40a控制存储器40b、通道适配器41、装置适配器42a和42b和DMA 43。为此,控制单元40a具有一个或更多个(在图1和图2中是2个)CPU(400和410)以及存储器控制器420。存储器控制器420控制存储器40b的读出/写入并切换路径(path)。
存储器控制器420经存储器总线434与存储器40b连接,并经CPU总线430和432连接到CPU 400和410,存储器控制器420还经四通道高速串行总线(four lane high-speed serial buses)(例如PCI-Express总线)440和442连接到盘适配器42a和42b。
同样地,存储器控制器420经四通道高速串行总线(例如PCI-Express总线)443、444、445和446连接到通道适配器41(在本例中为四个通道适配器41a、41b、41c和41d),并经四通道高速串行总线(例如PCI-Express总线)447和448连接到DMA 43(在本例中为两个DMA43-a和43-b)。
高速串行总线(如PCI-Express总线)用分组通信,通过安装多条串行总线,即使减少了信号线的数量,也能实现低延迟和高响应速度(即低反应时间(latency))的通信。
通道适配器41a到41d是与主计算机的接口,并且通道适配器41a到41d分别连接到不同的主计算机。优选地,通道适配器41a到41d经总线分别连接到相应的主计算机的接口部分,该总线例如光纤通道和在本例中,光纤或同轴电缆用作该总线。
这些通道适配器41a到41d中的每一个构成了各控制模块4-0到4-1的一部分。作为相应主计算机和控制模块4-0到4-1之间的接口部分,通道适配器41a到41d支持多种协议。
在这里,将被安装的协议随相应的主计算机而不同,因此各通道适配器41a到41d被安装到与控制器40(其为控制模块4-0到4-1的主要单元)的印刷电路板不同的印刷电路板上,从而在需要时可方便地进行更换。
同样利用连接LSI(大规模集成)和印刷电路板的总线(如上文提到的PCI-Express总线),各通道适配器41a到41d直接连接到控制器40。这样,能够实现各通道适配器41a到41d与控制器40之间所需的高吞吐量。
盘适配器42a/42b是用于盘柜2-0到2-3的各盘驱动器的接口,并被连接到盘柜2-0到2-3,在本例中,具有四个FC(光纤通道)端口。
利用被设计用于连接LSI(大规模集成)和印刷电路板的总线(如上文提到的PCI-Express总线),将每个盘适配器42a和42b直接连接到控制器40。这样,能够被实现各盘适配器42a和42b与控制器40之间所要求的高吞吐量。
如图1所示,每个盘柜2-0到2-3具有多个(例如15个)盘驱动器200,并分别具有两个端口。在盘柜2-0到2-3中,各盘驱动器200的各端口经来自该两个端口的一对FC线缆,被连接到该两个端口。
这两个端口分别将各控制模块4-0到4-1的盘适配器42a和42b连接到所有的盘柜2-0到2-3。换句话说,各控制模块4-0到4-1的盘适配器42a被连接到盘柜2-0到2-3,同样地,各控制模块4-0到4-1的盘适配器42b被连接到盘柜2-0到2-3。
按照该构成,各控制模块4-0到4-1能够经任一盘适配器42a和42b和任意路径访问所有的盘柜(盘驱动器)2-0到2-3。
例如,经过光纤通道连接了各盘适配器42a/42b和相应的盘柜2-0到2-3,在这种情况下,由于模块是不同的,使用光缆用于连接。
如图1所示,DMA引擎43用于与各控制模块4-0到4-1相互通信,并负责与其他控制模块的通信和数据传递处理。各控制模块4-0到4-1的各DMA引擎43构成了控制模块4-0到4-1的一部分,并被安装到控制器40(控制模块4-0到4-1的主要单元)的板上。每个DMA引擎43通过上面提到的高速串行总线被直接连到控制器40,并与另一控制模块4-0到4-1的DMA引擎43相互通信。
通过该构成,各控制模块4-0到4-1的各DMA引擎43执行由来自主计算机的访问请求产生的通信,并执行自身连接的控制器40与其他控制模块4-0到4-1之间的数据传递处理(例如,镜像处理)。
同样如图2所示,各控制模块4-0到4-1的DMA引擎43由多个(本例中为2个)DMA引擎43-a和43-b组成,并例如如图2中所示,该两个DMA引擎43-a和43-b中的每一个都经PCI-Express总线连接到控制器40。换句话说,在各控制模块4-0到4-1之间(也就是各控制模块4-0到4-1的控制器40之间)进行通信和数据传递(DMA)处理的情况下,由于要求高的吞吐量和低的反应时间(快的响应速度),因而理想的是数据传输量大并且通信控制需要的时间短。为此,如图1和图2所示,经由使用被设计用于满足对高的吞吐量和低的反应时间这二者的要求的高速串行传输的总线(PCI-Express或Rapi d-IO),连接各控制模块4-0到4-1的DMA引擎43。
PCI-Express和Rapid-IO使用2.5Gbps高速串行传输,对于这些总线接口,使用被称为LVDS(低压差分信号)的低幅差分接口(low amplitudedifferential interface)。
线程构成
现在说明将由CPU 400(410)执行的程序模块(线程)。图3是说明了将由CPU 400(410)执行的软件线程的方框图,图4是说明其细节的方框图。如图3所示,软件模块具有内核/调度程序(kernel/scheduler)600、IO控制模块602、CM间通信驱动器604、CPU间通信驱动器606、系统控制模块608和网络驱动器610。
基本模块640具有前端和后端,前端具有用于管理资源的资源线程(资源控制模块)642、用于执行拷贝处理的拷贝线程(拷贝控制模块)646、和用于控制存储器40b的高速缓存存储器的高速缓存线程(高速缓存存储器控制模块)648,后端具有用于控制RAID构成的RAID线程(RAID控制模块)632和OVSM线程(OVSM控制模块)634。
OVSM线程634执行后文说明的重建或拷回处理。维护代理612向OVSM线程634发送各种通知。CM-DA驱动器630是用于驱动DA(盘适配器)42的驱动器。CM间通信驱动器604与另一CM(控制模块)通信,CPU间通信驱动器606与另一CPU 410通信。
系统控制模块608具有构成管理模块652。构成管理模块652经网络驱动器610按照服务控制器46的规范在存储器40b中创建包括用于构成定义的RLU(RAID逻辑单元)表在内的构成定义表。服务控制器46没在图1中示出,其公用于各CM(控制模块)。
在连接到DA 42的盘柜2-0到2-3中布置的盘驱动器200被分为系统盘200-1和用户盘200-2,并在系统盘200-1中存储该构成定义表。
资源模块642和RAID模块632参考该构成定义表,将来自主机的LUN(逻辑单元号)转变为物理盘的PLBA(物理块地址),并访问物理盘200。
如图4所示,OVSM线程634具有用于管理重建或拷回进度的重建或拷回模块634-1。重建或拷回模块634-1向后文说明的RAID控制模块632请求各次重建或拷回处理,接收它的响应,并记录重建或拷回的进度。
然而RAID控制模块632获得临时存储数据的缓冲器(此后称为数据缓冲器),并指示向盘装置的读出或写入。具体地,在重建或拷回的情况下,RAID控制模块632负责用于从盘装置中读出数据并将其存储在数据缓冲器中的读出处理632-3和用于将该数据缓冲器的内容写入盘装置的写入处理632-4。
RAID控制模块632具有:正常I/O完成时间记录部分632-1,用于记录最后的正常I/O完成时的时间;正常I/O存在判断模块632-2,用于比较正常I/O完成时间记录部分632-1的时间和当前时间,来判断是否存在例如5秒钟的差。
OVSM模块634具有:重建模块634-2和拷回模块634-3,用于向RAID控制模块632请求实际的重建或拷回处理;处理大小改变模块634-4,用于当请求实际处理时,调用正常I/O存在判断模块632-2的判断结果,并依据该结果,改变实际处理的一次处理大小;状态转换判断处理模块634-5,用于执行后文提及的重建或拷回的并行处理。
重建或拷回模块634-1参考进度表416(其用于在存储器40b中存储开始LBA)和缺省存储部分414(其存储处理大小的缺省值),决定一次实际处理大小,并请求实际处理。
利用此构成,每次OVSM模块634向RAID控制模块632请求重建或拷回的实际处理时,OVSM模块634向RAID控制模块632确认正常I/O的存在(自正常I/O不存在起是否已过5秒或更长的时间),接收其结果,然后OVSM模块634判断状态转换,并改变将传递给RAID控制模块632的实际重建或拷回处理的多个请求和参数(一次处理的大小)。
在这里,5秒或更长的时间被用来判断正常I/O存在,这是因为如果交替重复I/O存在时的计时和I/O不存在时的计时,则可预防识别错误。换句话说,偶然地,当正常I/O到达时,即使在重建或拷回的时刻不存在正常I/O,也会在重建或拷回开始后立即产生正常I/O。这样的情况被分类为正常I/O存在状态,所以不会延迟正常I/O的处理。
重建或拷回处理
图5是说明按照本发明的实施例的重建或拷回处理的流程图,图6是它的时序图,图7是它的操作图。
现在将参照图6和图7,说明图5中的重建或拷回处理。
(S10)首先在重建或拷回的开始,OVSM模块634确认从RAID控制模块632收到了完成响应。
(S12)然后OVSM模块634的重建或拷回模块634-1参考存储器40b的重建或拷回进度表410的开始RLBA。如图7所示,如果重建或拷回处理的目标是在RAID构成中的LBA(逻辑块地址)‘000’到‘nnn’,则下一次重建或拷回处理的目标数据的开始RLBA已被记录在开始RLBA中。
(S14)重建或拷回模块634-1利用进度表410的开始RLBA判断是否完成了所有目标RLU(RAID逻辑单元)的处理。如果重建或拷回模块634-1判断所有RLU的处理都被完成,则处理结束。
(S16)如果重建或拷回模块634-1判断未完成所有RLU的处理,则重建或拷回模块634-1向RAID控制模块632询问正常I/O的存在。如图4所述,RAID控制模块632判断从正常I/O不存在时起是否已过了5秒钟或更长的时间。
(S18)重建或拷回模块634-1利用来自RAID控制模块632的响应确认是否存在正常I/O,并且如果存在正常I/O,则如图6中的拷回1所示,一次处理的大小被设定为存储器40b的缺省值,并执行后文所说明的正常处理。如果不存在正常I/O,则如图6中的拷回2所示,一次处理的大小被定为存储器40b的2倍缺省值,并执行后文所提及的并行处理。
(S20)接着重建或拷回模块634-1利用开始RLBA和设定的处理大小向RAID控制模块632请求分开地进行读出和写入的实际处理。重建或拷回模块634-1还将处理大小加到开始RLBA上,以计算下一个开始RLBA,并将进度表410更新为计算后的开始RLBA。处理返回到步骤S10。
这样,如图7所示,比较正常I/O存在状态(此后称为动态状态)和正常I/O不存在状态(此后称为静态状态),在静态状态情况下,增大一次处理的大小,并并行地处理读出/写入。如果增加了用于一次处理的大小,则重建或拷回处理速度增快,但随之而来地,对正常I/O的影响增大。
因而在动态状态情况下,指定不干扰正常I/O处理的处理大小,并在静态状态情况下,指定比其大的处理大小(例如,根据盘性能,最好是物理盘驱动器的一个或更多个轨道的大小)。可简单地改变从OVSM模块634向RAID控制模块632请求实际重建或拷回处理时的参数,以指定该大小。
在图3中,在有来自主机的访问处理的情况下,接收来自主机读出请求的CA 41经CM-CA驱动器620向资源模块642通报此请求,资源模块642接收该读出请求。
资源模块642请求高速缓存模块648判断是否发生了高速缓存命中(cache hit)。即,高速缓存模块648检查在存储器40b的高速缓存区内是否存在目标主机LUN的LBA(OLBA)的数据,如果存在(命中),则高速缓存模块648读出存储器40b的OLBA(主机逻辑块地址)的数据,并从CA 41经CM-CA驱动器620向主机传输该数据。
如果判断在存储器40b的高速缓存区内不存在目标主机LUN的LBA(OLBA)的数据(未命中),则高速缓存模块648请求后端的RAID控制模块632从物理盘读出数据。RAID控制模块632将请求处理的主机LUN的LBA(OLBA)转换为RAID组的LBA(RLBA)。
然后RAID控制模块632将RAID组的LBA(RLBA)转换为虚拟盘的LBA(DLBA)。然后RAID控制模块632将被请求处理的虚拟盘的LBA(DLBA)转换为物理盘的LBA(PLBA)。该处理随RAID的构成(例如RAID1、RAID5)而不同。
然后RAID控制模块632根据被请求处理的物理盘的LBA(PLBA)确定盘柜和插槽,并向物理盘200的LBA(PLBA)发送读出请求。换句话说,RAID控制模块632经CM-DA驱动器630向相应的DA 42发送该物理盘的读出请求,并访问该物理盘。
当从物理盘读出了数据时,高速缓存模块648经DA 42将该数据存储到存储器40b的高速缓存区,然后结束读出,资源模块642从CA 41经CM-CA驱动器620向主机传输所读出的数据,然后处理结束。
对于从主机的写入处理,一旦在存储器40b的高速缓存区中存储了写入数据,则按照内部写回调度,将该写入数据写回物理盘。同样,对于该写回,在未命中后的处理中执行使用构成定义表的地址转换处理。
RAID控制模块632区分正常I/O(如接受的主机I/O、内部I/O(例如写回)和接受的重建或拷回请求)的优先次序,按照预定的I/O比率、优先次序,向更低层的CM-DA模块630请求它们。
这样,如图7所示,按照RAID控制所管理的正常I/O的存在,改变重建或拷回的一次处理大小,因而如果存在正常I/O,则可以不干扰正常I/O的处理地执行重建或拷回;而在静态状态,指定比其大的处理大小,可以高速执行重建或拷回处理。
RAID控制模块632通过记录最后的正常I/O完成的时间,比较该时间和当前时间,并判断是否有例如5秒钟的差,来执行正常I/O存在判断处理,所以重建或拷回模块634-1可以通过询问而方便地改变处理大小,并进行重建或拷回处理。
重建或拷回的并行处理
现将说明上面提到的正常I/O不存在(静态状态)的情况下的重建或拷回的并行处理。图8是说明按照本发明实施例的重建或拷回的并行处理的时序图,图9和图10是说明RAID控制模块处理的流程图。
如图8所示,在重建或拷回的情况下,数据被从一个盘读出,并被写入另一盘。对这些不同的盘驱动器的读出和写入是同时执行的。这样,减少了重建或拷回时间。该功能被称为“并行处理”。
如图4和图8所示,RAID控制模块632把实际重建或拷回处理分为仅用于“直至读”的处理632-3和仅用于“自写起”的处理632-4。OVSM模块634单独地创建仅用于“直至读”的处理请求和仅用于“自写起”的处理请求。在动态状态情况下(在I/O存在的情况下),连续地执行读出和写入。
而在静态状态情况下(在I/O不存在的情况下),如图8所示,OVSM模块634分别调用用于“直至读”的处理632-3和用于“自写起”的处理632-4。在用于“直至读”的处理632-3的情况下,RAID控制模块632-3在获取数据缓冲器并设置独占权的情况下完成处理,并向OVSM模块634发送响应。
现将使用拷回处理为例在图8中具体说明该处理。如图8所示,针对第一次拷回1,OVSM模块634向RAID控制模块632仅请求用于第一区的“直至读”。
对于第二个或后来的拷回2、3、4…,在完成了从RAID控制模块632的读出时,OVSM模块634依次向RAID控制模块632请求针对刚完成读的区的“自写起”处理请求以及针对下一个区的“直至读”处理请求。
同样地,当从RAID控制模块632接收到写入完成和读出完成时,OVSM模块634依次向RAID控制模块632请求针对刚完成读的区的“自写起”处理请求以及针对下一个区的“直至读”处理请求。
OVSM模块634从RAID控制模块632接收写入完成和读出完成,并且仅针对最后一次拷回,仅请求用于“自写起”的处理。
同样地,对第二次和以后的拷回,并行地执行从1号盘的读出操作和向2号盘的写入操作,其有效地减少了拷回处理的时间。这对重建处理也是一样的。
图9和图10是说明RAID控制模块632的用于“直至读”的处理632-3和用于“自写起”的处理632-4的流程图。图9示出了RAID 1的重建以及RAID 1和RAID 5拷回的示例,图10示出了RAID 5重建的示例。
如图9所示,在RAID控制模块632的用于“直至读”的处理632-3中,设置独占权(S21),然后,在存储器40b中获取数据缓冲器(S22)。获得盘的ACB(访问控制块)(S23),并获得FC环路的FC段(S24)。这样,经驱动器630和盘适配器42读访问了盘驱动器,并且所读出的数据被存储到所获得的数据缓冲器(S25)。
然后释放FC段(S26),释放盘的ACB(S27)。然后RAID控制模块的读出处理632-3向OVSM模块634报告读出完成。
另一方面,在RAID控制模块632的用于“自写起”的处理632-4中,获得盘的ACB(访问控制块)(S30),获得FC环路的FC段(S31)。这样,经驱动器630和盘适配器42写入访问了盘驱动器,在存储器40b的数据缓冲器中的读出的数据被写到盘中(S32)。
接着释放FC段(33),释放盘的ACB(S34)。然后释放数据缓冲器(S35),清除独占权(S36),向OVSM模块634报告写入完成。
在图10中RAID 5重建处理情况下,如图14所说明的,在读出处理632-3中要求利用XOR再生数据,所以在步骤S25对图14中的1号、2号和3号这多个(3个)盘驱动器执行读盘,在释放了盘的ACB之后,执行从这三个数据创建冗余数据的XOR处理(S28),并向OVSM模块634报告读出完成。写入处理632-4与图9一样。
对于数据缓冲器的获取和释放,用于上文提到的重建的读出的数据缓冲器和用于写入重建结果的数据缓冲器被同时获取和释放。在用于“自写起”的处理632-4的情况下,用于重建的数据读出是不必要的,但被保留。这样,省掉了释放处理而增加了处理速度。
当用于“自写起”的处理结束时,OVSM模块634更新图5中步骤S20的重建或拷回处理的进度。
现在将更具体地说明重建或拷回的并行处理。如果使用该并行处理,则在动态状态和静态状态改变时,切换重建或拷回的操作。因此当收到来自RAID控制模块632的响应时,OVSM模块634决定下一个处理将是什么。
图11是当读出和写入被分开时动态和静态的状态转换图,图12是说明OVSM模块向RAID控制模块的请求处理的流程图,图13是说明当收到来自RAID控制模块的响应时OVSM模块的处理的流程图。
如图11所示,当重建或拷回处理被分为“直至读”处理和“自写起”处理时,OVSM模块634必须决定的动态和静态在状态转换方面具有五种可能的状态。
即:动态正常状态A,其中“自读起(from read)”和“直至写(upto write)”都在上次动态状态下被处理;动态“自写起”状态B,其中“自写起”在上次动态状态中被处理;静态“直至读”状态C,其中“直至读”在上次静态状态中被处理;静态“直至读”和“自写起”状态D,其中读出和写入都在上次静态状态中被执行;以及静态“自写起”状态E,其中“直至写”在上次静态状态中被处理。
缺省状态(从图3中的系统控制模块608的RAID恢复模块(未示出)启动OVSM模块的状态)是动态状态A。此后假定在执行并行处理时ACB用于控制该处理并且针对并行处理数提供ACB。此外,在OVSM模块将要执行重建或拷回时,已为操作获得了一个ACB。
(1)在从前一动态状态(重建或拷回是正常的)A向当前的动态状态A转换的情况下,设定下一处理范围(用于动态处理的大小),并向RAID控制模块632传递正常请求(读出后请求写入),就象上次一样。如果没有下一重建或拷回的处理范围,则该LU(逻辑单元)的重建或拷回完成。
(2)在从前一动态状态(重建或拷回仅用于“自写起”)B向当前动态状态A转换的情况下,如果已经获得了ACB,则释放ACB。并就象(1)一样,设定下一处理范围(用于动态处理的大小),并向RAID控制模块632传递正常请求。如果没有下一处理范围,在释放以上的ACB之后,该LU的重建或拷回完成。
(3)在从前一动态状态(重建或拷回是正常的)A向当前静态状态C转换的情况下,设定下一处理范围(用于静态处理的大小),并向RAID控制模块632传递用于“直至读”的请求。这相应于图8中的第一次处理。如果没有下一处理范围,该LU的重建或拷回完成。
(4)在从前一动态状态(重建或拷回仅用于“自写起”)B向当前静态状态C转换的情况下,如果已经获得了ACB,则释放ACB。设定下一处理范围(用于静态处理的大小),并向RAID控制模块632传递“直至读”请求。这相应于图8中的第一次处理。如果没有下一处理范围,该LU的重建或拷回完成。
(5)在从前一静态状态(重建或拷回仅用于“直至读”)C向当前动态状态B转换的情况下,向RAID控制模块632发送用于“自写起”的请求,请求同样的处理范围。
(6)在从前一静态状态(重建或拷回用于“自写起”和“直至读”二者)D向当前动态状态B转换的情况下,处理等待,直到针对读和写两者的ACB都返回了,随后向RAID控制模块632发送用于“自写起”的请求,请求与“直至读”的ACB同样的处理范围。“自写起”的ACB被临时保留。
(7)在从前一静态状态(重建或拷回仅用于“自写起”)E向当前动态状态B转换的情况下(该情况是仅在没有下一重建或拷回的处理时的情况),在释放了ACB之后,该LU的重建或拷回完成。这相应于图8中的最终处理。
(8)在从前一静态状态(重建或拷回仅用于“直至读”)C向当前的静态状态D转换的情况下,获得一个内部的ACB,并连接所获得的ACB和原来存在的ACB。如果该内部ACB的获得发生故障,则执行同动态状态A和B的情况一样的操作。对于“直至读”的ACB(原来存在的ACB),向RAID控制模块632发送“自写起”请求,请求同样的处理范围。针对所获得的ACB,设定下一处理范围(用于静态处理的大小),并向RAID控制模块632发送用于“直至读”的请求。如果没有处理范围,没有获得ACB,则仅向RAID控制模块632发送用“自写起”的请求。这相应于图8中的第二次和以后的并行处理。
(9)在从前一静态状态(重建或拷回用于“自写起”和“直至读”二者)D向当前静态状态D转换的情况下,处理等待,直到对读出和写入二者都返回了ACB,并向RAID控制模块632发送“自写起”请求,请求“直至读”的ACB请求同样的处理范围,就同前次一样。针对“自写起”的ACB,设定下一处理范围(用于静态处理的大小),并向RAID控制模块632传递用于“直至读”的请求。如果没有下一处理范围,仅向RAID控制器发送用于“自写起”的请求。
(10)从前一静态状态(重建或拷回仅用于“自写起”)E向当前的静态状态D转换的情况仅在没有下一处理时的情况。如果没有下一处理范围,在释放ACB之后,该LU的重建或拷回完成。
对于各种错误恢复,如图9和图10所示,RAID控制模块632提供“仅释放资源”作为与“直至读”和“自写起”相分开的仅用于释放在“直至读”中获得的资源(独占的控制器/数据缓冲器)的处理。
这样,即使重建或拷回处理被分为用于“直至读”处理和用于“写后”的处理,写入和读出的并行处理也能够继续,而无论是否发生动态状态和静态状态的转换。
现将参考图12说明当向RAID控制模块发送请求以实现上述情况时,OVSM模块的处理。
(S40)OVSM模块634根据来自RAID控制模块632的I/O存在确认响应确认动态状态或静态状态。首先判断上次状态是否是动态正常状态。
(S42)如果上次是动态正常状态,则OVSM模块634判断这次(当前次)是动态状态还是静态状态。如果这次是动态状态,则设定下一处理范围(用于动态处理的大小),就象情况(1)一样,向RAID控制模块632发送正常请求(读出之后请求写入)。如果没有下一重建或拷回的处理范围,该LU(逻辑单元)的重建或拷回完成。如果这次状态变成静态状态,则设定下一处理范围(用于静态处理的大小),就象情况(3)一样,向RAID控制模块632发送用于“直至读”的请求。这相应于图8中的第一次处理。如果没有下一处理范围,该LU的重建或拷回完成。请求处理结束。
(S44)如果不是动态正常状态,则OVSM模块634判断是否是动态“自写起”状态。
(S46)如果上次是动态“自写起”状态,则OVSM模块634判断是否有两个ACB,并且如果有两个,就释放一个,然后OVSM模块634判断这次(当前次)是动态状态还是静态状态。如果这次是动态状态,则状态变成动态正常状态,则设定下一处理范围(用于动态处理的大小),就象情况(2)一样,并向RAID控制模块632发送正常请求(读出之后请求写入)。如果判断这次为静态状态,则设定下一处理范围(用于静态处理的大小),就象情况(4)一样,并向RAID控制模块632发送用于“直至读”的请求。请求处理结束。
(S48)如果不是动态“自写起”状态,则OVSM模块634判断是否是静态“直至读”状态C。
(S50)如果上次是静态“直至读”状态,则OVSM模块634判断这次(当前次)是动态状态还是静态状态。如果这次是动态状态,则状态变成动态“自写起”状态,就象情况(5)一样,并向RAID控制模块632发送用于“自写起”的请求。请求处理结束。
(S52)如果判断这次为静态状态,则判断这是否是最终处理范围。如果是最终处理范围,则静态“直至读”状态变成静态状态D,并向RAID控制模块632发送“自写起”请求。如果不是最终处理范围,则OVSM模块634获得一个ACB,并将静态“直至读”状态改变为静态状态D,向RAID控制模块632发送已完成了读出的范围内的“自写起”请求,设定下一处理范围(用于动态处理的大小),向RAID控制模块632发送用于“直至读”的请求。请求处理结束。
(S54)如果不是静态“直至读”状态,则OVSM模块634判断是否是静态“直至读”和“自写起”状态D。
(S56)如果上次是“直至读”和“自写起”状态D,则OVSM模块634判断这次(当前次)是动态状态还是静态状态。如果这次是动态状态,则状态变成动态“自写起”状态,就象情况(6)一样,并向RAID控制模块632发送用于“自写起”的请求。没有在使用中的ACB被临时保留。请求处理结束。
(S58)如果这次是静态状态,则OVSM模块634判断这是否是最终处理范围。如果是最终处理范围,则状态变成静态“自写起”状态,向RAID控制模块632发送用于“自写起”的请求。没有在使用中的ACB被临时保留。如果不是最终处理范围,则OVSM模块634将该状态保持为静态状态D,向RAID控制模块632发送已完成了读出的范围内的用于“自写起”的请求,设定下一处理范围(用于动态处理的大小),并向RAID控制模块632发送用于“直至读”的请求。请求处理结束。
(S60)如果不是静态“直至读”和“自写起”状态D,则OVSM模块634执行错误处理。换句话说,从静态“自写起”状态D开始的转换不应该发生。请求处理结束。
现将参考图13说明收到了来自RAID控制模块的响应时OVSM模块的处理。
(S70)当收到来自RAID控制模块632的响应时,OVSM模块634判断是否是静态“直至读”和“自写起”状态D。
(S72)如果是静态“直至读”和“自写起”状态D,则OVSM模块634判断是否收到了来自RAID控制模块632的针对“直至读”和“自写起”二者的完成响应。如果没有收到这两个响应,处理等待,直到收到了这两个响应。如果判断收到了这两个响应,则更新进度信息410。
(S74)并向RAID控制模块632发送下一请求(见图12)。
(S76)另一方面,如果OVSM模块634判断不是静态“直至读”和“自写起”状态D,则OVSM模块634判断是否是静态“直至读”状态C。如果OVSM模块634判断是静态“直至读”状态C,则处理移到步骤S74。
(S78)如果OVSM模块634判断不是静态“直至读”状态C,则OVSM模块634判断是否是动态“自写起”状态B。如果OVSM模块634判断不是动态“自写起”状态B,则OVSM模块634判断是否是动态正常状态A。
(S80)如果OVSM模块634判断该状态既不是动态“自写起”状态B也不是动态正常状态A,则OVSM模块634更新进度信息410,并判断是否是最终处理范围。如果不是最终处理范围,则处理移到步骤S74。
(S82)如果是最终处理范围,则如果有两个ACB,就释放一个,该RLU的处理完成。
(S84)如果OVSM模块634判断不是动态正常状态A,则OVSM模块634判断是否是静态“自写起”状态E。如果OVSM模块634判断是静态“自写起”状态E,则更新进度信息410,处理移到步骤S82。如果OVSM模块634判断不是静态“自写起”状态,则处理结束。
这样,通过在OVSM模块634中安装用于执行上面处理的状态转换判断模块634-5,可以将RAID控制模块632的改变减到最少。换句话说,如图9和图10所说明的,将重建或拷回处理分为“直至读”处理和“写后”处理就足够了。
当重建或拷回处理被分为“直至读”处理和“写后”处理时,即使在动态状态和静态状态之间的发生转换,也能够继续写入和读出的并行处理。
其它实施例
在上面的实施例中,具有图1中构成的盘阵列装置被用于说明,但是本发明可以被应用于具有其它结构的盘阵列装置。对于物理盘,可以使用磁盘、光盘、磁光盘和各种类型的存储装置。
用于监视正常I/O存在的时间是5秒钟,但是可以使用不同的监视时间,并可以由OVSM模块执行I/O存在的判断。处理大小的改变是2倍缺省值,但是可以使用其它的倍数,如1.5倍,或取决于正常I/O的存在,可以设置不同的处理大小。
状态被分为五个来说明转换,但状态可以被简化,例如通过忽略动态“自写起”状态。
通过实施例说明了本发明,但在本发明的本质特征的范围内,能够以不同方式改变本发明,这些不同的形式将不被排除在本发明范围之外。
如上所述,在重建或拷回中,数据被从一个盘读出,并被写入另一盘,所以判断正常I/O的存在,并当正常I/O不存在时,同时执行这些不同盘驱动器的读出和写入。这样,可以减少重建或拷回的时间。
本申请基于并要求2005年10月28日提交的在先日本专利申请第2005-314695号的优先权,在此通过引用将其全部内容合并在本文中。
Claims (10)
1.一种RAID系统,该RAID系统用于访问所连接的盘装置,并按照由主机请求的I/O请求执行该I/O请求,该RAID系统包括:
构成了RAID的多个所述盘装置;和
控制器,该控制器用于当多个盘装置中的一个发生故障时,执行读出该故障盘装置之外的盘装置的数据,并分部分多次地将该数据写到备用盘装置或新的盘装置的操作,以执行用于重构RAID构成的重建或拷回处理,
其中,所述控制器包括:
RAID控制模块,其判断是否在预定时间内包括来自所述主机的I/O请求在内的正常I/O请求没有到达,并且,如果经过预定时间所述正常I/O请求到达,则基于缺省值进行正常处理;
重建或拷回模块,如果经过预定时间所述正常I/O请求没有到达,则发出用于一次所述重建或拷回的读出请求和写入请求,从而所述RAID控制模块连续执行用于重建或拷回的读出处理和写入处理;并且,如果经过预定时间所述正常I/O请求到达,则执行正常处理;以及
进度表,用于管理所述重建或拷回处理的进度状态;
所述重建或拷回模块按照所述进度表发出用于一次重建或拷回处理的所述读出请求和所述写入请求,并更新所述进度表。
2.根据权利要求1所述的RAID系统,其中,所述RAID控制模块记录每次正常I/O请求处理完成时的所述正常I/O请求处理完成时间,并比较所述处理完成时间和当前时间,来判断是否在预定时间内正常I/O请求没有到达。
3.根据权利要求1所述的RAID系统,其中,所述重建或拷回模块判断经过预定时间正常I/O请求没有到达时的情况与在预定时间内所述正常I/O请求到达时的情况之间的转换,并依据所述判断结果并行发出所述重建或拷回的读出请求和写入请求。
4.根据权利要求1所述的RAID系统,其中,所述重建或拷回模块在预定时间内所述正常I/O请求到达时的情况转变为经过预定时间所述正常I/O请求没有到达时的情况之时,发出用于一次所述重建或拷回处理的读出请求,并当所述读出请求的处理完成时,并行发出用于所述重建或拷回的读出请求和写入请求。
5.根据权利要求1所述的RAID系统,其中,当构成所述RAID的所述多个盘装置中的一个发生故障时,所述控制器执行读出故障盘装置以外的盘装置的数据,并分部分多次将该数据写入备用盘装置的操作,
在执行了用于重构RAID构成的重建处理之后,所述控制器执行读出所述备用盘装置中的数据并将该数据分部分多次地写入所提供的替换故障盘装置的新盘装置的操作,以执行拷回处理。
6.一种RAID控制器,该RAID控制器用于访问所连接的盘装置并按照由主机请求的I/O请求执行该I/O请求,该RAID控制器包括:
第一接口电路,用于控制与所述主机的接口;
第二接口电路,用于控制与构成该RAID的所述多个盘装置的接口;和
控制器,该控制器用于当多个盘装置中的一个发生故障时,执行读出该故障盘装置之外的盘装置的数据,并分部分多次地将该数据写到备用盘装置或新的盘装置的操作,以执行用于重构RAID构成的重建或拷回处理,
其中,所述控制器包括:
RAID控制模块,其判断是否在预定时间内包括来自主机的I/O请求在内的正常I/O请求没有到达,并且如果经过预定时间所述正常I/O请求到达,则基于缺省值执行正常处理;
重建或拷回模块,如果经过预定时间所述正常I/O请求没有到达,则发出用于一次所述重建或拷回的读出请求和写入请求,从而所述RAID控制模块连续执行用于重建或拷回的读出处理和写入处理;并且,如果经过预定时间所述正常I/O请求到达,则执行正常处理;以及
进度表,用于管理所述重建或拷回处理的进度状态;
所述重建或拷回模块按照所述进度表发出用于一次重建或拷回处理的所述读出请求和所述写入请求,并更新所述进度表。
7.根据权利要求6所述的RAID控制器,其中,所述RAID控制模块记录每次正常I/O请求的处理完成时的所述正常I/O请求的处理完成时间,并比较所述处理完成时间和当前时间,来判断是否在预定时间内正常I/O请求没有到达。
8.根据权利要求6所述的RAID控制器,其中,所述重建或拷回模块判断经过预定时间正常I/O请求没有到达时的情况与在预定时间内所述正常I/O请求到达时的情况之间的转换,并依据所述判断结果并行发出所述重建或拷回的读出请求和写入请求。
9.根据权利要求6所述的RAID控制器,其中,当在预定时间内所述正常I/O请求到达时的情况转变为经过预定时间所述正常I/O请求没有到达时的情况之时,所述重建或拷回模块发出用于一次所述重建或拷回处理的读出请求,并当所述读出请求处理完成时,并行发出用于所述重建或拷回的读出请求和写入请求。
10.根据权利要求6所述的RAID控制器,其中,当构成所述RAID的所述多个盘装置中的一个发生故障时,所述控制器执行读出故障盘装置以外的盘装置的数据,并分部分多次地将该数据写入备用盘装置的操作,
在执行用于重构RAID构成的重建处理之后,所述控制器执行读出所述备用盘装置中的数据并将该数据分部分多次地写入所提供的替换所述故障盘装置的新盘装置的操作,以执行拷回处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005314695A JP4472617B2 (ja) | 2005-10-28 | 2005-10-28 | Raidシステム、raidコントローラ及びそのリビルド/コピーバック処理方法 |
JP2005314695 | 2005-10-28 | ||
JP2005-314695 | 2005-10-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1955940A CN1955940A (zh) | 2007-05-02 |
CN1955940B true CN1955940B (zh) | 2010-09-08 |
Family
ID=37998030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100570621A Expired - Fee Related CN1955940B (zh) | 2005-10-28 | 2006-03-17 | Raid系统、raid控制器及其重建或拷回处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7562249B2 (zh) |
JP (1) | JP4472617B2 (zh) |
KR (1) | KR100793224B1 (zh) |
CN (1) | CN1955940B (zh) |
Families Citing this family (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4815825B2 (ja) * | 2005-03-10 | 2011-11-16 | 日本電気株式会社 | ディスクアレイ装置及びその再構築方法 |
JP2008046986A (ja) * | 2006-08-18 | 2008-02-28 | Hitachi Ltd | ストレージシステム |
WO2008090620A1 (ja) * | 2007-01-25 | 2008-07-31 | Fujitsu Limited | 記憶装置、記録復旧方法、記録復旧プログラム |
JP2009026240A (ja) * | 2007-07-23 | 2009-02-05 | Hitachi Ltd | 記憶制御システムおよび記憶制御方法 |
JP4579998B2 (ja) * | 2008-03-31 | 2010-11-10 | 富士通株式会社 | リストア管理プログラム、リストア管理方法およびリストア管理装置 |
JP4988653B2 (ja) * | 2008-06-13 | 2012-08-01 | 株式会社日立製作所 | ディスクアレイ記録装置及びその記録制御方法 |
JP5218147B2 (ja) * | 2009-02-26 | 2013-06-26 | 富士通株式会社 | ストレージ制御装置,ストレージ制御方法およびストレージ制御プログラム |
US8812779B2 (en) * | 2009-02-26 | 2014-08-19 | Hitachi, Ltd. | Storage system comprising RAID group |
JP5409159B2 (ja) * | 2009-07-23 | 2014-02-05 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法及びプログラム |
JP2011070395A (ja) * | 2009-09-25 | 2011-04-07 | Canon Inc | メモリ制御装置、メモリ制御方法、及びプログラム |
JP2012018481A (ja) * | 2010-07-06 | 2012-01-26 | Fujitsu Ltd | ディスクアレイ装置およびディスクアレイ制御方法 |
US8726070B2 (en) | 2010-09-27 | 2014-05-13 | Dell Products L.P. | System and method for information handling system redundant storage rebuild |
US8417989B2 (en) * | 2010-10-15 | 2013-04-09 | Lsi Corporation | Method and system for extra redundancy in a raid system |
US20120151232A1 (en) * | 2010-12-12 | 2012-06-14 | Fish Iii Russell Hamilton | CPU in Memory Cache Architecture |
JP5807458B2 (ja) * | 2011-08-31 | 2015-11-10 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
US9569312B2 (en) * | 2011-09-27 | 2017-02-14 | Xcube Research And Development, Inc. | System and method for high-speed data recording |
JP5744244B2 (ja) * | 2011-10-19 | 2015-07-08 | 株式会社日立製作所 | ストレージシステム |
CN102419697B (zh) * | 2011-11-02 | 2013-12-18 | 华中科技大学 | 垂直raid-6编码中单盘重构的方法 |
CN102520880B (zh) * | 2011-12-01 | 2014-11-05 | 浪潮电子信息产业股份有限公司 | 一种系统raid管理模块设计方法 |
US8751861B2 (en) * | 2012-02-08 | 2014-06-10 | Lsi Corporation | System and method for improved rebuild in RAID |
JP5472947B2 (ja) * | 2012-03-08 | 2014-04-16 | 株式会社東芝 | ビデオサーバ装置及びそのリビルド処理制御方法 |
US8930749B2 (en) | 2012-04-02 | 2015-01-06 | International Business Machines Corporation | Systems and methods for preventing data loss |
JP2014096072A (ja) | 2012-11-09 | 2014-05-22 | International Business Maschines Corporation | ミラー構成を有するディスクアレイ及びそのリビルド方法 |
US20140149787A1 (en) * | 2012-11-29 | 2014-05-29 | Lsi Corporation | Method and system for copyback completion with a failed drive |
CN103970481B (zh) * | 2013-01-29 | 2017-03-01 | 国际商业机器公司 | 重建存储器阵列的方法和装置 |
US9760293B2 (en) * | 2013-03-07 | 2017-09-12 | Seagate Technology Llc | Mirrored data storage with improved data reliability |
US9122405B1 (en) | 2013-03-15 | 2015-09-01 | Western Digital Technologies, Inc. | Fast initialization of storage device |
CN103488544B (zh) * | 2013-09-26 | 2016-08-17 | 华为技术有限公司 | 检测慢盘的处理方法和装置 |
JP6213130B2 (ja) * | 2013-10-09 | 2017-10-18 | 富士通株式会社 | ストレージ制御装置、ストレージ制御プログラム及びストレージ制御方法 |
JP5734469B2 (ja) * | 2014-01-15 | 2015-06-17 | キヤノン株式会社 | メモリ制御装置、メモリ制御方法、及びプログラム |
US9396068B2 (en) * | 2014-04-17 | 2016-07-19 | International Business Machines Corporation | Adaptive rebuild scheduling scheme |
CN104461733A (zh) * | 2014-11-24 | 2015-03-25 | 浪潮电子信息产业股份有限公司 | 一种高端磁盘阵列多控制器间的并行io调度方法 |
CN106407051B (zh) * | 2015-07-31 | 2019-01-11 | 华为技术有限公司 | 一种检测慢盘的方法及装置 |
CN106557389B (zh) * | 2015-09-29 | 2019-03-08 | 成都华为技术有限公司 | 一种慢盘检测方法和装置 |
US10437691B1 (en) * | 2017-03-29 | 2019-10-08 | Veritas Technologies Llc | Systems and methods for caching in an erasure-coded system |
CN109725822B (zh) * | 2017-10-27 | 2022-03-11 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机程序产品 |
CN109725826B (zh) * | 2017-10-27 | 2022-05-24 | 伊姆西Ip控股有限责任公司 | 管理存储系统的方法、设备和计算机可读介质 |
US10983885B2 (en) * | 2018-11-29 | 2021-04-20 | International Business Machines Corporation | Recovering storage devices in a storage array having errors |
CN112748856B (zh) * | 2019-10-30 | 2024-08-16 | 伊姆西Ip控股有限责任公司 | 管理盘的方法、电子设备和计算机程序产品 |
CN111240903A (zh) * | 2019-11-04 | 2020-06-05 | 华为技术有限公司 | 数据恢复方法及相关设备 |
US11593237B2 (en) | 2021-05-28 | 2023-02-28 | International Business Machines Corporation | Fast recovery with enhanced raid protection |
US11567673B1 (en) | 2021-08-18 | 2023-01-31 | International Business Machines Corporation | Adaptive, proactive raid rebuild |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US695096A (en) * | 1901-08-19 | 1902-03-11 | Jacques P Faivre | Broiler. |
US5179557A (en) * | 1989-07-04 | 1993-01-12 | Kabushiki Kaisha Toshiba | Data packet communication system in which data packet transmittal is prioritized with queues having respective assigned priorities and frequency weighted counting of queue wait time |
JP2923702B2 (ja) * | 1991-04-01 | 1999-07-26 | 株式会社日立製作所 | 記憶装置及びそのデータ修復方法 |
JPH06250795A (ja) | 1993-02-24 | 1994-09-09 | Hitachi Ltd | ディスクアレイシステム |
US5455934A (en) * | 1993-03-23 | 1995-10-03 | Eclipse Technologies, Inc. | Fault tolerant hard disk array controller |
US5432922A (en) * | 1993-08-23 | 1995-07-11 | International Business Machines Corporation | Digital storage system and method having alternating deferred updating of mirrored storage disks |
US5446855A (en) * | 1994-02-07 | 1995-08-29 | Buslogic, Inc. | System and method for disk array data transfer |
US5680509A (en) * | 1994-09-27 | 1997-10-21 | International Business Machines Corporation | Method and apparatus for estimating phone class probabilities a-posteriori using a decision tree |
US5680539A (en) * | 1995-07-11 | 1997-10-21 | Dell Usa, L.P. | Disk array system which performs data reconstruction with dynamic load balancing and user-specified disk array bandwidth for reconstruction operation to maintain predictable degradation |
US5812753A (en) * | 1995-10-13 | 1998-09-22 | Eccs, Inc. | Method for initializing or reconstructing data consistency within an array of storage elements |
CA2201691C (en) * | 1996-04-15 | 2001-07-17 | Raju C. Bopardikar | Data storage |
US6185368B1 (en) * | 1996-07-29 | 2001-02-06 | Sony Corporation | Redundant disk array with real-time lost data reconstruction |
KR100303217B1 (ko) * | 1996-08-28 | 2001-09-28 | 박종섭 | 피드백루프를이용하여기록캐시환경에서캐시플러시입출력속도를제어하기위한방법및장치 |
JPH11102261A (ja) | 1997-09-25 | 1999-04-13 | Mitsubishi Electric Corp | 記憶制御システム |
US6032217A (en) * | 1997-11-04 | 2000-02-29 | Adaptec, Inc. | Method for reconfiguring containers without shutting down the system and with minimal interruption to on-line processing |
US6336193B1 (en) * | 1998-08-21 | 2002-01-01 | International Business Machines Corporation | Input/output recovery method which is based upon an error rate and a current state of the computer environment |
JP4294142B2 (ja) * | 1999-02-02 | 2009-07-08 | 株式会社日立製作所 | ディスクサブシステム |
US6321345B1 (en) * | 1999-03-01 | 2001-11-20 | Seachange Systems, Inc. | Slow response in redundant arrays of inexpensive disks |
JP2000276305A (ja) | 1999-03-23 | 2000-10-06 | Nec Corp | ディスクアレイ装置 |
JP3440219B2 (ja) * | 1999-08-02 | 2003-08-25 | 富士通株式会社 | 入出力装置及びディスク・タイムシェアリング方法 |
US6516425B1 (en) * | 1999-10-29 | 2003-02-04 | Hewlett-Packard Co. | Raid rebuild using most vulnerable data redundancy scheme first |
US6233967B1 (en) * | 1999-12-03 | 2001-05-22 | American Standard International Inc. | Refrigeration chiller oil recovery employing high pressure oil as eductor motive fluid |
JP3734662B2 (ja) * | 2000-02-16 | 2006-01-11 | 太陽誘電株式会社 | 積層セラミックコンデンサとその製造方法 |
US6647514B1 (en) * | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
KR100364895B1 (ko) | 2000-06-12 | 2002-12-16 | 아라리온 (주) | 데이터 액세스 제어 방법 및 시스템 |
US6886108B2 (en) * | 2001-04-30 | 2005-04-26 | Sun Microsystems, Inc. | Threshold adjustment following forced failure of storage device |
US7480909B2 (en) * | 2002-02-25 | 2009-01-20 | International Business Machines Corporation | Method and apparatus for cooperative distributed task management in a storage subsystem with multiple controllers using cache locking |
US6820172B2 (en) * | 2002-03-25 | 2004-11-16 | International Business Machines Corporation | Method, system, and program for processing input/output (I/O) requests to a storage space having a plurality of storage devices |
US7024586B2 (en) * | 2002-06-24 | 2006-04-04 | Network Appliance, Inc. | Using file system information in raid data reconstruction and migration |
KR100496872B1 (ko) * | 2002-12-23 | 2005-06-22 | 한국전자통신연구원 | 다중 레이드제어기 오류 복구 기능을 구비한 분산 공유레이드 시스템 및 그 오류 복구 방법 |
JP4318914B2 (ja) * | 2002-12-26 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びその動的負荷管理方法 |
JP4322068B2 (ja) * | 2003-03-07 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びそのデイスク負荷バランス制御方法 |
GB2400935B (en) * | 2003-04-26 | 2006-02-15 | Ibm | Configuring memory for a raid storage system |
US7313721B2 (en) * | 2004-06-21 | 2007-12-25 | Dot Hill Systems Corporation | Apparatus and method for performing a preemptive reconstruct of a fault-tolerant RAID array |
-
2005
- 2005-10-28 JP JP2005314695A patent/JP4472617B2/ja not_active Expired - Fee Related
-
2006
- 2006-03-15 KR KR1020060023801A patent/KR100793224B1/ko active IP Right Grant
- 2006-03-17 US US11/377,210 patent/US7562249B2/en active Active
- 2006-03-17 CN CN2006100570621A patent/CN1955940B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
KR20070045891A (ko) | 2007-05-02 |
KR100793224B1 (ko) | 2008-01-10 |
JP4472617B2 (ja) | 2010-06-02 |
JP2007122477A (ja) | 2007-05-17 |
CN1955940A (zh) | 2007-05-02 |
US7562249B2 (en) | 2009-07-14 |
US20070101187A1 (en) | 2007-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1955940B (zh) | Raid系统、raid控制器及其重建或拷回处理方法 | |
KR100793531B1 (ko) | Raid 시스템 및 그 리빌드/카피백 처리 방법 | |
US7093043B2 (en) | Data array having redundancy messaging between array controllers over the host bus | |
CN100437459C (zh) | 数据存储系统和数据存储控制装置 | |
US6957303B2 (en) | System and managing method for cluster-type storage | |
JP4477906B2 (ja) | ストレージシステム | |
US7475279B2 (en) | Data storage system, data storage control device, and write error diagnosis method for disks thereof | |
US6961818B1 (en) | Method, system and computer program product for managing data in a mirrored cache using an access balancing technique | |
JPH11167521A (ja) | 記憶システム | |
US9003119B2 (en) | Control apparatus and method, and storage apparatus | |
KR100740080B1 (ko) | 데이터 기억 시스템 및 데이터 기억 제어 장치 | |
US20060140008A1 (en) | Storage apparatus | |
US8402195B2 (en) | Storage system mounted with plurality of processors | |
JP2008544421A (ja) | アクティブ−アクティブraidコントローラ間の証明されたメモリ間データ転送 | |
JP4401305B2 (ja) | デイスクアレイ装置の構成定義設定方法及びデイスクアレイ装置 | |
JP4708669B2 (ja) | パス冗長化装置及び方法 | |
JP2006268403A (ja) | データストレージシステム及びストレージ制御装置のログデータの等価制御方法 | |
CN113342257B (zh) | 伺服器及相关的控制方法 | |
JP2003345530A (ja) | 記憶システム | |
JP2003263279A (ja) | ディスクアレイ制御装置 | |
JP3793544B2 (ja) | ディスクアレイ装置及びその制御方法 | |
JP4452697B2 (ja) | ディスクアレイ制御装置 | |
JP4571963B2 (ja) | ディスクアレイ制御装置 | |
JP2002073286A (ja) | 記憶システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100908 |
|
CF01 | Termination of patent right due to non-payment of annual fee |