CN102164165A - 一种网络存储系统的管理方法及装置 - Google Patents

一种网络存储系统的管理方法及装置 Download PDF

Info

Publication number
CN102164165A
CN102164165A CN2011100402434A CN201110040243A CN102164165A CN 102164165 A CN102164165 A CN 102164165A CN 2011100402434 A CN2011100402434 A CN 2011100402434A CN 201110040243 A CN201110040243 A CN 201110040243A CN 102164165 A CN102164165 A CN 102164165A
Authority
CN
China
Prior art keywords
resource block
disk
write
read
raid
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.)
Granted
Application number
CN2011100402434A
Other languages
English (en)
Other versions
CN102164165B (zh
Inventor
李宏文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Sequoia Polytron Technologies Inc
Original Assignee
Macrosan Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Macrosan Technologies Co Ltd filed Critical Macrosan Technologies Co Ltd
Priority to CN 201110040243 priority Critical patent/CN102164165B/zh
Publication of CN102164165A publication Critical patent/CN102164165A/zh
Application granted granted Critical
Publication of CN102164165B publication Critical patent/CN102164165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种网络存储系统的管理方法,其创建RAID时把RAID可用空间根据指定长度划分为资源块,在创建逻辑资源时为逻辑资源分配至少一个资源块,并记录该逻辑资源与其分配到的资源块的对应关系;在RAID成员磁盘发生磁盘IO读写错误时,更新该资源块的记录;并根据资源块的状态记录执行并发的多重重建和优先重建策略,本发明通过优先处理导致资源块降级的出错磁盘的重建工作,并在同时并发重建资源块中其他出错磁盘上的数据;且进一步优先重建需要重建资源块最少的出错磁盘,有效地提高的多重重建的速度,并降低了重建过程中数据丢失的风险。本发明一并提供了与该网络存储系统对应的管理装置。

Description

一种网络存储系统的管理方法及装置
技术领域
本发明涉及网络存储技术,尤其涉及一种RAID阵列资源块管理技术。
背景技术
在涉及众多主机的数据存储的网络环境中,为了提高数据存储的可靠性和安全性,同时为了存储容量的扩展性和灵活性,网络存储技术应运而生。通常来说,网络存储系统的作用是为客户端PC机或者服务器(一般统称为主机或Host)提供可用的存储空间。
一般网络存储系统的前端可以通过IP网络或者FC网络与主机相连,为主机提供数据存储服务。在数据传输方面,以基于IP承载的网络存储系统为例,主机可以基于标准的iSCSI(互联网小型计算机系统接口)协议网络存储系统进行数据的读写操作。网络存储系统的核心是存储控制器(Storage Controller),存储控制器进行数据处理并把数据写入到后端物理磁盘中。
为提高写物理磁盘的性能以及提供数据冗余性,存储控制器通常支持独立磁盘冗余阵列(RAID,也可称为RAID阵列)技术,RAID技术是一种把多块独立的物理磁盘按不同的方式组合起来形成一个磁盘组,从而提供比单个磁盘更高的存储性能,并提供数据备份技术。根据不同的数据组织方式,常用的RAID包括RAID0、RAID1、RAID5、RAID6、RAID10等。根据RAID级别的不同可以提供各种级别的性能和可靠度,可以保证多数情况下,一个或者多个磁盘故障时可以通过剩余成员磁盘中的数据采用RAID级别对应的算法恢复出错磁盘的数据,即保证数据不丢失。通过这种算法可重构故障盘中的数据并写入到热备盘中,重构完成后热备盘做成阵列的成员磁盘,恢复阵列的冗余性和可靠性,即通常所说的RAID阵列重建。
在现有实现机制下,RAID成员磁盘健康状态一般包括两种:正常:磁盘未发生IO读写错误;故障:磁盘发生了IO读写错误,出错扇区上的数据不能再被访问。RAID健康状态定义如下:
正常:RAID的所有成员磁盘都正常,RAID可以正常读写,RAID具有完整的数据冗余性和可靠性;
降级:RAID的一个或多个成员磁盘故障,采用RAID级别对应的算法可以通过剩余成员磁盘上的数据重构出出错磁盘的数据,RAID可以正常读写,但是不能提供完整的数据冗余性和可靠性;
故障:RAID的一个或多个成员磁盘故障,采用RAID级别对应的算法无法恢复出错磁盘上的数据,故障状态的RAID直接离线,其上数据不能再被访问。
存储控制器收到原健康状态是“正常”的RAID的成员磁盘故障事件后,RAID把出错磁盘踢出阵列,如果采用RAID级别对应的算法可以通过剩余成员磁盘上的数据重构出出错磁盘的数据,RAID健康状态变为降级,然后触发重建,使用热备盘重构出错磁盘的数据。如果没有可用的热备盘,RAID一直是降级状态,等待热备盘插入。如果采用RAID级别对应的算法不能通过剩余成员磁盘上的数据重构出出错磁盘的数据,RAID健康状态变为故障,RAID直接离线,其上数据不能再被访问。
请参考图1,图1中的RAID的级别为RAID5、成员磁盘数目为4,分别是Disk1到Disk4。D1、D2、D3、P1组成第一个条带,其中D1、D2、D3是数据,P1是这个条带上根据RAID5算法计算出来的校验数据,下面的条带类似,D表示数据,P表示校验数据。
RAID5算法可以保证,1个条带上1个磁盘发生介质错误,可以通过该条带上剩余成员磁盘的数据重构出出错磁盘的数据。如图1所示,假设健康状态是正常的RAID的条带2上,Disk4的D6区域发生磁盘IO读写错误,无法再访问,按照通常的做法,RAID健康状态变为降级,把Disk4从RAID中踢出,然后找可用的热备盘进行重建。
然而出错磁盘踢出阵列后,虽然通过重建可恢复RAID的冗余性,但是无法解决非同一条带的多块磁盘在短时间内故障导致数据丢失的问题。进一步来说,一种常见的情况是:如果网络存储系统中没有符合要求的热备盘,比如没有配置热备盘,或者热备盘类型、容量等不满足上述RAID重建的要求等,此时,RAID一直处于等待重建的状态,不具备完整的冗余性,如果RAID中其他成员磁盘上也发生了磁盘IO读写错误,采用RAID级别对应的算法不能通过剩余成员磁盘上的数据重构出该出错磁盘的数据,RAID健康状态变为故障,RAID离线,无法再进行读写。比如RAID5可容忍一块磁盘故障,即,RAID5的一块成员磁盘发生介质错误,RAID5状态变为降级并踢盘,再有一块成员磁盘发生介质错误,RAID5状态变为故障,不能再被访问。比如图2中Disk4被踢出RAID后,条带5上Disk3的D15区域也发生了磁盘IO读写错误,无法再访问。因为此时RAID5是非冗余状态,条带5的数据丢失,不能再恢复,因此RAID状态变为故障,不能再被访问。
发明内容
有鉴于此,为了达到更为快速的重建方式,降低重建中的数据丢失风险,支持并发重建的目的,本发明提供一种网络存储系统管理装置及对应的方法,其用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理装置包括:
资源管理单元,用于使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;其中该资源管理单元进一步用于在创建逻辑资源时为逻辑资源分配至少一个资源块并更新相应的块表,并创建该逻辑资源的索引区,其中所述逻辑资源索引区用于记录该逻辑资源的逻辑空间与其自身分配到的RAID资源块的物理空间的对应关系;
状态维护单元,用于创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定资源块的新状态并在资源块状态表中更新该资源块的记录;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
重建单元,用于在RAID成员磁盘读写出错之后选择热备盘替换所述出错磁盘,并在多个出错磁盘同时需要重建时,按照预定多重重建策略以资源块为单元对多个出错磁盘进行重建;其中该重建单元进一步用于在重建完成后将该发生IO读写错误的磁盘踢出RAID,并用于通知所述状态维护单元RAID重建完成事件;其中所述状态维护单元在接收到RAID重建完成事件后,根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
优选地,其中所述多重重建策略包括第一策略,所述第一策略为:相对于处于正常状态的资源块,优先重建处于降级状态的资源块,并且如果同时有多个出错磁盘需要重建,则在重建某一降级资源块时,对多个出错磁盘进行并发重建。
优选地,其中所述重建单元,进一步用于根据块表的记录针对每个出错磁盘分别创建并维护对应的重建进程表以记录各个资源块的重建是否完成;其中所述多重重建策略还包括第二策略,该第二策略为:重建已使用的资源块,跳过没有被分配使用的资源块,并且如果同时有多个磁盘需要重建,根据各个磁盘的重建进程表,选择当前需要重建的资源块最少的磁盘,优先重建该磁盘的重建进程表中记录的需要重建的资源块。
本发明通过优先处理导致资源块降级的出错磁盘的重建工作,并在同时并发重建资源块中其他出错磁盘上的数据;且进一步优先重建需要重建资源块最少的出错磁盘,有效地提高的多重重建的速度,并降低了重建过程中数据丢失的风险。
附图说明
图1是一种RAID阵列中磁盘发生介质错误示意图。
图2是另一种RAID阵列中磁盘发生介质错误示意图。
图3是本发明网络存储系统管理装置逻辑层次图。
图4是本发明网络存储系统管理装置逻辑结构图。
图5是本发明记录资源块分配使用情况的块表示意图。
图6是本发明为逻辑资源分配资源块示意图。
图7是一种本发明磁盘发生介质错误对应资源块的示意图。
图8是另一种本发明磁盘发生介质错误对应资源块的示意图。
图9是又一种本发明磁盘发生介质错误对应资源块的示意图。
图10是本发明RAID多重重建过程中带有的资源块状态的示意图。
具体实施方式
通常网络存储系统为方便主机的数据读写,为了对主机屏蔽存储资源物理上的差异,可以通过虚拟化技术对物理存储资源进行抽象,在物理层面以上(在本发明中是指RAID以上)形成面向用户主机的逻辑资源,并且相应生成逻辑资源地址映射表,以记录逻辑地址与物理地址的映射关系。请参考图3的逻辑层次图,本发明在逻辑资源层与物理层之间引入资源块管理层。以下结合其他附图进一步介绍本发明的详细实施方式。
请参考图3以及图4,本发明网络存储系统管理装置本发明管理装置10主要用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连,一般来说存储控制器是一个较为完善的计算机系统,其包括CPU与内存等基本硬件以及操作系统等底层软件。以计算机软件实现本发明为例,从逻辑层面看,前述的管理装置10包括:资源管理单元11、读写辅助单元12、状态维护单元13以及重建单元14。该管理装置在网络存储系统中运行,结合网络存储系统其他模块一并运行时,主要包括以下步骤:
步骤101,在网络存储系统中利用所述磁盘创建RAID阵列;并把所述RAID的可用存储空间根据指定大小划分为多个资源块,其中资源块大小可以是用户通过资源管理单元配置的,各个RAID的资源块的大小可以相同也可以不同,这取决对管理开销的容忍度。
把RAID的可用空间划分为多个资源块的同时创建RAID的块表,每个资源块和资源分配相关的特性是已使用和未使用(即空闲),因此块表实现上可以使用bitmap表,bit设置为1表示对应的块已使用,一方面可提高检索效率,另一方面可节省块表占用的空间。请参考图5,比如将一个64GB的第一RAID阵列(array1)按照1GB的块大小划分为64块,array1的块表仅需要8个字节的空间,块表中bit位为1的表示对应的资源块已使用,为0则表示对应的资源块未使用。再比如将一个32GB的第二RAID阵列(array2)按照512M的块大小划分为64块,第二RAID阵列的块表同样也需要8个字节的空间,块表中bit位为1的表示对应的资源块已使用,为0则表示对应的资源块未使用。进一步来说,如果所述指定长度是多个不同的长度,此时可以进一步在块表中记录块的大小,这样可以满足其他管理操作的需求,比如数据迁移等等,但这与本发明主题并不是紧密相关的,不再进一步讨论。
步骤102,创建逻辑资源(LUN)时为LUN分配至少一个资源块,并在逻辑资源占用的RAID阵列的块表中将分配给该逻辑资源的资源块标记更新为已使用状态;
步骤103,创建逻辑资源时为该逻辑资源建立索引区以记录逻辑资源线性逻辑空间与其自身分配到的RAID资源块物理空间的对应关系;步骤101、步骤102以及步骤103由资源管理单元11执行。
在创建逻辑资源时需要在预先设定的索引区记录逻辑资源对应到哪些资源块。请参考图6,索引区中的前四行记录了第一RAID阵列的哪些资源块被分配给了LUN1,以索引标记A0B 10为例,其表示array1的第十个资源块,即块表中第二行从左到右第二个位置所表示的资源块。虽然图6所示的情形是LUN1对应的所有资源块都在一个RAID阵列中。很容易理解的是,LUN1对应的资源块可以分布在不同的RAID阵列中。如果分配了其他RAID阵列的资源块的话,则需要在索引区中进行同样的记录。
步骤104,创建RAID时为该RAID创建资源块状态表,用于记录该RAID中各个资源块的状态。
步骤105,当磁盘发生IO读写错误时,收到磁盘返回的读写错误事件,确定发生读写错误的资源块,根据发生IO读写错误的磁盘编号以及RAID级别判断资源块的新状态,并在预设的资源块状态表中更新该资源块的记录。其中所述资源块的状态通常包括正常状态、降级状态以及故障状态。步骤104以及步骤105由状态维护单元13执行。资源块的各个状态定义如下:
●所述正常状态表示该资源块所属的磁盘区域上没有发生IO读写错误事件;
●所述降级状态表示该资源块所属的磁盘区域上发生了IO读写错误事件,采用RAID级别对应的算法可以通过剩余成员磁盘上的数据重构出出错磁盘的数据;
●所述故障状态表示该资源块所属的磁盘区域上发生了IO读写错误事件,采用RAID级别对应的算法不能通过剩余成员磁盘上的数据重构出出错磁盘的数据,发生IO读写错误事件的磁盘上的数据无法读写;
其中所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号。状态维护单元根据资源块的状态进一步维护RAID总体状态,RAID总体状态通常包括正常状态、降级状态以及故障状态,所述正常状态表示该RAID的所有资源块的状态都是正常,所述降级状态表示该RAID上有一个或多个资源块的状态是降级;所述故障状态表示该RAID上有一个或多个资源块的状态是故障。一般来说,在RAID总体状态为降级状态时状态维护单元需要通知重建单元进行RAID重建。
在现有的技术中一旦某个磁盘发生了磁盘IO读写错误,通常都是将该磁盘踢出RAID阵列,等待重建过程的开始。而本发明则相反,不会立刻执行磁盘踢出操作,而是暂时不执行踢出操作以达到临时保持该磁盘的成员磁盘地位的目的,直到重建完成为止。所谓的临时并不是指一个非常短暂的时间,这是相对于重建完成而言的。如果系统缺乏热备盘或者管理员并不打算使能RAID阵列的重建或者管理员手动停止了RAID阵列重建,这一临时保持将持续相当长的时间。如果阵列开始重建,则在本发明中踢出出错磁盘的操作将由RAID重建单元触发执行,当阵列重建完成的时候,把该出错磁盘从RAID阵列中踢出,并将RAID重建完成事件报告给状态维护单元。
本发明中,存储控制器对Host的IO读写请求的处理过程如下:假设在初始情况下所有资源块数据都是具有完整的冗余性,处于正常状态,Host访问逻辑资源的数据时,根据本次IO请求访问的地址以及逻辑资源索引区中的记录,存储控制器把IO请求发送到对应的资源块,RAID模块根据RAID级别对应的算法把IO请求转换为对磁盘的读写命令。为便于描述,我们把发送到对应资源块的IO请求称为父命令,把发送到磁盘的读写命令称为子命令,父命令和子命令存在关联关系,一个父命令可能对应一个或多个子命令。磁盘收到子命令(即读写命令)后,进行相应的处理,并返回命令执行结果给RAID,即命令执行成功或者失败。如果命令执行失败,即磁盘上发生了IO读写错误,RAID收到磁盘IO读写错误事件后,根据RAID算法对IO读写错误进行处理,并把命令执行结果返回给逻辑资源,逻辑资源再返回命令执行结果给主机,这里的RAID对IO读写错误的处理算法和过程是常见的处理方式,本发明不再逐一详述。在本发明中,RAID收到磁盘IO读写错误事件时,根据子命令对应的父命令找到磁盘IO读写错误事件对应的资源块,然后把磁盘IO读写错误事件报告给状态维护单元,由状态维护单元更新RAID的资源块状态表中对应的资源块的记录。
下面开始详述更新的过程:在本发明的一种比较通用的实施方式中,资源块的状态包括三种:正常状态、降级状态以及故障状态。进一步来说,考虑到大部分的资源块均是正常状态,为了减少记录的信息量,提高检索效率,因此RAID的资源块状态表中可以仅记录降级状态和故障状态的资源块。在初始情况下所有资源块状态都是正常的,RAID的资源块状态表为空,没有任何记录。
状态维护单元收到RAID上报的磁盘IO读写错误事件,所述磁盘IO读写错误事件通常包括:发生IO读写错误的磁盘编号以及对应的资源块编号;状态维护单元根据发生IO读写错误的磁盘编号以及RAID级别确定资源块的新状态,即,如果采用RAID级别对应的算法可以通过剩余成员磁盘上的数据重构出出错磁盘的数据,资源块的新状态为降级状态;如果采用RAID级别对应的算法不能通过剩余成员磁盘上的数据重构出出错磁盘的数据,资源块的新状态为故障状态;状态维护单元判断资源块的原状态和新状态是否相同,如果不同,在RAID的资源块状态表中更新对应的资源块的记录。
如果资源块的原状态是正常,新状态是降级,在资源块状态表中增加一项记录,对应该降级的资源块;如果资源块的原状态是正常,新状态是故障,在资源块状态表中增加一项记录,对应该故障的资源块。资源块状态表中每一项记录通常包含:资源块编号、资源块状态以及发生IO读写错误的磁盘编号,“发生IO读写错误的磁盘编号”对应一个或多个磁盘。
对于资源块所属磁盘区域上多次发生磁盘读写错误,如果资源块原状态是降级,新状态还是降级,更新资源块状态表中该资源块对应的记录中“发生IO读写错误的磁盘编号”,增加本次发生IO读写错误的磁盘编号;如果资源块原状态是降级,新状态是故障,更新资源块状态表中该资源块对应的记录中“资源块状态”为故障,并更新“发生IO读写错误的磁盘编号”,增加本次发生IO读写错误的磁盘编号。
以RAID5为例,如果本次磁盘IO读写错误与上一次磁盘IO读写错误发生在不同磁盘上,且对应不同的资源块,则两个资源块上都有磁盘不能访问,但是采用RAID算法可以通过该资源块上其他磁盘的数据恢复出错磁盘的数据,因此上述两个资源块状态都是降级,仅丧失了冗余性。如果本次磁盘IO读写错误与上一次磁盘IO读写错误发生在不同的磁盘上,且对应同一个资源块,即同一个资源块上有两块磁盘不能访问,采用RAID5算法无法再恢复出错磁盘的数据,因此该资源块状态是故障,该资源块上出错磁盘的数据丢失。
请参考图7至图9所示的一系列状态维护的示例。其中磁盘D1~D4四块磁盘组成的RAID5阵列,根据指定长度划分为64个资源块,所有资源块的状态均为正常。某一时刻,磁盘D1上发生了磁盘IO读写错误,对应资源块1,状态维护单元根据RAID级别以及剩余成员磁盘的状态确定资源块1变为降级状态,更新资源块状态表(如表1),增加资源块1对应的记录;RAID总体状态变为降级。此时D1不会从阵列中踢出,成员磁盘地位还会临时保持,RAID通知重建单元RAID降级事件,重建单元触发重建。
  资源块编号   资源块状态   发生IO读写错误的磁盘编号
  1   降级   1
表1
进一步来说,假设系统中暂时无可用的热备盘,则此时重建不会开始。假设某一个时刻,D2上也发生了磁盘IO读写错误,对应资源块18,状态维护单元根据RAID级别以及剩余成员磁盘的状态确定资源块18变为降级状态,更新资源块状态表增加资源块18对应的记录;RAID的总体状态仍然为降级,所有资源块均可以正常访问。此时资源块状态表中的记录信息如表2所示。
  资源块编号   资源块状态   发生IO读写错误的磁盘编号
  1   降级   1
  18   降级   2
表2
进一步地,如果某个时刻D3上又发生了磁盘IO读写错误,对应资源块18,资源块18原来的状态是降级,状态维护单元根据RAID级别以及剩余成员磁盘的状态确定资源块18变为故障状态,更新资源块状态表中资源块18对应的记录,“资源块状态”更新为故障,“发生IO读写错误的磁盘编号”更新为2,3,RAID的总体状态变为故障。此时资源块状态表中的记录信息如表3所示。但是不同的是,如果此时发生磁盘IO读写错误的不是D3,仍然是D2,且对应资源块18,即资源块18上D2前后发生了两次错误,那么此时资源块18的数据依然可以恢复,那么该资源块的状态将保持不变,依然为降级状态。
  资源块编号   资源块状态   发生IO读写错误的磁盘编号
  1   降级   1
  18   故障   2,3
表3
步骤106,在RAID成员磁盘读写出错之后选择热备盘替换所述出错磁盘,并在多个出错磁盘同时需要重建时,按照预定多重重建策略以资源块为单元对多个出错磁盘进行重建;其中该重建单元进一步用于在重建完成后将该发生IO读写错误的磁盘踢出RAID,并进一步通知所述状态维护单元RAID重建完成事件;其中所述状态维护单元在接收到RAID重建完成事件后,根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。本步骤由重建单元14执行。
一般来说,重建的触发事件通常是RAID降级事件重建。其中所述RAID降级事件一般包括:RAID名称、出错磁盘编号。重建在网络存储领域中常见的手段就是对设法以出错磁盘为操作对象通过拷贝或者校验的方式将数据的恢复到热备盘,现有技术的出发方向始终着眼于出错磁盘本身。而本发明同样也是要达到数据恢复到热备盘上的目的,但以资源块为单元进行重建管理,并且支持并发重建。所述预定的多重重建策略包括:
第一策略:相对于处于正常状态的资源块,优先重建处于降级状态的资源块,并且如果同时有多个出错磁盘需要重建,则在重建某一降级资源块时,对多个出错磁盘进行并发重建。其中并发重建包括:对于该降级资源块内导致该资源块降级的出错磁盘的数据采用RAID校验算法进行重建(即将数据恢复到对应的热备盘),而对于该资源块内其他磁盘的数据采用拷贝方式进行重建。所谓的并发重建并不是说严格意义上的同时开始,而是遵循了以资源块为单位的依次重建原则,也就是说每当一个资源块恢复冗余性之后,就可以相应完成多个磁盘的部分数据重建工作。并且对于不同的磁盘采用不同的重建方式,可以尽可能地提高重建的速度。
第二策略:根据块表的记录,重建已使用的资源块,跳过空闲(即未分配使用)的资源块,并且如果同时有多个磁盘需要重建,根据各个磁盘的重建进程表,选择当前需要重建的资源块最少的磁盘,优先重建该磁盘的重建进程表中记录的需要重建的资源块。
所述第一策略与第二策略可以一起使用也可以各自单独使用。在实现的时候可以针对每个出错磁盘分别创建并维护重建进程表用于记录各个资源块的重建是否完成。同样可以使用Bitmap表,bit为1表示对应的资源块需要进行重建,且未重建完成,bit为0表示对应的资源块不需要重建或者已重建完成。在一个优选的实施方案中第一策略优先于第二策略,所谓第一策略优先是指过重建的过程中,对于新出现的降级资源块,应该优先处理,比如当前正在重建一个正常状态的资源块2,假设资源块3突然降级,由于本发明是以资源块为单元进行重建工作的,因此首先完成资源块2的处理,然后立即跳到资源块3进行处理,以实现所述第一策略优先。下面提供一个实例来说明第一策略和第二策略配合使用所带来的技术优势,其中第一策略优先。
请参考图10,假设系统支持一个RAID同时有4块磁盘进行重建,当前有2块磁盘D1、D3触发了重建,2块磁盘同时重建时,统一进行重建调度。
首先,根据块表生成重建进程表1以及重建进程表3;然后根据资源块状态优先重建D1或D3导致降级的资源块;如果D1导致资源块1降级,资源块1内D1采用校验的方式重建,而资源块1内D3采用拷贝的方式重建。同样的道理如果D3导致资源块2降级,资源块2内D3采用校验的方式重建,而资源块2内D1采用拷贝的方式重建。每完成一个资源块的重建,都需要立即更新重建磁盘对应的重建进程表。
降级资源块重建完成后,选择需要重建的资源块数目最少的磁盘进行重建,在本例中,两个磁盘需要重建的资源块数目相同,选择任意一个磁盘进行调度即可。如果此时,D5也触发了重建,等当前正在重建的资源块内各个出错磁盘的数据完成重建后:首先根据块表生成D5对应的重建进程表5;D5触发重建必然意味着有资源块降级,根据资源块状态表,优先重建D5导致降级的资源块。同样该新降级的资源块中D5采用校验的方式重建,D1和D3则采用拷贝的方式重建;每完成一个资源块的重建,都需要立即更新重建磁盘对应的重建进程表。新降级资源块重建完成后,根据各个磁盘的重建进程表,选择当前需要重建的资源块最少的磁盘,优先重建该磁盘的重建进程表中记录的需要重建的资源块。如果在本例中,假设D1剩余的需要重建的资源块数目最少,应选择D1先进行重建,然后是D3,接着是D5。
从以上示例可以看出应用第一策略可以确保降级的资源块内出错的数据优先恢复到热备盘上,降低了降级状态进一步恶化到故障状态的风险。同时还能采取并发的方式顺带完成另外一个出错磁盘上的数据重建。应用第二策略则可以保证先触发重建的磁盘优先完成重建,降低了重建过程中热备盘出错或者其他成员磁盘错误,导致资源块状态变为故障的风险。
需要注意的是,对于故障资源块内各个出错磁盘的数据,重建单元可以采用拷贝的方式进行恢复尝试(因为某些时候磁盘的出错可能是临时性),也可以直接跳过。前一种方式可尽量恢复数据,但是不能保证数据的准确性。具体实现时可根据需求确定处理方式。
如果重建失败,比如重建中的热备盘发生写错误,重建单元需要标记热备盘为故障状态,并踢出热备盘,删除当前的重建进程表,然后重新找可用的热备盘进行重建,具体处理过程同上。
步骤108,如果RAID总体状态是降级或者故障,Host访问逻辑资源的数据时,根据本次IO请求访问的地址以及逻辑资源索引区中的记录,存储控制器把IO请求发送到对应的资源块,读写辅助单元根据状态维护表中记录的资源块状态并在重建过程之外根据状态维护单元记录的该资源块的状态按照预定策略响应主机的读写操作。本步骤由读写辅助单元12执行。需要说明的是,读写辅助单元在本发明中并不是必须的,读写操作依然可以按照现有的方式去处理。这里所说的重建过程之外的预定读写策略,其包括:
●如果该资源块是正常状态,则按照正常读写操作处理,或者说透明处理;
●如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,比如,对于RAID5来说,可以读剩余成员磁盘的数据,然后根据异或算法得到出错磁盘上原有的数据;写数据时,根据异或算法更新校验数据;如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
●如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,直接返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
在上述重建过程之外的预定读写策略的基础上,如果IO发上在重建过程中,对于访问出错磁盘的IO读写请求,可以进一步引入对热备盘的利用策略。具体来说,对于访问出错磁盘的IO读请求,读写辅助单元可以读取资源块的重建进程表,如果资源块对应的bit为0(即资源块重建完成),访问重建中的热备盘,如果为1,则访问重建中的出错磁盘;按照重建过程之外的预定策略处理。对于访问出错磁盘业务IO写请求,则同时将数据写入重建中的出错磁盘和热备盘,写入出错磁盘的方式同样可以按照重建过程之外的策略处理,这样一来一旦重建中的热备盘发生IO错误被踢出阵列后,新的热备盘接替工作实现简单。
本发明通过资源块状态的维护,配合资源块为单元的多重重建方案,使用降级优先和仅仅重建已使用资源块等策略;并采用并发重建和优先重建先启动重建的磁盘的策略,在提高重建速度的同时,有效降低了RAID重建过程中RAID的成员磁盘上其他位置发生磁盘IO读写错误引发的重建失败或者数据丢失的风险。
本发明需要补充说明的是,本申请人在之前以及后续申请的相关专利申请中对逻辑单元划分的标准可能存在不一致的地方,其出发点是为了更好地让本领域普通技术人员了解各个发明独特之处,达到充分公开之目的。在不同的申请中,即便对于名称相同的逻辑单元,其执行的步骤可能也不尽相同。因此并不能依据其他相关申请对本发明做出限制性的解释。
以上所述仅仅为本发明较佳的实现方式,任何基于本发明精神所做出的等同的修改皆应涵盖于本发明的权利要求范围中。

Claims (14)

1.一种网络存储系统的管理装置,用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理装置包括:
资源管理单元,用于使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;其中该资源管理单元进一步用于在创建逻辑资源时为逻辑资源分配至少一个资源块并更新相应的块表,并创建该逻辑资源的索引区,其中所述逻辑资源索引区用于记录该逻辑资源的逻辑空间与其自身分配到的RAID资源块的物理空间的对应关系;
状态维护单元,用于创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定资源块的新状态并在资源块状态表中更新该资源块的记录;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
重建单元,用于在RAID成员磁盘读写出错之后选择热备盘替换所述出错磁盘,并在多个出错磁盘同时需要重建时,按照预定多重重建策略以资源块为单元对多个出错磁盘进行重建;其中该重建单元进一步用于在重建完成后将该发生IO读写错误的磁盘踢出RAID,并用于通知所述状态维护单元RAID重建完成事件;其中所述状态维护单元在接收到RAID重建完成事件后,根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
2.根据权利要求1所述的管理装置,其特征在于,所述多重重建策略包括第一策略,所述第一策略为:相对于处于正常状态的资源块,优先重建处于降级状态的资源块,并且如果同时有多个出错磁盘需要重建,则在重建某一降级资源块时,对多个出错磁盘进行并发重建。
3.根据权利要求2所述的管理装置,其特征在于,所述重建单元,进一步用于根据块表的记录针对每个出错磁盘分别创建并维护对应的重建进程表以记录各个资源块的重建是否完成;其中所述多重重建策略还包括第二策略,该第二策略为:重建已使用的资源块,跳过没有被分配使用的资源块,并且如果同时有多个磁盘需要重建,根据各个磁盘的重建进程表,选择当前需要重建的资源块最少的磁盘,优先重建该磁盘的重建进程表中记录的需要重建的资源块。
4.根据权利要求3所述的管理装置,其特征在于,所述第一策略优先于所述第二策略。
5.根据权利要求1所述的管理装置,其特征在于,进一步包括:
读写辅助单元,用于根据索引区的记录确定主机的IO读写请求访问的逻辑资源地址对应的资源块,并在重建过程之外根据状态维护单元记录的该资源块的状态按照预定读写策略响应主机的读写操作;该预定读写策略包括:如果该资源块是正常状态,则透明处理;如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,则返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理;如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
6.根据权利要求1所述的管理装置,其特征在于,所述若干资源块大小相同。
7.根据权利要求1所述的管理装置,其特征在于,所述资源块状态表中仅记录非正常状态的资源块。
8.一种网络存储系统的管理方法,用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理方法包括:
A、使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;
B、在创建逻辑资源时为逻辑资源分配至少一个资源块并更新相应的块表,并创建该逻辑资源的索引区,其中所述逻辑资源索引区用于记录该逻辑资源的逻辑空间与其自身分配到的RAID资源块的物理空间的对应关系;
C、创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定资源块的新状态并在资源块状态表中更新该资源块的记录;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
D、在RAID成员磁盘读写出错之后选择热备盘替换所述出错磁盘,并在多个出错磁盘同时需要重建时,按照预定多重重建策略以资源块为单元对多个出错磁盘进行重建;其中该重建单元进一步用于在重建完成后将该发生IO读写错误的磁盘踢出RAID,并在重建完成后发出重建完成事件;
E、接收到RAID重建完成事件后,并根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
9.根据权利要求8所述的管理方法,其特征在于,所述多重重建策略包括第一策略,所述第一策略为:相对于处于正常状态的资源块,优先重建处于降级状态的资源块,并且如果同时有多个出错磁盘需要重建,则在重建某一降级资源块时,对多个出错磁盘进行并发重建。
10.根据权利要求9所述的管理方法,其特征在于,进一步包括:
F、根据块表的记录针对每个出错磁盘分别创建并维护对应的重建进程表以记录各个资源块的重建是否完成;其中所述多重重建策略还包括第二策略,该第二策略为:重建已使用的资源块,跳过没有被分配使用的资源块,并且如果同时有多个磁盘需要重建,根据各个磁盘的重建进程表,选择当前需要重建的资源块最少的磁盘,优先重建该磁盘的重建进程表中记录的需要重建的资源块。
11.根据权利要求10所述的管理方法,其特征在于,所述第一策略优先于所述第二策略。
12.根据权利要求8所述的管理方法,其特征在于,进一步包括:
G、根据索引区的记录确定主机的IO读写请求访问的逻辑资源地址对应的资源块,并在重建过程之外根据状态维护单元记录的该资源块的状态按照预定读写策略响应主机的读写操作;该预定读写策略包括:如果该资源块是正常状态,则透明处理;如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,则返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理;如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
13.根据权利要求8所述的管理方法,其特征在于,所述若干资源块大小相同。
14.根据权利要求8所述的管理方法,其特征在于,所述资源块状态表中仅记录非正常状态的资源块。
CN 201110040243 2011-02-18 2011-02-18 一种网络存储系统的管理方法及装置 Active CN102164165B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110040243 CN102164165B (zh) 2011-02-18 2011-02-18 一种网络存储系统的管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110040243 CN102164165B (zh) 2011-02-18 2011-02-18 一种网络存储系统的管理方法及装置

Publications (2)

Publication Number Publication Date
CN102164165A true CN102164165A (zh) 2011-08-24
CN102164165B CN102164165B (zh) 2013-06-12

Family

ID=44465134

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110040243 Active CN102164165B (zh) 2011-02-18 2011-02-18 一种网络存储系统的管理方法及装置

Country Status (1)

Country Link
CN (1) CN102164165B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183583A (zh) * 2015-07-31 2015-12-23 浪潮电子信息产业股份有限公司 一种磁盘阵列的数据重建的方法及一种磁盘阵列系统
CN105892950A (zh) * 2016-04-01 2016-08-24 浪潮电子信息产业股份有限公司 一种磁盘阵列的重建方法及系统
CN105892934A (zh) * 2014-12-19 2016-08-24 伊姆西公司 用于存储设备管理的方法和装置
CN106557266A (zh) * 2015-09-25 2017-04-05 伊姆西公司 用于独立磁盘冗余阵列raid的方法和装置
CN108319427A (zh) * 2017-12-21 2018-07-24 创新科存储技术(深圳)有限公司 一种支持快速重建的Raid10实现方法和装置
CN111381997A (zh) * 2018-12-28 2020-07-07 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN113282232A (zh) * 2020-02-19 2021-08-20 希捷科技有限公司 具有协同优化的多级擦除系统
CN109144788B (zh) * 2018-09-10 2021-10-22 网宿科技股份有限公司 一种重建osd的方法、装置及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005017737A2 (en) * 2003-08-14 2005-02-24 Compellent Technologies Virtual disk drive system and method
CN1834932A (zh) * 2005-03-15 2006-09-20 富士通株式会社 存储控制装置和方法
CN101976181A (zh) * 2010-10-15 2011-02-16 杭州宏杉科技有限公司 一种存储资源的管理方法及管理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005017737A2 (en) * 2003-08-14 2005-02-24 Compellent Technologies Virtual disk drive system and method
CN1834932A (zh) * 2005-03-15 2006-09-20 富士通株式会社 存储控制装置和方法
CN101976181A (zh) * 2010-10-15 2011-02-16 杭州宏杉科技有限公司 一种存储资源的管理方法及管理装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105892934A (zh) * 2014-12-19 2016-08-24 伊姆西公司 用于存储设备管理的方法和装置
CN105183583A (zh) * 2015-07-31 2015-12-23 浪潮电子信息产业股份有限公司 一种磁盘阵列的数据重建的方法及一种磁盘阵列系统
CN106557266A (zh) * 2015-09-25 2017-04-05 伊姆西公司 用于独立磁盘冗余阵列raid的方法和装置
CN106557266B (zh) * 2015-09-25 2019-07-05 伊姆西公司 用于独立磁盘冗余阵列raid的方法和装置
CN105892950A (zh) * 2016-04-01 2016-08-24 浪潮电子信息产业股份有限公司 一种磁盘阵列的重建方法及系统
CN108319427A (zh) * 2017-12-21 2018-07-24 创新科存储技术(深圳)有限公司 一种支持快速重建的Raid10实现方法和装置
CN108319427B (zh) * 2017-12-21 2021-02-09 深圳创新科技术有限公司 一种支持快速重建的Raid10实现方法和装置
CN109144788B (zh) * 2018-09-10 2021-10-22 网宿科技股份有限公司 一种重建osd的方法、装置及系统
CN111381997A (zh) * 2018-12-28 2020-07-07 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN111381997B (zh) * 2018-12-28 2024-03-01 杭州宏杉科技股份有限公司 一种raid重建方法及装置
CN113282232A (zh) * 2020-02-19 2021-08-20 希捷科技有限公司 具有协同优化的多级擦除系统

Also Published As

Publication number Publication date
CN102164165B (zh) 2013-06-12

Similar Documents

Publication Publication Date Title
CN102147713B (zh) 一种网络存储系统的管理方法及装置
US7506187B2 (en) Methods, apparatus and controllers for a raid storage system
CN102164165B (zh) 一种网络存储系统的管理方法及装置
US9037795B1 (en) Managing data storage by provisioning cache as a virtual device
JP5971354B2 (ja) ストレージシステム
US9378093B2 (en) Controlling data storage in an array of storage devices
KR101758544B1 (ko) 비휘발성 메모리 시스템에서의 동기 미러링
JP5256149B2 (ja) Hdd障害からの高速データ回復
US9047220B2 (en) Storage system and data management method
US6647460B2 (en) Storage device with I/O counter for partial data reallocation
US8386837B2 (en) Storage control device, storage control method and storage control program
JPH0744322A (ja) Dasdアレイの階層を管理する方法および装置
JP2007323224A (ja) フラッシュメモリストレージシステム
US20100100677A1 (en) Power and performance management using MAIDx and adaptive data placement
US9223655B2 (en) Storage system and method for controlling storage system
CN102135862B (zh) 一种磁盘存储系统及其数据访问方法
CN102158538B (zh) 一种存储资源的管理方法及装置
US8239645B1 (en) Managing mirroring in data storage system having fast write device and slow write device
CN102147714B (zh) 一种网络存储系统的管理方法及装置
US11625183B1 (en) Techniques for data layout on rotating disk drives
CN111857540A (zh) 数据存取方法、装置和计算机程序产品
CN109814810A (zh) 一种raid阵列中硬盘故障扇区的处理方法及装置
US11467904B2 (en) Storage system and control method of the same
Thomasian RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial
Thomasian Mirrored and hybrid disk arrays: Organization, scheduling, reliability, and performance

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
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: 310052 Hangzhou City, Binjiang District Province, Hing Road, No. 2, floor 1, unit 02, unit 301, 03

Patentee after: Hangzhou Sequoia Polytron Technologies Inc

Address before: 310052 Hangzhou City, Binjiang District Province, Hing Road, No. 2, floor 1, unit 02, unit 301, 03

Patentee before: Hangzhou MacroSAN Technologies Co., Ltd.