用于存储设备管理的方法和装置的制造方法

文档序号:10534409阅读:513来源:国知局
用于存储设备管理的方法和装置的制造方法
【专利摘要】本公开的实施例涉及用于存储设备管理的方法和装置和计算机程序产品。该方法包括收集所述存储设备中需要进行重构的坏存储单元;确定所收集的所述坏存储单元中每个坏存储单元的重构优先级等级;以及基于所确定的所述重构优先级等级来调度所述坏存储单元的重构。该装置包括坏存储单元收集器,被配置成收集所述存储设备中需要进行重构的坏存储单元;优先级控制器,被配置成确定所述坏存储单元中每个坏存储单元的重构优先级等级;以及重构调度器,被配置成基于所确定的所述重构优先级等级调度所述坏存储单元的重构。
【专利说明】
用于存储设备管理的方法和装置
技术领域
[0001] 本公开的实施例涉及存储领域,更具体地涉及用于存储设备的管理的方法和装 置。
【背景技术】
[0002] 随着存储设备容量的增长,其中数据的保护变得越来越差。原因是,存储设备(例 如磁盘)容量的增长导致在其在故障后进行重构所需要的时间变得越来越长。较长的重构 时间对于存储设备,例如独立磁盘冗余阵列(RAID)上的数据来说意味着较大的风险。
[0003] 在存储设备的重构时段,由于冗余信息的丢失,数据可靠性显著降低。下面以 RAID-6为例来说明在磁盘故障时数据可靠性的变化。参照图1可见,在还没有磁盘故障时, 得益于冗余信息的存在,RAID-6能够容忍同时有两个磁盘故障。一旦一个磁盘出故障,就 需要启动重构,并且RAID进入降级的状态。对于RAID-6来说,好的一面在于这种状态下冗 余信息仍然存在,所以即使在降级状态中,其依然能够容忍另一磁盘在将来出故障。然而不 幸的是,在重构时段中,如果另一磁盘也出故障,则使得RAID进入最差的状态,在该最差状 态,其不再能够容忍任何磁盘再出故障。更不幸的是,RAID将长时间保持这种状态,直到第 一故障盘完成重构。由于这个原因,在最差状态中,数据丢失风险高,并且难以保证RAID上 的数据可靠性。在图1中示意性地示出了 RAID-6的3种状态:
[0004] 1)第一状态可以被称为鲁棒状态。在该状态中,RAID能够容忍2个磁盘同时出故 障。如果还没有磁盘出故障,则RAID处于该状态。
[0005] 2)第二状态可以被称为安全状态。在该状态中,RAID能够容忍一个磁盘出故障。
[0006] 3)第三状态可以被称为脆弱状态。在该状态,RAID不再能够容忍磁盘故障。
[0007] 对于RAID来说,第二和第三状态均被看做降级状态,而最严重的问题在于停留在 没有冗余保护的脆弱状态的时间太长。
[0008] 类似的问题在其他存储设备中同样存在。随着存储设备容量的增长,重构时间变 得越来越长,并且脆弱状态的持续时间也越来越长,并且这使得数据可靠性更差。由于这个 原因,如何缩短重构时间,提高数据的可靠性是一个很大的挑战。
[0009] 基于以上所述问题,本公开的实施例提出了用于存储设备管理的方法和装置。

【发明内容】

