冷存储系统的数据保护的制作方法

文档序号:17727613发布日期:2019-05-22 02:37阅读:194来源:国知局
冷存储系统的数据保护的制作方法

本申请要求于2016年10月4日递交的发明名称为“冷存储系统的数据保护”的第15/285,128号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。



背景技术:

冷存储是用于存储大量很少访问或修改的数据的存储范式。例如,冷存储可以用于存储感应器输出、监控录像、物联网(internetofthings,简称iot)相关数据、存档的电子消息或其它存档数据。冷存储根据以下推定运作:大量数据待存储以及大部分数据都很少或者根本不会被修改。冷存储系统设计用于以空间和能量高效的方式提供大量存储空间。在保持高数据密度并最小化功耗的同时,冷存储系统的数据访问时间应合理。多址访问对于大数据量搜索也是有益的。同样,冷存储系统应被保护免受硬件故障,并且在硬件组件故障时提供高效的硬件更换和数据恢复机制。



技术实现要素:

本说明书描述冷存储系统的数据存储装置/方法/系统,以在更少或相同数量的附加存储设备的情况下提高数据保护等级。

此处描述的主题的某些方面可以实现为冷存储系统中控制器执行的方法。所述系统包括数据存储设备,用于存储数据块;以及奇偶性存储设备,用于存储保护块;其中,所述数据存储设备和所述奇偶性存储设备组成具有多个行和多个列的二维(2-dimensional,简称2d)矩阵,每一行和每一列均具有多个数据存储设备以及至少一个奇偶性存储设备。所述控制器接收将多个数据块写入所述系统的数据写请求,并选择用于存储所述多个数据块的数据存储设备。所述控制器将所述数据块依次写入选择的数据存储设备的内存块中,无需激活任何其它数据存储设备。每个数据块属于分布于所述矩阵的一行上的行条带且属于分布于所述矩阵的一列上的列条带。然后,所述控制器针对所述每个数据块生成所述行条带的行保护块以及所述列条带的列保护块,并将所述行保护块写入所述行中的奇偶性存储设备并将所述列保护块写入所述列中的奇偶性存储设备。

在一个实施例中,控制器应用于冷存储系统。所述系统包括数据存储设备,用于存储数据块;以及奇偶性存储设备,用于存储保护块;其中,所述数据存储设备和所述奇偶性存储设备组成具有多个行和多个列的二维(2-dimensional,简称2d)矩阵,每一行和每一列均具有多个数据存储设备以及至少一个奇偶性存储设备。所述控制器包括接收元件,其接收将多个数据块写入所述系统的数据写请求;选择元件,其选择用于存储所述多个数据块的数据存储设备;写元件,其将所述数据块依次写入选择的数据存储设备的内存块中,无需激活任何其它数据存储设备,每个数据块属于分布于所述矩阵的一行上的行条带且属于分布于所述矩阵的一列上的列条带;以及生成元件,其针对所述每个数据块生成所述行条带的行保护块以及所述列条带的列保护块。所述写元件还用于将所述行保护块写入所述行中的奇偶性存储设备,并将所述列保护块写入所述列中的奇偶性存储设备。

此处描述的主题的某些方面可以实现为用于进行此处描述的操作的控制器。所述控制器应用于冷存储系统。所述系统包括数据存储设备,用于存储数据块;以及奇偶性存储设备,用于存储保护块;其中,所述数据存储设备和所述奇偶性存储设备组成具有多个行和多个列的二维(2-dimensional,简称2d)矩阵,每一行和每一列均具有多个数据存储设备以及至少一个奇偶性存储设备。所述控制器包括处理器;以及存储器,耦合到所述处理器,用于存储由所述处理器执行的程序。所述处理器用于执行所述程序以进行以下操作:接收将多个数据块写入所述系统的数据写请求;选择用于存储所述多个数据块的数据存储设备;将所述数据块依次写入选择的数据存储设备的内存块中,无需激活任何其它数据存储设备,每个数据块属于分布于所述矩阵的一行上的行条带且属于分布于所述矩阵的一列上的列条带;针对所述每个数据块生成所述行条带的行保护块以及所述列条带的列保护块;以及将所述行保护块写入所述行中的奇偶性存储设备,并将所述列保护块写入所述列中的奇偶性存储设备。

