CN103534688B - 数据恢复方法、存储设备和存储系统 - Google Patents
数据恢复方法、存储设备和存储系统 Download PDFInfo
- Publication number
- CN103534688B CN103534688B CN201380000749.XA CN201380000749A CN103534688B CN 103534688 B CN103534688 B CN 103534688B CN 201380000749 A CN201380000749 A CN 201380000749A CN 103534688 B CN103534688 B CN 103534688B
- Authority
- CN
- China
- Prior art keywords
- data
- chunk
- ckg
- length
- memory device
- 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
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供了一种数据恢复方法,包括:确定所述存储设备的磁盘中发生故障的第一Chunk;将所述第一Chunk的空间属性设置为不能被访问的状态;在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。可以在存储设备发生局部故障时,保证数据的可靠性。
Description
技术领域
本发明涉及存储技术,尤其涉及一种数据恢复方法、存储设备和存储系统。
背景技术
独立磁盘冗余数组(RedundantArrayofIndependentDisks,RAID),又称廉价磁盘冗余数组(RedundantArrayofInexpensiveDisks,RAID),简称硬盘阵列。其基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、容量巨大的硬盘。根据选择的版本不同,RAID比单颗硬盘有以下方面的好处:增强数据集成度,增强容错功能,增加处理量或容量。另外,磁盘阵列对于电脑来说,看起来就像一个单独的硬盘或逻辑存储单元。传统的RAID技术是在硬盘间实现的,以RAID5为例,要实现RAID5技术至少需要三颗硬盘,将数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
在实现块虚拟化技术以后,可以将硬盘划分为细粒度的数据块(Chunk,以下简称CK),然后在多个CK之间实现RAID,而由多个CK按照指定RAID类型组成的逻辑空间就是一个数据块组(ChunkGroup,以下简称CKG)。当CKG中的一个CK发生故障时,可以利用RAID技术将发生故障的CK中存储的数据恢复出来。但是在数据恢复之前,主机仍然会对发生故障的CK进行数据访问,磁介质损坏的区域会发生物理扩散,由此会造成发生故障的区域增大,或者对磁头造成损坏,最终都可能导致该CK所属的磁盘全盘故障,影响数据的可靠性。
发明内容
本发明实施例提供了一种数据恢复方法、存储设备和存储系统,当存储设备发生局部故障时,可以保证数据可靠性。
第一方面,本发明实施例提供一种数据恢复方法,应用于存储设备中,所述存储设备包含多个磁盘,每个磁盘的存储空间被划分为多个数据块Chunk,包括:
确定所述存储设备的磁盘中发生故障的第一Chunk;
将所述第一Chunk的空间属性设置为不能被访问的状态;
在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;
恢复所述第一Chunk中存储的数据;
将所述恢复出的数据写入所述第二Chunk中。
在第一方面的第一种可能的实现方式中,还包括:
接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;
根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk;
确定所述第一Chunk的空间属性被设置为不能被访问的状态;
恢复所述第一Chunk中存储的数据;
将所述恢复出的数据发送给所述主机。
在第一方面的第二种可能的实现方式中,还包括:
接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;
根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk;
确定所述第一Chunk的空间属性被设置为不能被访问的状态;
将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
在第一方面的第三种可能的实现方式中,在确定所述存储设备的磁盘中发生故障的第一Chunk之前,还包括:
接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求;
执行所述数据访问请求;
接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障。
在第一方面的第四种可能的实现方式中,还包括:将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
第二方面,本发明实施例提供一种存储设备,包括多个磁盘和控制器,其中每个磁盘的存储空间被划分为多个数据块Chunk,其特征在于,所述控制器包括:
故障确定模块,用于确定所述存储设备的磁盘中发生故障的第一Chunk;
空间管理模块,用于将所述第一Chunk的空间属性设置为不能被访问的状态;
数据管理模块,用于在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。
在第二方面的第一种可能的实现方式中,
所述数据管理模块,还用于接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk,并且所述第一Chunk的空间属性被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据发送给所述主机。
在第二方面的第二种可能的实现方式中,
所述数据管理模块,还用于接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk,并且所述第一Chunk的空间属性被设置为不能被访问的状态;将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
在第二方面的第三种可能的实现方式中,
所述数据管理模块,还用于接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求;执行所述数据访问请求;接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障。
在第二方面的第四种可能的实现方式中,
所述空间管理模块,还用于将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
第三方面,本发明实施例提供一种存储系统,包括第二方面所述的存储设备和主机;所述主机用于向所述存储设备发送数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求。
第四方面,本发明实施例提供一种存储设备,包括:处理器、存储器和通信总线;
其中,所述处理器和所述存储器通过所述通信总线进行通信;
所述存储器用于保存程序;
所述处理器用于执行所述程序,以实现:
确定所述存储设备的磁盘中发生故障的第一Chunk;将所述第一Chunk的空间属性设置为不能被访问的状态;在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。
在第四方面的第一种可能的实现方式中,所述处理器,还用于接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk;确定所述第一Chunk的空间属性被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据发送给所述主机。
在第四方面的第二种可能的实现方式中,
所述处理器,还用于接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk;确定所述第一Chunk的空间属性被设置为不能被访问的状态;将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
在第四方面的第三种可能的实现方式中,
所述处理器,还用于接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求;执行所述数据访问请求;接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障。
在第四方面的第四种可能的实现方式中,所述处理器,还用于将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一CK,将所述第一CK的空间属性设置为不可访问的状态,因此所述第一CK将不再被继续访问,损坏的区域也不会扩大,当查找到空闲的第二CK时,可以将第一CK中存储的数据恢复到第二CK中,保证了数据可靠性,另外,由于第一CK损坏的区域不会扩大,只需要将第一CK中存储的数据恢复到第二CK,提高了数据恢复的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据恢复方法的应用网络架构示意图;
图2为本发明实施例提供的一种数据恢复方法的流程图;
图3A为本发明实施例提供的又一种数据恢复方法的流程图;
图3B为本发明实施例提供的一种读数据方法的流程图;
图3C为本发明实施例提供的一种写数据方法的流程图;
图4为本发明实施例提供的一种数据恢复方法中查找发生故障的数据块的示意图;
图5为本发明实施例提供的一种存储设备的结构示意图;
图6为本发明实施例提供的一种存储系统的结构示意图;
图7为本发明实施例提供的又一种存储设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的数据恢复方法可以在存储系统上实现。图1为本发明实施例提供的一种数据恢复方法的系统架构示意图,如图1所示,该存储系统包括主机、连接设备和存储设备。
主机可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在主机内部,安装有操作系统以及其他应用程序。
连接设备可以包括当前技术已知的存储设备和主机之间的任何接口,如光纤交换机,或者其他现有的交换机。
存储设备可以包括当前技术已知的存储设备,如独立磁盘冗余阵列(RedundantArraysofIndependentDisks,RAID)、磁盘簇(JustaBunchOfDisks,JBOD)、直接存取存储器(DirectAccessStorageDevice,DASD)的一个或多个互连的磁盘驱动器,诸如磁带库、一个或多个存储单元的磁带存储设备。
所述存储设备包含控制器和多个磁盘,每个磁盘被划分为细粒度的尺寸相同的数据块(Chunk,以下简称CK),然后在多个CK之间实现RAID,而由多个CK按照指定RAID类型组成的逻辑空间就是一个数据块组(ChunkGroup,以下简称CKG)。一个CKG所包含的各个CK必须属于不同磁盘。
控制器相当于所述存储设备的处理器,安装有操作系统和其他软件程序,不同的软件程序可以视作一个处理模块,具有不同的功能。例如,数据管理模块用于处理IO请求,或者对磁盘中的数据进行其他处理;空间管理模块用于修改存储设备中保存的元数据等等。
如图2所示,本发明实施例提供的一种数据恢复方法,本方法的执行主体可以是存储设备的控制器。
S202:确定所述存储设备的磁盘中发生故障的第一CK;
当所述存储设备执行数据访问请求收到指示所述存储设备的磁盘发生局部故障的错误码时,可以通过数据访问请求中的访问地址和数据长度(Length),在所述存储设备保存的元数据中进行查询并经过计算,确定发生故障的第一CK。其中,访问地址包括逻辑单元号(LogicUnitNumber,以下简称为LUN)的标识(例如,ID号)以及逻辑块地址(LogicBlockAddress,以下简称为LBA)。这里的访问LUNID是指主机LUN的ID。元数据为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件纪录等功能。元数据可以保存在所述存储设备的任意磁盘上,也可以保存在所述存储设备的专门用于存储元数据的磁盘上。
关于如何确定所述存储设备中发生故障的第一CK,将在图3A和图4所示的实施例中进行详细描述。
S203:将所述第一CK的空间属性设置为不能被访问的状态。
元数据中保存有CK的各种属性信息,例如空间属性、时间属性、用户权限属性等等。具体的,控制器中的空间管理模块可以将所述第一CK的空间属性设置为不能被访问的状态,例如将其空间属性修改为disable。需要说明的是,disable为本发明实施例中对CK的空间属性新增的状态。一旦所述第一CK的空间属性设置为不能被访问的状态,所述第一CK中存储的数据将不能被直接访问,例如,不能被直接读取或修改,同样的,也不能将其他数据写入所述第一CK中。在本发明中,不能被访问的状态,也可以称为不可访问或不能访问的状态。
在现有技术中,当CK发生故障时,在该CK中存储的数据恢复出来之前,该CK还会继续被访问,由此产生的物理反应会造成发生故障的区域扩大,最终可能导致该CK所在的硬盘全盘故障。而本发明实施例中,将所述第一CK的空间属性设置为不能被访问的状态,使得第一CK不再被继续访问,因此可以防止发生故障的区域扩大。
S204:在所述存储设备的存储空间中查找空闲的第二CK;
具体的,可以利用选盘算法在所述存储设备的存储空间中进行查找。存储设备的存储空间是指存储设备中的所有磁盘的存储空间。举例来说,在本发明实施例中,可以在所述存储设备的热备空间中进行查找。热备空间是各个磁盘中预留的用于数据恢复的存储空间。查找的第二CK可以属于存储设备中现有的磁盘中的热备空间,当现有的磁盘中的热备空间不足时,也可以将新插入所述存储设备的磁盘的所有空间作为热备空间。如果是现有的磁盘中的热备空间,须满足所述第二CK所属的磁盘不同于所述CKG包含的未发生故障的CK所属的磁盘。其目的是保证一个CKG所包含的各个CK分别属于不同的磁盘,从而防止一个磁盘发生故障或者掉电时两个CK的数据都丢失的情况。
需要说明的是,所述查找到的第二CK应该是空闲的,并且其空间属性没有被设置为不能被访问的状态。因此在查找第二CK时,需要检查所述第二CK的空间属性是否被设置为不能被访问的状态。另外,本发明实施例中的第二CK是空闲的是指所述第二CK中没有存储数据。
可以理解的是,当第一CK的空间属性设置为不能被访问的状态之后,第一CK中存储的数据不能被访问,那么第一CK也不能作为所述CKG的一部分,提供数据冗余的功能,因此第一CK所属磁盘的热备空间也可以提供第二CK用于恢复第一CK中的数据,由此仍然可以保证所述CKG包含的各个CK分别属于不同的磁盘。
S205:恢复所述第一CK中存储的数据。
由上面的描述可知,在所述存储设备中,多个CK之间实现RAID,而由多个CK按照指定RAID类型组成的逻辑空间就是一个CKG。在本发明一个较优的实施例中,所述RAID类型可以是RAID5或者RAID6,当然并不限于此。以RAID5为例,要实现RAID5技术至少需要三个CK,将数据和相对应的奇偶校验信息存储到组成RAID5的各个CK上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个CK存储的数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。因此,可以利用该CKG中未发生故障的CK中存储数据恢复出所述第一CK中存储的数据。如果是采用RAID6技术则至少需要四个CK。
S206:将所述恢复出的数据写入所述第二CK中。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一CK,将所述第一CK的空间属性设置为不可访问的状态,因此所述第一CK将不再被继续访问,损坏的区域也不会扩大,当查找到空闲的第二CK,并且第二CK的空间属性没有被设置为不可访问的状态时,可以将第一CK中存储的数据恢复到第二CK中,保证了数据可靠性。另外,由于第一CK损坏的区域不会扩大,只需要将第一CK中存储的数据恢复到第二CK,提高了数据恢复的效率。
下面将结合图3A对上述实施例进行详细说明。
S301:接收主机发送的数据访问请求。
这里的数据访问请求可以是写数据请求,也可以是读数据请求,也可以是数据修改请求,当所述数据访问请求是写数据请求或数据修改请求时,该请求包括待写入数据、访问地址和数据长度;当所述数据访问请求是读数据请求时,该请求包括访问地址和数据长度。这里的访问地址是指LUNID和LBA。
S302:执行所述数据访问请求。
存储设备接收到主机发送的数据访问请求之后,将执行该数据访问请求,具体的,当所述数据访问请求是写数据请求或数据修改请求时,根据访问地址和数据长度将待写入数据写入LBA对应的存储空间中;当所述数据访问请求是读数据请求时,根据访问地址和数据长度从LBA对应的存储空间中读取数据。
S303:接收指示所述存储设备的磁盘发生局部故障的错误码。
所述存储设备包含控制器和多个磁盘,局部故障是指存储设备中的某个磁盘因为碰撞、磁头摩损等原因导致磁盘盘面出现较小面积的物理性损坏,譬如划伤、掉磁等,导致产生该受损区域所包含的数据不可修复。
具体的,判断所述存储设备中的磁盘是否发生局部故障,可以通过执行数据访问请求时是否接收到指示局部故障的错误码来确定。当控制器发送数据访问请求给磁盘时,如果访问成功,磁盘将发送给控制器访问成功的响应,如果访问失败,并且访问失败是由于磁盘发生局部故障造成的,将发送指示磁盘发生局部故障的错误码给控制器。
S304:根据所述访问地址和数据长度,在所述存储设备中保存的所述访问地址和CKG的对应关系中进行查询,并根据所述访问地址和数据长度进行计算,获得发生故障的CKG的信息。
具体的查询过程请参考图4:
主机发送给存储设备的数据访问请求中包含LUNID,这里的LUNID是指主机LUN的ID,主机LUN是存储设备映射给主机的一段逻辑空间,例如主机的C盘或D盘,一旦LUNID确定,那么主机LUN也就确定了。
通常情况下,主机LUN和设备逻辑单元(DeviceLUN)是一一对应的关系,因此一旦主机LUN确定,也就唯一确定了DeviceLUN。
而DeviceLUN是由多个逻辑卷(LogicVolume,LV)组成(图4中以3个LV为例),LV是存储设备上位于DeviceLUN下层的一段逻辑空间。在本发明实施例中,可以根据所述访问地址和Length在DeviceLUN与LV的对应关系中查询并计算,获得LV的ID、LV的LBA和LV的Length,由此确定出发生故障的LV。Extent(可以简写为Ext)是数据分层迁移单元,也称逻辑空间分配单元,一个LV的逻辑空间来自于多个Extent,可以根据LV的ID、LV的LBA和LV的Length在LV与Extent的对应关系中查询并计算,获得Extent的ID、Extent的LBA和Extent的Length,由此确定出发生故障的Extent。
一个Extent属于一个CKG,但它们之间并非一一对应的关系,一个Extent可以是一个CKG的一部分,也就是说,一个CKG可以划分为多个Extent。在本发明实施例中,可以根据Extent的ID、Extent的LBA和Extent的Length在Extent和CKG的对应关系中查询并计算,获得发生故障的CKG的信息,包括CKG的ID、CKG的LBA和CKG的Length,由此确定出发生故障的CKG。
S305:根据CKG的ID、CKG的LBA和CKG的Length,在所述CKG与CK的对应关系中进行查询并计算,获得所述CKG中发生故障的第一CK。
由图4可知,根据CKGID、CKG的LBA和CKG的Length,可以在CKG与CK的对应关系中查询并计算,获得发生故障的CK的ID。
S306:将所述第一CK的空间属性设置为不能被访问的状态。
具体的设置方式,请参考图2所示的实施例。
需要说明的是,当所述第一CK的空间属性设置为不能被访问的状态,所述第一CK中存储的数据虽然不能直接被访问,但仍然可以以其他方式读取。
例如,存储设备收到主机发送的读数据请求后,如果所述读取请求所要访问的存储区域正好是所述第一CK所包含的区域,则查询元数据中所述第一CK的信息,发现所述第一CK的空间属性被设置为不可访问的状态,因此不能直接从所述第一CK中获取数据。此时,可以查询所述第一CK所在的CKG,利用CKG中未发生故障的CK中存储的数据恢复该数据,并发送给主机。
S307:在所述存储设备的存储空间中查找空闲的第二CK,所述第二CK的空间属性没有被设置为不能被访问的状态。
第二CK所属的磁盘不同于CKG中未发生故障的磁盘。具体的查找方式与步骤204类似,这里不再赘述。
步骤307和306没有先后顺序的区别。
S308:在所述存储设备中保存的CKG与CK的对应关系中查找所述第一CK所在的CKG。
这里的查找方式可以是根据第一CK的标识在CKG和CK的对应关系中进行查找,也可以是在步骤304中的元数据中进行回溯。
CKG和CK的对应关系可以如下表所示:
S309:根据所述CKG中未发生故障的CK中存储的数据和RAID类型信息,计算获得所述第一CK中存储的数据。
具体的计算方式与步骤S205类似,这里不再赘述。
S310:将恢复出的数据写入所述第二CK中。
S311:将所述元数据中所述CKG与所述第一CK的对应关系修改为所述CKG与所述第二CK的对应关系。
可以理解的是,所述CKG与CK的对应关系中包含CKG与其所属的各个CK之间的对应关系,将所述CKG与所述第一CK的对应关系修改为所述CKG与所述第二CK的对应关系之后,主机发送给存储设备的IO请求将不会再访问第一CK,而是访问第二CK。此时,若接收到数据访问请求,在执行所述数据访问请求时,也需检查所述第二CK的空间是否被设置为不能被访问的状态。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一CK,将所述第一CK的空间属性设置为不可访问的状态,因此所述第一CK将不再被继续访问,损坏的区域也不会扩大,当查找到空闲的第二CK时,可以将第一CK中存储的数据恢复到第二CK中,保证了数据可靠性,另外,由于第一CK损坏的区域不会扩大,只需要将第一CK中存储的数据恢复到第二CK,提高了数据恢复的效率。
请参考图3B,图3B为本发明一种读数据的方法实施例。
所述读数据的方法包括:
步骤S320:接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度。
这里的读取地址是指LUNID和LBA,数据长度是指待读取的数据的长度。
步骤S321:根据所述读取地址和数据长度,确定待读取的CK是所述第一CK。
该步骤与上述实施例步骤304、步骤305的方法类似,这里不再赘述。
步骤S322:确定所述第一CK的空间属性被设置为不能被访问的状态。
在本发明实施例中,在将第一CK的空间属性设置为不能被访问的状态之后,如果接收读数据请求,则需要确定第一CK的空间属性是否被设置为不能被访问的状态,如果是,则不能直接读取第一CK中的数据。
步骤S323:恢复所述第一CK中存储的数据。
该步骤与上述实施例步骤205的方法类似,这里不再赘述。
步骤S324:将所述恢复出的数据发送给所述主机。
请参考图3C,图3C为本发明一种写数据的方法实施例。
所述写数据的方法包括:
步骤S330:接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度。
这里的写入地址是指LUNID和LBA,数据长度是指待写入数据的长度。
步骤S331:根据所述写入地址和所述数据长度,确定待写入的CK是所述第一CK。
该步骤与上述实施例步骤304、步骤305的方法类似,这里不再赘述。
步骤S332:确定所述第一CK的空间属性被设置为不能被访问的状态。
在本发明实施例中,在将第一CK的空间属性设置为不能被访问的状态之后,如果接收写数据请求,则需要确定第一CK的空间属性是否被设置为不能被访问的状态,如果是,则不能将待写入数据直接写入第一CK中。
步骤S333:将所述待写入数据写入所述第一CK所在的数据块组CKG中未发生故障的CK中。
具体的,可以将所述待写入数据分成至少两个数据块,并计算所述待写入数据的校验数据,将所述至少两个数据块和校验数据,写入所述CKG中未发生故障的CK中。
需要说明的是,如果所述存储设备接收到数据修改请求,那么数据修改请求的执行步骤跟写数据的方法类似,这里不再赘述。
请参考图5,图5为本发明一种存储设备的实施例。
在本发明实施例的存储设备中,包括控制器50和多个磁盘51,其中,控制器50包括数据管理模块501、故障确定模块502和空间管理模块503。
所述故障确定模块502,用于当所述存储设备发生局部故障时,确定所述存储设备的磁盘中发生故障的第一CK。
当所述存储设备执行数据访问请求收到指示所述存储设备的磁盘发生局部故障的错误码时,故障确定模块502可以通过所述数据访问请求中的访问地址和数据长度(Length),在所述存储设备保存的元数据中进行查询并经过计算,确定发生故障的第一CK。其中,访问地址包括逻辑单元号(LogicUnitNumber,以下简称为LUN)的标识(例如,ID号)以及逻辑块地址(LogicBlockAddress,以下简称为LBA)。这里的访问LUNID是指主机LUN的ID。元数据为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件纪录等功能。元数据可以保存在所述存储设备的任意磁盘51上,也可以保存在所述存储设备的专门用于存储元数据的磁盘上。
所述空间管理模块503,用于将所述第一CK的空间属性设置为不能被访问的状态。
元数据中保存有CK的各种属性信息,例如空间属性、时间属性、用户权限属性等等。具体的,空间管理模块503可以将所述第一CK的空间属性设置为不能被访问的状态,例如将其空间属性修改为disable。需要说明的是,disable为本发明实施例中对CK的空间属性新增的状态。一旦所述第一CK的空间属性设置为不能被访问的状态,所述第一CK中存储的数据将不能被直接访问,例如,不能被直接读取或修改,同样的,也不能将其他数据写入所述第一CK中。在本发明中,不能被访问的状态,也可以称为不可访问或不能访问的状态。
在现有技术中,当CK发生故障时,在该CK中存储的数据恢复出来之前,该CK还会继续被访问,由此产生的物理反应会造成发生故障的区域扩大,最终可能导致该CK所在的硬盘全盘故障。而本发明实施例中,将所述第一CK的空间属性设置为不能被访问的状态,使得第一CK不再被继续访问,因此可以防止发生故障的区域扩大。
所述数据管理模块501,用于在所述存储设备的存储空间中查找空闲的第二CK;恢复所述第一CK中存储的数据,并将恢复出的数据写入所述第二CK中。
具体的,可以利用选盘算法在所述存储设备的存储空间中进行查找。举例来说,在本发明实施例中,可以在所述存储设备的热备空间中进行查找。热备空间是各个磁盘中预留的用于数据恢复的存储空间。查找的第二CK可以属于存储设备中现有的磁盘中的热备空间,当现有的磁盘中的热备空间不足时,也可以将新插入所述存储设备的磁盘的所有空间作为热备空间。如果是现有的磁盘中的热备空间,须满足所述第二CK所属的磁盘不同于所述CKG包含的未发生故障的CK所属的磁盘。其目的是保证一个CKG所包含的各个CK分别属于不同的磁盘,从而防止一个磁盘发生故障或者掉电时两个CK的数据都丢失的情况。
需要说明的是,所述查找到的第二CK应该是空闲的,并且其空间属性没有被设置为不能被访问的状态。因此在查找第二CK时,需要检查所述第二CK的空间属性是否被设置为不能被访问的状态。另外,本发明实施例中的第二CK是空闲的是指所述第二CK中没有存储数据。
可以理解的是,当第一CK的空间属性设置为不能被访问的状态之后,第一CK中存储的数据不能被访问,那么第一CK也不能作为所述CKG的一部分,提供数据冗余的功能,因此第一CK所属磁盘的热备空间也可以提供第二CK用于恢复第一CK中的数据,由此仍然可以保证所述CKG包含的各个CK分别属于不同的磁盘。
由上面的描述可知,在所述存储设备中,多个CK之间实现RAID,而由多个CK按照指定RAID类型组成的逻辑空间就是一个CKG。在本发明一个较优的实施例中,所述RAID类型可以是RAID5或者RAID6,当然并不限于此。以RAID5为例,要实现RAID5技术至少需要三个CK,将数据和相对应的奇偶校验信息存储到组成RAID5的各个CK上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个CK存储的数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。因此,可以利用该CKG中未发生故障的CK中存储数据恢复出所述第一CK中存储的数据,并存储到第二CK中。如果是采用RAID6技术则至少需要四个CK。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一CK,将所述第一CK的空间属性设置为不可访问的状态,因此所述第一CK将不再被继续访问,损坏的区域也不会扩大,当查找到空闲的第二CK,并且第二CK的空间属性没有被设置为不可访问的状态时,可以将第一CK中存储的数据恢复到第二CK中,保证了数据可靠性。另外,由于第一CK损坏的区域不会扩大,只需要将第一CK中存储的数据恢复到第二CK,提高了数据恢复的效率。
在图5所示的存储设备的实施例中,所述数据管理模块501,还用于接收主机发送的数据访问请求;执行所述数据访问请求;以及接收所述数据访问请求执行错误的响应请求,所述响应请求包括指示所述存储设备的磁盘发生局部故障的错误码。
这里的数据访问请求可以是写数据请求,也可以是读数据请求,也可以是数据修改请求,当所述数据访问请求是写数据请求或数据修改请求时,该请求包括待写入数据、访问地址和数据长度;当所述数据访问请求是读数据请求时,该请求包括访问地址和数据长度。这里的访问地址是指LUNID和LBA。
存储设备接收到主机发送的数据访问请求之后,将执行该数据访问请求,具体的,当所述数据访问请求是写数据请求或数据修改请求时,根据访问地址和数据长度将待写入数据写入LBA对应的存储空间中;当所述数据访问请求是读数据请求时,根据访问地址和数据长度从LBA对应的存储空间中读取数据。
在执行所述数据访问请求时,如果访问成功,磁盘将发送给控制器访问成功的响应,如果访问失败,并且访问失败是由于磁盘发生局部故障造成的,控制器将接收到指示所述存储设备的磁盘发生局部故障的错误码。这里的局部故障是指存储设备中的某个磁盘因为碰撞、磁头摩损等原因导致磁盘盘面出现较小面积的物理性损坏,譬如划伤、掉磁等,导致产生该受损区域所包含的数据不可修复。
所述故障确定模块502具体用于:根据所述访问地址和数据长度,在所述存储设备中保存的所述访问地址和CKG的对应关系中进行查询,并根据所述访问地址和数据长度进行计算,获得发生故障的CKG的信息;以及根据CKG的ID、CKG的LBA和CKG的Length,在所述CKG与CK的对应关系中进行查询并计算,获得所述CKG中发生故障的第一CK。其中,所述CKG包含至少三个CK,每个CK属于所述存储设备中不同的磁盘,所述CKG的信息包括所述CKG的标识、所述CKG的访问地址、所述CKG的长度和所述CKG的RAID类型。
具体的查询过程请参考图4实施例的描述。
所述数据管理模块501,用于在所述存储设备的存储空间中查找空闲的第二CK,所述第二CK的空间属性没有被设置为不能被访问的状态;根据所述CKG中未发生故障的CK中包含的数据和RAID类型,计算获得所述第一CK中存储的数据;将所述恢复出的数据写入所述第二CK中。
具体的,所述数据管理模块501可以在所述存储设备中保存的CKG与CK的对应关系中查找所述第一CK所在的CKG,所述对应关系包括所述CKG的标识和所述CKG的RAID类型,以及所述CKG所包含的各个CK的标识等信息。
在本发明实施例中,第二CK所属的磁盘所属的磁盘不同于CKG中未发生故障的磁盘。
关于查找所述第一CK所在的CKG,可以是根据第一CK的标识在CKG和CK的对应关系中进行查找,也可以是在故障确定模块502中用到的元数据中进行回溯。
另外,所述空间管理模块503,还用于将所述CKG与所述第一CK的对应关系修改为所述CKG与所述第一CK的对应关系。
可以理解的是,元数据中包含CKG与其所属的各个CK之间的对应关系,将所述CKG与所述第一CK的对应关系修改为所述CKG与所述第一CK的对应关系之后,主机发送给存储设备的IO请求将不会再访问第一CK,而是访问第二CK。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一CK,将所述第一CK的空间属性设置为不可访问的状态,因此所述第一CK将不再被继续访问,损坏的区域也不会扩大,当查找到空闲的第二CK时,可以将第一CK中存储的数据恢复到第二CK中,保证了数据可靠性,另外,由于第一CK损坏的区域不会扩大,只需要将第一CK中存储的数据恢复到第二CK,提高了数据恢复的效率。
在本发明另一个实施例中,在所述空间管理模块503将第一CK的空间属性设置为不能被访问的状态之后,所述数据管理模块501还用于,接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;根据所述读取地址和数据长度,确定待读取的CK是所述第一CK,并且所述第一CK的空间属性被设置为不能被访问的状态;恢复所述第一CK中存储的数据;将所述恢复出的数据发送给所述主机。
这里的读取地址是指LUNID和LBA,数据长度是指待读取的数据的长度。
在本发明实施例中,在将第一CK的空间属性设置为不能被访问的状态之后,如果接收读数据请求,则需要确定第一CK的空间属性是否被设置为不能被访问的状态,如果是,则不能直接读取第一CK中的数据。
确定待读取的CK是所述第一CK的步骤,以及恢复所述第一CK中存储的数据的步骤,与上面实施例类似,这里不再赘述。
在本发明再一个实施例中,在所述空间管理模块503将第一CK的空间属性设置为不能被访问的状态之后,所述数据管理模块501还用于,接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;根据所述写入地址和所述数据长度,确定待写入的CK是所述第一CK,并且所述第一CK的空间属性被设置为不能被访问的状态;将所述待写入数据写入所述第一CK所在的数据块组CKG中未发生故障的CK中。
这里的写入地址是指LUNID和LBA,数据长度是指待写入数据的长度。
需要说明的是,如果所述存储设备接收到数据修改请求,那么数据修改请求的执行步骤跟写数据的方法类似,这里不再赘述。
在本发明实施例中,在将第一CK的空间属性设置为不能被访问的状态之后,如果接收写数据请求,则需要确定第一CK的空间属性是否被设置为不能被访问的状态,如果是,则不能将待写入数据直接写入第一CK中。
在写数据时,具体的,可以将所述待写入数据分成至少两个数据块,并计算所述待写入数据的校验数据,将所述至少两个数据块和校验数据,写入所述CKG中未发生故障的CK中。
本发明实施例还提供了一种存储系统60,如图6所示,所述存储系统60包括存储设备70和主机40。
另外,所述存储系统60还可以包括连接设备,例如交换机(图中未示出),用以连接所述存储设备70和所述主机40。
所述存储设备70,用于确定所述存储设备的磁盘中发生故障的第一Chunk;将所述第一Chunk的空间属性设置为不能被访问的状态;在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。
所述主机40,用于向所述存储设备70发送数据访问请求,所述数据访问请求包括读数据请求或写数据请求。
具体的,存储设备70中各模块的具体实现可以参见图5所示实施例中的相应模块,在此不赘述。
请参考图7,本发明实施例提供了一种存储设备700的示意图。存储设备700可以包括当前技术已知的存储设备,本发明具体实施例并不对存储设备700的具体实现做限定。存储设备700包括:
处理器(processor)710,通信接口(CommunicationsInterface)720,存储器(memory)730,通信总线740。
处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。
通信接口720,用于与网元通信,比如与主机或者交换机等通信。
处理器710,用于执行程序732。
具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序732具体可以包括:
故障确定模块502,用于确定所述存储设备的磁盘中发生故障的第一Chunk。
空间管理模块503,用于将所述第一Chunk的空间属性设置为不能被访问的状态。
数据管理模块501,用于在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据,并存储到所述第二Chunk中。
程序732中各模块的具体实现可以参见图5所示实施例中的相应模块,在此不赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理子模块,即可以位于一个地方,或者也可以分布到多个网络子模块上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种数据恢复方法,应用于存储设备中,所述存储设备包含多个磁盘,每个磁盘的存储空间被划分为多个数据块Chunk,其特征在于,所述方法包括:
接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求,所述数据访问请求包括主机逻辑单元号LUN的ID,访问地址和数据长度;
执行所述数据访问请求;
接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障;
根据所述主机LUN的ID获得设备逻辑单元DeviceLUN的ID;
根据所述DeviceLUN的ID,所述访问地址和所述数据长度获得逻辑卷LogicalVolume(LV)的ID、LV的逻辑地址和LV的长度;
根据所述LV的ID、所述LV的逻辑地址和所述LV的长度获得数据分层迁移单元Extent的ID、Extent的逻辑地址和Extent的长度;
根据所述Extent的ID、所述Extent的逻辑地址和所述Extent的长度确定数据块组CKG的ID,CKG的逻辑地址和CKG的长度;
根据所述CKG的ID,所述CKG的逻辑地址和所述CKG的长度,在所述存储设备保存的所述CKG与chunk的对应关系中进行查询并计算,获得所述CKG中发生故障的第一Chunk;
在恢复所述第一Chunk中存储的数据之前,将所述第一Chunk的空间属性设置为不能被访问的状态;
在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态,所述第二Chunk所属的磁盘不同于所述第一Chunk所在的数据块组CKG中未发生故障的Chunk所属的磁盘;
恢复所述第一Chunk中存储的数据;
将所述恢复出的数据写入所述第二Chunk中。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;
根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk;
确定所述第一Chunk的空间属性被设置为不能被访问的状态;
恢复所述第一Chunk中存储的数据;
将所述恢复出的数据发送给所述主机。
3.根据权利要求1所述的方法,其特征在于,还包括:
接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;
根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk;
确定所述第一Chunk的空间属性被设置为不能被访问的状态;
将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
4.根据权利要求1-3任一所述的方法,其特征在于,所述方法还包括:将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
5.一种存储设备,包括多个磁盘和控制器,其中每个磁盘的存储空间被划分为多个数据块Chunk,其特征在于,所述控制器包括:
数据管理模块,用于接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求,所述数据访问请求包括访问地址和数据长度;执行所述数据访问请求;接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障;
故障确定模块,用于根据所述主机LUN的ID获得设备逻辑单元DeviceLUN的ID;根据所述DeviceLUN的ID,所述访问地址和所述数据长度获得逻辑卷LogicalVolume(LV)的ID、LV的逻辑地址和LV的长度;根据所述LV的ID、所述LV的逻辑地址和所述LV的长度获得数据分层迁移单元Extent的ID、Extent的逻辑地址和Extent的长度;根据所述Extent的ID、所述Extent的逻辑地址和所述Extent的长度确定数据块组CKG的ID,CKG的逻辑地址和CKG的长度;根据所述CKG的ID,所述CKG的逻辑地址和所述CKG的长度,在所述存储设备保存的所述CKG与chunk的对应关系中进行查询并计算,获得所述CKG中发生故障的第一Chunk;空间管理模块,用于在恢复所述第一Chunk中存储的数据之前,将所述第一Chunk的空间属性设置为不能被访问的状态;
所述数据管理模块,还用于在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态,所述第二Chunk所属的磁盘不同于所述第一Chunk所在的数据块组CKG中未发生故障的Chunk所属的磁盘;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。
6.根据权利要求5所述的存储设备,其特征在于,
所述数据管理模块,还用于接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk,并且所述第一Chunk的空间属性被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据发送给所述主机。
7.根据权利要求5所述的存储设备,其特征在于,
所述数据管理模块,还用于接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk,并且所述第一Chunk的空间属性被设置为不能被访问的状态;将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
8.根据权利要求5所述的存储设备,其特征在于,
所述空间管理模块,还用于将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
9.一种存储系统,其特征在于,包括权利要求5-8任一权利要求所述的存储设备和主机;
所述主机,用于向所述存储设备发送数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求。
10.一种存储设备,其特征在于,包括:处理器、存储器和通信总线;
其中,所述处理器和所述存储器通过所述通信总线进行通信;
所述存储器用于保存程序;
所述处理器用于执行所述程序,以实现:
接收主机发送的数据访问请求,所述数据访问请求包括读数据请求或写数据请求或数据修改请求,所述数据访问请求包括访问地址和数据长度;执行所述数据访问请求;接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码,所述错误码用于指示所述存储设备的磁盘发生局部故障;根据所述主机LUN的ID获得设备逻辑单元DeviceLUN的ID;根据所述DeviceLUN的ID,所述访问地址和所述数据长度获得逻辑卷LogicalVolume(LV)的ID、LV的逻辑地址和LV的长度;根据所述LV的ID、所述LV的逻辑地址和所述LV的长度获得数据分层迁移单元Extent的ID、Extent的逻辑地址和Extent的长度;根据所述Extent的ID、所述Extent的逻辑地址和所述Extent的长度确定数据块组CKG的ID,CKG的逻辑地址和CKG的长度;根据所述CKG的ID,所述CKG的逻辑地址和所述CKG的长度,在所述存储设备保存的所述CKG与chunk的对应关系中进行查询并计算,获得所述CKG中发生故障的第一Chunk;在恢复所述第一Chunk中存储的数据之前,将所述第一Chunk的空间属性设置为不能被访问的状态;在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态,所述第二Chunk所属的磁盘不同于所述第一Chunk所在的数据块组CKG中未发生故障的Chunk所属的磁盘;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。
11.根据权利要求10所述的存储设备,其特征在于,
所述处理器,还用于接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度;根据所述读取地址和数据长度,确定待读取的Chunk是所述第一Chunk;确定所述第一Chunk的空间属性被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据发送给所述主机。
12.根据权利要求10所述的存储设备,其特征在于,
所述处理器,还用于接收主机发送的写数据请求,所述写数据请求包括待写入数据、写入地址和数据长度;根据所述写入地址和所述数据长度,确定待写入的Chunk是所述第一Chunk;确定所述第一Chunk的空间属性被设置为不能被访问的状态;将所述待写入数据写入所述第一Chunk所在的数据块组CKG中未发生故障的Chunk中。
13.根据权利要求10-12任一所述的存储设备,其特征在于,所述处理器,还用于将所述CKG与所述第一Chunk的对应关系修改为所述CKG与第二Chunk的对应关系。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/076377 WO2014190501A1 (zh) | 2013-05-29 | 2013-05-29 | 数据恢复方法、存储设备和存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103534688A CN103534688A (zh) | 2014-01-22 |
CN103534688B true CN103534688B (zh) | 2016-03-09 |
Family
ID=49935393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380000749.XA Active CN103534688B (zh) | 2013-05-29 | 2013-05-29 | 数据恢复方法、存储设备和存储系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103534688B (zh) |
WO (1) | WO2014190501A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9575853B2 (en) * | 2014-12-12 | 2017-02-21 | Intel Corporation | Accelerated data recovery in a storage system |
CN105159790B (zh) * | 2015-09-30 | 2018-03-16 | 成都华为技术有限公司 | 一种数据抢救方法及文件服务器 |
CN107491263B (zh) * | 2016-06-12 | 2022-07-22 | 北京忆恒创源科技股份有限公司 | 一种基于存储对象的数据重构方法 |
CN108228084B (zh) * | 2016-12-21 | 2020-10-13 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法和设备 |
CN108268336B (zh) * | 2016-12-30 | 2023-06-23 | 北京忆恒创源科技股份有限公司 | 保证元数据一致性的方法及装置 |
CN106933707B (zh) * | 2017-03-15 | 2020-11-06 | 李经纬 | 基于raid技术的数据存储设备数据恢复方法及系统 |
CN107193871B (zh) * | 2017-04-12 | 2018-10-16 | 腾讯科技(深圳)有限公司 | 数据库修复方法及装置 |
CN107395415A (zh) * | 2017-07-20 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种数据处理方法和系统 |
CN110879761A (zh) | 2018-09-05 | 2020-03-13 | 华为技术有限公司 | 硬盘故障处理方法、阵列控制器及硬盘 |
CN109542342B (zh) * | 2018-11-09 | 2022-04-26 | 锐捷网络股份有限公司 | 元数据管理与数据重构方法、设备及存储介质 |
CN112181718A (zh) * | 2020-09-07 | 2021-01-05 | 苏州浪潮智能科技有限公司 | 一种数据备份恢复方法、装置及计算机可读存储介质 |
CN114356211B (zh) * | 2021-11-19 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 一种存储空间的处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383406B2 (en) * | 2004-11-19 | 2008-06-03 | International Business Machines Corporation | Application transparent autonomic availability on a storage area network aware file system |
CN101055511B (zh) * | 2007-05-16 | 2010-05-26 | 华为技术有限公司 | 一种存储阵列系统及其数据操作方法 |
CN101788935A (zh) * | 2009-01-23 | 2010-07-28 | 英业达集团(天津)电子技术有限公司 | 冗余磁盘数组系统的坏块处理方法 |
KR101694984B1 (ko) * | 2010-12-08 | 2017-01-11 | 한국전자통신연구원 | 비대칭 클러스터링 파일시스템에서의 패리티 산출 방법 |
-
2013
- 2013-05-29 CN CN201380000749.XA patent/CN103534688B/zh active Active
- 2013-05-29 WO PCT/CN2013/076377 patent/WO2014190501A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609420A (zh) * | 2009-07-17 | 2009-12-23 | 杭州华三通信技术有限公司 | 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器 |
CN101866307A (zh) * | 2010-06-24 | 2010-10-20 | 杭州华三通信技术有限公司 | 一种基于镜像技术的数据存储方法及装置 |
CN102033716A (zh) * | 2010-12-01 | 2011-04-27 | 北京同有飞骥科技股份有限公司 | 一种双磁盘容错的节能型磁盘阵列的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103534688A (zh) | 2014-01-22 |
WO2014190501A1 (zh) | 2014-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
CN103064765B (zh) | 数据恢复方法、装置及集群存储系统 | |
US10365983B1 (en) | Repairing raid systems at per-stripe granularity | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
KR101758544B1 (ko) | 비휘발성 메모리 시스템에서의 동기 미러링 | |
US6647460B2 (en) | Storage device with I/O counter for partial data reallocation | |
US9026845B2 (en) | System and method for failure protection in a storage array | |
CN103608784B (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
CN101567211A (zh) | 一种提高磁盘可用性的方法和磁盘阵列控制器 | |
CN103793182A (zh) | 可扩展存储保护 | |
CN104461390A (zh) | 将数据写入叠瓦状磁记录smr硬盘的方法及装置 | |
US10365845B1 (en) | Mapped raid restripe for improved drive utilization | |
US11379326B2 (en) | Data access method, apparatus and computer program product | |
CN103530206B (zh) | 一种数据恢复的方法和设备 | |
CN110737394A (zh) | 管理缓存的方法、装置和计算机程序产品 | |
CN104216664A (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
CN117193672B (zh) | 存储设备的数据处理方法及装置、存储介质及电子设备 | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
US10915405B2 (en) | Methods for handling storage element failures to reduce storage device failure rates and devices thereof | |
US9104598B2 (en) | Systems and methods for medium error reporting and handling in storage devices | |
US20090138656A1 (en) | Method of skipping synchronization process for initialization of RAID1 device | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
US8140800B2 (en) | Storage apparatus | |
CN108614746A (zh) | 一种数据处理方法及其系统、服务器 | |
CN112328182A (zh) | 一种raid数据管理方法、装置和计算机可读存储介质 |
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 |