Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
HARD DISK DATA RECOVERY METHOD, DEVICE AND SYSTEM
Document Type and Number:
WIPO Patent Application WO/2013/159503
Kind Code:
A1
Abstract:
Disclosed are a hard disk data recovery method, device and system. The method comprises: when an error is discovered when reading data from a hard disk, recording the logical block address corresponding to the data which generates an error in the hard disk; according to a preset algorithm, performing a recovery operation on data of a first physical block address corresponding to the logical block address to obtain recovery data; and sending to the hard disk an instruction for writing the recovery data to the logical block address, so that the hard disk writes the recovery data to the logical block address according to the instruction, the logical block address corresponding to a remapped second physical block address. Also disclosed are a hard disk data recovery device and system. The object of the present invention is to provide a hard disk data recovery method, device and system. Recovery data which is obtained through a preset algorithm is written to a sector corresponding to a remapped new physical block address, and therefore, an error sector or a bad block of a hard disk can be quickly repaired, thereby improving the repairing efficiency of a hard disk error sector or a hard disk bad block.

Inventors:
LI YANSONG (CN)
Application Number:
PCT/CN2012/084230
Publication Date:
October 31, 2013
Filing Date:
November 07, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F11/16
Foreign References:
CN102708019A2012-10-03
CN101980137A2011-02-23
CN101840364A2010-09-22
US20080115017A12008-05-15
Other References:
See also references of EP 2778926A4
Attorney, Agent or Firm:
GUANGZHOU SCIHEAD PATENT AGENT CO.. LTD (CN)
广州三环专利代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求

1、 一种硬盘数据恢复方法, 其特征在于, 应用于存储控制器, 所述方法包 括:

当从硬盘中读取数据发现错误时, 记录发生错误的数据在所述硬盘中对应 的逻辑块地址;

根据预设算法对所述逻辑块地址对应的第一物理块地址的数据执行恢复操 作, 得到恢复数据;

向所述硬盘发送写入所述恢复数据到所述逻辑块地址的指令, 以使所述硬 盘根据所述指令将所述恢复数据写入所述逻辑块地址; 其中, 所述逻辑块地址 对应重映射后的第二物理块地址。

2、 如权利要求 1所述的方法, 其特征在于, 所述第二物理块地址对应的硬 盘存储区域存在于所述硬盘的冗余区。

3、 如权利要求 2所述的方法, 其特征在于, 在向所述硬盘发送写入所述恢 复数据到所述逻辑块地址的指令的步骤之前, 在所述根据预设算法对所述逻辑 块地址对应的第一物理块地址的数据执行恢复操作, 得到恢复数据的步骤之后, 所述方法还包括:

确定所述硬盘的冗余区是否有剩余空间;

若所述硬盘的冗余区有剩余空间, 则执行所述向所述硬盘发送写入所述恢 复数据到所述逻辑块地址的指令的步骤;

若所述硬盘的冗余区无剩余空间, 则执行硬盘重建操作。

4、 如权利要求 1至 3任一项所述的方法, 其特征在于, 在向所述硬盘发送 写入所述恢复数据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所 述恢复数据写入所述逻辑块地址的步骤之后, 所述方法还包括:

读取所述逻辑块地址中写入的所述恢复数据, 与根据预设算法对所述逻辑 块地址对应的第一物理块地址的数据执行恢复操作得到的恢复数据进行对比, 判断两者是否一致; 若一致, 则表明写入成功; 若不一致, 则表明写入失败, 执行硬盘重建操 作。

5、 如权利要求 1至 3任一项所述的方法, 其特征在于, 在向所述硬盘发送 写入所述恢复数据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所 述恢复数据写入所述逻辑块地址的步骤之后, 所述方法还包括:

判断所述硬盘是否上报校验错误信息;

若否, 则表明写入成功; 若是, 则表明写入失败, 执行硬盘重建操作。

6、 如权利要求 1至 3任一项所述的方法, 其特征在于, 在所述根据预设算 法对所述逻辑块地址对应的第一物理块地址的数据执行恢复操作, 得到恢复数 据的步骤之后, 所述方法还包括:

向操作系统上报所述恢复数据, 以使所述操作系统根据所述恢复数据执行 相应的业务。

7、 一种硬盘数据恢复装置, 其特征在于, 所述装置包括:

记录模块, 用于当从硬盘中读取数据发现错误时, 记录发生错误的数据在 所述硬盘中对应的逻辑块地址;

恢复模块, 用于根据预设算法对所述记录模块记录的逻辑块地址对应的第 一物理块地址的数据执行恢复操作, 得到恢复数据;

触发模块, 用于向所述硬盘发送写入所述恢复数据到所述逻辑块地址的指 令, 以使所述硬盘根据所述指令将所述恢复模块得到的恢复数据写入所述记录 模块记录的逻辑块地址; 其中, 所述逻辑块地址对应重映射后的第二物理块地 址。

8、 如权利要求 7所述的装置, 其特征在于, 所述第二物理块地址对应的硬 盘存储区域存在于所述硬盘的冗余区, 所述装置还包括:

确定模块, 用于确定所述硬盘的冗余区是否有剩余空间; 若所述硬盘的冗 余区有剩余空间, 则执行所述向所述硬盘发送写入所述恢复数据到所述逻辑块 地址的指令的步骤; 若所述硬盘的冗余区无剩余空间, 则执行硬盘重建操作。 9、 如权利要求 7或 8所述的装置, 其特征在于, 所述装置还包括: 对比模块, 用于读取所述逻辑块地址中写入的所述恢复数据, 与所述恢复 模块根据预设算法对所述逻辑块地址对应的第一物理块地址的数据执行恢复操 作得到的恢复数据进行对比, 判断两者是否一致; 若一致, 则表明写入成功; 若不一致, 则表明写入失败, 执行硬盘重建操作。

10、 如权利要求 7或 8所述的装置, 其特征在于, 还包括:

判断模块, 用于判断所述硬盘是否上报校验错误信息; 若否, 则表明写入 成功; 若是, 则表明写入失败, 执行硬盘重建操作。

11、 如权利要求 7或 8所述的装置, 其特征在于, 还包括:

报告模块, 用于向操作系统上报所述恢复模块得到的恢复数据, 以使所述 操作系统根据所述恢复数据执行相应的业务。

12、 一种存储系统, 其特征在于, 所述存储系统包括存储控制器和与所述 存储控制器具有通信连接的硬盘阵列, 所述存储控制器包括如权利要求 7至 11 任一项所述的硬盘数据恢复装置。

Description:
一种硬盘数据恢复方法、 装置及系统

本申请要求于 2012年 04月 28日提交中国专利局、 申请号为 201210132095.3 , 发明名称为 "一种硬盘数据恢复方法、 装置及系统" 的中国专利申请的优先权, 其全部内容通过引用结合在本申请中。 技术领域

本发明涉及计算机技术领域, 尤其涉及一种硬盘数据恢复方法、 装置及系 统。 背景技术

目前, 常用的硬盘包括机械硬盘和固态硬盘, 由于机械硬盘容易受温度、 振动的影响而出现读写错误, 且固态硬盘自身固有的擦写次数限制和坏块率 也 会导致读写错误。 虽然硬盘具有纠错能力, 但其只能通过自身纠错算法纠正错 误位数较少的错误数据, 其纠错能力是有限的。

现有技术中, 当错误数据的错误位数太多, 硬盘无法通过自身纠错算法进 行纠错时, 存储控制器多采用 RAID ( Redundant Array of Independent Disks , 独 立磁盘的冗余阵列)算法纠正错误数据, 并通过重建或格式化操作对硬盘数据 进行恢复。 若在重建操作的过程中硬盘阵列中的其他硬盘 出现错误, 硬盘中的 数据将无法恢复; 而格式化操作需要进行整个磁道的数据读取、 格式化和两次 数据写入操作, 第一次为将整个磁道的数据(包括通过 RAID算法得到的恢复数 据及错误数据所在磁道上的其他数据)写入保 留区域, 第二次为将整个磁道的 数据写入格式化完成后的磁道上, 操作繁瑣, 比较费时, 而且保留区域是用来 保存硬盘的参数和配置信息, 进行第一次数据写入操作时会带来较大的风险 。 发明内容

本发明实施例提供一种硬盘数据恢复方法、 装置及系统, 用以提高硬盘错 误扇区或硬盘坏块的修复效率。

为了解决上述技术问题, 本发明实施例提供了一种硬盘数据恢复方法, 该 方法包括:

当从硬盘中读取数据发现错误时, 记录发生错误的数据在所述硬盘中对应 的逻辑块地址;

根据预设算法对所述逻辑块地址对应的第一物 理块地址的数据执行恢复操 作, 得到恢复数据;

向所述硬盘发送写入所述恢复数据到所述逻辑 块地址的指令, 以使所述硬 盘根据所述指令将所述恢复数据写入所述逻辑 块地址; 其中, 所述逻辑块地址 对应重映射后的第二物理块地址。

相应地, 本发明实施例还提供了一种硬盘数据恢复装置 , 该装置包括: 记录模块, 用于当从硬盘中读取数据发现错误时, 记录发生错误的数据在所 述硬盘中对应的逻辑块地址;

恢复模块, 用于根据预设算法对所述逻辑块地址对应的第 一物理块地址的 数据执行恢复操作, 得到恢复数据;

触发模块, 用于向所述硬盘发送写入所述恢复数据到所述 逻辑块地址的指 令, 以使所述硬盘根据所述指令将所述恢复数据写 入所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的第二物理块地 址。

另外, 本发明实施例还提供一种存储系统, 该存储系统包括存储控制器和 与所述存储控制器具有通信连接的硬盘阵列, 该存储控制器包括本发明实施例 提供的硬盘数据恢复装置。

实施本发明实施例, 具有如下有益效果:

本发明实施例通过当从硬盘中读取数据发现错 误时, 记录发生错误的数据 在所述硬盘中对应的逻辑块地址; 根据预设算法对所述逻辑块地址对应的物理 块地址的数据执行恢复操作, 得到恢复数据; 向所述硬盘发送写入所述恢复数 据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所述恢复数据写 入 所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的新的物理块地 址, 从 而使用硬盘内其它的扇区或块(例如硬盘冗余 区的扇区)快速、 方便地代替错 误数据所在的错误扇区或坏块, 将通过预设算法得到的恢复数据写入重映射后 的新的物理块地址对应的扇区, 能够快速修复硬盘的错误扇区或坏块, 提高了 硬盘错误扇区或硬盘坏块的修复效率。 附图说明 例或现有技术描述中所需要使用的附图作筒单 地介绍, 显而易见地, 下面描述 中的附图仅仅是本发明的一些实施例, 对于本领域普通技术人员来讲, 在不付 出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。

图 1为本发明实施例的存储系统的结构示意图;

图 1为本发明实施例提供的一硬盘数据恢复装置 结构示意图;

图 3为本发明实施例提供的逻辑块地址和物理块 址的重映射示意图; 图 4为本发明实施例提供的另一硬盘数据恢复装 的结构示意图; 图 5为本发明实施例的硬盘数据恢复方法的方法 程示意图;

图 6为本发明实施例的另一硬盘数据恢复方法的 法流程示意图。 具体实施方式

下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清 楚、 完整地描述, 显然, 所描述的实施例仅是本发明一部分实施例, 而不是全 部的实施例。 基于本发明中的实施例, 本领域普通技术人员在没有做出创造性 劳动前提下所获得的所有其他实施例, 都属于本发明保护的范围。

请参见图 1 ,为本发明实施例提供的存储系统的结构示意 。所述系统包括: 存储控制器 01和硬盘阵列 02。

具体的, 所述存储控制器 01 包括一硬盘数据恢复装置 03 , 所述硬盘阵列 02可包括至少两个 HDD( Hard Disk Drive,机械硬盘)或 SSD( Solid State Drive, 固态硬盘)。

所述硬盘阵列 02可由至少两个硬盘组成具有检错纠错能力的 盘阵列, 如 RAID1或 RAID5 ,所述存储控制器 01可根据不同的硬盘阵列采用不同的纠错算 法。

具体的, RAID 1又称为 Mirror或 Mirroring, 是由两个硬盘组成镜像, 两个 硬盘中保存了相同的数据, 其原理就是将一块硬盘的数据以相同位置指向 另一 块硬盘的位置。 当其中一个硬盘中出现错误数据时, 所述存储控制器 01可以从 另一个硬盘中直接得到对应的正确数据。 而 RAID5是将数据按条带方式保存在 至少 3个硬盘中, 当其中一个硬盘出现数据错误时, 所述存储控制器 01可以通 过异或算法根据其他硬盘中的数据得到对应的 正确数据。 这些都是现有技术, 不再赘述。 进一步的, 请参见图 2, 为本发明实施例提供的一硬盘数据恢复装置 03的 结构示意图。 该硬盘数据恢复装置 03用于当从硬盘(硬盘阵列 02中的一个硬 盘) 中读取数据发现错误时, 记录发生错误的数据在所述硬盘中对应的逻辑 块 地址; 根据预设算法对所述逻辑块地址对应的第一物 理块地址的数据执行恢复 操作, 得到恢复数据; 向所述硬盘发送写入所述恢复数据到所述逻辑 块地址的 指令, 以使所述硬盘根据所述指令将所述恢复数据写 入所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的第二物理块地 址。 本领域普通技术人员应当理 解的是, "预设算法" 在本发明实施例中可以是 RAID纠错算法, 在其它等同实 施例中也可以是其它的数据恢复方法, 本发明对此不做限定。

具体的, 该硬盘数据恢复装置 03可以包括: 记录模块 031、 恢复模块 032 及触发模块 033 , 其中:

记录模块 031 , 用于当从硬盘中读取数据发现错误时, 记录发生错误的数据 在所述硬盘中对应的逻辑块地址。

具体的, 在本实施例中, 假设所述硬盘数据恢复装置 03从硬盘 A中读取数 据, 所述硬盘 A与另一硬盘 B组成一适用纠错算法为 RAID1算法的硬盘阵列 02。

当所述硬盘数据恢复装置 03从所述硬盘 A中读取数据时,会向所述硬盘 A 发送所述数据所在的逻辑块地址(Logical Block Address, LBA )。 如果所述硬盘 A中出现了错误数据,所述硬盘 A会向所述硬盘数据恢复装置 03上报校验错误 信息, 所述校验错误信息中包括所述错误数据所在的 逻辑块地址。 当所述硬盘 数据恢复装置 03从所述硬盘 A中读取数据时, 发现错误数据, 所述记录模块 031则记录所述错误数据对应的逻辑块地址。

需要说明的是, 本发明实施例针对的错误数据为位数超过硬盘 A预设的阈 值, 硬盘 A通过自身纠错算法无法纠正的错误数据。 当错误数据的位数低于预 设的阈值时, 硬盘 A可通过自身纠错算法得到对应的正确数据。

恢复模块 032,用于根据预设算法对所述记录模块 031记录的逻辑块地址对 应的第一物理块地址的数据执行恢复操作, 得到恢复数据。