此处描述的主题的某些方面可以实现为一个系统,包括控制器;数据存储设备,用于存储数据块;以及奇偶性存储设备,用于存储保护块。所述数据存储设备和所述奇偶性存储设备组成具有多个行和多个列的二维(2-dimensional,简称2d)矩阵,每一行和每一列均具有多个数据存储设备以及至少一个奇偶性存储设备。所述控制器用于接收将多个数据块写入所述系统的数据写请求;选择用于存储所述多个数据块的数据存储设备;将所述数据块依次写入选择的数据存储设备的内存块中,无需激活任何其它数据存储设备,每个数据块属于分布于所述矩阵的一行上的行条带且属于分布于所述矩阵的一列上的列条带;针对所述每个数据块生成所述行条带的行保护块以及所述列条带的列保护块;以及将所述行保护块写入所述行中的奇偶性存储设备,并将所述列保护块写入所述列中的奇偶性存储设备。

此处描述的主题的某些方面可以实现为计算机可读介质,用于存储一个或多个处理器可执行的指令,以进行此处描述的操作。

因此,冷存储方案保护存储设备免受故障,在更低成本的情况下实现更可靠更高的保护率,减少功耗和组件磨损。

本说明书所述主题的一个或多个实施方式的细节在附图和下面的描述中阐明。通过所述说明及附图以及权利要求书,本主题的其他特征、方面及优点将显而易见。

附图说明

为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。

图1是一种冷存储系统的实施例的示意图;

图2是一种用于执行冷数据存储功能的网元(networkelement,简称ne)的实施例的示意图;

图3是存储设备组成的2d矩阵的实施例的示意图;

图4a是2d矩阵内数据设备dij的行条带的实施例的示意图;

图4b是2d矩阵内数据设备dij的列条带的实施例的示意图;

图5是冷存储系统的数据写入方法的实施例的流程图;

图6是冷存储系统的数据写入方法的另一实施例的流程图;

图7是冷存储系统的数据读取方法的实施例的流程图;

图8是冷存储系统的数据恢复方法的实施例的流程图;

图9是2d矩阵可能的单个故障设备的实施例的示意图;

图10a是2d矩阵可能的两个故障设备的实施例的示意图;

图10b是2d矩阵可能的两个故障设备的实施例的示意图;

图10c是2d矩阵可能的两个故障设备的实施例的示意图;

图11a是2d矩阵可能的三个故障设备的实施例的示意图;

图11b是2d矩阵可能的三个故障设备的实施例的示意图;

图11c是2d矩阵可能的三个故障设备的实施例的示意图;

图11d是2d矩阵可能的三个故障设备的实施例的示意图;

图11e是2d矩阵可能的三个故障设备的实施例的示意图;

图12a是2d矩阵可能的四个故障设备的实施例的示意图;

图12b是2d矩阵可能的四个故障设备的实施例的示意图;

图12c是2d矩阵可能的四个故障设备的实施例的示意图;

图12d是2d矩阵可能的四个故障设备的实施例的示意图;以及

图12e是2d矩阵可能的四个故障设备的实施例的示意图。

具体实施方式

首先应理解,尽管下文提供一项或多项实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数量的技术来实施,无论该技术是当前已知还是现有的。

独立磁盘冗余阵列(redundantarrayofindependentdisk或redundantarrayofindependentdrive,简称raid)是一种数据存储虚拟化技术,其将多个物理磁盘组件组合成单个本地单元以实现冗余或性能改进或两者都实现。采用条带的raid系统允许高速读写(例如,快速更新)、空间高效的存储以及数据恢复。然而,采用条带的raid系统对于冷存储系统来说可能不够高效。对于冷存储系统来说,快速的访问时间可能没有提高数据可靠性那么重要,这减少了功耗和组件磨损。例如,任何对条带的数据访问(例如,读或写)都可能需要激活全部的存储设备,这增加了设备的磨损(例如,退化)和功耗。另外,采用了raid1、raid5、raid6和里德-所罗门编码来保护数据免受设备故障的raid系统对于冷存储系统来说可能不够高效。保护率(protectionratio,简称pr)针对保护阵列的故障设备的数量。保护率是保护域内一定数量设备同时故障的情况下,可恢复的故障设备数量与可能的故障设备总量之比。针对raid5,如果一个设备故障,那么pr为100%可恢复。如果两个或以上设备故障,那么pr则为0%可恢复,因为raid5无法恢复保护阵列内两个或以上的故障设备。针对raid6,如果一个或两个设备故障,那么pr为100%可恢复。如果三个或四个设备故障,那么pr则为0%可恢复。类似地,针对里德-所罗门编码,如果1至r个设备故障,那么pr为100%可恢复。如果r+1个设备故障,那么pr则为0%可恢复。更高的保护等级增加了冗余的成本。

