WO2014190501A1 - 数据恢复方法、存储设备和存储系统 - Google Patents

数据恢复方法、存储设备和存储系统 Download PDF

Info

Publication number
WO2014190501A1
WO2014190501A1 PCT/CN2013/076377 CN2013076377W WO2014190501A1 WO 2014190501 A1 WO2014190501 A1 WO 2014190501A1 CN 2013076377 W CN2013076377 W CN 2013076377W WO 2014190501 A1 WO2014190501 A1 WO 2014190501A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
chunk
storage device
ckg
request
Prior art date
Application number
PCT/CN2013/076377
Other languages
English (en)
French (fr)
Inventor
雷延钊
Original Assignee
华为技术有限公司
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 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2013/076377 priority Critical patent/WO2014190501A1/zh
Priority to CN201380000749.XA priority patent/CN103534688B/zh
Publication of WO2014190501A1 publication Critical patent/WO2014190501A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2094Redundant storage or storage space

Abstract

本发明实施例提供了一种数据恢复方法,包括:确定所述存储设备的磁盘中发生故障的第一Chunk;将所述第一Chunk的空间属性设置为不能被访问的状态;在所述存储设备的存储空间中查找空闲的第二Chunk,所述第二Chunk的空间属性没有被设置为不能被访问的状态;恢复所述第一Chunk中存储的数据;将所述恢复出的数据写入所述第二Chunk中。可以在存储设备发生局部故障时,保证数据的可靠性。

Description

