CN102147713B - 一种网络存储系统的管理方法及装置 - Google Patents
一种网络存储系统的管理方法及装置 Download PDFInfo
- Publication number
- CN102147713B CN102147713B CN 201110040239 CN201110040239A CN102147713B CN 102147713 B CN102147713 B CN 102147713B CN 201110040239 CN201110040239 CN 201110040239 CN 201110040239 A CN201110040239 A CN 201110040239A CN 102147713 B CN102147713 B CN 102147713B
- Authority
- CN
- China
- Prior art keywords
- resource block
- disk
- read
- raid
- state
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种网络存储系统的管理方法,其创建RAID时把RAID可用空间根据指定长度划分为资源块,在创建逻辑资源时为逻辑资源分配至少一个资源块,并记录该逻辑资源与其分配到的资源块的对应关系;在RAID成员磁盘发生磁盘IO读写错误时,更新该资源块的记录;在重建过程中,以资源块为单元优先重建降级资源块,采用拷贝方式重建正常状态的资源块。该方法有效地提高了重建的速度,并能够有效降低重建过程中数据丢失的风险。本发明一并提供了与该网络存储系统的管理方法对应的装置。
Description
技术领域
本发明涉及网络存储技术,尤其涉及一种RAID阵列资源块管理技术。
背景技术
在涉及众多主机的数据存储的网络环境中,为了提高数据存储的可靠性和安全性,同时为了存储容量的扩展性和灵活性,网络存储技术应运而生。通常来说,网络存储系统的作用是为客户端PC机或者服务器(一般统称为主机或Host)提供可用的存储空间。
一般网络存储系统的前端可以通过IP网络或者FC网络与主机相连,为主机提供数据存储服务。在数据传输方面,以基于IP承载的网络存储系统为例,主机可以基于标准的iSCSI(互联网小型计算机系统接口)协议网络存储系统进行数据的读写操作。网络存储系统的核心是存储控制器(StorageController),存储控制器进行数据处理并把数据写入到后端物理磁盘中。
为提高写物理磁盘的性能以及提供数据冗余性,存储控制器通常支持独立磁盘冗余阵列(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资源块的物理空间的对应关系;
状态维护单元,用于创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定资源块的新状态并在资源块状态表中更新该资源块的记录;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
重建单元,用于在RAID成员磁盘读写出错之后选择热备盘替换所述出错磁盘,并以资源块为单元对RAID进行重建,且在重建完成后将该发生IO读写错误的磁盘踢出RAID,并通知所述状态维护单元RAID重建完成事件;其中所述状态维护单元在接收到RAID重建完成事件后,根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
优选地,所述重建单元进一步用于创建并维护重建进程表用于记录各个资源块的重建是否完成,并采用先重建降级状态的资源块后重建处于正常状态的重建策略。
优选地,所述重建单元,进一步用于在重建正常状态的资源块时,将出错磁盘的数据拷贝到热备盘
本发明通过资源块状态的维护,配合资源块为单元的重建方案,使用降级优先和仅仅重建已使用资源块等策略;在提高重建速度的同时,有效降低了RAID重建过程中RAID的成员磁盘上其他位置发生磁盘IO读写错误引发的重建失败或者数据丢失的风险。
附图说明
图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,以索引标记A0B10为例,其表示array1的第十个资源块,即块表中第二行从左到右第二个位置所表示的资源块。虽然图6所示的情形是LUN1对应的所有资源块都在一个RAID阵列中。很容易理解的是,LUN1对应的资源块可以分布在不同的RAID阵列中。如果分配了其他RAID阵列的资源块的话,则需要在索引区中进行同样的记录。
步骤104,创建RAID时为该RAID创建资源块状态表,用于记录该RAID中各个资源块的状态。
步骤105,当磁盘发生IO读写错误时,收到磁盘返回的读写错误事件,确定发生读写错误的资源块,根据发生IO读写错误的磁盘编号以及RAID级别判断资源块的新状态,并在预设的资源块状态表中更新该资源块的记录。其中所述资源块的状态通常包括正常状态、降级状态以及故障状态。
资源块的各个状态定义如下:
●所述正常状态表示该资源块所属的磁盘区域上没有发生IO读写错误事件;
●所述降级状态表示该资源块所属的磁盘区域上发生了IO读写错误事件,采用RAID级别对应的算法可以通过剩余成员磁盘上的数据重构出出错磁盘的数据;
●所述故障状态表示该资源块所属的磁盘区域上发生了IO读写错误事件,采用RAID级别对应的算法不能通过剩余成员磁盘上的数据重构出出错磁盘的数据,发生IO读写错误事件的磁盘上的数据无法读写;
其中所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号。
步骤106,根据资源块的状态进一步维护RAID总体状态,RAID总体状态通常包括正常状态、降级状态以及故障状态,所述正常状态表示该RAID的所有资源块的状态都是正常,所述降级状态表示该RAID上有一个或多个资源块的状态是降级;所述故障状态表示该RAID上有一个或多个资源块的状态是故障。在RAID总体状态变为降级状态时,状态维护单元通知重建单元RAID降级事件,由重建单元进行重建处理。RAID降级事件一般包括:RAID名称、出错磁盘编号。
步骤104、步骤105、以及步骤106由状态维护单元13执行。
在现有的技术中一旦某个磁盘发生了磁盘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
步骤107,在RAID成员磁盘读写出错之后,即收到Raid降级事件,选择热备盘替换所述出错磁盘,并以资源块为单元对RAID进行重建,且在重建完成后将该发生IO读写错误的磁盘踢出RAID,并通知所述状态维护单元RAID重建完成事件;本步骤由重建单元14执行。
本发明以资源块为单元进行重建管理时,可以进一步采用以下重建调度策略。策略一包括:相对于处于正常状态的资源块,优先重建处于降级状态的资源块;优先重建状态降级的资源块可以降低重建过程中降级状态的资源块内其他磁盘出错导致资源块状态变为故障而引发数据丢失的风险。策略二:根据块表的记录,重建已使用的资源块,跳过空闲(即未分配使用)的资源块,如此一来可以尽量减少重建的工作量。
上述策略一与策略二可以一起使用也可以各自单独使用。—在实现的时候可以创建并维护重建进程表用于记录各个资源块的重建是否完成。同样可以使用Bitmap表,bit为1表示对应的资源块需要进行重建,且未重建完成,bit为0表示对应的资源块不需要重建或者已重建完成。对于策略一,则是重建降级RAID上的所有资源块,即不区分是否已使用。对于上述策略二,重建进程表的初始值与块表的记录一致,即已经使用的资源块都需要进行重建。以下结合策略一和策略二描述重建的具体过程。
RAID首先创建重建进程表,重建进程表可以从当前RAID的块表拷贝生成。为了实现上述策略一,RAID逐条读取资源块状态表中的记录并进行处理:如果资源块状态是降级且该资源块中出错磁盘就是当前正在重建的出错磁盘,采用校验方式重建该资源块,即读取其他成员磁盘的数据,通过RAID算法计算出正在重建的出错磁盘的数据,写入到重建中的热备盘中,该资源块重建完成后,修改重建进程表中的该资源块对应bit为0;如果资源块状态是降级但是该资源块中出错磁盘不是当前正在重建的出错磁盘,或者资源块状态不是降级,则跳过该条记录,继续读取下一条记录。
资源块状态表的记录遍历完成后,即正在重建的出错磁盘导致的所有降级状态的资源块都已经重建完成。然后根据重建进程表从头重建bit为1的对应的资源块。对于正常状态的资源块可采用拷贝的方式重建,即把正在重建的出错磁盘上的数据拷贝到热备盘上,如此一来在减少磁盘访问次数的同时,可以保证数据有效性,重建完一个资源块,立即修改重建进程表中对应bit为0。
如果根据重建进程表对正常状态的资源块执行拷贝重建的过程中,某个未重建的资源块上发生磁盘IO读写错误,该资源块从正常状态变为降级状态,且该IO读写错误发生在正在重建的出错磁盘上时,在当前正在重建的资源块重建完成后,优先重建该新降级的资源块,然后继续重建其他未重建的正常状态的资源块。
如果重建时RAID存在故障状态的资源块,或者重建过程中未完成重建的资源块状态变为故障,重建可采用拷贝的方式,从出错磁盘拷贝数据到重建中的热备盘,或者直接跳过。前一种方式可尽量恢复数据,但是不能保证数据的准确性。具体实现时可根据需求确定处理方式。
从以上重建过程中描述可以看出,本发明的重建进度不需要单独维护,可根据重建进程表以及块表计算处理。
请参考上述的表3,假设资源块1重建成功,先通知状态维护单元资源块重建完成事件,状态维护单元对资源块1的状态进行更新,因为该资源块已经恢复了冗余性,删除该项记录,在这里需要强调的是本发明所述的重建完成事件可以是资源块重建的完成,也可以是传统意义上的磁盘重建的完成。两者的区别是前者是依次通知,后者则是一次性通知。
需要注意的是,如果重建失败,比如重建中的热备盘发生写错误,重建单元需要标记热备盘为故障状态,并踢出热备盘,删除当前的重建进程表,然后重新找可用的热备盘进行重建,具体处理过程同上。
请参考图10,D1~D4四块磁盘组成的RAID5,根据指定长度划分为64个资源块,资源块状态均为正常,且都已使用,RAID状态正常。此时,D1上发生了介质错误,RAID判断出错区域对应资源块1,资源块1降级,修改资源块状态表。RAID总体状态为降级,并且触发重建,使用Spare1重建D1。重建过程中D2也发生了介质错误,资源块18变为降级状态。此时资源块状态表的记录如表4
资源块编号 | 资源块状态 | 发生IO读写错误的磁盘编号 |
1 | 降级 | 1 |
18 | 降级 | 2 |
表4
假设首先重建资源块1,从D2、D3、D4中读出数据,通过RAID算法重构数据写入到热备盘Spare1中,更新RAID重建进程表中该资源块对应的记录,然后顺序重建资源块2~资源块64。如果重建正常完成,D1被踢出阵列,Spare1顶替了D1作为阵列的第1块成员磁盘,通知状态维护单元进行资源块状态的更新,更新后的资源块状态表的记录如表5所示。
资源块编号 | 资源块状态 | 磁盘编号 |
18 | 降级 | 2 |
表5
步骤108,状态维护单元收到RAID重建完成事件后,更新资源块状态表,更新完成后通知重建单元删除重建进程表。所述RAID重建完成事件一般包含:RAID名称、重建完成的出错磁盘编号。状态维护单元遍历该RAID的资源块状态表,逐条读取记录,如果读取的记录中“发生IO读写错误的磁盘编号”中包含该重建完成的出错磁盘编号,根据RAID级别以及成员磁盘当前状态确定资源块的新状态:如果资源块的新状态是正常状态,可以在资源块状态表中删除该资源块对应的记录;如果资源块的新状态是降级状态,在资源块状态表中更新该资源块对应的记录,在“发生IO读写错误的磁盘编号”中删除该出错磁盘编号;需要注意的是,如果资源块原状态是故障且重建进程表中该资源块对应的bit为1,表示该资源块上对应磁盘未完成重建,即该资源块无法恢复至正常状态或者降级状态,该资源块仍然为故障状态。本步骤由状态维护单元执行。
步骤109,重建单元删除重建进程表。
步骤110,如果RAID总体状态是降级或者故障,Host访问逻辑资源的数据时,根据本次IO请求访问的地址以及逻辑资源索引区中的记录,存储控制器把IO请求发送到对应的资源块,读写辅助单元根据状态维护表中记录的资源块状态并在重建过程之外根据状态维护单元记录的该资源块的状态按照预定策略响应主机的读写操作。本步骤由读写辅助单元12执行。需要说明的是,读写辅助单元在本发明中并不是必须的,读写操作依然可以按照现有的方式去处理。这里所说的重建过程之外的预定读写策略,其包括:
●如果该资源块是正常状态,则按照正常读写操作处理,或者说透明处理;
●如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,比如,对于RAID5来说,可以读剩余成员磁盘的数据,然后根据异或算法得到出错磁盘上原有的数据;写数据时,根据异或算法更新校验数据;如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
●如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,直接返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
在上述重建过程之外的预定读写策略的基础上,如果IO发上在重建过程中,对于访问出错磁盘的IO读写请求,可以进一步引入对热备盘的利用策略。具体来说,对于IO读请求,在重建过程之中根据重建进程表判断IO读请求所属资源块是否已经重建完成,如果该资源块重建完成(重建进程表中bit为0),则使用热备盘替代出错磁盘响应IO读请求;如果该资源块正在重建或者未开始重建,则访问正在重建的出错磁盘。对于IO写请求,在重建过程之中根据重建进程表判断IO写请求所属资源块是否已经重建完成,如果该资源块正在重建或者重建完成,则将IO写请求中的数据同时写入热备盘以及相应的出错磁盘;如果该资源块未开始重建,则访问正在重建的出错磁盘。这样一来一旦重建中的热备盘发生IO错误被踢出阵列后,新的热备盘接替工作实现简单。
本发明通过资源块状态的维护,配合资源块为单元的重建方案,使用降级优先和仅仅重建已使用资源块等策略;在提高重建速度的同时,有效降低了RAID重建过程中RAID的成员磁盘上其他位置发生磁盘IO读写错误引发的重建失败或者数据丢失的风险。
本发明需要补充说明的是,本申请人在之前以及后续申请的相关专利申请中对逻辑单元划分的标准并不相同,其触发点是为了更好地让本领域普通技术人员了解各个发明独特之处,达到充分公开之目的。在不同的申请中,即便对于名称相同的逻辑单元,其执行的步骤可能也不尽相同。因此并不能依据其他相关申请对本发明做出限制性的解释。
以上所述仅仅为本发明较佳的实现方式,任何基于本发明精神所做出的等同的修改皆应涵盖于本发明的权利要求范围中。
Claims (22)
1.一种网络存储系统管理装置,用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该管理装置包括:
资源管理单元,用于使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;其中该资源管理单元进一步用于在创建逻辑资源时为逻辑资源分配至少一个资源块并更新相应的块表,并创建该逻辑资源的索引区,其中所述逻辑资源索引区用于记录该逻辑资源的逻辑空间与其自身分配到的RAID资源块的物理空间的对应关系;
状态维护单元,用于创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定被影响的资源块的新状态并更新所述资源块状态表;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
重建单元,用于在RAID成员磁盘读写出错之后选择热备盘替换出错磁盘,并以资源块为单元对RAID进行重建,且在重建完成后将该发生IO读写错误的磁盘踢出RAID,并通知所述状态维护单元RAID重建完成事件;其中所述状态维护单元在接收到RAID重建完成事件后,根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
2.根据权利要求1所述的管理装置,其特征在于,其中所述重建单元,进一步用于创建并维护重建进程表用于记录各个资源块的重建是否完成,并采用先重建降级状态的资源块后重建处于正常状态的重建策略。
3.根据权利要求2所述的管理装置,其特征在于,其中所述重建单元,进一步用于在重建正常状态的资源块时,将出错磁盘的数据拷贝到热备盘。
4.根据权利要求3所述的管理装置,其特征在于,其中所述重建单元,进一步用于在重建正常状态资源块的过程中某个资源块从正常状态变为降级状态,且IO读写错误发生在正在重建的出错磁盘上时,则在完成当前正常状态资源块重建后,优先重建新降级的资源块。
5.根据权利要求1所述的管理装置,其特征在于,其中所述重建单元,进一步用于根据块表的记录重建已经分配使用的资源块,跳过没有被分配使用的资源块。
6.根据权利要求2所述的管理装置,其特征在于,进一步包括:
读写辅助单元,用于根据索引区的记录确定主机的IO读写请求访问的逻辑资源地址对应的资源块,并在重建过程之外根据状态维护单元记录的该资源块的状态按照预定策略响应主机的读写操作。
7.根据权利要求6所述的管理装置,其特征在于,其中所述预定策略包括:如果该资源块是正常状态,则透明处理;如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,则返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理;如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
8.根据权利要求7所述的管理装置,其特征在于,其中所述读写辅助单元,进一步用于在重建过程之中根据重建进程表判断IO读请求所属资源块是否已经重建完成,如果该资源块重建完成,则使用热备盘替代出错磁盘响应IO读请求;如果该资源块正在重建或者未开始重建,则访问正在重建的出错磁盘。
9.根据权利要求7所述的管理装置,其特征在于,其中所述读写辅助单元,进一步用于在重建过程之中根据重建进程表判断IO写请求所属资源块是否已经重建完成,如果该资源块正在重建或者重建完成,则将IO写请求中的数据同时写入热备盘以及相应的出错磁盘;如果该资源块未开始重建,则访问正在重建的出错磁盘。
10.根据权利要求1所述的管理装置,其特征在于,其中若干资源块大小相同。
11.根据权利要求1所述的管理装置,其特征在于,其中所述资源块状态表中仅记录非正常状态的资源块。
12.一种网络存储系统管理方法,用于执行网络存储系统内的资源管理操作,其中网络存储系统包括存储控制器以及多块磁盘,所述存储控制器的前端端口通过网络连接主机,所述存储控制器的后端磁盘端口与所述磁盘相连;该方法包括如下步骤:
A、使用所述磁盘创建RAID,并把该RAID的可用空间根据指定长度划分为多个资源块,并创建该RAID对应的块表用于记录资源块是否已被分配使用;
B、在创建逻辑资源时为逻辑资源分配至少一个资源块并更新相应的块表,并创建该逻辑资源的索引区,其中所述逻辑资源索引区用于记录该逻辑资源的逻辑空间与其自身分配到的RAID资源块的物理空间的对应关系;
C、创建资源块状态表以维护RAID资源块的状态;并在接收到磁盘IO读写错误事件时根据逻辑索引区的记录确定读写错误事件所影响的资源块,然后根据发生IO读写错误的磁盘编号以及RAID级别确定被影响的资源块的新状态并更新资源块状态表;其中所述资源块的状态包括正常状态、降级状态以及故障状态;所述资源块状态表包括资源块编号、资源块状态以及发生IO读写错误的磁盘编号;
D、在RAID成员磁盘读写出错之后选择热备盘替换出错磁盘,并以资 源块为单元对RAID进行重建,且在重建完成后将该发生IO读写错误的磁盘踢出RAID,并在重建完成后发出重建完成事件;
E、接收RAID重建完成事件,并根据RAID成员磁盘的当前状态以及RAID级别确定资源块状态表中资源块的新状态,并更新所述资源块状态表。
13.根据权利要求12所述的管理方法,进一步包括如下步骤:
F、创建并维护重建进程表用于记录各个资源块的重建是否完成,并采用先重建降级状态的资源块后重建处于正常状态的重建策略。
14.根据权利要求13所述的管理方法,其特征在于,其中步骤F进一步包括:在重建正常状态的资源块时,将出错磁盘的数据拷贝到热备盘。
15.根据权利要求14所述的管理方法,其特征在于,所述步骤F进一步包括:在重建正常状态资源块的过程中某个资源块从正常状态变为降级状态,且IO读写错误发生在正在重建的出错磁盘上时,则在完成当前正常状态资源块重建后,优先重建新降级的资源块。
16.根据权利要求13所述的管理方法,其特征在于,进一步包括如下步骤:
G、进一步用于根据块表的记录重建已经分配使用的资源块,跳过没有被分配使用的资源块。
17.根据权利要求16所述的管理方法,其特征在于,进一步包括如下步骤:
H、根据索引区的记录确定主机的IO读写请求访问的逻辑资源地址对应的资源块,并在重建过程之外根据该资源块的状态按照预定策略响应主机的读写操作。
18.根据权利要求17所述的管理方法,其特征在于,其中所述预定策略包括:如果该资源块是正常状态,则透明处理;如果该资源块是故障状态,如果访问该资源块所属区域上发生IO读写错误的磁盘,则返回读写错误,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写 操作处理;如果访问的资源块是降级状态,对于读写资源块状态表中记录的发生IO读写错误的磁盘的数据,根据相应的RAID校验算法进行读写处理,如果访问该资源块所属区域上未发生IO读写错误的磁盘,则按照正常读写操作处理。
19.根据权利要求18所述的管理方法,其特征在于,所述步骤G进一步包括,在重建过程之中根据重建进程表判断IO读请求所属资源块是否已经重建完成,如果该资源块重建完成,则使用热备盘替代出错磁盘响应IO读请求;如果该资源块正在重建或者未开始重建,则访问正在重建的出错磁盘。
20.根据权利要求18所述的管理方法,其特征在于,所述步骤G进一步包括,在重建过程之中根据重建进程表判断IO写请求所属资源块是否已经重建完成,如果该资源块正在重建或者重建完成,则将IO写请求中的数据同时写入热备盘以及相应的出错磁盘;如果该资源块未开始重建,则访问正在重建的出错磁盘。
21.根据权利要求12所述的管理方法,其特征在于,其中若干资源块大小相同。
22.根据权利要求12所述的管理方法,其特征在于,其中所述资源块状态表中仅记录非正常状态的资源块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110040239 CN102147713B (zh) | 2011-02-18 | 2011-02-18 | 一种网络存储系统的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110040239 CN102147713B (zh) | 2011-02-18 | 2011-02-18 | 一种网络存储系统的管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102147713A CN102147713A (zh) | 2011-08-10 |
CN102147713B true CN102147713B (zh) | 2013-06-12 |
Family
ID=44421995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110040239 Active CN102147713B (zh) | 2011-02-18 | 2011-02-18 | 一种网络存储系统的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102147713B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541472A (zh) * | 2011-12-31 | 2012-07-04 | 杭州宏杉科技有限公司 | 一种raid阵列重建的方法及装置 |
JP2016530637A (ja) * | 2013-08-27 | 2016-09-29 | エージェンシー フォー サイエンス,テクノロジー アンド リサーチ | Raidパリティストライプ再構成 |
CN103617010B (zh) * | 2013-12-13 | 2016-11-23 | 华为技术有限公司 | 数据存储方法及存储装置 |
CN106557266B (zh) * | 2015-09-25 | 2019-07-05 | 伊姆西公司 | 用于独立磁盘冗余阵列raid的方法和装置 |
CN106933708B (zh) * | 2015-12-29 | 2020-03-20 | 伊姆西Ip控股有限责任公司 | 有助于进行存储系统恢复的方法、装置以及一种存储系统 |
CN107391042A (zh) * | 2017-07-28 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种磁盘阵列的设计方法及系统 |
CN108874314A (zh) * | 2018-05-31 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种独立冗余磁盘阵列的重构方法及装置 |
CN111124266B (zh) * | 2018-10-31 | 2023-09-29 | 伊姆西Ip控股有限责任公司 | 数据管理方法、设备和计算机程序产品 |
CN112463019A (zh) * | 2019-09-06 | 2021-03-09 | 华为技术有限公司 | 数据读取方法及装置 |
CN113868019B (zh) * | 2021-08-27 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、装置及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266565A (zh) * | 2008-04-18 | 2008-09-17 | 华为技术有限公司 | 一种数据备份的方法和装置 |
CN101604226A (zh) * | 2009-07-14 | 2009-12-16 | 浪潮电子信息产业股份有限公司 | 一种基于虚拟raid构建动态缓存池提高存储系统性能的方法 |
CN101788889A (zh) * | 2010-03-03 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 一种存储虚拟化系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7281160B2 (en) * | 2003-02-10 | 2007-10-09 | Netezza Corporation | Rapid regeneration of failed disk sector in a distributed database system |
US7613945B2 (en) * | 2003-08-14 | 2009-11-03 | Compellent Technologies | Virtual disk drive system and method |
-
2011
- 2011-02-18 CN CN 201110040239 patent/CN102147713B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266565A (zh) * | 2008-04-18 | 2008-09-17 | 华为技术有限公司 | 一种数据备份的方法和装置 |
CN101604226A (zh) * | 2009-07-14 | 2009-12-16 | 浪潮电子信息产业股份有限公司 | 一种基于虚拟raid构建动态缓存池提高存储系统性能的方法 |
CN101788889A (zh) * | 2010-03-03 | 2010-07-28 | 浪潮(北京)电子信息产业有限公司 | 一种存储虚拟化系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102147713A (zh) | 2011-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102147713B (zh) | 一种网络存储系统的管理方法及装置 | |
JP6294518B2 (ja) | 不揮発性メモリシステムにおける同期ミラーリング | |
CN102164165B (zh) | 一种网络存储系统的管理方法及装置 | |
US10001947B1 (en) | Systems, methods and devices for performing efficient patrol read operations in a storage system | |
US7389379B1 (en) | Selective disk offlining | |
Katz et al. | Disk system architectures for high performance computing | |
US9836243B1 (en) | Cache management techniques | |
US8839030B2 (en) | Methods and structure for resuming background tasks in a clustered storage environment | |
JP4818812B2 (ja) | フラッシュメモリストレージシステム | |
US8762672B2 (en) | Storage system and storage migration method | |
US9037795B1 (en) | Managing data storage by provisioning cache as a virtual device | |
US7506187B2 (en) | Methods, apparatus and controllers for a raid storage system | |
JP4874368B2 (ja) | フラッシュメモリを用いたストレージシステムの管理方法及び計算機 | |
US20120124285A1 (en) | Virtual disk drive system and method with cloud-based storage media | |
CN102135862B (zh) | 一种磁盘存储系统及其数据访问方法 | |
US11809720B2 (en) | Techniques for storage management | |
CN101997919B (zh) | 一种存储资源的管理方法及管理装置 | |
CN102158538B (zh) | 一种存储资源的管理方法及装置 | |
CN102147714B (zh) | 一种网络存储系统的管理方法及装置 | |
JP2003131818A (ja) | クラスタ構成ストレージにおけるクラスタ間raid構成 | |
US11625183B1 (en) | Techniques for data layout on rotating disk drives | |
JP7137612B2 (ja) | 分散型ストレージシステム、データ復旧方法、及びデータ処理プログラム | |
JP5222388B2 (ja) | フラッシュメモリを用いたストレージシステムの管理システム及び管理方法 | |
Thomasian | RAID Organizations for Improved Reliability and Performance: A Not Entirely Unbiased Tutorial (1st revision) | |
US11868612B1 (en) | Managing storage operations in storage systems |
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. |