本公开提供了冷存储系统的数据存储装置/方法/系统,以在更少奇偶性存储设备的情况下提高保护率,减少系统成本和功耗,并改善存储的数据的可靠性。本公开的方面涉及伴同转让的于2016年1月27日递交的第15/007,953号美国专利申请案的描述,该专利申请的内容以引入的方式并入本文。所述冷数据存储方案采用多个存储设备。存储设备包括数据存储设备和奇偶性存储设备。相应地,冷存储系统包括多个数据存储设备和多个奇偶性存储设备。为了提高保护率,存储设备逻辑上可配置成一个或多个多维矩阵,如2d矩阵、3d矩阵或4d矩阵等。数据块以逐个设备为基础写入设备的连续的内存块(也称为存储块),使得读和/或写操作期间激活更少的存储设备,减少了矩阵中剩余设备的功耗和磨损。例如,读取文件时需要激活单个设备。冷存储系统中大多数数据访问操作都是读数据操作。当写入如图6所述的数据块时,只需要激活n+1个设备,如一个数据存储设备和n个奇偶性存储设备,以在配置成n维矩阵的系统中写入数据,实现保护。例如,在2d矩阵中,n等于2。所有保护块都写入奇偶性存储设备。相应地,保护块限制在奇偶性存储设备中,而不是分布在冗余存储阵列的各个存储设备上。将每个数据块写入数据存储设备时,保护块更新到奇偶性存储设备中作为流程的一部分。因此,冷存储方案以更低的成本更高的可靠性和保护率保护存储设备免受故障,减少了功耗和组件磨损,为冷存储系统提供了灵活简单的扩展,并在冷存储系统环境下维持了数据访问请求的合理访问时间(如,单址访问读/写)。

图1是基于冗余存储阵列的冷存储系统100的实施例的示意图。所述冷存储系统100包括控制器101、多个数据存储设备110以及多个奇偶性存储设备160。所述存储设备110和160可以是硬盘驱动器(harddiskdrive,简称hdd)、固态磁盘(solidstatedrive,简称ssd)、闪存、光盘(compactdisc,简称cd)、数字视频光盘(digitalvideodisc,简称dvd)、蓝光或任何其它类型适合长期存储的存储器。所述存储设备110和160是基于地址的内存位置,可以写入、读取、搜查、索引、更新以及用于实现内存存储等。奇偶性存储设备推荐使用可重写介质。若奇偶性存储设备使用诸如cd、dvd或蓝光等非可重写介质,则在所有数据存储设备的数据写入完成之前不应生成所述奇偶性存储设备的保护块。所述数据存储设备110和奇偶性存储设备160可以是一组物理光盘或多个虚拟化云驱动。在冷存储系统中,数据存储设备中存储的数据块很少修改或删除。因此,每个数据存储设备110或奇偶性存储设备160的数据写入受限。

所述控制器101可以是任意设备,用于接收数据存储到所述系统,将接收的数据制备成数据块,并将所述数据块写入选择的数据存储设备110的内存块中。例如,所述控制器101可以是数据中心网络或其它网络上的若干虚拟机(virtualmachine,简称vm)、数据中心网络或其它网络的硬件节点(例如,服务器)上的若干通用处理器或专用集成电路(applicationspecificintegratedcircuit,简称asic)以及个人电脑上的asic等。