数据恢复方法、 存储设备和存储系统
技术领域 本发明涉及存储技术, 尤其涉及一种数据恢复方法、 存储设备和存储系 统。 背景技术 独立磁盘冗余数组 ( Redundant Array of Independent Disks , RAID ) , 又 称廉价磁盘冗余数组(Redundant Array of Inexpensive Disks , RAID ) , 简称 硬盘阵列。 其基本思想就是把多个相对便宜的硬盘组合起来, 成为一个硬盘 阵列组, 使性能达到甚至超过一个价格 贵、 容量巨大的硬盘。 根据选择的 版本不同, RAID比单颗硬盘有以下方面的好处: 增强数据集成度, 增强容错 功能, 增加处理量或容量。 另外, 磁盘阵列对于电脑来说, 看起来就像一个 单独的硬盘或逻辑存储单元。传统的 RAID技术是在硬盘间实现的, 以 RAID 5为例, 要实现 RAID 5技术至少需要三颗硬盘, 将数据和相对应的奇偶校验 信息存储到组成 RAID 5的各个磁盘上,并且奇偶校验信息和相对应的数据分 别存储于不同的磁盘上。 当 RAID 5的一个磁盘数据发生损坏后,可以利用剩 下的数据和相应的奇偶校验信息去恢复被损坏的数据。
在实现块虚拟化技术以后, 可以将硬盘划分为细粒度的数据块(Chunk, 以下简称 CK ),然后在多个 CK之间实现 RAID,而由多个 CK按照指定 RAID 类型组成的逻辑空间就是一个数据块组(Chunk Group, 以下简称 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所示, 该存储 系统包括主机、 连接设备和存储设备。
主机可以包括当前技术已知的任何计算设备, 如服务器、 台式计算机等 等。 在主机内部, 安装有操作系统以及其他应用程序。
连接设备可以包括当前技术已知的存储设备和主机之间的任何接口, 如 光纤交换机, 或者其他现有的交换机。
存储设备可以包括当前技术已知的存储设备, 如独立磁盘冗余阵列 ( Redundant Arrays of Independent Disks , RAID ) 、 磁盘 I ( Just a Bunch Of Disks, JBOD ) 、 直接存取存储器( Direct Access Storage Device, DASD ) 的 一个或多个互连的磁盘驱动器, 诸如磁带库、 一个或多个存储单元的磁带存 储设备。
所述存储设备包含控制器和多个磁盘, 每个磁盘被划分为细粒度的尺寸 相同的数据块(Chunk, 以下简称 CK ) , 然后在多个 CK之间实现 RAID, 而由多个 CK按照指定 RAID类型组成的逻辑空间就是一个数据块组( Chunk Group, 以下简称 CKG ) 。 一个 CKG所包含的各个 CK必须属于不同磁盘。
控制器相当于所述存储设备的处理器,安装有操作系统和其他软件程序, 不同的软件程序可以视作一个处理模块, 具有不同的功能。 例如, 数据管理 模块用于处理 10请求, 或者对磁盘中的数据进行其他处理; 空间管理模块用 于修改存储设备中保存的元数据等等。
如图 2所示, 本发明实施例提供的一种数据恢复方法, 本方法的执行 主体可以是存储设备的控制器。
S202: 确定所述存储设备的磁盘中发生故障的第一 CK;
当所述存储设备执行数据访问请求收到指示所述存储设备的磁盘发生局 部故障的错误码时, 可以通过数据访问请求中的访问地址和数据长度
( Length ) , 在所述存储设备保存的元数据中进行查询并经过计算, 确定发 生故障的第一 CK。 其中, 访问地址包括逻辑单元号( Logic Unit Number, 以 下简称为 LUN )的标识(例如, ID号)以及逻辑块地址( Logic Block Address, 以下简称为 LB A ) 。 这里的访问 LUN ID是指主机 LU 的 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类型可以是 RAID 5或者 RAID 6, 当然并不限 于此。 以 RAID 5为例, 要实现 RAID 5技术至少需要三个 CK, 将数据和相 对应的奇偶校验信息存储到组成 RAID 5的各个 CK上,并且奇偶校验信息和 相对应的数据分别存储于不同的磁盘上。当 RAID 5的一个 CK存储的数据发 生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 因此, 可以利用该 CKG中未发生故障的 CK中存储数据恢复出所述第一 CK 中存储的数据。 如果是采用 RAID 6技术则至少需要四个 CK。
S206: 将所述恢复出的数据写入所述第二 CK中。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一 CK, 将所述第一 CK的空间属性设置为不可访问的状态, 因此所述第一 CK将不 再被继续访问, 损坏的区域也不会扩大, 当查找到空闲的第二 CK, 并且第二 CK的空间属性没有被设置为不可访问的状态时,可以将第一 CK中存储的数 据恢复到第二 CK中, 保证了数据可靠性。 另外, 由于第一 CK损坏的区域 不会扩大, 只需要将第一 CK中存储的数据恢复到第二 CK, 提高了数据恢复 的效率。
下面将结合图 3A对上述实施例进行详细说明。
S301 : 接收主机发送的数据访问请求。
这里的数据访问请求可以是写数据请求, 也可以是读数据请求, 也可以 是数据修改请求, 当所述数据访问请求是写数据请求或数据修改请求时, 该 请求包括待写入数据、 访问地址和数据长度; 当所述数据访问请求是读数据 请求时, 该请求包括访问地址和数据长度。 这里的访问地址是指 LU ID和 LBA。
S302: 执行所述数据访问请求。
存储设备接收到主机发送的数据访问请求之后,将执行该数据访问请求, 具体的, 当所述数据访问请求是写数据请求或数据修改请求时, 根据访问地 址和数据长度将待写入数据写入 LBA对应的存储空间中; 当所述数据访问请 求是读数据请求时,根据访问地址和数据长度从 LBA对应的存储空间中读取 数据。
S303: 接收指示所述存储设备的磁盘发生局部故障的错误码。
所述存储设备包含控制器和多个磁盘, 局部故障是指存储设备中的某个 磁盘因为碰撞、 磁头摩损等原因导致磁盘盘面出现较 d、面积的物理性损坏, 譬如划伤、 掉磁等, 导致产生该受损区域所包含的数据不可修复。
具体的, 判断所述存储设备中的磁盘是否发生局部故障, 可以通过执行 数据访问请求时是否接收到指示局部故障的错误码来确定。 当控制器发送数 据访问请求给磁盘时, 如果访问成功, 磁盘将发送给控制器访问成功的响应, 如果访问失败, 并且访问失败是由于磁盘发生局部故障造成的, 将发送指示 磁盘发生局部故障的错误码给控制器。 S304: 根据所述访问地址和数据长度, 在所述存储设备中保存的所述访 问地址和 CKG的对应关系中进行查询,并根据所述访问地址和数据长度进行 计算, 获得发生故障的 CKG的信息。
具体的查询过程请参考图 4:
主机发送给存储设备的数据访问请求中包含 LUN ID,这里的 LUN ID是 指主机 LU 的 ID, 主机 LU 是存储设备映射给主机的一段逻辑空间, 例如 主机的 C盘或 D盘, 一旦 LUN ID确定, 那么主机 LU 也就确定了。
通常情况下, 主机 LU 和设备逻辑单元( Device LUN )是——对应的关 系, 因此一旦主机 LU 确定, 也就唯一确定了 Device LUN。
而 Device LU 是由多个逻辑卷( Logic Volume, LV )组成(图 4中以 3 个 LV为例) , LV是存储设备上位于 Device LUN下层的一段逻辑空间。 在 本发明实施例中, 可以根据所述访问地址和 Length在 Device LU 与 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可知,根据 CKG ID、 CKG的 LB A和 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的对应关系可以如下表所示:
CKG 第一 CK
描述 描述
第二 CK 描述
第三 CK
描述
S309:根据所述 CKG中未发生故障的 CK中存储的数据和 RAID类型信 息, 计算获得所述第一 CK中存储的数据。
具体的计算方式与步骤 S205类似, 这里不再赘述。
S310: 将恢复出的数据写入所述第二 CK中。
S311:将所述元数据中所述 CKG与所述第一 CK的对应关系修改为所述 CKG与所述第二 CK的对应关系。
可以理解的是, 所述 CKG与 CK的对应关系中包含 CKG与其所属的各 个 CK之间的对应关系, 将所述 CKG与所述第一 CK的对应关系修改为所述 CKG与所述第二 CK的对应关系之后, 主机发送给存储设备的 10请求将不 会再访问第一 CK, 而是访问第二 CK。 此时, 若接收到数据访问请求, 在执 行所述数据访问请求时, 也需检查所述第二 CK的空间是否被设置为不能被 访问的状态。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一 CK, 将所述第一 CK的空间属性设置为不可访问的状态, 因此所述第一 CK将不 再被继续访问, 损坏的区域也不会扩大, 当查找到空闲的第二 CK时, 可以 将第一 CK中存储的数据恢复到第二 CK中, 保证了数据可靠性, 另外, 由 于第一 CK损坏的区域不会扩大, 只需要将第一 CK中存储的数据恢复到第 二 CK, 提高了数据恢复的效率。
请参考图 3B, 图 3B为本发明一种读数据的方法实施例。
所述读数据的方法包括:
步骤 S320: 接收主机发送的读数据请求, 所述读数据请求包括读取地址 和数据长度。 这里的读取地址是指 LU ID和 LBA, 数据长度是指待读取的数据的长 度。
步骤 S321 : 根据所述读取地址和数据长度, 确定待读取的 CK是所述第 一 CK。
该步骤与上述实施例步骤 304、 步骤 305的方法类似, 这里不再赘述。 步骤 S322: 确定所述第一 CK的空间属性被设置为不能被访问的状态。 在本发明实施例中, 在将第一 CK的空间属性设置为不能被访问的状态 之后, 如果接收读数据请求, 则需要确定第一 CK的空间属性是否被设置为 不能被访问的状态, 如果是, 则不能直接读取第一 CK中的数据。
步骤 S323: 恢复所述第一 CK中存储的数据。
该步骤与上述实施例步骤 205的方法类似, 这里不再赘述。
步骤 S324: 将所述恢复出的数据发送给所述主机。
请参考图 3C, 图 3C为本发明一种写数据的方法实施例。
所述写数据的方法包括:
步骤 S330: 接收主机发送的写数据请求, 所述写数据请求包括待写入数 据、 写入地址和数据长度。
这里的写入地址是指 LUN ID和 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。其中,访问地址包括逻辑单元号( Logic Unit Number, 以下简称为 LUN ) 的标识(例如, ID号) 以及逻辑块地址(Logic Block Address,以下简称为 LB A )。这里的访问 LUN ID是指主机 LU 的 ID。 元数据为描述数据的数据, 主要是描述数据属性的信息, 用来支持如指示存 储位置、 历史数据、 资源查找、 文件纪录等功能。 元数据可以保存在所述存 的磁盘上。
所述空间管理模块 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类型可以是 RAID 5或者 RAID 6, 当然并不限 于此。 以 RAID 5为例, 要实现 RAID 5技术至少需要三个 CK, 将数据和相 对应的奇偶校验信息存储到组成 RAID 5的各个 CK上,并且奇偶校验信息和 相对应的数据分别存储于不同的磁盘上。当 RAID 5的一个 CK存储的数据发 生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。 因此, 可以利用该 CKG中未发生故障的 CK中存储数据恢复出所述第一 CK 中存储的数据, 并存储到第二 CK中。如果是采用 RAID 6技术则至少需要四 个 CK。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一 CK, 将所述第一 CK的空间属性设置为不可访问的状态, 因此所述第一 CK将不 再被继续访问, 损坏的区域也不会扩大, 当查找到空闲的第二 CK, 并且第二 CK的空间属性没有被设置为不可访问的状态时,可以将第一 CK中存储的数 据恢复到第二 CK中, 保证了数据可靠性。 另外, 由于第一 CK损坏的区域 不会扩大, 只需要将第一 CK中存储的数据恢复到第二 CK, 提高了数据恢复 的效率。
在图 5所示的存储设备的实施例中, 所述数据管理模块 501, 还用于接 收主机发送的数据访问请求; 执行所述数据访问请求; 以及接收所述数据访 问请求执行错误的响应请求, 所述响应请求包括指示所述存储设备的磁盘发 生局部故障的错误码。
这里的数据访问请求可以是写数据请求, 也可以是读数据请求, 也可以 是数据修改请求, 当所述数据访问请求是写数据请求或数据修改请求时, 该 请求包括待写入数据、 访问地址和数据长度; 当所述数据访问请求是读数据 请求时, 该请求包括访问地址和数据长度。 这里的访问地址是指 LU ID和 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的 对应关系之后, 主机发送给存储设备的 10请求将不会再访问第一 CK, 而是 访问第二 CK。
本发明实施例,当存储设备发生局部故障时,确定出发生故障的第一 CK, 将所述第一 CK的空间属性设置为不可访问的状态, 因此所述第一 CK将不 再被继续访问, 损坏的区域也不会扩大, 当查找到空闲的第二 CK时, 可以 将第一 CK中存储的数据恢复到第二 CK中, 保证了数据可靠性, 另外, 由 于第一 CK损坏的区域不会扩大, 只需要将第一 CK中存储的数据恢复到第 二 CK, 提高了数据恢复的效率。
在本发明另一个实施例中, 在所述空间管理模块 503将第一 CK的空间 属性设置为不能被访问的状态之后, 所述数据管理模块 501还用于, 接收主 机发送的读数据请求, 所述读数据请求包括读取地址和数据长度; 根据所述 读取地址和数据长度, 确定待读取的 CK是所述第一 CK, 并且所述第一 CK 的空间属性被设置为不能被访问的状态; 恢复所述第一 CK中存储的数据; 将所述恢复出的数据发送给所述主机。
这里的读取地址是指 LU ID和 LBA, 数据长度是指待读取的数据的长 度。
在本发明实施例中, 在将第一 CK的空间属性设置为不能被访问的状态 之后, 如果接收读数据请求, 则需要确定第一 CK的空间属性是否被设置为 不能被访问的状态, 如果是, 则不能直接读取第一 CK中的数据。
确定待读取的 CK是所述第一 CK的步骤,以及恢复所述第一 CK中存储 的数据的步骤, 与上面实施例类似, 这里不再赘述。
在本发明再一个实施例中, 在所述空间管理模块 503将第一 CK的空间 属性设置为不能被访问的状态之后, 所述数据管理模块 501还用于, 接收主 机发送的写数据请求, 所述写数据请求包括待写入数据、 写入地址和数据长 度; 根据所述写入地址和所述数据长度, 确定待写入的 CK是所述第一 CK, 并且所述第一 CK的空间属性被设置为不能被访问的状态; 将所述待写入数 据写入所述第一 CK所在的数据块组 CKG中未发生故障的 CK中。
这里的写入地址是指 LUN ID和 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, 通信接口(Communications Interface)720 , 存者器 (memory)730, 通信总线 740。
处理器 710, 通信接口 720, 存储器 730通过通信总线 740完成相互间的 通信。
通信接口 720, 用于与网元通信, 比如与主机或者交换机等通信。
处理器 710, 用于执行程序 732。
具体地, 程序 732可以包括程序代码, 所述程序代码包括计算机操作指 令。
处理器 710 可能是一个中央处理器 CPU, 或者是特定集成电路 ASIC ( Application Specific Integrated Circuit ),或者是被配置成实施本发明实施例 的一个或多个集成电路。 存储器 730,用于存放程序 732。存储器 730可能包含高速 RAM存储器, 也可能还包括非易失性存储器( non- volatile memory ), 例如至少一个磁盘存 储器。
程序 732具体可以包括:
故障确定模块 502, 用于确定所述存储设备的磁盘中发生故障的第一
Chunk:。
空间管理模块 503, 用于将所述第一 Chunk的空间属性设置为不能被访 问的状态。
数据管理模块 501, 用于在所述存储设备的存储空间中查找空闲的第二 Chunk, 所述第二 Chunk的空间属性没有被设置为不能被访问的状态; 恢复 所述第一 Chunk中存储的数据, 并存储到所述第二 Chunk中。
程序 732中各模块的具体实现可以参见图 5所示实施例中的相应模块, 在此不赘述。
所属领域的技术人员可以清楚地了解到, 为描述的方便和简洁, 上述描 述的设备和模块的具体工作过程, 可以参考前述方法实施例中的对应过程描 述, 在此不再赘述。
在本申请所提供的几个实施例中, 应该理解到, 所揭露的设备和方法, 可以通过其它的方式实现。 例如, 以上所描述的装置实施例仅仅是示意性的, 例如, 所述模块的划分, 仅仅为一种逻辑功能划分, 实际实现时可以有另外 的划分方式, 例如多个模块或组件可以结合或者可以集成到另一个设备中, 或一些特征可以忽略, 或不执行。 另一点, 所显示或讨论的相互之间的耦合 或直接耦合或通信连接可以是通过一些通信接口, 装置或模块的间接耦合或 通信连接, 可以是电性, 机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的, 作 为模块显示的部件可以是或者也可以不是物理子模块,即可以位于一个地方, 或者也可以分布到多个网络子模块上。 可以根据实际的需要选择其中的部分 或者全部, 模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中, 也可以是各个模块单独物理存在, 也可以两个或两个以上模块集成在一个模 块中。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可 以通过硬件来完成, 也可以通过程序来指令相关的硬件完成, 所述的程序 可以存储于一种计算机可读存储介质中, 上述提到的存储介质可以是只读 存储器, 磁盘或光盘等。
最后应说明的是: 以上各实施例仅用以说明本发明的技术方案, 而非对 其限制; 尽管参照前述各实施例对本发明进行了详细的说明, 本领域的普通 技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改, 或者对其中部分或者全部技术特征进行等同替换; 而这些修改或者替换, 并 不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims

权 利 要 求 书
1、一种数据恢复方法,应用于存储设备中,所述存储设备包含多个磁盘, 每个磁盘的存储空间被划分为多个数据块 Chunk, 其特征在于, 所述方法包 括:
确定所述存储设备的磁盘中发生故障的第一 Chunk;
将所述第一 Chunk的空间属性设置为不能被访问的状态;
在所述存储设备的存储空间中查找空闲的第二 Chunk, 所述第二 Chunk 的空间属性没有被设置为不能被访问的状态;
恢复所述第一 Chunk中存储的数据;
将所述恢复出的数据写入所述第二 Chunk中。
2、 根据权利要求 1所述的方法, 其特征在于, 还包括:
接收主机发送的读数据请求,所述读数据请求包括读取地址和数据长度; 根据所述读取地址和数据长度,确定待读取的 Chunk是所述第一 Chunk; 确定所述第一 Chunk的空间属性被设置为不能被访问的状态;
恢复所述第一 Chunk中存储的数据;
将所述恢复出的数据发送给所述主机。
3、 根据权利要求 1所述的方法, 其特征在于, 还包括:
接收主机发送的写数据请求, 所述写数据请求包括待写入数据、 写入地 址和数据长度;
根据所述写入地址和所述数据长度, 确定待写入的 Chunk是所述第一
Chunk;
确定所述第一 Chunk的空间属性被设置为不能被访问的状态;
将所述待写入数据写入所述第一 Chunk所在的数据块组 CKG中未发生 故障的 Chunk中。
4、 根据权利要求 1所述的方法, 其特征在于, 在确定所述存储设备的磁 盘中发生故障的第一 Chunk之前, 还包括: 接收主机发送的数据访问请求, 所述数据访问请求包括读数据请求或写 数据请求或数据修改请求;
执行所述数据访问请求;
接收所述数据访问请求执行错误的响应请求,所述响应请求包括错误码, 所述错误码用于指示所述存储设备的磁盘发生局部故障。
5、 根据权利要求 4所述的方法, 其特征在于, 所述数据访问请求包括访 问地址和数据长度;
所述确定所述存储设备的磁盘中发生故障的第一 Chunk包括:
根据所述访问地址和数据长度, 在所述存储设备保存的所述访问地址与 数据块组 CKG的对应关系中进行查询和计算,获得发生故障的 CKG的信息; 根据所述 CKG的信息, 在所述存储设备保存的所述 CKG与 chunk的对 应关系中进行查询并计算, 获得所述 CKG中发生故障的第一 Chunk。
6、 根据权利要求 1-5任一所述的方法, 其特征在于, 所述方法还包括: 将所述 CKG与所述第一 Chunk的对应关系修改为所述 CKG与第二 Chunk的 对应关系。
7、 一种存储设备, 包括多个磁盘和控制器, 其中每个磁盘的存储空间被 划分为多个数据块 Chunk, 其特征在于, 所述控制器包括:
故障确定模块, 用于确定所述存储设备的磁盘中发生故障的第一 Chunk; 空间管理模块, 用于将所述第一 Chunk的空间属性设置为不能被访问的 状态;
数据管理模块, 用于在所述存储设备的存储空间中查找空闲的第二 Chunk, 所述第二 Chunk的空间属性没有被设置为不能被访问的状态; 恢复 所述第一 Chunk中存储的数据;将所述恢复出的数据写入所述第二 Chunk中。
8、 根据权利要求 7所述的存储设备, 其特征在于,
所述数据管理模块, 还用于接收主机发送的读数据请求, 所述读数据请 求包括读取地址和数据长度; 根据所述读取地址和数据长度, 确定待读取的 Chunk是所述第一 Chunk, 并且所述第一 Chunk的空间属性被设置为不能被 访问的状态; 恢复所述第一 Chunk中存储的数据; 将所述恢复出的数据发送 给所述主机。
9、 根据权利要求 7所述的存储设备, 其特征在于,
所述数据管理模块, 还用于接收主机发送的写数据请求, 所述写数据请 求包括待写入数据、 写入地址和数据长度; 根据所述写入地址和所述数据长 度, 确定待写入的 Chunk是所述第一 Chunk, 并且所述第一 Chunk的空间属 性被设置为不能被访问的状态; 将所述待写入数据写入所述第一 Chunk所在 的数据块组 CKG中未发生故障的 Chunk中。
10、根据权利要求 7所述的存储设备, 其特征在于, 所述数据管理模块, 还用于接收主机发送的数据访问请求, 所述数据访问请求包括读数据请求或 写数据请求; 执行所述数据访问请求; 接收所述数据访问请求执行错误的响 应请求, 所述响应请求包括错误码, 所述错误码用于指示所述存储设备的磁 盘发生局部故障。
11、 根据权利要求 10所述的存储设备, 其特征在于, 所述数据访问请求 包括访问地址和数据长度;
所述故障确定模块具体用于, 根据所述访问地址和数据长度, 在所述存 储设备保存的所述访问地址与数据块组 CKG的对应关系中进行查询,并根据 所述访问地址和所述数据长度进行计算,获得发生故障的 CKG的信息,所述 CKG包含至少三个 Chunk, 每个 Chunk属于不同的磁盘; 根据所述 CKG的 信息,在所述存储设备中保存的所述 CKG与 chunk的对应关系中进行查询并 计算, 获得所述 CKG中发生故障的第一 Chunk。
12、 根据权利要求 11所述的存储设备, 其特征在于,
所述空间管理模块, 还用于将所述 CKG与所述第一 Chunk的对应关系 修改为所述 CKG与第二 Chunk的对应关系。
13、 一种存储系统, 其特征在于, 包括权利要求 7-12任一权利要求所述 的存储设备和主机;
所述主机, 用于向所述存储设备发送数据访问请求, 所述数据访问请求 包括读数据请求或写数据请求或数据修改请求。
14、 一种存储设备, 其特征在于, 包括: 处理器、 存储器和通信总线; 其中, 所述处理器和所述存储器通过所述通信总线进行通信;
所述存储器用于保存程序;
所述处理器用于执行所述程序, 以实现:
确定所述存储设备的磁盘中发生故障的第一 Chunk; 将所述第一 Chunk 的空间属性设置为不能被访问的状态; 在所述存储设备的存储空间中查找空 闲的第二 Chunk, 所述第二 Chunk的空间属性没有被设置为不能被访问的状 态; 恢复所述第一 Chunk中存储的数据; 将所述恢复出的数据写入所述第二 Chunk中。
15、 根据权利要求 14所述的存储设备, 其特征在于,
所述处理器, 还用于接收主机发送的读数据请求, 所述读数据请求包括 读取地址和数据长度; 根据所述读取地址和数据长度, 确定待读取的 Chunk 是所述第一 Chunk; 确定所述第一 Chunk的空间属性被设置为不能被访问的 状态; 恢复所述第一 Chunk中存储的数据; 将所述恢复出的数据发送给所述 主机。
16、 根据权利要求 14所述的存储设备, 其特征在于,
所述处理器, 还用于接收主机发送的写数据请求, 所述写数据请求包括 待写入数据、 写入地址和数据长度; 根据所述写入地址和所述数据长度, 确 定待写入的 Chunk是所述第一 Chunk; 确定所述第一 Chunk的空间属性被设 置为不能被访问的状态; 将所述待写入数据写入所述第一 Chunk所在的数据 块组 CKG中未发生故障的 Chunk中。
17、 根据权利要求 14所述的存储设备, 其特征在于,
所述处理器, 还用于接收主机发送的数据访问请求, 所述数据访问请求 包括读数据请求或写数据请求或数据修改请求; 执行所述数据访问请求; 接 收所述数据访问请求执行错误的响应请求, 所述响应请求包括错误码, 所述 错误码用于指示所述存储设备的磁盘发生局部故障。
18、 根据权利要求 17所述的存储设备, 其特征在于, 所述数据访问请求 包括访问地址和数据长度;
所述处理器, 具体用于根据所述访问地址和数据长度, 在所述存储设备 保存的所述访问地址与数据块组 CKG的对应关系中进行查询和计算,获得发 生故障的 CKG的信息; 根据所述 CKG的信息, 在所述存储设备中保存的所 述 CKG与 chunk的对应关系中进行查询并计算, 获得所述 CKG中发生故障 的第一 Chunk。
19、 根据权利要求 14-18任一所述的存储设备, 其特征在于,
所述处理器, 还用于将所述 CKG与所述第一 Chunk的对应关系修改为 所述 CKG与第二 Chunk的对应关系。
PCT/CN2013/076377 2013-05-29 2013-05-29 数据恢复方法、存储设备和存储系统 WO2014190501A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2013/076377 WO2014190501A1 (zh) 2013-05-29 2013-05-29 数据恢复方法、存储设备和存储系统
CN201380000749.XA CN103534688B (zh) 2013-05-29 2013-05-29 数据恢复方法、存储设备和存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/076377 WO2014190501A1 (zh) 2013-05-29 2013-05-29 数据恢复方法、存储设备和存储系统

Publications (1)

Publication Number Publication Date
WO2014190501A1 true WO2014190501A1 (zh) 2014-12-04

Family

ID=49935393

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2013/076377 WO2014190501A1 (zh) 2013-05-29 2013-05-29 数据恢复方法、存储设备和存储系统

Country Status (2)

Country Link
CN (1) CN103534688B (zh)
WO (1) WO2014190501A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210028268A (ko) * 2018-09-05 2021-03-11 후아웨이 테크놀러지 컴퍼니 리미티드 하드 디스크 고장 처리 방법, 어레이 컨트롤러, 및 하드 디스크

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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 郑州云海信息技术有限公司 一种数据处理方法和系统
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776635A (zh) * 2004-11-19 2006-05-24 国际商业机器公司 对应用程序透明的自治可用性
CN101055511A (zh) * 2007-05-16 2007-10-17 华为技术有限公司 一种存储阵列系统及其数据操作方法
CN101788935A (zh) * 2009-01-23 2010-07-28 英业达集团(天津)电子技术有限公司 冗余磁盘数组系统的坏块处理方法
US20120151255A1 (en) * 2010-12-08 2012-06-14 Electronics And Telecommunications Research Institute Method of calculating parity in asymetric clustering file system

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609420A (zh) * 2009-07-17 2009-12-23 杭州华三通信技术有限公司 实现磁盘冗余阵列重建的方法和磁盘冗余阵列及其控制器
CN101866307A (zh) * 2010-06-24 2010-10-20 杭州华三通信技术有限公司 一种基于镜像技术的数据存储方法及装置
CN102033716B (zh) * 2010-12-01 2012-08-22 北京同有飞骥科技股份有限公司 一种双磁盘容错的节能型磁盘阵列的构建方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1776635A (zh) * 2004-11-19 2006-05-24 国际商业机器公司 对应用程序透明的自治可用性
CN101055511A (zh) * 2007-05-16 2007-10-17 华为技术有限公司 一种存储阵列系统及其数据操作方法
CN101788935A (zh) * 2009-01-23 2010-07-28 英业达集团(天津)电子技术有限公司 冗余磁盘数组系统的坏块处理方法
US20120151255A1 (en) * 2010-12-08 2012-06-14 Electronics And Telecommunications Research Institute Method of calculating parity in asymetric clustering file system

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210028268A (ko) * 2018-09-05 2021-03-11 후아웨이 테크놀러지 컴퍼니 리미티드 하드 디스크 고장 처리 방법, 어레이 컨트롤러, 및 하드 디스크
EP3822792A4 (en) * 2018-09-05 2021-10-13 Huawei Technologies Co., Ltd. METHOD FOR PROCESSING HARD DISK ERRORS, ARRAY CONTROL AND HARD DISK
EP3920031A1 (en) * 2018-09-05 2021-12-08 Huawei Technologies Co., Ltd. Hard disk fault handling method, array controller, and hard disk
US11264055B2 (en) 2018-09-05 2022-03-01 Huawei Technologies Co., Ltd. Hard disk fault handling method, array controller, and hard disk
US11322179B2 (en) 2018-09-05 2022-05-03 Huawei Technologies Co., Ltd. Hard disk fault handling method, array controller, and hard disk
US11501800B2 (en) 2018-09-05 2022-11-15 Huawei Technologies Co., Ltd. Hard disk fault handling method, array controller, and hard disk
KR102632961B1 (ko) * 2018-09-05 2024-02-01 후아웨이 테크놀러지 컴퍼니 리미티드 하드 디스크 고장 처리 방법, 어레이 컨트롤러, 및 하드 디스크

Also Published As

Publication number Publication date
CN103534688A (zh) 2014-01-22
CN103534688B (zh) 2016-03-09

Similar Documents

Publication Publication Date Title
WO2014190501A1 (zh) 数据恢复方法、存储设备和存储系统
CN108089951B (zh) 存储系统中的加速数据恢复
US7975168B2 (en) Storage system executing parallel correction write
JP6228347B2 (ja) ストレージ装置及び記憶デバイス
RU2596585C2 (ru) Способ отправки данных, способ приема данных и устройство хранения данных
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
US10467044B2 (en) Transaction processing method and apparatus, and computer system
US20120059978A1 (en) Storage array controller for flash-based storage devices
CN108064374B (zh) 一种数据访问方法、装置和系统
US8438332B2 (en) Apparatus and method to maintain write operation atomicity where a data transfer operation crosses a data storage medium track boundary
JP4939180B2 (ja) 接続された装置を構成するための初期設定コードの実行
US8595397B2 (en) Storage array assist architecture
WO2012089152A1 (zh) 一种文件系统内实现独立磁盘冗余阵列保护的方法及装置
US10095585B1 (en) Rebuilding data on flash memory in response to a storage device failure regardless of the type of storage device that fails
WO2016023230A1 (zh) 数据迁移的方法、控制器和数据迁移装置
WO2018076633A1 (zh) 一种远程数据复制方法、存储设备及存储系统
WO2015035814A1 (zh) 一种写数据方法及存储设备
US10915405B2 (en) Methods for handling storage element failures to reduce storage device failure rates and devices thereof
WO2014094259A1 (zh) 存储空间对象的处理方法及设备
US20180307427A1 (en) Storage control apparatus and storage control method
US20200133808A1 (en) Reducing the size of fault domains
CN113342258B (zh) 用以进行全快闪存储器阵列伺服器的数据存取管理的方法与设备
US10740189B2 (en) Distributed storage system
WO2014082216A1 (zh) 数据恢复方法、数据恢复装置、存储器及存储系统
US10783036B2 (en) Storage system stripe grouping using multiple logical units

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 201380000749.X

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13885601

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13885601

Country of ref document: EP

Kind code of ref document: A1