具体的, 对应于本实施例中所述硬盘 A与另一硬盘 B组成的适用纠错算法 为 RAID1算法的硬盘阵列 02, 所述预设算法为 RAID1。

当然, 根据硬盘阵列 02的不同, 所述恢复模块 032执行恢复操作采用的算 法也不同, 在此不赘述。

恢复模块 032可以采用 RAID1算法对所述记录模块 031发现的错误数据执 行恢复操作, 在另一个正常的硬盘 B中的与所述记录模块 031记录的逻辑块地 址相同的逻辑块地址所对应的物理块地址上读 取所述错误数据对应的正确数 据, 得到恢复数据。

其中, PBA ( Physical Block Address, 物理块地址) 为数据在硬盘中实际 所在扇区的地址, 所述第一物理快地址为所述错误数据在所述硬 盘 A中的扇区 的地址。

具体的, 每个硬盘都有 LBA ( Logical Block Address, 逻辑块地址) -PBA 映射表, 用来记录该硬盘的逻辑块地址与物理块地址之 间的对应关系。 每个逻 辑块地址都有一个与之对应的物理块地址。

硬盘数据恢复装置 03是根据逻辑块地址对所述硬盘 A进行访问的, 当所述 硬盘数据恢复装置 03从所述硬盘 A中读取数据时, 向所述硬盘 A发送数据所 在的逻辑块地址,逻辑块地址进入硬盘之后会 根据所述 LBA-PBA映射表翻译成 物理快地址,即可实现所述硬盘数据恢复装置 03对所述硬盘 A的内部某个扇区 的寻址。

触发模块 033 ,用于向所述硬盘发送写入所述恢复数据到所 逻辑块地址的 指令, 以使所述硬盘根据所述指令将所述恢复模块 032得到的恢复数据写入所 述记录模块 031 记录的逻辑块地址; 其中, 所述逻辑块地址对应重映射后的第 二物理块地址。

具体的, 当所述恢复模块 032得到恢复数据后, 所述触发模块 033向所述 硬盘 A发送写入所述恢复数据到所述逻辑块地址的 令, 以使所述硬盘 A根据 所述指令将所述恢复模块 032得到的恢复数据写入所述记录模块 031记录的逻 辑块地址。

其中, 所述逻辑块地址对应重映射后的第二物理块地 址。

当所述硬盘 A根据所述指令将所述恢复模块 032得到的恢复数据写入所述 记录模块 031记录的逻辑块地址时, 需执行重映射操作, 即将所述恢复模块 032 得到的恢复数据写入所述硬盘 A中的一个新的物理块地址, 此新的物理块地址 即为所述第二物理块地址。此时需要刷新所述 LBA-PBA映射表,使所述第二物 理块地址代替所述第一物理块地址, 即实现了所述硬盘 A中错误数据的恢复。 优选的, 所述第二物理块地址指向的是硬盘 A冗余区的物理块; 在其它实 现方式下, 所述第二物理块地址还可以指向硬盘 A中除冗余区之外的空闲的物 理块。

此时, 所述逻辑块地址对应的物理块地址发生了变化 , 但由于所述硬盘数 据恢复装置 03是根据逻辑块地址对所述硬盘 A进行访问的,所述硬盘数据恢复 装置 03看不到物理块地址发生了变化, 仍然可以按照所述逻辑块地址来访问所 述硬盘 A, 不会对所述硬盘数据恢复装置 03的正常操作带来任何影响。

4叚设所述硬盘 A共有 60个物理块地址, 其中物理块地址 1-50属于用户区, 物理块地址 51-60属于冗余区。图 3为逻辑块地址和物理块地址的重映射的示意 图, 表 1为所述触发模块 033向所述硬盘 A发送写入所述恢复数据到所述逻辑 块地址的指令前的所述 LBA-PBA映射表;表 2为所述触发模块 033向所述硬盘 A发送写入所述恢复数据到所述逻辑块地址的 令后的所述 LBA-PBA映射表。

表 1

进一步可选的, 如图 4所示, 为本发明实施例提供的另一硬盘数据恢复装 置,所述硬盘数据恢复装置 03包括上述实施例中的记录模块 031、恢复模块 032 及触发模块 033 ,本实施例中,所述硬盘数据恢复装置 03还包括:确定模块 034, 其中:

所述确定单元 034, 用于确定所述硬盘的冗余区是否有剩余空间; 若所述硬 盘的冗余区有剩余空间, 则执行所述向所述硬盘发送写入所述恢复数据 到所述 逻辑块地址的指令的步骤; 若所述硬盘的冗余区无剩余空间, 则执行硬盘重建 操作。

具体的, HDD在设计时设置了一些冗余扇区, 所述硬盘数据恢复装置 03或 上层软件看不到这些冗余扇区, 只有硬盘自身可以看到这些冗余扇区。 冗余扇 区用来代替出现错误数据的扇区。

同理, SSD在设计时设置了一些冗余块。 每个 SSD都是由多个块组成的, 每 个块内包括多个页, 它是 SSD进行数据读写的最小单位, 相当于 HDD的扇区, SSD的一个逻辑块地址对应于块中的一个页。 当某个块的擦除次数过多就会失 效, 不能再执行正常的写操作。 此外, 块还会发生整体失效。

