用于管理存储系统的方法和设备与流程

文档序号:16626912发布日期:2019-01-16 06:11阅读:104来源:国知局
用于管理存储系统的方法和设备与流程

本公开的各实现方式涉及存储管理,更具体地,涉及用于管理存储系统(例如,独立磁盘冗余阵列(redundantarrayofindependentdisks,raid)的方法和设备。



背景技术:

随着数据存储技术的发展,各种数据存储设备已经能够向用户提供越来越高的数据存储能力,并且数据访问速度也有了很大程度的提高。在提高数据存储能力的同时,用户对于数据可靠性和存储系统的响应时间也提出了越来越高的需求。

目前,已经开发出了基于raid的多种数据存储系统来提高数据的可靠性。当存储系统中的一个或者多个磁盘出现故障时,可以从其他正常操作的磁盘上的数据来恢复出故障磁盘中的数据。然而,通常存储系统中的存储设备的使用时间越长,则这些存储设备出现故障的概率则越高。因而随着存储系统的使用时间的增加,存储系统中出现故障的概率将越来越大。因而,如何以更为可靠和安全的方式管理存储系统、进而降低丢失存储系统中的数据的可能性,成为一个研究热点。



技术实现要素:

因而,期望能够开发并实现一种以更为安全并且可靠的方式来管理存储系统的技术方案。期望该技术方案能够与现有的存储系统相兼容,并且通过改造现有存储系统的各种配置,来以更为可靠的方式来管理存储系统中的数据。

根据本公开内容的一个实现方式,提出了一种用于管理存储系统的方法。存储系统包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备,该方法包括:响应于接收到向存储系统中写入目标数据的请求,将目标数据存储至第一层级的多个存储设备中的第一部分的存储设备;将基于第一算法确定的第一部分的存储设备中的数据的第一校验值存储至第一层级的多个存储设备中的第二部分的存储设备;以及将基于第二算法确定的第一部分的存储设备中的数据的第二校验值存储至第二层级的至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,提供了一种用于管理存储系统的设备,包括:一个或者多个处理器;耦合至所述一个或者多个处理器中的至少一个处理器的存储器;在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述设备执行一种用于管理存储系统的方法。所述方法包括:响应于接收到向存储系统中写入目标数据的请求,将目标数据存储至第一层级的多个存储设备中的第一部分的存储设备;将基于第一算法确定的第一部分的存储设备中的数据的第一校验值存储至第一层级的多个存储设备中的第二部分的存储设备;以及将基于第二算法确定的第一部分的存储设备中的数据的第二校验值存储至第二层级的至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,提供了一种用于管理存储系统的设备,包括:第一存储模块,配置用于响应于接收到向所述存储系统中写入目标数据的请求,将所述目标数据存储至所述第一层级的多个存储设备中的第一部分的存储设备;第二存储模块,配置用于将基于第一算法确定的所述第一部分的存储设备中的数据的第一校验值存储至所述第一层级的多个存储设备中的第二部分的存储设备;以及第三存储模块,配置用于将基于第二算法确定的所述第一部分的存储设备中的数据的第二校验值存储至所述第二层级的所述至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,提供了一种计算机程序指令,当由至少一个处理器执行所述计算机程序指令时,使得所述至少一个处理器执行根据上文所述的用于管理存储系统的方法。

采用本公开的技术方案,可以以更高的可靠性管理存储系统,进而提高存储系统的运行效率和安全性。

附图说明

结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:

图1示意性示出了适于实现本公开实现方式的示例性计算系统的框图;

图2a和图2b分别示意性示出了其中可以实现根据本公开的实现方式的应用环境的示意图;

图3示意性示出了根据本公开的一个实现方式的存储系统的框图;

图4示意性示出了根据本公开的一个实现方式的用于管理存储系统的方法的流程图;

图5a和5b分别示意性示出了根据本公开的一个实现方式的存储系统的框图;

图6a和6b分别示意性示出了根据本公开的一个实现方式的存储系统的框图;

图7示意性示出了根据本公开的一个实现方式的存储系统的框图;以及

图8示意性示出了根据本公开的一个实现方式的用于管理存储系统的设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的优选实现方式。虽然附图中显示了本公开的优选实现方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现方式所限制。相反,提供这些实现方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了适于用来实现本公开实现方式的示例性计算系统100的框图。如图1所示,计算机系统100可以包括:cpu(中央处理单元)101、ram(随机存取存储器)102、rom(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和触摸屏显示器114。在这些设备中,与系统总线104耦合的有cpu101、ram102、rom103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及触摸屏显示器114与显示控制器109耦合。应当理解,图1所示的结构框图仅仅是为了示例的目的,而不是对本公开范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。

所属技术领域的技术人员知道,本公开可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实现方式中,本公开还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如使用因特网服务提供者来通过因特网连接)。

下面将参照本公开实现方式的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其他可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。

也可以把这些计算机程序指令存储在能使得计算机或其他可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。

也可以把计算机程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其他可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。

独立磁盘冗余阵列可以将多个存储设备组合起来,成为一个磁盘阵列。通过提供冗余的存储设备,可以使得整个磁盘阵列的可靠性大大超过单一的存储设备。raid可以提供优于单一的存储设备的各种优势,例如,增强数据整合度,增强容错功能,增加吞吐量或容量,等等。raid存在多个标准,例如raid-1,raid-2,raid-3,raid-4,raid-5,raid-6,三重校验值raid,等等。关于raid级别的更多细节,本领域技术人员例如可以参见https://en.wikipedia.org/wiki/standard_raid_levels、以及https://en.wikipedia.org/wiki/nested_raid_levels等。

图2a示意性示出了根据一个技术方案的独立磁盘冗余阵列的结构的示意图200a。在图2a中,以包括五个独立存储设备(210、212、214、216以及218)的raid-5(4d+1p,在此的4d表示其中的4个存储设备用于存储数据,而1p表示1个存储设备用于存储p校验值)阵列为示例,来说明raid的工作原理。应当注意,尽管图2a中示意性示出了五个存储设备,在其他的实现方式中,根据raid的版本不同,还可以包括更多或者更少的存储设备。尽管图2a中示出了条带220、222和224,在其他的示例中,raid系统还可以包括不同数量的条带。

在raid中,条带跨越多个物理存储设备(例如,条带220跨越了存储设备210、212、214、216以及218)。可以简单地将条带理解为多个存储设备中的满足一定地址范围的存储区域。在条带220中存储的数据包括多个部分:存储在存储设备210a上的数据b00、存储在存储设备212a上的数据b01、存储在存储设备214a上的数据b02、存储在存储设备216a上的数据b03、以及存储在存储设备218a上的p校验值p0。在此示例中,数据块b00、b01、b02、以及b03是被存储的数据,而数据块p0是被存储数据的校验值。

在其他条带中存储数据的方式也类似于条带220a,不同之处在于,有关其他数据块的校验值可以存储在不同于存储设备218的存储设备上。以此方式,当多个存储设备210、212、214、216以及218中的一个存储设备出现故障时,可以从其他的正常的存储设备中恢复出故障设备中的数据。

图2b示意性示出了根据一个技术方案的独立磁盘冗余阵列的重建过程的示意图200b。如图2b所示,当一个存储设备(例如,以阴影示出的存储设备218)出现故障时,可以从其余的正常操作的多个存储设备210、212、214、216中恢复数据。此时,可以向raid中加入新的后备存储设备218b来替代存储设备218,以此方式,可以将恢复的数据写入218b并实现系统的重建。应当注意,尽管在上文中参见图2a和图2b描述了包括5个存储设备(其中4个存储设备用于存储数据,1个存储设备用于存储校验值)的raid-5的存储系统,根据其他raid等级的定义,还可以存在包括其他数量的存储设备的存储系统。例如,基于raid-6的定义,可以利用两个存储设备来分别存储校验值p和q。又例如,基于三重校验值(triple-parity)raid的定义,可以利用三个存储设备来分别存储校验值p、q和r。

将会理解,存储系统中的存储设备(例如,硬盘)的可靠性通常随着存储设备的使用时间的增加而降低。换言之,存储设备的使用时间越长则该存储设备出现故障的概率则越大。通常而言,为了确保存储系统中的数据的安全,可以采用具有更高可靠性级别的存储方案(例如,raid-6或者三重校验值raid)。然而,具有更高可靠性级别的存储方案一方面会导致较为昂贵的开销。另一方面,由于这些存储方案需要保存更多的冗余数据,因而对数据进行写入时将会占用更多的时间,进而降低存储系统的访问效率。因而,如何在确保可靠性的同时兼顾访问效率,成为一个亟待解决的问题。

实现方式的概述

为了解决上述缺陷,本公开的实现方式提供了一种用于管理存储系统的方法、设备和计算机可读存储介质。具体地,根据本公开内容的一个实现方式,提供了一种包括多个层级的存储系统。参见图3,其中示意性示出了根据本公开的一个实现方式的存储系统300的框图。

具体地,存储系统300包括第一层级310的多个存储设备210、212、214、216、218以及第二层级320的至少一个后备存储设备330。在此的第一层级310中的多个存储设备例如可以是上文参见图2a和图2b描述的raid-5存储系统中的多个存储设备210、212、214、216、218。为方便描述起见,在此第一层级310中的存储设备210、212、214、216用于存储数据部分,而存储设备218用于存储校验值。另外,存储系统300还包括第二层级320的后备存储设备330。

根据本公开内容的一个实现方式,第一层级310的存储设备用于响应于来自用户的请求而存储该请求所指定的目标数据(targetdata)。由于此时第一层级310中仅包括较少数量的冗余数据,因而可以快速地向存储系统300中写入输入目标数据。第二层级320可以基于更高的可靠性等级来存储更多的校验值,因而可以在已经向第一层级310中写入目标数据后,在存储系统300的后台基于更高的可靠性等级确定并且存储与目标数据相关联的校验值。

根据本公开内容的一个实现方式,第一层级310的多个存储设备可以按照较低可靠性等级(例如,raid-5)来存储数据,而第二层级320的至少一个后备存储设备可以按照较高的可靠性等级(例如,raid-6或者三重校验值raid),与第一层级310中的存储设备一起存储目标数据及其相关的校验值。

采用如图3所示的存储系统300,一方面可以以较高的效率向存储系统300写入目标数据,另一方面,在已经完成写入目标数据之后,还可以在存储系统300中实现以更高的可靠性等级存储目标数据。以此方式,可以在确保存储系统300的响应速度的同时,以更为可靠的方式来管理存储系统300。

尽管图3中仅示意性地示出了一个后备存储设备330,在其他具体实现中,还可以包括多个后备存储设备。例如,当基于三重校验值raid来实现第二层级320时,除了后备存储设备330以外,还可以存在另一后备存储设备。

实现方式的操作流程

在下文中将参见图4来描述本公开的实现方式的更多细节,其中图4示意性示出了根据本公开的一个实现方式的用于管理存储系统的方法400的流程图。在此方法400中的存储系统可以是上文参见图3描述的存储系统300。具体地,在方框410处,响应于接收到向所述存储系统300中写入目标数据的请求,将所述目标数据存储至所述第一层级310的多个存储设备中的第一部分的存储设备。在此实现方式中,第一部分的存储设备可以是第一层级310中的用于存储数据的存储设备。继续上文参见图3描述的存储系统300的示例,此时第一层级310中的第一部分可以包括存储设备210、212、214、以及216,这些存储设备被用于存储目标数据本身。

在方框420处,将基于第一算法确定的所述第一部分的存储设备中的数据的第一校验值存储至所述第一层级310的多个存储设备中的第二部分的存储设备。此时,第一算法可以是根据较低可靠性的存储策略所定义的算法。例如,当第一层级310是基于raid-5来形成时,此时第一算法可以是raid-5所支持的用于确定p校验值的算法,例如基于“异或(exclusive-or)”算法。

通过将目标数据分布在多个存储设备210、212、214、216上,并且针对每个存储设备中所存储的数据执行“异或”运算,可以获得第一校验值,继而可以将获得的第一校验值存储至第一层级310中的第二部分的存储设备。在此第二部分的存储设备是用于存储校验值的存储设备。继续图3的示例,第二部分的存储设备可以是存储设备218。

根据本公开内容的一个实现方式,响应于将所述第一校验值存储至所述第二部分的存储设备,返回指示所述目标数据已经被写入至所述存储系统300的响应。此时,由于已经向存储系统300中的第一层级310写入了目标数据及其校验值,并且目标数据已经受到raid-5的存储策略的保障。

在方框430处所示的操作可以在存储系统300内部,以后台的方式来执行。此时,由于已经向存储系统300的用户返回了写入操作完成的响应,因而此时用户与存储系统300之间的写入交互已经完成。用户不必关心在存储系统300内部以后台方式执行的后续操作。换言之,在方框430处示出的操作对于用户而言是透明的。当已经执行方框430的操作之后,目标数据可以获得更为可靠的保障,例如,按照raid-6进行存储。

在方框430处,可以基于第二算法确定所述第一部分的存储设备中的数据的第二校验值,并该将第二校验值存储至所述第二层级320的所述至少一个后备存储设备中的第一后备存储设备。进一步,为了获得更高的可靠性,还可以将利用第二层级320的后备存储设备来存储目标数据的进一步的校验值。具体地,可以基于具有更高可靠性的存储策略的算法来确定存储在第一部分(即,存储设备210、212、214、216)中的数据(即,目标数据)的第二校验值,并将该第二校验值存储至第二层级320中的后备存储设备(例如,如图3所示的后备存储设备330)。

继续上文图3的示例,存储设备218可以存储目标数据的第一校验值(例如,p校验值),而存储设备330可以存储目标数据的第二校验值(例如,q校验值)。此时,图3所示的的存储系统300可以构成4d+1p+1q(在此的4d表示4个存储设备用于存储数据,1p表示1个存储设备用于存储p校验值,1q表示1个存储设备用于存储q校验值)的raid-6存储阵列。

在下文中,将参见图5a描述方法400的具体流程。如图5a示意性示出了根据本公开的一个实现方式的存储系统500a的框图。为简单起见,在图5a中的存储系统500a仅包括一个条带。如图5a所示,以空白方框示出了用于存储数据的数据块(例如,数据块510、512、514、516),以斜纹框示出了用于存储第一校验值的数据块(例如,数据块518),并且以网格框示出了用于存储第二校验值的数据块(例如,数据块530)。此时该条带中的每个数据块510、512、514、516和518分别位于不同的存储设备210、212、214、216以及218中。数据块510、512、514、516中分别存储有来自目标数据的数据b00、b01、b02、b03,并且数据块518中存储有根据第一算法确定的数据b00、b01、b02、b03的校验值p0。

在此实现方式中,可以基于raid-5的定义来确定校验值p0。例如,可以基于如下公式1来确定校验值p0:

p0=fp(b00,b01,b02,b03)公式1

将会理解,在上文中参见图5a示意性示出了包括一个条带的存储系统的示例,现在将参见图5b示出包括多个条带的存储系统500b的示例。根据本公开内容的一个实现方式,将与所述第一条带相关联的第二校验值、以及与所述第二条带相关联的校验值存储在不同的存储设备上。

换言之,与不同条带相关联的后备存储设备可以对应于不同的物理存储设备。具体地,例如对于图5b中示出的第一条带542中的用于存储第二校验值的数据块530、以及第二条带542中的用于存储第二校验值的数据块520可以位于不同的物理存储设备上。参见图3所示的存储系统300的框图,数据块530可以位于存储设备330上,而数据块520可以位于存储设备210上。

当存储系统中包括另一条带时,与该另一条带相关联的第二校验值可以位于如图3所示的存储设备212、214、216、或者218上。根据本公开内容的一个实现方式,当存在多个条带时,可以将存储与当前条带相关联的第二校验值的位置进行偏移,以确定用于存储与下一条带相关联的第二校验值的位置。例如,对于如图3所示的包括6个存储设备的存储系统300而言,可以将与第一条带相关联的第二校验值存储至存储系统300中的第一个存储设备210,可以将与第二条带相关联的第二校验值存储至存储系统300中的第二个存储设备212,…,可以将与第6条带相关联的第二校验值存储至存储系统300中的第6个存储设备330。当存储系统300中的6个存储设备都已经被前6个条带使用过之后,可以开始下一循环。即,可以将与第7条带相关联的第二校验值存储至存储系统300中的第一个存储设备210,可以将与第8条带相关联的第二校验值存储至存储系统300中的第二个存储设备212,…,以此类推。

根据本公开内容的实现方式,可以基于不同的规则来触发在方框430中所示的操作。例如,可以在已经向第一层级310中写入目标数据之后立刻触发,或者还可以响应于接收到提高所述存储系统的可靠性的请求,来触发方框430所示的操作。

如果在第一部分中的数据被修改后启动提高可靠性的操作,则可以基于所述第二算法来确定所述第一部分的所述存储中的被修改的数据的校验值,来作为所述第二校验值。继而,将确定的所述第二校验值存储至所述第一后备存储设备。此时,存储系统中的数据将得到更为可靠的保障。例如在如图5a和图5b所示的示例中,存储系统将从原来的raid-5(4d+1p)升级至具有更高可靠性的raid-6(4d+1p+1q)。

根据本公开内容的一个实现方式,可以针对每个条带设置标记,并使用该标记来指示是否需要启动上文所述的提高存储系统的可靠性的过程。继而,响应于确定针对某个条带的标记被设置,可以基于该条带中的数据来确定第二校验值,并且在后备存储设备中存储第二校验值。

具体地,可以在不同条件下设置该标记。例如,可以响应于所述第一条带包括的第一层级的第一部分的存储设备中的数据被修改,针对所述第一条带设置标记,并且将该标记作为提高所述存储系统包括的第一条带的可靠性的请求。又例如,由于确定和存储第二校验值将会占用存储系统中的资源,还可以根据存储系统的工作负荷来确定在何时执行用于提高可靠的操作。

当存储系统中包括多个条带时,还可以基于针对特定条带是否设置了标记来仅对该特定条带中的数据进行操作。具体地,可以基于所述第二算法来确定所述第一条带的第一层级的第一部分的存储中的被修改的数据的校验值,并将其作为所述第二校验值;以及将所述第二校验值存储至所述第一后备存储设备。

将会理解,在上文中参见图5a和图5b而描述了使用单一的后备存储设备来存储第二校验值(其中该第二校验值仅包括q校验值)的情况。在其他实现方式中,还可以使用更多的校验值(例如,q校验值和r校验值),并且还可以采用两个存储设备来分别存储该q校验值和r校验值。下文中将参见图6a和图6b来描述,其中图6a和6b分别示意性示出了根据本公开的一个实现方式的存储系统的框图600a和600b。

根据本公开内容的一个实现方式,可以将基于第三算法确定的所述第一部分的存储设备中的数据的第三校验值存储至所述第二层级的所述至少一个后备存储设备中的第二后备存储设备。如图6a示出了针对一个条带来执行上述过程的具体示例。图6a类似于图5a,并且与图5a的不同之处在于,每个条带中可以包括分别用于存储两个校验值(即,q校验值和r校验值)的两个数据块530和610。

此时可以基于raid-6定义中的用于确定q校验值和r校验值的算法来确定第二校验值和第三校验值,并且将其分别存储至第二层级320中的数据块530和610中。具体地,可以基于如下公式2和3来确定q校验值和r校验值。

q0=fq(b00,b01,b02,b03)公式2

r0=fr(b00,b01,b02,b03)公式3

图6b示意性示出了存储系统中包括多个条带的情况,多个条带中的数据块可以按照上文中参见图5b描述的方式来分布。图6b类似于图5b,并且与图5b的不同之处在于,每个条带中可以包括分别用于存储两个校验值(即,q校验值和r校验值)的两个数据块。备选地,尽管未示出,第二层级320中还可以包括更多的后备存储设备以便支持更高的可靠性等级。

在上文中已经参见图5a、图5b、图6a和图6b示出了在第一层级310中包括一个冗余阵列的情况。根据本公开内容的一个实现方式,所述第一层级的存储设备可以包括多个冗余阵列。此时,将所述第二校验值存储至所述第一后备存储设备包括:基于所述第二算法,根据所述多个冗余阵列中的每个冗余阵列包括第一部分的存储设备以及第二部分的存储设备中的数据,确定所述第二校验值;以及将确定的所述第二校验值存储至所述第一后备存储设备。

在下文中将参见图7描述在第一层级310中包括多个冗余阵列的情况。如图7所示,第一层级310包括第一阵列710和第二阵列720。该第一阵列710包括多个存储设备,其中分别位于多个存储设备上的数据块510、512、514、516分别用于存储数据b00、b01、b02、b03,以及数据块518用于存储p校验值(示出为p01)。该第二阵列720包括多个存储设备,其中分别位于多个存储设备上的数据块710、712、714、716分别用于存储数据b04、b05、b06、b07,以及数据块718用于存储p校验值(示出为p02)。

图7所示的存储系统700支持三重校验值raid规则,并且在第二层级320中包括两个存储设备。数据块530和610分别位于两个不同的存储设备上,并且分别用于存储q校验值q0和r校验值r0。此时,可以基于如下公式组来确定各个校验值p01、p02、q0和r0。

p01=fp(b00,b01,b02,b03)

p02=fp(b04,b05,b06,b07)

q0=fq(b00,b01,b02,b03,b04,b05,b06,b07)

r0=fr(b00,b01,b02,b03,b04,b05,b06,b07)公式组1

将会理解,尽管在图7中仅示意性示出了存储系统中的一个条带的示例。在其他实现方式中,类似于图5b以及图6b所示示例,存储系统中还可以包括多个条带,并且多个条带中的q校验值和r校验值可以存储在不同的存储设备上。具体地,可以将存储与当前条带相关联的q校验值和r校验值的位置进行偏移,以确定用于存储与下一条带相关联的q校验值和r校验值的位置。

将会理解,尽管在上文中参见附图描述了在第一层级310中采用4d+1p的raid-5的情况。根据本公开内容的一个实现方式,第一层级中还可以采用支持其他规则的冗余阵列。例如,第一层级310中可以包括两个4d+1p+1q的冗余阵列,并且在第二层级320中可以包括用于存储r校验值的存储设备。此时,整个存储系统可以支持三重校验值。

采用本公开的各个实施方式的存储系统,可以在存储系统内部以后台的方式,计算更多的校验值以支持更高的可靠性。进一步,当第一层级310中包括多个冗余阵列时,还可以在确保数据在存储容量(capacity)中的使用率的情况下提供较高可靠性。参见图7中的示例中一共使用了12个存储设备。其中涉及第一层级310和第二层级320,并且第一层级310中包括两个4d+1p的raid-5阵列,第二层级320中包括两个存储设备分别用于存储q校验值和r校验值。此时在存储系统中将有4+4=8个存储设备用于存储数据,并且1+1+1+1=4个存储设备分别用于存储两个p校验值、一个q校验值和一个r校验值。此时数据比率为8/12,并且支持三重校验值raid。

如果按照基于两个4d+1p的raid-5方式来构建存储系统,此时数据比率为4/(4+1)=4/5。与如图7所示的存储系统700相比,尽管此时数据比率4/5>8/12,然而此时的存储系统仅支持较低的可靠性(即仅支持raid-5),然而根据本公开内容的一个实现方式的存储系统700则支持更为可靠的三重校验值raid。

如果按照基于两个5d+1p的raid-5方式来构建存储系统,此时数据比率为5/(5+1)=5/6。与如图7所示的存储系统700相比,尽管此时数据比率5/6>8/12,然而此时的存储系统仅支持较低的可靠性(即仅支持raid-5),然而根据本公开内容的一个实现方式的存储系统700则支持更为可靠的三重校验值raid。

存储系统的恢复

采用本公开的实现方式,当存储系统中的一个或者多个存储设备出现故障时,可以基于存储系统中存储的冗余数据来恢复故障设备中的数据。

根据本公开内容的一个实现方式,响应于所述第一层级的所述多个存储设备中的第一设备出现故障,基于所述第一层级中的所述第一设备以外的其他存储设备中的数据,恢复所述第一设备中的数据。在此实现方式中,如果在第一层级中仅有一个存储设备出现故障,则可以基于第一层级中的未出现故障的数据来恢复故障设备中数据。

在一个示例中,假设图7中的第一层级310中的数据块512所在的设备出现故障。此时由于数据块510、512、514、516和518是一个4d+1p的冗余阵列中的一个条带中的数据块,并且其中存储的数据b00、b01、b02、b03以及p01满足如下关系p01=fp(b00,b01,b02,b03)。因而可以基于分别存储在数据块510、514、516和518中的数据b00、b02、b03以及p01来恢复数据块512中的数据b01。

在一个示例中,假设图7中的第一层级310中的数据块518所在的设备出现故障。此时可以基于分别存储在数据块510、512、514、516中的数据b00、b01、b02、b03来恢复数据块518中的数据p01。

根据本公开内容的一个实现方式,响应于所述第一后备存储设备出现故障,基于所述第二算法确定所述第一部分的所述存储设备中的所述数据的所述第二校验值;以及基于所述第二校验值恢复所述第一后备存储设备中的数据。

在一个示例中,假设图7中的第二层级320中的数据块530所在的设备出现故障。此时可以基于分别存储在第一层级310中的第一部分的数据(即,数据b00至b07)来恢复数据块530中的数据。

根据本公开内容的一个实现方式,响应于所述第一层级的所述多个存储设备中的第一设备和第二设备出现故障,基于所述存储系统中的除所述第一设备和所述第二设备以外的其他存储设备中的数据,恢复所述第一设备和所述第二设备中的数据。

在一个示例中,假设出现故障的第一设备和第二设备分别位于不同的冗余阵列(例如,如图7所示的第一阵列710和第二阵列720),则可以基于各个阵列中的正常设备中的数据执行恢复。参见图7,假设数据块512以及数据块712所在的设备均出现故障,此时可以根据raid-5的恢复规则,基于存储在数据块510、514、516和518中的数据b00、b02、b03以及p01来恢复数据块512中的数据b01,并且存储在数据块710、714、716和718中的数据b04、b06、b07以及p02来恢复数据块712中的数据b05。

在一个示例中,假设出现故障的第一设备和第二设备位于相同的冗余阵列,则此时的恢复过程将涉及raid-5重建、以及raid-6重建。

将会理解,尽管上文图7中仅示出了在第一层级310包括两个冗余阵列的情况,在其他实现方式中第一层级310还可以包括更多的冗余阵列(例如,3个raid-5阵列)。假设存储系统中的三个存储设备出现故障。如果三个故障设备分别出现在3个raid-5阵列中,则恢复过程将涉及3个raid-5重建。如果三个故障设备位于两个不同的raid-5阵列中,则恢复过程将涉及raid-5重建以及raid-6重建。如果三个故障设备位于同一个raid-5阵列中,则恢复将涉及三重校验值raid重建。

本公开内容的实现方式

图8示意性示出了根据本公开的一个实现方式的用于管理存储系统的设备800的框图。所述存储系统包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备。所述设备800包括:第一存储模块810,配置用于响应于接收到向所述存储系统中写入目标数据的请求,将所述目标数据存储至所述第一层级的多个存储设备中的第一部分的存储设备;第二存储模块820,配置用于将基于第一算法确定的所述第一部分的存储设备中的数据的第一校验值存储至所述第一层级的多个存储设备中的第二部分的存储设备;以及第三存储模块830,配置用于将基于第二算法确定的所述第一部分的存储设备中的数据的第二校验值存储至所述第二层级的所述至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,所述设备800进一步包括:返回模块,配置用于响应于将所述第一校验值存储至所述第二部分的存储设备,返回指示所述目标数据已经被写入至所述存储系统的响应。

根据本公开内容的一个实现方式,所述第三存储模块830进一步配置用于:响应于接收到提高所述存储系统的可靠性的请求,将所述第二校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,所述设备800进一步包括:请求模块,配置用于响应于所述第一部分的存储设备中的数据被修改,发送所述请求。

根据本公开内容的一个实现方式,所述第三存储模块830进一步配置用于:基于所述第二算法来确定所述第一部分的所述存储中的被修改的数据的校验值,确定所述第二校验值;以及将确定的所述校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,所述存储系统包括第一条带,所述第一条带包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备,其中所述请求模块进一步配置用于:响应于所述第一条带包括的第一层级的第一部分的存储设备中的数据被修改,针对所述第一条带设置标记以作为提高所述存储系统包括的第一条带的可靠性的请求。

根据本公开内容的一个实现方式,所述第三存储模块830进一步配置用于:基于所述第二算法来确定所述第一条带的第一层级的第一部分的存储中的被修改的数据的校验值,确定所述第二校验值;以及将所述第二校验值存储至所述第一条带包括的所述至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,所述第三存储模块830进一步配置用于:将基于第三算法确定的所述第一部分的存储设备中的数据的第三校验值存储至所述第二层级的所述至少一个后备存储设备中的第二后备存储设备。

根据本公开内容的一个实现方式,所述设备800进一步包括:恢复模块,配置用于:响应于所述第一层级的所述多个存储设备中的第一设备出现故障,基于所述第一层级中的所述第一设备以外的其他存储设备中的数据,恢复所述第一设备中的数据。

根据本公开内容的一个实现方式,所述恢复模块进一步配置用于:响应于所述第一后备存储设备出现故障,基于所述第二算法确定所述第一部分的所述存储设备中的所述数据的所述第二校验值;以及基于所述第二校验值恢复所述第一后备存储设备中的数据。

根据本公开内容的一个实现方式,所述恢复模块进一步配置用于:响应于所述存储系统中的第二存储设备出现故障,基于所述存储系统中的除所述第一设备和所述第二设备以外的其他存储设备中的数据,恢复所述第一设备和所述第二设备中的数据。

根据本公开内容的一个实现方式,所述存储系统包括第二条带,所述第二条带包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备。所述设备800进一步包括:部署模块,配置用于将与所述第一条带相关联的第二校验值、以及与所述第二条带相关联的第二校验值存储在不同的存储设备上。

根据本公开内容的一个实现方式,所述第一层级的存储设备包括至少一个冗余阵列,以及其中所述第三存储模块830进一步配置用于:基于所述第二算法,根据所述至少一个冗余阵列中的每个冗余阵列包括第一部分的存储设备以及第二部分的存储设备中的数据,确定所述第二校验值;以及将确定的所述第二校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,提供了一种用于管理存储系统的设备,包括:一个或者多个处理器;耦合至所述一个或者多个处理器中的至少一个处理器的存储器;在所述存储器中存储的计算机程序指令,当由所述至少一个处理器执行所述计算机程序指令时,使得所述设备执行一种用于管理存储系统的方法,所述存储系统包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备,所述方法包括:响应于接收到向所述存储系统中写入目标数据的请求,将所述目标数据存储至所述第一层级的多个存储设备中的第一部分的存储设备;将基于第一算法确定的所述第一部分的存储设备中的数据的第一校验值存储至所述第一层级的多个存储设备中的第二部分的存储设备;以及将基于第二算法确定的所述第一部分的存储设备中的数据的第二校验值存储至所述第二层级的所述至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,所述方法进一步包括:响应于将所述第一校验值存储至所述第二部分的存储设备,返回指示所述目标数据已经被写入至所述存储系统的响应。

根据本公开内容的一个实现方式,将所述第二校验值存储至所述第一后备存储设备包括:响应于接收到提高所述存储系统的可靠性的请求,将所述第二校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,所述方法进一步包括:响应于所述第一部分的存储设备中的数据被修改,发送所述请求。

根据本公开内容的一个实现方式,将所述第二校验值存储至所述第一后备存储设备进一步包括:基于所述第二算法来确定所述第一部分的所述存储中的被修改的数据的校验值,确定所述第二校验值;以及将确定的所述校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,所述存储系统包括第一条带,所述第一条带包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备,其中发送所述请求包括:响应于所述第一条带包括的第一层级的第一部分的存储设备中的数据被修改,针对所述第一条带设置标记以作为提高所述存储系统包括的第一条带的可靠性的请求。

根据本公开内容的一个实现方式,将所述第二校验值存储至所述第一后备存储设备进一步包括:基于所述第二算法来确定所述第一条带的第一层级的第一部分的存储中的被修改的数据的校验值,确定所述第二校验值;以及将所述第二校验值存储至所述第一条带包括的所述至少一个后备存储设备中的第一后备存储设备。

根据本公开内容的一个实现方式,方法进一步包括:将基于第三算法确定的所述第一部分的存储设备中的数据的第三校验值存储至所述第二层级的所述至少一个后备存储设备中的第二后备存储设备。

根据本公开内容的一个实现方式,所述方法进一步包括:响应于所述第一层级的所述多个存储设备中的第一设备出现故障,基于所述第一层级中的所述第一设备以外的其他存储设备中的数据,恢复所述第一设备中的数据。

根据本公开内容的一个实现方式,所述方法进一步包括:响应于所述第一后备存储设备出现故障,基于所述第二算法确定所述第一部分的所述存储设备中的所述数据的所述第二校验值;以及基于所述第二校验值恢复所述第一后备存储设备中的数据。

根据本公开内容的一个实现方式,所述方法进一步包括:响应于所述存储系统中的第二存储设备出现故障,基于所述存储系统中的除所述第一设备和所述第二设备以外的其他存储设备中的数据,恢复所述第一设备和所述第二设备中的数据。

根据本公开内容的一个实现方式,所述存储系统包括第二条带,所述第二条带包括第一层级的多个存储设备以及第二层级的至少一个后备存储设备,所述方法进一步包括:将与所述第一条带相关联的第二校验值、以及与所述第二条带相关联的第二校验值存储在不同的存储设备上。

根据本公开内容的一个实现方式,所述第一层级的存储设备包括至少一个冗余阵列,以及其中将所述第二校验值存储至所述第一后备存储设备包括:基于所述第二算法,根据所述至少一个冗余阵列中的每个冗余阵列包括第一部分的存储设备以及第二部分的存储设备中的数据,确定所述第二校验值;以及将确定的所述第二校验值存储至所述第一后备存储设备。

根据本公开内容的一个实现方式,提供了一种其上存储有计算机程序指令的计算机可读存储介质,当由至少一个处理器执行所述计算机程序指令时,使得所述至少一个处理器执行根据上文所述的用于管理存储系统的方法。

根据本公开内容的一个实现方式,提供了一种计算机程序指令,当由至少一个处理器执行所述计算机程序指令时,使得所述至少一个处理器执行根据上文所述的用于管理存储系统的方法。

附图中的流程图和框图显示了根据本公开的多个实现方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上已经描述了本公开的各实现方式,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实现方式。在不偏离所说明的各实现方式的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现方式的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实现方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1