图2是系统中作为节点的网元(networkelement,简称ne)200(如系统100的控制器101)的实施例的示意图。在一些实施例中,网元200可以控制一组存储设备矩阵。ne200的功能可以在系统的单个节点或多个节点上实现。术语ne包含了广泛的设备,其中ne200仅仅是其中一例。包含在内的ne200是为了表述清楚,并不旨在将本公开的应用限制为特定的ne实施例或某一类ne实施例。本公开所述的至少部分特征/方法可以在如ne200的网络装置或组件中实现。例如,本公开中的特征/方法可以采用硬件、固件和/或在硬件上安装运行的软件实现。ne200可以是任何通过网络处理、读取、更新、存储和/或转发数据帧/流的设备,例如,服务器、客户端、网络控制器等。如图2所示,ne200可以包括收发器(tx/rx)210,其可以是发射器、接收器或其组合。tx/rx210可以耦合到多个端口220和250(例如上行接口和/或下行接口),用于向其它节点发送和/或从其它节点接收帧。处理器230可耦合至tx/rx210,以处理帧和/或确定向哪些节点发送帧。所述处理器230可以包括一个或多个多核处理器和/或存储器设备232,其可以用作数据存储器和缓冲器等。因此,ne200可根据实施例存储数据到内部存储器设备232或将此类数据转发到外部存储设备。处理器230可作为一个通用处理器或者可作为一个或多个asic和/或数字信号处理器(digitalsignalprocessor,简称dsp)的一部分来实现。处理器230可以包括控制模块234,其可以根据实施例执行方法500、600、700和/或800。在一替代实施例中,控制模块234可以实现为存储在存储器232中的指令,其可以例如作为存储在非瞬时性介质的计算机程序产品由处理器230执行。在另一替代实施例中,所述控制模块234可以在单独的ne上实现。所述端口220和250可包含电和/或光传输和/或接收部件。例如,控制模块234可通过经tx/rx210和/或端口220和250的传输来控制多个外部设备(如云驱动),例如数据存储设备110和/或奇偶性存储设备160。

可以理解,通过将可执行指令编程和/或加载到ne200,处理器230,控制模块234,端口220和250,tx/rx210和/或存储器232中的至少一个会被改变,将ne200部分转换成具有本公开所公开的新颖功能的特定机器或装置,例如多核转发架构。对于电气工程和软件工程领域至关重要的是,可以按照公知的设计规则将可以通过将可执行软件加载到计算机来实现的功能转换为硬件实现。在软件还是硬件中实现某一概念通常取决于对待生产单元的数量和设计稳定性的考虑,而并非考虑任何涉及从软件域到硬件域的转换问题。通常,经常变化的设计可以优先在软件中实现,这是因为重编硬件实现要比重编软件设计更加昂贵。通常,稳定性好且大批量生产的设计更适合在asic等硬件中实现,因为对于大批量生产运行,硬件实现方式比软件实现方式更低廉。通常,一项设计可以以软件的形式进行开发和测试,之后根据公认的设计规则转变为专用集成电路中等效的硬件实现方式,所述硬件实现方式硬连线所述软件的指令。按照相同的方式,新型asic控制的机器为一种特定机器或装置,同样地,已编程和/或加载可执行指令的计算机也可视为一种特定的机器或装置。

为了最大化数据保护范围,系统100中的存储设备逻辑上配置成一个或多个多维矩阵,例如至少是2d矩阵,或至少是3d矩阵,或至少是4d矩阵等。图3中示出多个2d矩阵。每个2d矩阵包含了n×m或者n×(m-1)个存储设备。图3中示例性示出了每个包含n×(m-1)个存储设备的2d矩阵。当n等于m,所述矩阵为方块矩阵。当n不等于m,所述矩阵为矩形矩阵。与矩形矩阵相比,方块矩阵可最大化数据保护范围并最小化奇偶性存储设备的成本。在图3中,每个圆圈代表一个存储设备。一个未填充圆圈代表存储数据的数据存储设备。浅色圆圈代表列奇偶性存储设备,存储特定列的数据存储设备的奇偶校验和。类似地,深色圆圈代表行奇偶性存储设备,存储特定行的数据存储设备的奇偶校验和。例如:数据存储设备dij位于n×m矩阵的(i,j)。位于所述矩阵的(i,m)的存储设备pim是第i行数据存储设备的行奇偶性存储设备。位于所述矩阵的(n,j)的存储设备pnj是第j列数据存储设备的列奇偶性存储设备。作为示例,每行均包含此处所述的行奇偶性存储设备。当需要更高的保护等级时,每行均包含更多(例如两个或三个等)行奇偶性存储设备。同样,作为示例,每列均包含此处所述的列奇偶性存储设备。每列可包含更多(例如两个或三个等)列奇偶性存储设备以提供更高的保护等级。

再举另一个3d矩阵的例子。假设存储设备配置成一个m1×m2×m3的矩阵,存储设备dxyz位于所述矩阵的(x,y,z)。