在本发明实施例中, 所述冗余扇区及所述冗余块统称为冗余区。

由于硬盘上的冗余区容量是有限的, 而且不同的硬盘生产厂家的冗余区设 置不同, 如果错误数据较多, 已发生了多次重映射, 冗余区可能会不够用。 某 些硬盘在 S.M.A.R.T(Self Monitoring Analysis And Reporting Technology, 自我监 测、 分析和报告技术)属性里面会提供一些冗余区 信息, 例如已经执行了多少 次重映射, 还有多少个待执行的重映射, 冗余区还剩多少空间等。

为确保所述恢复数据可以顺利写入所述硬盘 A的冗余区中, 需所述确定模 块 034确定所述硬盘 A的冗余区是否有剩余空间。

具体的, 若所述确定模块 034确定出所述硬盘 A的冗余区有剩余空间, 则 通知触发模块 033向所述硬盘发送写入所述恢复数据到所述逻 辑块地址的指令, 以使所述硬盘根据所述指令将所述恢复模块 032得到的恢复数据写入所述记录 模块 031记录的逻辑块地址。

若所述确定模块 034确定出所述硬盘 A的冗余区无剩余空间, 则所述硬盘 A无法进行重映射操作, 即表明所述硬盘 A内存在一个无法修复的错误扇区或 坏块, 需要执行硬盘重建操作, 具体的: 所述硬盘数据恢复装置 03读取所述硬 盘 A内的所有数据 (包括所述恢复模块 032得到的恢复数据及其他数据 ), 然后 统一写入热备盘。 所述热备盘为在所述硬盘阵列中预先设置的一 个或多个只保 持通电状态但不参与数据读写操作的硬盘。 当然, 根据用户的具体策略, 所述硬盘数据恢复装置 03也可以先不执行硬 盘重建操作, 而是等无法恢复的错误数据累积到一定数量之 后再执行硬盘重建 操作。 此为现有技术, 不再赘述。

进一步可选的, 如图 4所示, 所述硬盘数据恢复装置 03还包括: 对比模块 035 , 用于读取所述逻辑块地址中写入的所述恢复数 据, 与所述恢 复模块 032根据预设算法对所述逻辑块地址对应的第一 物理块地址的数据执行 恢复操作得到的恢复数据进行对比, 判断两者是否一致; 若一致, 则表明写入 成功; 若不一致, 则表明写入失败, 执行硬盘重建操作。

具体的, 所述硬盘 A向所述第二物理块地址写入所述恢复模块 032得到的 恢复数据时有可能出错, 因此为了确保所述恢复数据的正确写入, 还需要所述 硬盘数据恢复装置 03执行确认操作。

则所述对比模块 035读取所述硬盘 A向所述第二逻辑块地址写入的所述恢 复数据, 与所述恢复模块 032得到的恢复数据进行对比, 判断两者是否一致, 以此来判断所述恢复数据是否正确写入。

若所述对比模块 035确定出所述硬盘 A向所述第二逻辑块地址写入的所述 恢复数据与所述恢复模块 032得到的恢复数据不一致, 则所述硬盘数据恢复装 置 03执行硬盘重建操作。

具体的, 若所述对比模块 035确定出所述硬盘 A向所述第二逻辑块地址写 入的所述恢复数据与所述恢复模块 032得到的恢复数据不一致, 则表明写入失 败, 产生原因可能是所述硬盘 A中的冗余区存在问题, 则所述硬盘 A无法进行 重映射操作, 即表明所述硬盘 A内存在一个无法修复的错误扇区或坏块, 需要 执行硬盘重建操作, 具体的: 所述硬盘数据恢复装置 03读取所述硬盘 A内的所 有数据(包括所述恢复模块 032得到的恢复数据及其他数据), 然后统一写入热 备盘。 所述热备盘为在所述硬盘阵列中预先设置的一 个或多个只保持通电状态 但不参与数据读写操作的硬盘。

当然, 根据用户的具体策略, 所述硬盘数据恢复装置 03也可以先不执行硬 盘重建操作, 而是等无法恢复的错误数据累积到一定数量之 后再执行硬盘重建 操作。 此为现有技术, 在此不赘述。

进一步的, 如图 4所示, 所述硬盘数据恢复装置 03还包括:

判断模块 036, 用于判断所述硬盘是否上报校验错误信息; 若否, 则表明写 入成功; 若是, 则表明写入失败, 执行硬盘重建操作。

具体的, 所述硬盘数据恢复装置 03也可以通过所述判断模块 036判断所述 硬盘 A是否上报校验错误信息的方式来确定所述恢 数据是否正确写入。