[0010] 针对上述问题,本公开的各示例性实施例提供了一种能够缩短重构时间,提高数 据的可靠性的解决方案。
[0011] 本公开的第一方面是提供一种用于存储设备管理的方法,包括收集所述存储设备 中需要进行重构的坏存储单元;确定所述坏存储单元中每个坏存储单元的重构优先级等 级;以及基于所确定的所述重构优先级等级来调度所述坏存储单元的重构。
[0012] 根据本公开的一些实施例,该存储设备为分簇的独立磁盘冗余阵列(RAID),并且 坏存储单元为坏条带。
[0013] 根据本公开的另一实施例,该方法中收集所述存储设备中需要进行重构的坏存储 单元包括:通过扫描所述存储设备的映射树或者重新映射树来确定收集进行重构的坏存储 单元。
[0014] 根据本公开的又一实施例,该方法中确定所述坏存储单元中每个坏存储单元的重 构优先级等级包括:基于每个坏存储单元是否位于所述存储设备上被检测到媒体错误的区 域,和/或每个坏存储单元中包含的损坏的子存储单元的数目,来确定每个坏存储单元的 所述重构优先级等级。
[0015] 根据本公开的进一步的实施例,该存储设备包括多个阵列对象,并且该方法中确 定所述坏存储单元中每个坏存储单元的重构优先级等级包括:针对所述存储设备的每个阵 列对象,管理一个坏存储单元池,以维持所有坏存储单元的信息用于重构;以及将所述坏存 储单元池内的坏存储单元划分到具有不同优先级等级的多个调度组。
[0016] 根据本公开的一个实施例,该方法中基于所确定的所述重构优先级等级调度所述 坏存储单元的重构包括:根据所述多个调度组的所述优先级等级从高到低的顺序,选择要 重构的调度组;以及在选择要重构的调度组后,对所选择的调度组内的所有坏存储单元顺 序地执行重构。在另一实施例中,在选择要重构的调度组后,对所选择的调度组内的所有坏 存储单元顺序地执行重构进一步包括:在选择要重构的调度组后,从所选择的所述调度组 中顺序地选取分块条带,其中所述分块条带包括多个连续的存储单元;对所选取的所述分 块条带内的所有坏存储单元顺序地执行重构。
[0017] 根据本公开的又一实施例,该方法进一步包括:针对所述存储设备所包括的多个 阵列对象中的每个阵列对象,并行地执行调度所述重构的步骤。
[0018] 在本公开的一些实施例中,该存储设备被分成逻辑域和物理域,其中所述逻辑域 用于实现数据保护,并且所述物理域负责物理存储设备的管理;并且所述逻辑域包括阵列 对象,所述阵列对象建立在多个逻辑单元编号LUN之上;所述LUN的地址空间被分成多个分 块;每个分块包括多个子存储单元;来自不同LUN的多个子存储单元组成一个所述存储单 元,而来自不同LUN的多个分块组成分块条带;所述物理域包括多个物理存储设备;所述多 个物理存储设备中的每一个包括多个区块;并且该逻辑域中的所述分块被映射到所述物理 域中的所述区块。
[0019] 本公开的第二方面是提供一种用于存储设备管理的装置,该装置包括坏存储单元 收集器,被配置成收集所述存储设备中需要进行重构的坏存储单元;优先级控制器,被配置 成确定所述坏存储单元中每个坏存储单元的重构优先级等级;以及重构调度器,被配置成 基于所确定的所述重构优先级等级调度所述坏存储单元的重构。
[0020] 根据本公开的实施例,该装置能够执行本公开的第一方面的任意方法。
[0021] 本公开的第三方面是一种用于存储设备管理的装置,包括至少一个处理器;以及 至少一个包括计算机程序代码的存储器,其中所述至少一个存储器和所述计算机程序代码 被配置成与所述至少一个处理器一起,促使所述装置执行根据本公开的第一方面的任一方 法。
[0022] 本公开的第四方面是一种计算机程序产品,所述计算机程序产品被体现在计算机 可读的介质中并且包括程序指令,当被加载到装置中时,所述程序指令执行根据本公开的 第一方面的任一方法。
[0023] 根据本公开的实施例,能够显著缩短存储设备的重构时间,提高其中存储的数据 的可靠性。
【附图说明】
[0024] 现在仅通过示例并且参照附图描述根据本公开的实施例的方法和/或装置的一 些实施例,在附图中:
[0025] 图1是图示磁盘故障时数据可靠性的变化的示意图;
[0026] 图2示出坏条带分布概率的统计数据;
[0027] 图3示意性地示出坏条带的不同严重性;
[0028] 图4示意性地示出根据本公开的实施例的示例方法的流程图;
[0029] 图5示出根据本公开的实施例通过映射树收集坏条带的示意图;
[0030] 图6示出根据本公开的实施例调度分块条带以进行重构的示意图;
[0031] 图7示出根据本公开的实施例的分簇RAID的一种示例架构的示意图;
[0032] 图8示意性地示出根据本公开的实施例的示例装置的结构图;
[0033] 图9示意性地示出通过使用根据本公开的实施例的方法而使得存储设备的脆弱 状态持续时间缩短的示意图;
[0034] 图10示意性地示出根据本公开的实施例的在分簇RAID中的基于优先级的重构的 结构示意图;
[0035] 图11示意性地示出根据本公开的实施例的用于存储设备管理的装置的工作原理 示意图;
[0036] 图12 :示意性地示出在存储设备中具有两个坏SU的坏条带的百分比(4架配置)
[0037] 图13 :示意性地示出在存储设备中具有两个坏SU的坏条带的百分比(6架配置); 以及
[0038] 图14 :示意性地示出使用根据本公开的实施例使得脆弱状态的持续时间缩短的 示意图。
【具体实施方式】
[0039] 以下将参考附图详细描述本公开的各个示例性实施例。
[0040] 应当理解,给出这些示例性实施例仅仅是为了使本领域技术人员能够更好地理解 并进而实现本公开,而并非以任何方式限制本公开的范围。
[0041] 在本文中,对"一个实施例"、"另一实施例"或"一个优选实施例"等的引用指示所 描述的实施例可以包括特定特征、结构或特性,但每个实施例不一定必须包括该特定特征、 结构或特性。而且,这些术语并不一定指相同的实施例。
[0042] 还应理解,在此处使用的各种术语仅用于描述特定实施例的目的,而不旨在于限 制本公开。如这里使用的单数形式"一"和"该"可以包括复数形式,除非上下文中有明确 的相反指示。还应理解,此处使用的术语"包括"、"具有"和"包含"指示所述特征、单元和/ 或组件等的存在,但不排除一个或多个其他特征、单元、组件和/或其组合的存在。如这里 使用的术语"多个"表示"两个或更多"。如这里使用的术语"和/或"可以包括关联列出的 各项中的一项或多项的任何和所有组合。其他术语的定义将在下文描述中具体给出。
[0043] 另外,在以下描述中,将省略一些本领域技术人员所熟知的功能或者结构,以避 免它们把本公开的实施例掩盖在不必要的细节中。
[0044] 本公开的实施例涉及存储设备管理的改进,用于缩短重构时间和提高数据可靠 性。
[0045] 下面为便于说明,将主要参照独立磁盘冗余阵列(RAID),特别是RAID-6类型的 RAID,来描述本公开的主要原理,然而,如本领域技术人员能够理解的,本公开并不限于这 里公开的示例,并且可以更广泛的应用。例如,本公开的方法和装置可以应用于任何存储设 备,只要其与本文提到的特征兼容。
[0046] 为了缩短处于脆弱状态的持续时间,本公开的发明人研究了存储设备中损坏的存 储单元(例如RAID中坏条带(stripe))的优先级,并且提出基于该优先级来优化重构过 程,以缩短停留在最差状态的持续时间。在传统RAID设计中,坏条带的这种优先级并没有 被纳入考虑。例如,在传统设计中,在RAID出现故障时,将按照从头到尾挨个扫描的顺序对 发现的所有坏条带依次进行重构。实际上,本公开的发明人的研究结果显示,由于至少以下 两个原因,坏条带可以被指配不同的优先级等级:1)存储设备中媒体错误的分布具有区域 性;2)单独的坏条带具有不同的严重性等级。以下对这两点进行详细说明。
[0047] 1.存储设备上媒体错误的区域性
[0048] 通过分析存储设备的客户案例数据,发现以下两个有趣的现象:
[0049] 1)大部分的故障存储设备,例如故障磁盘,只是部分故障,这意味着只有磁盘上的 部分扇区真正的具有媒体错误,而磁盘空间的其余部分仍然是可读的。根据这一特征,对于 例如RIAD-6来说,即使有3个磁盘出了故障,大部分的数据还是可以从故障盘中抢救出来。
[0050] 2)具有媒体错误的区域在故障存储设备上的分布具有区域性。例如,如果在磁盘 上检测到一个媒体错误扇区,则附近的那些扇区将有很高的损坏概率。
[0051] 图2中关于坏条带分布概率的统计数据显示,具有媒体错误的大部分坏条带位 于一定的范围内。由图2的示例可以发现,80%的具有媒体错误的坏条带位于3. 7GB的范 围内,而85%的具有媒体错误的坏条带位于37GB的范围内。例如,对于一个2TB的存储设 备,坏条带集中在37GB的区域,这意味着坏条带的分布具有明显的区域性。
[0052] 坏条带的区域性可以被用于改善数据可靠性,例如,在被检测到媒体错误的区 域范围内的坏条带可以被指配较高的重构优先级等级,这能够显著降低存储设备(例如 RAID)的数据丢失风险。
[0053] 2.坏条带的严重性等级
[0054] 图3中示意性地示出不同坏条带的严重性。在图3的示例中,假定采用分簇的 RAID,并且其中存储设备的逻辑域和物理域分离。逻辑域负责数据保护而物理域被用于管 理物理存储设备(例如,在该示例中为磁盘)。这种两层架构可以如图3所示。在图3的示 例中,如果两个磁盘同时出故障,一些条带将被损坏2个坏条带单元(SU),而一些条带只被 损坏一个坏SU。由于这个原因,不同坏条带的严重性等级是不同的。例如,如果磁盘3和 磁盘5故障,并且被从系统移除,则将有多个条带受到影响,并且需要被重构。根据图3,能 够看到部分坏条带具有2个坏SU,而其他的坏条带只具有一个坏SU。如果那些具有2个坏 SU的条带能够以较高的优先级等级尽快地被重构,则在那些严重的坏条带被恢复后RAID 能够容忍更多的故障磁盘。
[0055] 综上所述,从物理存储设备(例如磁盘)的角度来看,其上的媒体错误具有区域 性;从而位于被检测到媒体错误的区域内的坏条带应当被指配较高的重构优先级等级。另 外,从单独的坏条带的角度来看,每个坏条带具有其自身的严重性等级。例如,对于RAID-6 来说,具有2个坏SU的那些坏条带可以被认为具有更高严重性等级,并且因此相对于具有 1个坏SU的坏条带可以被指配更高的重构优先级等级。
[0056] 坏条带被指配不同的优先级等级后,具有高优先级等级的那些坏条带应当首先 被重构,一旦这些坏条带被恢复,存储设备(例如RAID)将能够容忍更多的单元(例如磁 盘)出故障。
[0057] 基于以上研究和观测结果,本公开的实施例提出了用于存储设备管理的方法。以 下将参照附图4进行描述。如图4所示,该方法400包括步骤S401,用于收集存储设备中需 要进行重构的坏存储单元,例如RAID中的坏条带;步骤S402,用于确定坏条带中的每个坏 存储单元的重构优先级等级;以及步骤S403,用于基于所确定的重构优先级等级来调度坏 存储单元的重构。
[0058] 根据本公开的一个实施例,所述存储设备可以是分簇的独立磁盘冗余阵列 (RAID),例如RAID-6,而其中的坏存储单元可以是例如坏条带。但是本公开的实施例并不限 于此,而是也可以应用于其他现有的将来开发的其他存储设备,只要其中存在类似的问题, 并且与本公开的实施例的特征兼容。
[0059] 根据本公开的又一实施例,在步骤S401中,可以通过扫描所述存储设备的映射树 或者重新映射树来收集需要进行重构的坏存储单元,例如坏条带。例如,在本公开的一个实 施例中,有两个条件可以触发步骤S401 :
[0060] 条件1 :在系统运行期间物理存储设备出故障,例如磁盘出故障。以物理磁盘为 例,由于每个物理磁盘具有重新映射树以描述其中的区块的使用;一旦物理磁盘出故障,则 重新映射树能够被搜索以获得所有阵列的所有坏条带。
[0061] 条件2 :系统重启并且存储设备重新装配(reassemble)后发现物理存储设备(例 如磁盘)丢失。这种情况不能够由物理磁盘的重新映射树来处理。但是,在例如RAID中, 却可以利用一个很重要的特性来处理。例如,如图5所示,如果不能够在存储设备的映射树 中找到某一个SU,但是同一条带的其他SU却能够在他们的映射树中被找到,则意味着区块 丢失,并且需要重构。因此,在系统重启后,需要执行步骤S401来扫描(例如所有逻辑单元 LUN的)映射树,以检查是否发生了数据丢失。
[0062] 利用该方法,步骤S401的开销被最小化,因为用于映射树和重新映射树的所有数 据都被保存在存储器中。
[0063] 在本公开的又一实施例中,步骤S402包括:基于每个坏存储单元(例如坏条带) 是否位于存储设备上被检测到媒体错误的区域来确定每个坏存储单元的重构优先级等级, 和/或基于每个坏存储单元中包含的损坏的子存储单元(例如,坏SU)的数目来确定每个 坏存储单元的重构优先级等级。例如,位于存储设备上被检测到媒体错误的区域的坏条带 相对于位于该区域之外的坏条带可以被指定更高的优先级等级;又例如,包含更多坏SU的 坏条带可以被指定更高的优先级等级。再例如,以RAID-6为例,其中的坏条带可以被设置 为如以下表1所示的5个优先级等级:
[0064] 表1.坏条带的优先级示例
[0066] 在表1的示例中,具有最高重构优先级等级的是具有多于2个坏SU的条带。对于 具有较高冗余度的存储设备,例如能够容忍多于两个磁盘错误的诸如RAID的存储设备,将 能够对于具有多于2个坏SU的条带进行重构。并且,这种坏条带的恢复将使得该存储设备 能够容忍其他的磁盘错误,离开脆弱状态。在这种情况下,可以为这种坏条带指配最高的重 构优先级,优先地进行重构。而对于具有稍低冗余度的存储设备,例如,不能容忍多于两个 磁盘错误的存储设备,其可以对表1中的该最高优先级进行特殊的处理,例如,在重构时对 其跳过,从而加速其他坏存储单元的重构。具有第二高重构优先级等级的可以是具有两个 坏SU的条带,并且那些条带处于被检测到媒体错误的区域。如前所述,磁盘上的媒体错误 具有区域性,并且具有两个坏SU的条带对于RAID-6也是很危险的。由于这个原因,那些 坏条带应当以较高的优先级等级(例如第二高优先级等级)被重构。具有第三重构优先级 等级的是具有2个坏SU的条带。具有2个坏SU的条带使得RAID-6停留在没有任何冗余 保护的脆弱状态。通过首先处理那些坏条带,可以缩短停留在脆弱状态的时间。具有第四 重构优先级等级的是具有1个坏SU的条带,并且这些条带处于被检测到媒体错误的区域。 媒体错误在磁盘上的分布具有区域性。因此,该区域内的那些坏条带应当尽快被恢复。具 有最低重构优先级等级的是具有1个坏SU的条带。这些条带使得RAID-6停留在具有冗余 的安全状态。由于这个原因,那些坏条带可以最低优先级等级被处理。
[0067] 应该注意的是,表1仅是作为示例而呈现的,实际上,根据本公开的实施例,可以 采用其他的优先级等级的定义。例如,只定义4个优先级等级1到4,并使其分别对应于表 1中的优先级2, 3,4, 5。
[0068] 根据本公开的另一实施例,存储设备包括多个阵列对象,并且其中步骤S402进一 步包括:针对所述存储设备的每个阵列对象,管理一个坏存储单元池(例如坏条带池),用 于维持所有坏存储单元的信息用于重构;以及将所述坏存储单元池内的坏存储单元划分到 具有不同优先级等级的多个调度组。例如,以数据域分簇的RAID为例,将RAID分成逻辑域 和物理域。在逻辑域中实现数据保护,从中输出阵列对象。并且,例如,RAID-6算法可以被 用于使数据具有高可靠性。在每个阵列对象内,管理一个坏条带池。为了将坏条带分成具 有不同优先级等级的组,在坏条带池内管理5个调度组,其中每个调度组具有不同的优先 级等级。例如,具有最高优先级等级的调度组管理所有的具有多于2个坏SU的需要被重构 的条带,而具有最低优先级等级的调度组管理具有1个坏SU的所有条带。
[0069] 在本公开的一些实施例中,在步骤S403中,基于所确定的所述重构优先级等级调 度所述坏存储单元的重构包括:根据多个调度组的优先级等级从高到低的顺序,选择要重 构的调度组;以及在选择要重构的调度组后,对所选择的调度组内的所有坏存储单元(例 如坏条带)顺序地执行重构。
[0070] 在本公开的另一实施例中,在步骤S403中,进一步包括在选择要重构的调度组 后,从所选择的调度组中顺序地选取分块条带,其中所述分块条带包括多个连续的存储单 元(例如条带);对所选取的所述分块条带内的所有坏存储单元(例如坏条带)顺序地执 行重构。
[0071] 根据本公开的实施例的用于存储设备管理的方法,实现了基于优先级的重构。基 于优先级的重构的核心思想在于使得需要被重构的坏存储单元是可调度的。通过基于优先 级的重构方法,重构过程变得足够精明以选择合适的调度顺序来重构坏存储单元(例如坏 条带),而不只是从头到尾顺序地进行数据恢复。该方法的优势很明显。例如,在RAID中那 些严重的坏条带被处理之后,RAID能够更快地步出脆弱状态,并进入安全状态。由于脆弱 状态的持续时间变短,在RAID处于降级状态时数据可靠性能够得以改善。
[0072] 根据本公开的进一步的实施例,在步骤S403中,基于所确定的所述重构优先级等 级调度所述坏存储单元的重构包括,对存储设备所包括的多个阵列对象中的每个阵列对 象,并行地执行所述调度重构。在本公开的另一些实施例中,对存储设备所包括的多个阵列 对象,也可以串行地执行所述调度重构。
[0073] 在本公开的进一步的实施例中,该存储设备(例如RAID)被分成逻辑域和物理域, 其中所述逻辑域用于实现数据保护,并且所述物理域负责物理存储设备(例如磁盘)的管 理;并且,其中所述逻辑域包括阵列对象,所述阵列对象建立在多个逻辑单元编号(LUN)之 上;所述LUN的地址空间被分成多个分块(block);每个分块包括多个条带单元SU ;并且, 来自不同LUN的多个SU组成一个所述存储单元(例如条带(stripe)),而来自不同LUN的 多个分块组成分块条带(block stripe);所述物理域包括多个物理存储设备(例如物理磁 盘);所述多个物理存储设备中的每个包括多个区块(chunk);并且,逻辑域中的所述分块 被映射到所述物理域中的所述区块。在图6中示出一个示例。其中图示了分块(block)、区 块(chunk)、SU、LUN和物理磁盘之间的关系。从图6中可见,来自不同LUN的多个SU组成 一个条带,而来自不同LUN的多个分块组成分块条带。尽管条带是进行重构的基本粒度,在 调度组中进行调度的单元可以是分块条带,其包括条带的一个集合。
[0074] 图6所示的示例结构可以被看作是分簇RAID的一种类型。该结构能够通过将数 据保护域和物理存储设备管理域分离而显著地改善重构性能。在图6的示例中,假定磁盘3 和磁盘4在RAID中出故障,这可能导致若干分块条带被损坏2个分块,而另一些分块条带 将被损坏一个分块。因此,可以将分块条带作为条带组来调度以进行重构。不同调度组具 有不同的优先级等级;在调度组中,分块条带被依次调度,而在分块条带内,坏条带可以被 从头至尾地顺序地重构。
[0075] 例如,如上在关于步骤S402中所描述的,坏条带池可以包括若干调度组,而每个 调度组具有不同的优先级等级。调度组内的单元是分块条带,分块条带包括许多连续的条 带。根据本公开的一个实施例,步骤S403还可以包括:
[0076] -访问坏条带池以获得要进行重构的条带的集合;
[0077] -选择具有最高优先级等级的可用调度组。例如,如果具有2个坏SU的可用调度 组具有最高优先级,则其将被选择使用;
[0078] --旦调度组被选择,该调度组内的第一单元将被使用。该单元可以是分块条带, 其包括多个坏条带。
[0079] _在从调度组选取分块条带后,重构线程将从头至尾依次重构该分块条带内的所 有坏条带。
[0080] 此外,根据本公开的实施例,为了在系统重启后将重构回滚到正确的位置,在分块 条带重构时段期间,检查点需要被更新到区块元数据。
[0081] 在图7中示出其中可以应用本公开的实施例方法的分簇RAID的另一示意图。与 图6类似,在该结构中,逻辑域被用于实现数据保护,而物理域负责物理磁盘管理。区块 (chunk)分配器在逻辑域和物理域之间进行桥接。位于逻辑域的逻辑单元号(LUN)中的分 块(block)被区块分配器映射到物理域中的区块。在物理磁盘故障时,根据本公开的实施 例的方法,能够收集所有阵列的受影响的坏条带(stripe),然后可以由所有的阵列并行地 进行重构。由于阵列数据能够随机地分布到磁盘,并且在磁盘故障时所有的盘参与重构,因 此,分簇RAID的重构性能和数据可靠性能够得以提高。
[0082] 概括起来,在一些实施例中,以RAID为例,分块条带可以是在具有特定优先级等 级的列表中的调度单元。对于每个阵列,具有多个列表来管理具有不同优先级等级的分块 条带,例如每个列表对应一个调度组。在重构期间,分块条带被按照从高优先级列表到第优 先级列表的顺序进行调度。一旦选择了 一个分块条带,分块条带内的坏条带应当在该特定 分块条带内被从头到尾地进行重构。
[0083] 针对所选择的坏条带,进行重构的特定方法可以与传统方法相同。以RAID-6为 例,即使有3个磁盘出故障,其仍然能够尝试通过使用复制重构和/或完全重构来重新生成 数据并写入新的位置,该位置可以由分配器来分配。复制重构是一种从故障盘复制数据以 恢复数据的方法;而完全重构是从幸存的磁盘中读取数据,并且然后通过读取数据来重新 生成丢失数据的方法。考虑到当前大部分的故障磁盘只是部分故障,故障盘内的数据仍然 是可读的,因此,对于具有多于2个坏SU的条带,可以采用将复制重构和传统完全重构方法 组合的方式来恢复数据。
[0084] 以上参照附图描述了根据本公开的实施例的用于存储设备管理的方法。以下将参 照图8描述根据本公开的实施例的用于存储设备管理的装置800。图8示意性地示出装置 800的结构。该装置800可以被配置成实施以上参照附图4所描述的任一方法,但是不限于 实施以上所描述的方法。类似地,以上所描述的方法可以由装置800来实施,但是并不限于 由该装置800来实施。
[0085] 如图8所示,装置800包括坏存储单元收集器801,被配置成收集所述存储设备中 需要进行重构的坏存储单元(例如,坏条带);优先级控制器802,被配置成确定所述坏存储 单元中每个坏存储单元的重构优先级等级;以及重构调度器803,被配置成基于所确定的 所述重构优先级等级度所述坏存储单元的重构。
[0086] 根据本公开的一个实施例,该存储设备可以是分簇的独立磁盘冗余阵列(RAID), 例如RAID-6,并且,该坏存储单元为坏条带。但是本公开的实施例并不限于此,而是也可以 应用于其他现有的或将来开发的其他的存储设备,只要其中存在类似的问题,并且与本公 开的实施例的特征兼容。
[0087] 根据本公开的又一实施例,坏存储单元收集器801 (例如,坏条带收集器),可以被 配置成通过扫描存储设备的映射树或者重新映射树来收集需要进行重构的坏存储单元。例 如,在本公开的一个实施例中,有两个条件可以触发坏存储单元收集器801工作:
[0088] 条件1 :在系统运行期间物理存储设备,例如磁盘出故障。这种情况容易处理。以 物理磁盘为例,由于每个物理磁盘具有重新映射树以描述其中的区块的使用;一旦物理磁 盘出故障,则重新映射树能够被搜索以获得所有阵列的所有坏条带。
[0089] 条件2 :系统重启并且存储设备重新装配后发现物理存储设备(例如磁盘)丢失。 这种情况不能够由物理磁盘的重新映射树来处理。但是,在例如RAID中,却可以利用一个 很重要的特性来处理。例如,如图5所示,如果不能够在存储设备的映射树中找到某一个 SU,但是同一条带的其他SU却能够在他们的映射树中被找到,则意味着区块丢失,并且需 要重构。因此,在系统重启后,需要坏条带收集器801执行例如图4中的步骤S401来扫描 (例如所有逻辑单元LUN的)映射树,以检查是否发生了数据丢失。因为用于映射树和重 新映射树的所有数据都被保存在存储器中,坏条带收集器801所执行的动作的开销被最小 化。
[0090] 在本公开的又一实施例中,优先级控制器802被配置成基于每个坏存储单元是 否位于存储设备上被检测到媒体错误的区域来确定每个坏存储单元的重构优先级等级,和 /或基于每个坏存储单元中包含的损坏的子存储单元(例如坏条带单元(SU))的数目来确 定每个坏存储单元的重构优先级等级。例如,以RAID-6为例,其中的坏条带可以被设置为 如表1所示的5个优先级等级。
[0091] 根据本公开的另一实施例,存储设备包括多个阵列对象,并且其中优先级控制器 802被配置成针对所述存储设备的每个阵列对象,管理一个坏存储单元池,用于维持所有坏 存储单元的信息用于重构;以及将所述坏存储单元池内的坏存储单元划分到具有不同优先 级等级的多个调度组。例如,以分簇的RAID为例,其可以被分成逻辑域和物理域。在逻辑域 中实现数据保护,从中输出阵列对象,并且假定RAID-6算法被用于使数据具有高可靠性。 在每个阵列对象内,管理一个坏条带池。为了将坏条带(即,坏存储单元)分成具有不同优 先级等级的组,在坏条带池内管理5个调度组,其中每个调度组具有不同的优先级等级。例 如,具有最高优先级等级的调度组管理所有的具有多于2个坏SU的需要被重构的条带,而 具有最低优先级等级的调度组管理具有1个坏SU的所有条带。
[0092] 在本公开的一些实施例中,重构调度器803被配置成根据多个调度组的优先级等 级从高到低的顺序,选择要重构的调度组;以及在选择要重构的调度组后,对所选择的调度 组内的所有坏存储单元顺序地执行重构。在本公开的另一实施例中,重构调度器803进一 步被配置成在选择要重构的调度组后,从所选择的调度组中顺序地选取分块条带,其中所 述分块条带包括多个连续的存储单元;以及对所选取的所述分块条带内的所有坏存储单元 顺序地执行重构。
[0093] 根据本公开的实施例的用于存储设备管理的装置,能够实现基于优先级的重构。 基于优先级的重构的核心思想在于使得需要被重构的坏存储单元(例如,RAID中的坏条 带)是可调度的。通过基于优先级的重构装置,重构过程变得足够精明以选择合适的调度 顺序来重构坏存储单元,而不只是从头到尾顺序进行数据恢复。该装置的优势很明显。例 如,以RAID为例,在那些严重的坏存储单元(例如坏条带)被处理之后,RAID能够更快地 步出脆弱状态,并进入安全状态。由于脆弱状态的持续时间变短,在RAID处于降级状态时 数据可靠性能够得以改善。
[0094] 根据本公开的一个实施例,重构调度器803进一步被配置成针对存储设备包括的 多个阵列对象中的每个阵列对象,并行地执行调度重构的步骤,例如,对于每个阵列对象, 并行地执行参照图4所描述的步骤S403。在本公开的另一实施例中,重构调度器803还被 配置成对存储设备所包括的多个阵列对象,串行地执行调度重构。
[0095] 在本公开的进一步的实施例中,该所述存储设备被分离成逻辑域和物理域,其中 所述逻辑域用于实现数据保护,并且所述物理域负责物理存储设备管理;并且,其中所述逻 辑域包括阵列对象,所述阵列对象建立在多个逻辑单元编号LUN之上;所述LUN的地址空间 被分成多个分块;每个分块包括多个条带单元SU ;并且,来自不同LUN的多个所述SU组成 一个存储单元(例如,坏条带),而来自不同LUN的多个分块组成分块条带;所述物理域包 括多个物理存储设备;所述多个物理存储设备中的每个包括多个区块;并且所述逻辑域中 的所述分块被区块分配器映射到所述物理域中的所述区块。
[0096] 通过方法400和装置800,能够缩短处于脆弱状态的持续时间,并且提高在重构时 段期间的数据可靠性。在图9中图示了存储设备的脆弱状态持续时间的变化。由图9可以 观察到,根据本公开的实施例的方法和装置,脆弱状态持续时间能够得以缩短。应该注意的 是,尽管图9中示出3种状态,但是取决于存储设备的冗余度,该状态数可以不同,因此本公 开的实施例绝不受限于此。例如,对于能够容忍3个磁盘错误的存储设备,可以存在4个状 态,分别为能够容忍3个磁盘错误的状态,能够容忍2个磁盘错误的状态,能够容忍2个磁 盘错误的状态,和不能容忍其他磁盘错误的状态。
[0097] 图10是根据本公开的一个实施例的装置的示例架构。其中示出作为坏存储单元 收集801的示例的坏条带收集器可以被用于收集所有阵列的所有坏条带。在分簇的RAID 中,一旦一个磁盘故障,所有阵列中的条带将受到影响。因此,坏条带收集器可以被用来收 集所有阵列的坏条带。除了系统运行期间磁盘故障的情况,在系统重启并且存储设备被重 组之后,坏条带收集器也可以检查是否存在坏条带。坏条带收集器对于重构模块很重要。最 大的挑战在于如何保证所有的环条带都被收集。例如,在系统重启并且一个磁盘被从RAID 中移除时,如何检查在所有阵列中受影响的条带。如前所述,根据本公开的一个实施例,该 检查可以由坏条带收集器基于映射树和/或重新映射树来完成。在图10的示例中,每个阵 列具有一个坏条带池来维持用于重构的所有坏条带信息,其特征在于坏条带池内的坏条带 具有不同的优先级等级。该优先级等级可以由图8中的优先级控制器来确定。重构调度器 可以从坏条带池选取坏条带并且然后进行重构。与传统方法/装置相比,坏条带被根据优 先级等级从坏条带池中选取,而不是按照从头到尾挨个的顺序进行选取。因此,与传统RAID 重构方法/装置相比,坏条带收集器和基于优先级的坏条带池可以被看作实现基于优先级 的重构的核心部分。
[0098] 根据本公开的另一实施例,用于存储设备管理的装置的工作原理示意图可以如图 11所示。例如,以分簇的RAID为例,将RAID分成逻辑域和物理域。在逻辑域中实现数据保 护,从中输出阵列对象。在每个阵列对象内,管理一个坏条带池。为了将坏条带分成具有不 同优先级等级的组,在坏条带池内管理多个调度组,其中每个调度组具有不同的优先级等 级。例如,具有最高优先级等级的调度组管理所有的具有多于2个坏SU的需要被重构的条 带,而具有最低优先级等级的调度组管理具有1个坏SU的所有条带。坏条带收集器可以基 于触发条件而工作,如前所述,该触发条件可以是在系统运行期间物理存储设备,例如磁盘 出故障。或者在系统重启后扫描并发现物理存储设备(例如磁盘)丢失。另外,如前参照 图4所述的,针对选择的坏条带,进行重构的特定方法可以与传统方法相同。
[0099] 以上参考图4和图8所描述的方法和装置可以在数据域分簇的RAID中实现,并且 本公开的发明人已经验证了其工作良好并且能够例如在RAID-6有2个磁盘出故障时改善 数据的可靠性。以下从3个方面来说明基于本公开的实施例的优势。
[0100] 1)具有两个坏SU的条带的百分比
[0101] 为了测试存储的数据的可靠性,使具有4架(shelves)配置的分簇的RAID中的2 个磁盘同时出故障,并且发现这种情况下有7. 8%的坏条带具有2个坏SU,如图12所示。另 外,对六架配置进行了同样的测试,并且发现只有4. 2%的坏条带具有2个坏SU,如图13所 不。
[0102] 这两次测试的结论可以总结如下:
[0103] -没有太多的坏条带具有2个坏SU。如果这些坏条带能够根据本公开的实施例的 方法被以高优先级等级尽快地处理,则RAID将不会长时间停留在脆弱状态,并且在RAID的 降级阶段数据可靠性能够被改善。
[0104] -架越多,在2个磁盘出故障后具有2个坏SU的坏条带越少。这意味着,架越多, 则根据本公开的实施例的方法对具有2个坏SU的坏条带优先调度重构,将使得在2个磁盘 出故障后停留在脆弱状态的时间越短。
[0105] 2)容忍更多的故障盘
[0106] 基于这种原型,对于RAID-6同时移除两个磁盘。并且在大约15分钟后,从该RAID 移除另一磁盘。测试显示RAID仍然能够工作而没有数据丢失。原因是,通过使用根据本公 开的实施例的基于优先级的重构,停留在脆弱状态的时间被缩短到很短的时间。如图14所 示,对于分簇的RAID的6架配置,脆弱状态的时间已经被缩短到大约15分钟。这意味着, 在2个磁盘出故障15分钟后,RAID能够容忍对于RAID-6的第三个磁盘故障。显然,基于 优先级的重构能够在数据重构时段期间改善数据的可靠性。
[0107] 3)相对于现有技术的优点
[0108] 与现有方法相比,根据本公开的实施例的用于存储设备管理的方法/装置能够显 著缩短脆弱状态的持续时间。详细的比较可参见图9和图14。通过本文提出的方法/装 置,存储设备脆弱状态的持续时间可以缩短为大约为15分钟,而现有技术中该时间为好几 个小时。
[0109] 概括而言,本公开的实施例提出了用于存储设备管理的方法/装置,使得能够在 重构时段期间,对坏存储单元进行基于优先级地调度重构,以缩短在存储设备停留在脆弱 状态的持续时间。尽管主要以分簇的RAID为例描述了本公开提出的方法/装置的实施方 式,但是,如本领域技术人员能够理解的,本公开的实施例并不限于此。
[0110] 本领域技术人员应当认识到,这里描述的任何结构图表示实现本公开的原理的说 明性原理图。类似地,应当理解,这里描述的流程图表示可以在机器可读介质中具体表示并 且由机器或处理设备执行的各种过程,不论这样的机器或处理设备是否被明确示出。
[0111] 本领域普通技术人员还应当理解,根据本公开的实施例的装置800所包含的各单 元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。例如,在某些实施方式 中,装置800可以利用软件和/或固件来实现。备选地或附加地,装置800可以部分地或者 完全地基于硬件来实现。例如,装置800中的一个或多个单元可以实现为集成电路(1C)芯 片、专用集成电路(ASIC)、片上系统(S0C)、现场可编程门阵列(FPGA),等等。本公开的范围 在此方面不受限制。
[0112] 本公开可以是系统、装置、设备、方法和/或计算机程序产品。根据本公开的一个 实施例,本发明可以通过一种用于存储设备管理的装置来实现,该装置包括至少一个处理 器;以及至少一个包括计算机程序代码的存储器,其中所述至少一个存储器和所述计算机 程序代码被配置成与所述至少一个处理器一起,促使所述装置执行前文参考图4所述的任 一方法。根据本公开的另一实施例,本发明可以通过一种计算机程序产品来实现,所述计 算机程序产品被体现在计算机可读的介质中并且包括计算机可读程序指令,当被加载到装 置中时,所述计算机可读程序指令执行根据本公开的实施例的任一方法。
[0113] 上面结合附图所进行的描述只是为了说明本公开而示例性给出的。本领域技术人 员可以理解,能够基于上面所描述的本公开的原理提出不同的结构,虽然这些不同的结构 未在此处明确描述或示出,但都体现了本公开的原理并被包括在其精神和范围之内。此外, 所有此处提到的示例明确地主要只用于教导目的,以帮助读者理解本公开的原理以及发明 人所贡献的促进本领域的构思,并不应被解释为对本公开范围的限制。此外,本文所有提到 本公开的原则、方面和实施方式的陈述及其特定的示例包含其等同物在内。
【主权项】
1. 一种用于存储设备管理的方法,包括: 收集所述存储设备中需要进行重构的坏存储单元; 确定所收集的所述坏存储单元中的每个坏存储单元的重构优先级等级;以及 基于所确定的所述重构优先级等级来调度所述坏存储单元的重构。2. 根据权利要求1所述的方法,其中所述存储设备为分簇的独立磁盘冗余阵列RAID, 并且所述坏存储单元为坏条带。3. 根据权利要求1所述的方法,其中收集所述存储设备中需要进行重构的坏存储单元 包括: 通过扫描所述存储设备的映射树或者重新映射树来收集需要进行重构的坏存储单元。4. 根据权利要求1所述的方法,其中确定所收集的所述坏存储单元中每个坏存储单元 的重构优先级等级包括: 基于每个坏存储单元是否位于所述存储设备上被检测到媒体错误的区域,和/或每 个坏存储单元中包含的损坏的子单元的数目,来确定每个坏存储单元的所述重构优先级等 级。5. 根据权利要求1所述的方法,其中所述存储设备包括多个阵列对象,并且其中确定 所收集的所述坏存储单元中每个坏存储单元的重构优先级等级包括: 针对所述存储设备的每个阵列对象,管理一个坏存储单元池,以维持所有坏存储单元 的信息用于重构;以及 将所述坏存储单元池内的坏存储单元划分到具有不同优先级等级的多个调度组。6. 根据权利要求5所述的方法,其中基于所确定的所述重构优先级等级调度所述坏存 储单元的重构包括: 根据所述多个调度组的所述优先级等级从高到低的顺序,选择要重构的调度组;以及 在选择要重构的调度组后,对所选择的调度组内的所有坏存储单元顺序地执行重构。7. 根据权利要求6所述的方法,其中在选择要重构的调度组后,对所选择的调度组内 的所有坏存储单元顺序地执行重构包括: 在选择要重构的调度组后,从所选择的所述调度组中顺序地选取分块条带,其中所述 分块条带包括多个连续的存储单元;以及 对所选取的所述分块条带内的所有坏存储单元顺序地执行重构。8. 根据权利要求5所述的方法,其中基于所确定的所述重构优先级等级来调度所述坏 存储单元的重构进一步包括: 针对所述存储设备所包括的多个阵列对象中的每个阵列对象,并行地执行调度所述重 构的步骤。9. 根据权利要求1到8中任一项所述的方法,其中所述存储设备被分成逻辑域和物理 域,其中所述逻辑域用于实现数据保护,并且所述物理域负责物理存储设备的管理;并且 所述逻辑域包括阵列对象,所述阵列对象建立在多个逻辑单元编号LUN之上;所述LUN 的地址空间被分成多个分块;每个分块包括多个子存储单元;来自不同LUN的多个子存储 单元组成一个存储单元,而来自不同LUN的多个分块组成分块条带;所述物理域包括多个 物理存储设备;所述多个物理存储设备中的每一个包括多个区块;并且 所述逻辑域中的所述分块被映射到所述物理域中的所述区块。10. -种用于存储设备管理的装置,包括: 坏存储单元收集器,被配置成收集所述存储设备中需要进行重构的坏存储单元; 优先级控制器,被配置成确定所收集的所述坏存储单元中每个坏存储单元的重构优先 级等级;以及 重构调度器,被配置成基于所确定的所述重构优先级等级调度所述坏存储单元的重 构。11. 根据权利要求10所述的装置,其中所述存储设备为分簇的独立磁盘冗余阵列 RAID,并且所述坏存储单元为坏条带。12. 根据权利要求10所述的装置,其中所述坏存储单元收集器进一步被配置成: 通过扫描所述存储设备的映射树或者重新映射树来收集需要进行重构的坏存储单元。13. 根据权利要求10所述的装置,其中所述优先级控制器进一步被配置成: 基于每个坏存储单元是否位于所述存储设备上被检测到媒体错误的区域,和/或每个 坏存储单元中包含的损坏的子存储单元的数目,来确定每个坏存储单元的所述重构优先级 等级。14. 根据权利要求10所述的装置,其中所述存储设备包括多个阵列对象,并且其中所 述优先级控制器进一步被配置成: 针对所述存储设备的每个阵列对象,管理一个坏存储单元池,以维持所有坏存储单元 的信息用于重构;并且 将所述坏存储单元池内的坏存储单元划分到具有不同优先级等级的多个调度组。15. 根据权利要求14所述的装置,其中所述重构调度器被配置成: 根据所述多个调度组的所述优先级等级从高到低的顺序,选择要重构的调度组;以及 在选择要重构的调度组后,对所选择的调度组内的所有坏存储单元顺序地执行重构。16. 根据权利要求15所述的装置,其中所述重构调度器进一步被配置成: 在选择要重构的调度组后,从所选择的所述调度组中顺序地选取分块条带,其中所述 分块条带包括多个连续的存储单元; 对所选取的所述分块条带内的所有坏存储单元顺序地执行重构。17. 根据权利要求14所述的装置,其中所述重构调度器进一步被配置成: 针对所述存储设备所包括的多个阵列对象中的每个阵列对象,并行地执行调度所述重 构的步骤。18. 根据权利要求10到17中任一项所述的装置,其中所述存储设备被分离成逻辑域和 物理域,其中所述逻辑域用于实现数据保护,并且所述物理域负责物理存储设备管理;并且 所述逻辑域包括阵列对象,所述阵列对象建立在多个逻辑单元编号LUN之上;所述LUN 的地址空间被分成多个分块;每个分块包括多个子存储单元;来自不同LUN的多个所述子 存储单元组成一个存储单元,而来自不同LUN的多个分块组成分块条带;所述物理域包括 多个物理存储设备;所述多个物理存储设备中的每个包括多个区块;并且 所述逻辑域中的所述分块被映射到所述物理域中的所述区块。19. 一种用于存储设备管理的装置,包括: 至少一个处理器;以及 至少一个包括计算机程序代码的存储器, 其中所述至少一个存储器和所述计算机程序代码被配置成:与所述至少一个处理器一 起,促使所述装置执行根据权利要求1-9中的任一权利要求所述的方法。20. -种计算机程序产品,所述计算机程序产品被体现在计算机可读的介质中并且包 括计算机可读程序指令,当被加载到装置中时,所述计算机可读程序指令执行根据权利要 求1-9中任一权利要求所述的方法。
【文档编号】G06F3/06GK105892934SQ201410813709
【公开日】2016年8月24日
【申请日】2014年12月19日
【发明人】吴忠杰, 邹勇, 刘子锐, 易正利, 吴飞
【申请人】伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1