如图4a和图4b所示,设备di1、di2……pim是图4a所示的“第i行存储设备”,设备d1j、d2j……pnj是图4b所示的“第j列存储设备”,内存块条带配置在2d矩阵上。针对任意数据存储设备dij,存储内存划分为若干个块。在2d矩阵中,存储设备上的内存块基于各行各列的设备进行条带设置。针对存储设备矩阵第i行的任意设备,条带k为相同行中每个存储设备上的块k。针对存储设备矩阵第j列的任意设备,条带k为相同列中每个存储设备上的块k。因此,存储设备的每个块都属于两个条带:行条带和列条带。例如,设备di1、di2……dij……di(m-1)和pim的块k均属于第i设备行的行条带k,且设备d1j、d2j……dij……d(n-1)j和pnj的块k均属于第j设备列的列条带k。因此,设备dij的块k同时属于第i设备行和第j设备列的条带k。例如,为了解释清楚,存储设备dij的内存块描述为连续的内存块1、2、3、4……,保护块描述为奇偶性存储设备pim的内存块1、2、3、4……以及奇偶性存储设备pnj的内存块1、2、3、4……。当设备dij的数据块k更新时,对应的行条带和列条带的保护块(例如,奇偶性存储设备pim和pnj的块k)需要更新。

可基于奇偶校验和生成保护块,称为校验块。校验块是基于其对应行条带或列条带内所有数据块生成的一组校验位。校验块可基于异或(exclusiveor,简称xor)函数或者同或(exclusivenor,简称xnor)函数生成。

控制器101将数据块依次写入单个选择的数据存储设备110,直到当前数据存储设备110已满,之后再移到下一个数据存储设备110。例如,控制器101可以将数据块依次写入单个选择的数据存储设备,如存储设备dij的内存块1、2、3、4……,直到所述存储设备dij已满。然后,数据块可以继续依次存储在存储设备d(i+1)j的内存块1、2、3、4……或任何其它存储设备直到设备已满等。

在一例子中,当更新数据块时,在其对应的行条带和列条带中的保护块需要更新。行奇偶性存储设备的每个保护块基于其对应的行条带内的数据块生成。列奇偶性存储设备的每个保护块基于其对应的列条带内的数据块生成。如图4a所示,当数据写入设备dij的块k时,在其行条带的设备pim的保护块k基于设备di1、di2……dij……di(m-1)的块k生成。如图4b所示,当数据写入设备dij的块k时,在其列条带的pnj的保护块k基于设备d1j、d2j……dij……d(n-1)j的块k生成。应用基于奇偶校验和的数据保护技术生成保护块。在另一例子中,奇偶性存储设备的保护块可以在多个存储块写入数据存储设备之后再更新。

每个奇偶性存储设备的保护块根据每个条带内的数据块生成。但是,每个条带的数据块并不是依次相关,也可能不是相同数据流或读写访问等的一部分。例如,设备di1、di2……dij……di(m-1)的数据块k作为行条带k的一部分存储在存储设备矩阵的行保护阵列i中,但在相同数据流中可能不连续,而且也可能不相关。类似地,设备d1j、d2j……dij……d(n-1)j的数据块k作为列条带k的一部分存储在存储设备矩阵的列保护阵列j中,但在相同数据流中可能不连续,而且也可能不相关。通过将所述保护块限制在奇偶性存储设备,将数据块存储在单个数据存储设备连续的内存块中可以最小化读和/或写访问期间需要激活的设备数量,并且降低冷存储系统的功耗。进一步,在一实施例中,当基于奇偶校验和的技术用来生成保护块时,每个写命令只访问一个数据存储设备和其对应的奇偶性存储设备。因此,当冗余存储阵列中一个或多个存储设备故障时,每个数据块由其行条带和列条带中的对应保护块保护。数据块的故障恢复不仅可基于其行条带还可以基于其列条带进行保护。可以大大提升配置的多维保护矩阵的故障覆盖率。因此,基于冗余存储阵列的系统100的冷存储方案针对同时发生的存储设备故障提供了保护,降低了功耗和组件磨损,支持灵活的存储保护扩展,且维持了合理的访问时间。