为了保证数据读写的可靠性, HDD的每个扇区保存了数据和与数据对应的 检错纠错码。 当数据准备写入扇区时, HDD先计算出对应的检错纠错码, 然后 将它和数据一起写入。 当数据被读取时, 检错纠错码也同时被读取, 硬盘会进 行校验, 如果校验不通过则说明数据存在错误。 当数据错误的位数较少时, 例 如每个扇区不超过 20个字节, HDD通过自身纠错算法能够将其纠正,读出的数 据仍然是正确的。 如果数据错误的位数太多而无法纠正, HDD就会向与之相连 的硬盘数据恢复装置 03上报校验错误信息, 将纠错的任务交给硬盘数据恢复装 置 03来完成。

同理, SSD—般是由很多闪存颗粒组成的, 虽然在物理上没有扇区的概念, 但 SSD可以将数据和与数据对应的检错纠错码保存 到每一片闪存颗粒上, 从而 实现类似的容错功能, 当然 SSD的纠错能力同样也是有限的。

因此, 通过所述判断模块 036判断所述硬盘 A是否上报校验错误信息, 可 以确定所述恢复数据是否正确写入。

若所述判断模块 036判断出所述硬盘 A上报了校验错误信息, 则所述硬盘 数据恢复装置 03执行硬盘重建操作。

具体的, 所述判断模块 036判断出所述硬盘 A上报了校验错误信息, 则表 明写入失败, 产生原因可能是所述硬盘 A中的冗余区存在问题, 无法实现错误 数据的恢复, 即表明所述硬盘 A内存在一个无法修复的错误扇区或坏块, 需要 执行硬盘重建操作, 具体的: 所述硬盘数据恢复装置 03读取所述硬盘 A内的所 有数据 (包括所述恢复模块 032得到的恢复数据及其他数据 ), 然后统一写入热 备盘。 所述热备盘为在所述硬盘阵列中预先设置的一 个或多个只保持通电状态 但不参与数据读写操作的硬盘。

当然, 根据用户的具体策略, 所述硬盘数据恢复装置 03也可以先不执行硬 盘重建操作, 而是等无法恢复的错误数据累积到一定数量之 后再执行硬盘重建 操作。 此为现有技术, 在此不赘述。

进一步的, 如图 4所示, 所述硬盘数据恢复装置 03还包括:

报告模块 037, 用于向操作系统上报所述恢复模块 032得到的恢复数据, 以 使所述操作系统根据所述恢复数据执行相应的 业务。

具体的, 当所述恢复模块 032根据预设算法得到所述恢复数据时, 所述报 告模块 037 即将所述恢复数据上报给操作系统, 以使所述操作系统根据所述恢 复数据执行相应的业务。

需说明的是, 以上模块划分只是举例而言, 本领域普通技术人员可以根据 本发明实施例所述方法获得其它的模块划分方 式, 进而实现本发明。

综上所述, 本发明实施例通过当从硬盘中读取数据发现错 误时, 记录发生 错误的数据在所述硬盘中对应的逻辑块地址; 根据预设算法对所述逻辑块地址 对应的物理块地址的数据执行恢复操作, 得到恢复数据; 向所述硬盘发送写入 所述恢复数据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所述恢 复数据写入所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的新的物理 块地址, 从而使用硬盘内其它的扇区或块(例如硬盘冗 余区的扇区)快速、 方 便地代替错误数据所在的错误扇区或坏块, 将通过预设算法得到的恢复数据写 入重映射后的新的物理块地址对应的扇区, 能够快速修复硬盘的错误扇区或坏 块, 提高了硬盘错误扇区或硬盘坏块的修复效率。

请参见图 5 , 为本发明实施例的硬盘数据恢复方法的方法流 程示意图, 所述 方法包括:

5101 , 当从硬盘中读取数据发现错误时, 记录发生错误的数据在所述硬盘 中对应的逻辑块地址。

具体的, 在本实施例中, 假设从硬盘 A中读取数据, 所述硬盘 A与另一硬 盘 B组成一适用纠错算法为 RAID1算法的硬盘阵列。

当所述硬盘数据恢复装置从所述硬盘 A中读取数据时, 会向所述硬盘 A发 送所述数据所在的逻辑块地址。 如果所述硬盘 A中出现了错误数据, 所述硬盘 A会向所述硬盘数据恢复装置上报校验错误信 , 所述校验错误信息中包括所 述错误数据所在的逻辑块地址。 当所述硬盘数据恢复装置从所述硬盘 A中读取 数据时, 发现错误数据, 则记录所述错误数据对应的逻辑块地址。

需要说明的是, 本发明实施例针对的错误数据为位数超过硬盘 A预设的阈 值, 硬盘 A通过自身纠错算法无法纠正的错误数据。 当错误数据的位数低于预 设的阈值时, 硬盘 A可通过自身纠错算法得到对应的正确数据。

5102, 根据预设算法对所述逻辑块地址对应的第一物 理块地址的数据执行 恢复操作, 得到恢复数据。

具体的, 对应于本实施例中所述硬盘 A与另一硬盘 B组成的适用纠错算法 为 RAID1算法的硬盘阵列, 所述预设算法为 RAID1。

当然, 根据硬盘阵列的不同, 所述硬盘数据恢复装置执行恢复操作采用的 算法也不同, 在此不赘述。

所述硬盘数据恢复装置采用 RAID1算法对错误数据执行恢复操作, 在另一 个正常的硬盘 B 中的相同的逻辑块地址所对应的物理块地址上 读取所述错误数 据对应的正确数据, 得到恢复数据。