图5为示出了包含n×(m-1)个存储设备的冷存储系统的2d矩阵的数据写入流程的流程图。每个2d矩阵均有多个行和多个列。各行各列均具有多个数据存储设备以及至少一个奇偶性存储设备。当数据块写入位于(i,j)的数据存储设备时,位于(i,m)和(n,j)的奇偶性存储设备中的对应保护块需要更新。方法500可由控制器101和/或ne200实现,并且在控制器接收到待写入冷存储系统的数据流时发起。步骤501中,控制器接收将多个数据块写入所述系统的数据写请求。数据流中的数据准备作为一组数据块写入。例如,数据分成具有预定义长度的数据块并编入索引,使得后续可搜索等。同时,选择数据存储设备(例如,数据存储设备dij)为数据块提供存储位置。由文件系统决定如何选择(或定位)数据存储设备。步骤503、505、507、509和511迭代地将数据块写入选择的数据存储设备dij连续的内存块中,直到步骤501准备的数据块全部存储。步骤503中,数据块写入当前数据存储设备dij的连续内存块中。所述数据块属于分布于所述矩阵的一行上的行条带且属于分布于所述矩阵的一列上的列条带。当前数据块写入之后,方法500转到步骤505:在步骤503将当前数据块写入之后确定所述数据存储设备是否已满。若所述数据存储设备dij已满,方法500转到步骤507,并在步骤509之前转到下一个数据存储设备(例如,数据存储设备d(i+1)j或者数据存储设备di(j+1))。若所述数据存储设备未满,方法500转到步骤509。步骤509中,所述方法确定步骤503中写入的当前数据块是否是最后一个待写入的数据块。若有更多数据块待写入,则所述方法转到步骤511,并在返回到步骤503之前转到下一个数据块,继续将数据块写入当前数据存储设备dij的连续内存块中。相应地,通过采用步骤503、505、507、509和511,将连续的数据块写入普通数据存储设备dij的多个连续内存块中,使得写入内存块的数据块独立于相同冗余存储阵列中所有存储设备上的条带。为了数据块的连续,直到当前数据存储设备dij已满才将数据块写入替代的数据存储设备中。换而言之,写入内存块是以逐个设备为基础而非以逐个条带为基础。

若当前数据块是步骤509中最后一个待写入的块,方法500转到步骤513。采用步骤513、515、517和519生成保护块,并针对步骤503、505、507、509和511中更新的所有条带,将生成的块写入奇偶性存储设备。步骤513中,读取全部数据存储设备上的当前更新的条带内所有内存块。更新的条带是行条带或列条带,其中,至少一个数据块在写入过程中更新。以更新的条带为行条带为例。步骤515中,为当前行条带生成行保护块。此类行保护块写入该行的对应奇偶性存储设备中。步骤517中,方法500确定当前行条带是否是最后更新的行条带。若当前条带并非最后更新的行条带,方法500转到步骤519,并在返回步骤513之前继续到下一个更新的行条带。若当前行条带为最后更新的行条带,方法500转到步骤521。步骤521中,读取全部数据存储设备上的当前更新的列条带内所有内存块。步骤523中,为当前列条带生成列保护块。此类列保护块写入该列的对应奇偶性存储设备中。步骤525中,方法500确定当前列条带是否是最后更新的列条带。若当前条带并非最后更新的列条带,方法500转到步骤527,并在返回步骤521之前继续到下一个更新的列条带。若当前列条带为最后更新的列条带,方法500转到步骤529然后结束。

例如,选择位于(i,j)的数据存储设备进行存储。数据块依次存储在数据存储设备dij的内存块1、2、3和4中。读取行保护阵列i的行条带1内设备di1、di2……dij……di(m-1)上所有的内存块1来生成奇偶性存储设备pim的行保护块1。然后,控制器将生成的行保护块1写入奇偶性存储设备pim。读取行保护阵列i的行条带2内设备di1、di2……dij……d(m-1)j上所有的内存块2来生成奇偶性存储设备pim的行保护块2。然后,控制器将生成的行保护块2写入奇偶性存储设备pim,直到奇偶性存储设备pim的行保护块4在行保护阵列i的行条带4的末尾更新。读取列保护阵列j的列条带2内设备d1j、d2j……dij……d(n-1)j上所有的内存块2来生成奇偶性存储设备pnj的列保护块2。然后,控制器将生成的列保护块2写入奇偶性存储设备pnj中,直到设备pmj的块4在列保护阵列j的列条带4的末尾更新。

图5为先生成并写入行保护块然后再生并写入列保护块的例子。还有其它生成保护块的方法。例如,分别先为列条带再为行条带生成保护块。

方法500在步骤503、505、507、509和511的数据存储阶段只要求激活一个当前选择的数据存储设备dij。一旦填满,就可以去激活当前数据存储设备dij,并能够激活下一个数据存储设备d(i+1)j或di(j+1)。进一步,在下面讨论的对应读方法中,只必须激活当前选择的数据存储设备dij。在步骤513、515、517和519,当前行条带对应的所有数据存储设备和奇偶性存储设备都要激活。同样地,在步骤521、523、525和527,当前列条带对应的所有数据存储设备和奇偶性存储设备都要激活。方法500是通用的数据保护解决方案,可以与几乎所有数据保护技术一起应用,例如奇偶校验和以及里德-所罗门编码等。