其中, 所述物理块地址为数据在硬盘中实际所在扇区 的地址, 所述第一物 理快地址为所述错误数据在所述硬盘 A中的扇区的地址。

具体的,每个硬盘都有一个 LBA-PBA映射表, 用来记录该硬盘的逻辑块地 址与物理快地址之间的对应关系。 每个逻辑块地址都有一个对应的物理快地址。

所述硬盘数据恢复装置是根据逻辑块地址对所 述硬盘 A进行访问的, 当所 述硬盘数据恢复装置从所述硬盘 A中读取数据时, 向所述硬盘 A发送数据所在 的逻辑块地址,逻辑块地址进入硬盘之后会根 据所述 LBA-PBA映射表翻译成物 理快地址, 即可实现所述硬盘数据恢复装置对所述硬盘 A的内部某个扇区的寻 址。

S103 , 向所述硬盘发送写入所述恢复数据到所述逻辑 块地址的指令, 以使 所述硬盘根据所述指令将所述恢复数据写入所 述逻辑块地址; 其中, 所述逻辑 块地址对应重映射后的第二物理块地址。

具体的, 当所述硬盘数据恢复装置得到恢复数据后, 即向所述硬盘 A发送 写入所述恢复数据到所述逻辑块地址的指令, 以使所述硬盘 A根据所述指令将 所述恢复数据写入所述逻辑块地址。 其中, 所述逻辑块地址对应重映射后的第 二物理块地址。

当所述硬盘 A根据所述指令将所述恢复数据写入所述逻辑 地址时, 需执 行重映射操作, 即将所述恢复数据写入所述硬盘 A中的一个新的物理块地址, 即得到所述第二物理块地址。 此时需要刷新所述 LBA-PBA映射表,使所述第二 物理块地址代替所述第一物理块地址,即实现 了所述硬盘 A中错误数据的恢复。

优选的, 所述第二物理块地址指向的是硬盘 A冗余区的物理块; 在其它实 现方式下, 所述第二物理块地址还可以指向硬盘 A中除冗余区之外的空闲的物 理块。

此时, 所述逻辑块地址对应的物理块地址发生了变化 , 但由于硬盘数据恢 复装置是根据逻辑块地址对硬盘进行访问的, 所述硬盘数据恢复装置看不到物 理块地址发生了变化, 仍然可以按照所述逻辑块地址来访问所述硬盘 , 不会对 所述硬盘数据恢复装置的正常操作带来任何影 响。

所述硬盘数据恢复装置向所述硬盘 A发送写入所述恢复数据到所述逻辑块 地址的指令前的所述 LBA-PBA映射表请再次参见表 1 ; 所述硬盘数据恢复装置 向所述硬盘 A 发送写入所述恢复数据到所述逻辑块地址的指 令后的所述 LBA-PBA映射表请再次参见表 2。

本发明实施例通过当从硬盘中读取数据发现错 误时, 记录发生错误的数据 在所述硬盘中对应的逻辑块地址; 根据预设算法对所述逻辑块地址对应的物理 块地址的数据执行恢复操作, 得到恢复数据; 向所述硬盘发送写入所述恢复数 据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所述恢复数据写 入 所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的新的物理块地 址, 从 而使用硬盘内其它的扇区或块(例如硬盘冗余 区的扇区)快速、 方便地代替错 误数据所在的错误扇区或坏块, 将通过预设算法得到的恢复数据写入重映射后 的新的物理块地址对应的扇区, 能够快速修复硬盘的错误扇区或坏块, 提高了 硬盘错误扇区或硬盘坏块的修复效率。

请参见图 6, 为本发明实施例的另一硬盘数据恢复方法的方 法流程示意图。 所述方法包括:

5201 , 当从硬盘中读取数据发现错误时, 记录发生错误的数据在所述硬盘 中对应的逻辑块地址。

5202 , 根据预设算法对所述逻辑块地址对应的第一物 理块地址的数据对所 述错误数据执行恢复操作, 得到恢复数据。

5203 , 向操作系统上报所述恢复数据, 以使所述操作系统根据所述恢复数 据执行相应的业务。

具体的, 当硬盘数据恢复模块根据预设算法得到所述恢 复数据时, 即将所 述恢复数据上报给操作系统, 以使所述操作系统根据所述恢复数据执行相应 的 业务。

5204, 确定所述硬盘的冗余区是否有剩余空间。 若是, 则执行 S205; 否贝 ij , 执行 S207。

具体的, HDD在设计时设置了一些冗余扇区, 硬盘数据恢复装置或上层软 件看不到这些冗余扇区, 只有硬盘自身可以看到这些冗余扇区。 冗余扇区用来 代替出现错误数据的扇区。

同理, SSD在设计时设置了一些冗余块。 每个 SSD都是由多个块组成的, 每 个块内包括多个页, 它是 SSD进行数据读写的最小单位, 相当于 HDD的扇区, SSD的一个逻辑块地址对应于块中的一个页。 当某个块的擦除次数过多就会失 效, 不能再执行正常的写操作。 此外, 块还会发生整体失效。