图6为示出了冷存储系统中数据写入的另一流程图。与方法500相比,方法600仅应用于基于奇偶校验和的保护技术,数据写入过程中需要激活的存储设备(例如,数据存储设备110)较少。例如,将数据块写入2d矩阵的数据存储设备dij时,方法600只需要激活一个数据存储设备dij和两个奇偶性存储设备pnj和pim。方法600可由控制器101和/或ne200实现,并且在控制器接收到待写入冷存储系统的数据流时发起。步骤601与步骤501大体相似。步骤603中,方法600确定分配用于写入当前数据块的内存块是否空白。若所述内存块非空白,方法600转到步骤605,在当前数据块写入所述内存块之前从所述内存块中读取原始数据块,并转到步骤607。若所述内存块空白,方法600直接转到步骤607。步骤607中,控制器获取原始数据块和待写入当前数据块之间的比特差。控制器在转到步骤609之前从奇偶性存储设备的对应行条带中获取原始行保护块并从奇偶性存储设备的对应列条带中获取原始列保护块。步骤609中,控制器通过将比特差分别应用到原始保护块,为所述数据块生成行保护块和列保护块。具体地,保护块的现存值受到数据存储设备110的保护块的当前值与保护块的原始值之间的比特差影响。例如,数据块比特的变化需要在对应的保护块中改变对应的比特。因此,其它数据存储设备可以在数据写入过程中保持不激活。步骤611中,将步骤601准备的数据块覆盖选择的数据存储设备上当前内存块的值。分别将步骤609生成的对应保护块写入奇偶性存储设备对应行条带和列条带的保护块中。步骤613中,所述方法确定当前数据存储设备是否已满。若所述数据存储设备未满,方法600转到步骤617。否则,方法600转到步骤615中的下一个数据存储设备,然后再转到步骤617。步骤617中,方法600确定当前数据块是否为数据流中最后一个待写入的数据块。若无更多需要写入的数据块,方法600转到步骤621然后结束。否则,方法600在返回步骤603之前,先转到步骤619并移到下一个要从数据流写入的数据块。如同方法500,连续的数据块依次写入当前选择的数据存储设备,使得数据块的写入是以逐个设备为基础而非以逐个条带为基础。另外,仅仅通过更新所有受影响的奇偶性存储设备上的保护块,就可以将更多携带之前存储的数据的数据存储设备加入矩阵,而无需触及原始数据存储设备上的数据块。

图7为诸如系统100等冷存储系统中数据读取方法700的实施例的流程图。方法700可由控制器101和/或ne200实现。方法700在控制器接收数据读请求时发起,并确定在冗余存储阵列的一个或多个数据存储设备中读取数据块。步骤701中,根据数据读请求如基于索引查找或节点表等定位数据存储设备。步骤703中,从定位到的数据存储设备的内存块中读取数据块,之后转到步骤705。若步骤705中已到达所述数据存储设备的末尾,方法700转到步骤707并移到下一个数据存储设备,之后再继续步骤709。若步骤705中未到达所述数据存储设备的末尾,所述方法直接转到步骤709。步骤709中,方法700确定是否已到达所述数据读请求的最后一个期望的数据块。若当前数据块为最后一个待读取的数据块,方法700转到步骤713然后结束。若当前数据块并非最后一个待读取的数据块,方法700转到步骤711,选择下一个数据块,并返回步骤703。通过采用方法700,根据方法500或600写入的基于冗余存储阵列的系统可以通过激活单个数据存储设备读取,而无需激活所有其它存储设备。这大大地减少了功耗和组件磨损。