在本发明实施例中, 所述冗余扇区及所述冗余块统称为冗余区。

由于硬盘上的冗余区容量是有限的, 而且不同的硬盘生产厂家的冗余区设 置不同, 如果错误数据较多, 已发生了多次重映射, 冗余区可能会不够用。 某 些硬盘在 S.M.A.R.T属性里面会提供一些冗余区的信息, 例如已经执行了多少次 重映射, 还有多少个待执行的重映射, 冗余区还剩多少空间等。

为确保所述恢复数据可以顺利写入所述硬盘的 冗余区中, 需确定所述硬盘 的冗余区是否有剩余空间。

具体的, 若硬盘数据恢复装置确定出所述硬盘的冗余区 无剩余空间, 则所 述硬盘无法进行重映射操作, 即表明所述硬盘内存在一个无法修复的错误扇 区 或坏块, 需要执行 S207。

当然, 根据用户的具体策略, 所述硬盘数据恢复装置也可以先不执行硬盘 重建操作, 而是等无法恢复的错误数据累积到一定数量之 后再执行硬盘重建操 作。 此为现有技术, 在此不赘述。

5205 , 向所述硬盘发送写入所述恢复数据到所述逻辑 块地址的指令, 以使 所述硬盘根据所述指令将所述恢复数据写入所 述逻辑块地址; 其中, 所述逻辑 块地址对应重映射后的第二物理块地址。

5206, 读取所述逻辑块地址中写入的所述恢复数据, 与根据预设算法对所 述逻辑块地址对应的第一物理块地址的数据执 行恢复操作得到的恢复数据进行 对比,判断两者是否一致。若是,则表明写入 成功, 流程结束; 否则,执行 S207。

具体的, 所述硬盘向所述第二物理块地址写入所述恢复 数据时有可能出错, 因此为了确保所述恢复数据的正确写入, 还需要所述硬盘数据恢复装置执行确 认操作。 则所述硬盘数据恢复装置读取所述写入的所述 恢复数据, 与所述根据预设 算法得到的恢复数据进行对比, 判断两者是否一致, 以此来判断所述恢复数据 是否正确写入。

进一步可选的, 可以通过判断所述硬盘是否上报校验错误信息 的方式来确 定所述恢复数据是否正确写入。

S207, 执行硬盘重建操作。

具体的, 若确定出所述写入的所述恢复数据与所述根据 预设算法得到的恢 复数据不一致, 则表明写入失败, 产生原因可能是所述硬盘中的冗余区存在问 题, 所述硬盘无法进行重映射操作, 即表明所述硬盘内存在一个无法修复的错 误扇区或坏块, 需要执行硬盘重建操作, 读取所述硬盘内的所有数据(包括根 据预设算法得到的恢复数据及其他数据), 然后统一写入热备盘。 所述热备盘为 在所述硬盘阵列中预先设置的一个或多个只保 持通电状态但不参与数据读写操 作的硬盘。

进一步可选的, 若判断出所述硬盘向所述存储控制器上报了校 验错误信息, 则表明写入失败, 同样需要执行所述 S207。

当然, 根据用户的具体策略, 也可以先不执行硬盘重建操作, 而是等无法 恢复的错误数据累积到一定数量之后再执行硬 盘重建操作。 此为现有技术, 不 再赘述。

本发明实施例通过当从硬盘中读取数据发现错 误时, 记录发生错误的数据 在所述硬盘中对应的逻辑块地址; 根据预设算法对所述逻辑块地址对应的物理 块地址的数据执行恢复操作, 得到恢复数据; 向所述硬盘发送写入所述恢复数 据到所述逻辑块地址的指令, 以使所述硬盘根据所述指令将所述恢复数据写 入 所述逻辑块地址; 其中, 所述逻辑块地址对应重映射后的新的物理块地 址, 从 而使用硬盘内其它的扇区或块(例如硬盘冗余 区的扇区)快速、 方便地代替错 误数据所在的错误扇区或坏块, 将通过预设算法得到的恢复数据写入重映射后 的新的物理块地址对应的扇区, 能够快速修复硬盘的错误扇区或坏块, 提高了 硬盘错误扇区或硬盘坏块的修复效率。

通过以上的实施方式的描述, 本领域的技术人员可以清楚地了解到本发明 可借助软件加必需的硬件平台的方式来实现, 当然也可以全部通过硬件来实施。 基于这样的理解, 本发明的技术方案对背景技术做出贡献的全部 或者部分可以 以软件产品的形式体现出来, 该计算机软件产品可以存储在存储介质中, 如

ROM/RAM, 磁碟、 光盘等, 包括若干指令用以使得一台计算机设备(可以 是个人 计算机, 服务器, 或者网络设备等)执行本发明各个实施例或者 实施例的某些 部分所述的方法。

以上所揭露的仅为本发明较佳实施例而已, 当然不能以此来限定本发明之 权利范围, 本领域普通技术人员可以理解实现上述实施例 的全部或部分流程, 并依本发明权利要求所作的等同变化, 仍属于发明所涵盖的范围。