图8为诸如系统100等冷存储系统中数据恢复方法800的实施例的流程图。方法800可由控制器101和/或ne200实现,并且在冗余存储阵列中一个或多个存储设备故障时发起。例如,可以用若干个空存储设备(例如,由技术员)替换一个或多个故障的存储设备。步骤801中,控制器检测到数据存储设备损坏。步骤803中,针对所述损坏的数据存储设备上的每个数据块,控制器读取其对应行条带或列条带中所有未损坏的数据块和保护块。若其行条带中有两个或以上数据存储设备损坏,控制器能够从其列条带中读取所有未损坏的数据块和保护块。若其列条带中有两个或以上数据存储设备损坏,控制器能够从其行条带中读取所有未损坏的数据块和保护块。若其行条带和列条带中两个或以上存储设备损坏,控制器能够暂时跳过该数据存储设备并转到下一个损坏的数据存储设备。步骤805中,控制器根据未损坏的数据块和保护块重建数据块,并将重建的数据块存储到替代数据存储设备的内存块。所述重建的数据块属于所述行条带或列条带。控制器确定当前数据块是否是步骤807中损坏的数据存储设备上最后一个待重建的数据块。若当前数据块是所述损坏的数据存储设备上最后一个待重建的数据块,方法800转到步骤811。若当前数据块并非所述损坏的数据存储设备上最后一个待重建的数据块,方法800转到步骤809,移到下一个数据块,并返回步骤803。步骤811中,控制器确定当前设备是否是存储设备矩阵中最后一个损坏的数据存储设备。若当前设备是存储设备矩阵中最后一个损坏的数据存储设备,方法800转到步骤815然后结束。若当前设备并非最后一个损坏的数据存储设备,方法800转到步骤813,移到下一个损坏的数据存储设备,并返回步骤801。如方法800所示,在存储设备故障的情况下,可以重建如系统100的冗余存储阵列中损坏的存储设备,而不会丢失数据。针对保护数据的存储系统中同时出现的若干个设备故障,保护率为可恢复故障设备的总量与可能的故障设备的总量之比。通过将存储设备配置入矩阵,数据存储设备的数据块不仅可以通过其行条带还可以通过其列条带重建。因此,大大提高了保护率(protectionratio,简称pr)。pr也可以称为故障覆盖率,指示同时故障的若干个设备的可恢复故障的百分比。

可恢复存储设备的最大数量取决于冷存储系统采用的数据保护技术。以n×n矩阵为例。该n×n矩阵包括n×(n-1)个存储设备。

如图9所示,若该n×n矩阵中任意单个设备故障,所述故障设备可以通过其行或列保护阵列恢复。在这种情况下pr为100%。

如图10a、10b和10c所示,若该n×n矩阵中任意两个设备故障,每个故障设备为其行或列保护阵列中的单个故障设备。所述故障设备可以通过其行或列保护阵列恢复。在这种情况下pr为100%。

如图11a、11b、11c、11d和11e所示,n×n矩阵中三个设备同时故障。由于无存储设备位于(n,n),所述三个故障存储设备与(n,n)上不存在的设备组成一个矩形(图11e中)。此时,所有故障设备都无法通过行或列保护阵列恢复。在三个故障设备的情况下,当n=4,pr≈98.02%;当n=5,pr≈99.21%;当n=6,pr≈99.62%;当n=7,pr≈99.79%;当n=8,pr≈99.88%;当n=9,pr≈99.92%;当n=10,pr≈99.95%。

如图12a、12b、12c、12d和12e所示,n×n矩阵中四个设备同时故障。若所述四个故障设备或所述四个故障设备中的任意三个与(n,n)上不存在的设备组成矩形(图12d中),这些故障的存储设备无法通过其行或列保护设备完全恢复。考虑到无法恢复的情况,当n=4,pr≈90.77%;当n=5,pr≈96.39%;当n=6,pr≈98.28%;当n=7,pr≈99.07%;当n=8,pr≈99.46%;当n=9,pr≈99.66%;当n=10,pr≈99.78%。

其中,当n×n矩阵中任意四个设备故障,pr>99%(n>6)。由于恢复一个故障设备之后,五个故障设备等于四个故障设备,因此五个故障设备的保护率与四个故障设备的保护率相同。因此,只需要有限的冗余奇偶性存储设备,就能够实现更高的保护等级。在一个或两个设备同时故障时100%可恢复。当n>4且三个设备故障时超过99%可恢复。当n>6且四或五个设备故障时超过99%可恢复等等。另外,针对n×n矩阵内(j,k)上的设备,冷存储方案以更低的功耗保护了存储设备免受故障:写入数据时,需要激活三个设备,如方法600的实施例所示位于(j,k)、(j,n)、和(n,k)上的设备;读取数据时,需要激活一个设备,如方法700的实施例所示的位于(j,k)上的设备;恢复方法800的实施例所示的位于(j,k)的损坏设备时,需要激活一行(行j)或一列(列k)设备。相应地,冷存储方案以更低的成本更可靠更高的保护率保护了存储设备免受故障,减少了功耗和组件磨损,提供了灵活简单的冷存储系统扩展,并在冷存储系统环境下维持了数据访问请求的合理访问时间(如,单址访问读/写)。

虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。

此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离本文公开的精神和范围。

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