利用协作存储设备冗余地存储和检索数据的制作方法

文档序号:7920164阅读:190来源:国知局
专利名称:利用协作存储设备冗余地存储和检索数据的制作方法
技术领域
本发明涉及计算机系统,更具体来说,涉及计算机系统内的数据 存储子系统。
背景技术
计算机系统常常包括用于存储数据的数据存储子系统。具体来 说,包括通过网络互连在一起的多个客户端的计算机系统越来越多地 通过网络共享一个或多个数据存储子系统。数据存储子系统可以包括 或进一步连接到包括一个或多个磁盘存储设备、磁带驱动器或其他存 储介质的存储器。计算机系统也可以包括一个或多个服务器,在这些 服务器中,维护了描述了所包括的存储设备的内容的元数据。
数据存储子系统可以带有一些冗余地存储数据,以保证从存储器 错误中恢复。有各种技术可用来冗余地存储数据,包括擦除编码技术, 如里德-索罗蒙码编码,以及使用各种布局的RAID(独立磁盘冗余 阵列),如RAID-1、 RAID-5或RAID-6。这些RAID布局可以在 基于对象的文件系统内实现,其中的每一个独立存储设备都被当做磁 盘。每一个客户端设备都可以通过网络将数据传送到存储设备。令人 遗憾的是,可能需要某种仲裁来自多个客户端的写访问请求的方式, 以避免给冗余数据带来不一致。 一个仲裁方法是要求每一个客户端在 访问存储位置之前获取一个锁。然而,此方法要求每一个客户端都负功能。例如,在RAID-5或RAID-6的情况下,这些功能可以包括 读取旧的数据和旧的奇偶性,计算新的奇偶性,记录新的数据和新的 奇偶性,以及将新的数据和新的奇偶性写入到共同构成了 RAID布 局中的行的一部分或整个行的它们的相应的存储位置。此外,对于每 一个向RAID布局中的单个位置的写入操作,可能还需要客户端从 元数据服务器(MDS)检索信息。这些功能的执行延长了写入延迟, 并给每一个客户端添加了复杂性和大量的计算和存储开销。
除上面的考虑之外,数据存储子系统还被设计为当 一个或多个设 备发生故障时最小化可能发生的数据的丢失。虽然RAID布局计划 提供高可用性和容错,但是,如果客户端负责维护冗余,在复杂的写 入操作过程中,可能会有某些时段设备发生故障的可能性增大。考虑 到上面的情况,需要解决这些问题的用于管理向数据存储子系统的写 入操作的更加有效的系统和方法。

发明内容
公开了计算机系统和方法的各种实施例。在一个实施例中,计算 机系统包括连接到存储子计算机系统的客户端。存储子系统包括可作 为阵列中的行和列寻址的多个数据存储位置。阵列的每一列都包括单 独的存储设备。存储在阵列的每一行中的数据至少包括一些冗余数 据。对于阵列中的给定行,多个存储设备中的预定的存储设备可以被 指定为协调存储设备。多个存储设备中的至少两个存储"i殳备被指定为 一个或多个行的单独的集合中的协调存储设备。对于阵列中的给定 行,协调存储设备被配置为从客户端接收数据以便存储在给定行中, 将接收到的数据的一个或多个部分转发到多个存储设备的一个或多 个其他存储设备,并协调至少一些冗余数据在给定行的计算和存储。 响应接收到以存储在给定存储位置为目标的数据的一部分的情况,与 单独的存储设备关联的包括给定存储位置的非易失性临时存储设备 被配置为緩存接收到的那部分数据。
在再一个实施例中,协调存储设备被配置为,响应检测到数据的 一个或多个部分已经被緩存在非易失性临时存储设备中的情况,将写入完成消息传送到客户端中。系统进一步被配置为检测多个存储设备 中的至少一个存储设备的故障。如果故障是在写入完成消息被传送之 后并且在緩存的数据的至少一部分被从非易失性临时存储设备传送 到给定行中的关联的存储位置之前发生的,则系统进一步被配置为从 存储在非易失性临时存储设备中的数据重建存储在给定行中至少包 括一些冗余数据的数据。如果故障是在緩存的数据被从非易失性临时 存储设备传送到给定行中的关联的存储位置之后发生的,则系统进一 步被配置为从存储在所述给定行中的数据重建存储在所述给定行中 的至少包括一些冗余数据的数据。协调存储设备进一步被配置为计算 存储在给定行中的数据的多个部分的奇偶性值或擦除-编码值。在一个 实施例中,响应表示对于给定行已经计算出了奇偶性或擦除-编码值的 信号,每一 个非易失性临时存储设备进一 步被配置为将数据的被緩存 的部分传送到关联的单独的存储设备的给定行中的存储位置。在备选 实施例中,响应表示用于计算奇偶性或擦除-编码值的数据已经被给定 行的协调存储设备接收到的信号,每一个非易失性临时存储设备进一 步被配置为将数据的被緩存的部分传送到关联的单独的存储设备的 给定行中的存储位置。在更进一步的实施例中,冗余阵列包括
RAID-5布局、RAID-6布局、RAID-1布局或其他冗余或擦除-编码布局。
在考虑了下列描述和附图之后,这些及其他实施例将变得显而易见。


图1显示了计算机系统的实施例。
图2是RAID-5数据存储子系统的一个实施例的一般化方框图。
图3是RAID-6数据存储子系统的一个实施例的一般化方框图。
图4是RAID-1数据存储子系统的一个实施例的一般化方框图。图5是显示了 RAID-5布局中的客户端和行之间的写入事务 的一个实施例的顺序图。
图6是显示了 RAID-5布局中的客户端和行的一部分之间的
写入事务的一个实施例的顺序图。
图7是显示了 RAID-6布局中的客户端和行之间的写入事务 的一个实施例的顺序图。
图8是显示了 RAID-6布局中的客户端和行的一部分之间的
写入事务的一个实施例的顺序图。
图9显示了一个过程的一个实施例,该过程可以在RAID-5布 局中的客户端和行之间的写入事务中被RAID-5布局中的奇偶性存 储设备使用。
图10显示了一个过程的一个实施例,该过程可以在RAID-6 布局中的客户端和行之间的写入事务中被RAID-6布局中的主奇偶 性存储设备使用。
图11显示了一个过程的一个实施例,该过程可以在RAID-6 布局中的客户端和行之间的写入事务中被RAID-6布局中的次要奇 偶性存储设备使用。
尽管本发明可以具有各种修改和替代形式,但是,这里将通过附 图中的示例显示特定实施例,并进行详细描述。然而,应理解,附图 和详细描述不打算将本发明只限于所说明的特定形式,相反地,本发 明可以覆盖如所附权利要求所定义的本发明的精神和范围内的所有 修改、等效内容和替代方案。
具体实施例方式
图1显示了计算机系统100的实施例。如图所示,系统100 包括通过网络180互连在一起的客户端110、 120,以及130,存储 子系统150,以及元数据月艮务器(MDS) l60。客户端110、 U0,以 及130是任意数量的静止或移动电脑的代表,如台式PC、工作站、 笔记本电脑、手持式电脑、刀片式服务器等等。虽然所描述的系统100 包括客户端和服务器,但是,在备选实施例中,由客户端和服务器执行的功能可以由对等网络配置中的对等节点或由客户端、服务器,以 及对等节点的组合来执行。
在备选实施例中,客户端、服务器,以及存储设备的数量和类型
不仅限于图1中所显示的那些。通过调制解调器库、直接LAN连 接、无线连接、WAN链路等等的不同组合,在系统100中可以有 几乎任何数量和组合的服务器、台式机,以及移动客户端互连在一起。 此外,在各种时间,可以有一个或多个客户端离线操作。此外,在操 作过程中,随着移动用户从一处移动到另一处,连接到系统100,与 其断开,以及重新连接到系统100,单个客户端连接类型也会变化。
在系统100内,可能希望将与客户端110、 120,以及130中 的任何一个客户端关联的数据存储在存储子系统150内。子系统 150可以包括单个存储i殳备151-155。存储设备151-155可以是诸如 硬盘、服务器刀片,或专业化设备之类的各种设备中的任何一个设备, 并可以包括各种存储器设备,如RAM、闪存RAM、 MEMS (微型 机电系统)存储器、带蓄电池后备电源的RAM,和/或非易失性RAM (NVRAM)等等。客户端数据可以以诸如RAID-1、 RAID-DP、 RAID-5、 RAID-6、擦除-编码数据表示方案等等之类的各种已知的布 局中的一种存储在存储子系统150内,其中,存储器的可靠性可以 通过冗余和/或错误校正功能来提高。描述了存储在存储子系统150 中的数据的布局的元数据可以存储在MDS 160中。客户端可以从 MDS160中检索元数据,以便识别存储子系统150内的所需的数据 存储位置。在备选实施例中,MDS 160的功能可以由各种组件中的 任何一个组件来执行,如巻配置守护过程或其他存储管理过程或服务 器,具体情况取决于存储子系统150中的存储设备的类型和布局。
在下面的讨论中,数据可以存储在取决于单个存储设备位置的容 量的给定大小的条带单元中。这些条带单元可以是数据对象、数据部 分、块,或适合于单个存储设备的任何其他数据段。然而,从客户端 来看,数据条带单元可以有不同大小。例如,客户端可以向条带单元 (大小足以填充以阵列方式排列的许多存储设备中的一行)中的存储子系统传送数据。客户端也可以以小于条带单元的大小传送数据。各 种条带布局都是可以的,下面将对其中一些布局进一步进行详细描
述。对于存储子系统150内的给定行,其中一个存储设备可以被指 定为协调存储设备。在某些实施例中,数据可以无需奇偶性地进行存 储,每一行中的协调存储设备可以协调行中的其他存储设备中的单个 条带单元的存储。在涉及冗余布局的其他实施例中,协调存储设备可 以协调数据的存储以及协调奇偶性计算。很多这样的替代方案都是可 以的。
现在请参看图2,该图显示了存储子系统150的一个实施例的
一般化方框图。在所显示的实施例中,存储子系统150包括按
RAID-5布局方式排列的存储i免备210、 220、 230、 240和250。每
一个存储设备210、 220、 230、 240,以及250包括诸如随机存取存
储器(RAM)之类的一组临时存储设备215、225、235、245,以及
中的对应的一个。在一个实施例中,存储i殳备215、 225、 235、 245,
以及255可以包括非易失性RAM(NVRAM)。数据可以存储在存储
设备中的成排地分为条状的条带单元中。在各种RAID-5实施例中,
在每一行中都可以有一个奇偶性存储设备和至少两个数据存储设备, 具体情况取决于布局中的存储设备的数量。例如,在所显示的实施例
中, 一行可以被定义为五个条带单元,每一个条带单元都存储在存储 ^殳备210、 220、 230、 240,以及250中的一个存储i殳备中。数据可 以跨行的一部分、完整的行,或多行地分为条状。每一行都可以包括 四个数据条带单元和一个奇偶性条带单元。更具体来说,所显示的实 施例中的第一行可以包括分别存储在存储设备210、 220、 230、 240, 以及250中的数据条带单元Al、 A2、 A3,以及A4和奇偶性条带 单元Ap。第二行可以包括数据条带单元Bl、 B2、 B3,以及B4和 奇偶性条带单元Bp。与其中奇偶性条带单元Ap存储在存储设备 250中的第一行不同,奇偶性条带单元Bp可以存储在存储设备240 中,而数据条带单元Bl、 B2、 B3,以及B4可以分别存储在存储设 备210、 220、 230,以及250中。奇偶性条带单元的位置可以在诸如行C和D等等之类的每一个连续的行上在多个存储设备之间旋 转。
在操作过程中,客户端可以将数据写入到给定行中,好像向 RAID-0布局中写入。更具体地说,可以告诉客户端,数据被分为条 状,以便对于每一个RAID-5行,整行存储在为该行指定的容纳了 奇偶性条带单元的存储设备中,条带大小等于行中的其他、非奇偶性 条带单元的组合的大小。然后,客户端可以将整行的数据发送到奇偶 性存储设备。然后,奇偶性存储设备可以根据下面将比较详细地描述 的过程,将数据的一个或多个部分转发到给定行中的組件数据存储设 备。每一个存储设备都可以将奇偶性或数据存储在其关联的RAM 中,直到计算出新的奇偶性,此时,可以提交写入操作,可以从RAM 向关联的条带单元位置传输数据和奇偶性。在数据和奇偶性条带单元 被存储在RAM中之后但是在数据和奇偶性从RAM传输到关联的 条带单元位置之前,存储子系统可以将写入完成消息返回到客户端, 最小化了写入延迟。可以通过一系列写入操作,写入大于单个行的容 量的数据集,每一个写入操作都具有一行或稍小的宽度,并且每一个 写入操作都针对其相应的行中的对应的奇偶性存储设备。
可以按类似的方式处理读取操作。例如,读取请求也可以从客户 端发送到给定行中的奇偶性存储设备。如果被请求的数据存储在与奇 偶性存储设备关联的RAM中,则可以检索数据,并响应请求,将数 据直接发送到客户端。如果被请求的数据位于构成该行的一个或多个 其他存储设备上,则奇偶性存储设备可以将对应的读取请求传送到布 局中的每一个存储设备,作为回报,接收被请求的数据的一部分。然 后,奇偶性存储设备可以将数据组合起来,将它返回到发出请求的客 户端。如果数据的一个或多个部分位于已经发生故障的存储设备上, 则奇偶性存储设备可以从构成该行的足够数量的其余存储设备中检 索数据,然后使用可用的数据和奇偶性重建缺失的数据。
图3是存储子系统150的备选实施例的详细方框图。在所显 示的实施例中,数据可以作为条带单元存储在存储子系统150中。存储子系统150包括按RAID-6布局方式排列的存储i殳备310、 320、 330、 240、 350,以及360。每一个存储设备310、 320、 330、 340、 350和360都包括诸如随机存取存储器(RAM)之类的一组临 时存储设备315、 325、 335、 345、 355,以及365中的对应的一个。 在一个实施例中,存储设备315、 325、 335、 345、 355,以及365可 以包括闪存RAM、 MEMS (孩t型机电系统)存储器、带蓄电池后备 电源的RAM、非易失性RAM(NVRAM),或其他永久性存储设备。 数据可以在存储设备上成排地跨条带单元地分为条状。
在各种RAID-6实施例中,在每一行中都可以有两个奇偶性条 带单元和至少两个数据条带单元,具体情况取决于布局中的存储设备 的数量。例如,在所显示的实施例中, 一行可以被定义为六个条带单 元,每一个条带单元都存储在存储设备310、 320、 330、 340、 350, 以及360中的一个存储设备中。数据可以跨行的一部分、完整的行, 或多行地分为条状。每一行都可以包括四个数据条带单元和两个奇偶 性条带单元。更具体来说,所显示的实施例中的第一行可以包括分别
存储在存储设备310、 320、 330、 340、 350,以及360中的数据条 带单元Al、 A2、 A3,以及A4和奇偶性条带单元Ap和Aq。第 二行可以包括数据条带单元Bl、 B2、 B3,以及B4和奇偶性条带单 元Bp和Bq。与其中奇偶性条带单元Ap可以存储在存储设备350 以及Aq可以存储在存储设备360中的第一行不同,奇偶性条带单 元Bp可以存储在存储设备340中以及Bq可以存储在存储设备 350中,而数据条带单元Bl、 B2、 B3,以及B4可以分别存储在存 储设备310、 320、 330,以及360中。奇偶性存储设备的位置可以 在诸如行C和D等等之类的每一个连续的行上在多个存储设备之 间旋转。
在写入操作过程中,客户端可以将数据写入到给定行中,好像向 RAID-0布局中写入。更具体地说,可以告诉客户端,数据被分为条 状,以便对于每一个RAID-6行,整行存储在为该行指定的主奇偶 性存储设备中(上面用下标字母"p"表示),客户端条带单元等于行中的其他、非奇偶性条带单元的组合的大小。然后,客户端可以将整
行的数据发送到主奇偶性存储设备。然后,主奇偶性存储i殳备可以根 据下面将比较详细地描述的过程,将数据转发到给定行中的组件数据
存储设备和次要奇偶性存储设备(上面用下标字母"q,,表示)。每一 个存储设备都可以将奇偶性和/或数据存储在其关联的RAM中,直 到计算出新的奇偶性,此时,可以提交写入操作,可以从RAM向 关联的存储设备传输数据和奇偶性。在数据和奇偶性条带单元被存储 在RAM中之后但是在数据和奇偶性从RAM传输到关联的存储设 备之前,存储子系统可以将写入完成消息返回到客户端,最小化了写 入延迟。可以通过一系列写入操作,写入大于单个行的容量的数据集, 每一个写入操作都具有一行或稍小的宽度,并且每一个写入操作都针 对其相应的行中的对应的主奇偶性存储i殳备。
可以按类似的方式处理读取操作。例如,读取请求也可以从客户 端发送到给定行中的主奇偶性存储设备。如果被请求的数据存储在与 主奇偶性存储设备关联的RAM中,则可以检索数据,并响应请求, 将数据直接发送到客户端。如果被请求的数据位于构成该行的一个或 多个其他存储设备上,则主奇偶性存储设备可以将对应的读取请求传 送到布局中的每一个存储设备,作为回报,接收被请求的数据的一部 分。然后,主奇偶性存储设备可以将数据组合起来,将它返回到发出 请求的客户端。如果数据的一个或多个部分位于已经发生故障的存储 设备上,则主奇偶性存储设备可以从构成该行的足够数量的其余存储 设备中检索数据,然后使用可用的数据和奇偶性重建缺失的数据。请 注意,在具有大量的冗余RAID-6及其他布局的情况下,可能不需 要从全部数据和奇偶性存储单元中检索数据;数据部分的子集可以足 够重建缺失的数据。
图4是存储子系统150的再一个备选实施例的详细方框图。 在所显示的实施例中,数据可以作为条带单元存储在存储子系统150 中。存储子系统150包括按RAID-1布局方式排列的存储设备410 和420。在所显示的实施例中,显示了两个存储设备,虽然在备选RAID-1布局中,也可以使用两个以上的存储设备,以提高冗余度。 每一个存储设备410和420都包括诸如随机存取存储器(RAM) 之类的一组临时存储设备415和425中的对应的一个。在一个实施 例中,存储设备415和425可以包括闪存RAM、 MEMS (微型机 电系统)存储器、带蓄电池后备电源的RAM、非易失性RAM (NVRAM),或其他永久性存储设备。数据可以在存储i殳备410和 420之间映射。数据可以存储在行的一部分、完整的行,或多行中。 每一行都可以包括主数据条带单元和次要条带单元。例如,所显示的 实施例中的第一行可以包括存储在存储设备410中的数据条带单元 Al和存储在存储设备420中的数据条带单元A2。第二行可以包括 存储在存储设备410中的数据条带单元Bl和存储在存储设备420 中的数据条带单元B2等等。主数据存储设备的位置在存储设备之间 可以变化,如对使存储设备410和420分担存储主数据条带单元的 职责的每一个连续的行或任何其他模式进行交替。
在操作过程中,可以告诉客户端,数据被分为条状,以便对于每 一行数据,数据存储在该行的主设备中。客户端可以向主数据存储设 备发送数据。然后,主数据存储设备可以将数据转发到给定行中的辅 助数据存储设备。每一个存储设备都可以将数据存储在其关联的 RAM中,直到条带单元准备还被提交,提供将存储设备中的多个写 入请求排序的机会。在数据条带单元被存储在RAM中之后但是在 数据从RAM传输到关联的存储设备之前,存储子系统可以将写入 完成消息返回到客户端,最小化了写入延迟。可以通过一系列写入操 作,写入大于单个行的容量的数据集,每一个写入操作都具有一行或 稍小的宽度,并且每一个写入操作都针对其相应的行中的对应的主数 据存储设备。对本领域技术人员显而易见的是,通过主数据存储设备, 可以类似地协调读取操作。
在存储子系统150的再进一步的实施例中,可以使用擦除-编码 方法。例如,在里德-索罗蒙码方案中,协调存储设备可以对K块接 收到的数据进行计算,以产生M擦除-代码块,以便只需要M块的N块,才能恢复原始数据,其中,N<M,通常K〈N。对本领域技 术人员显而易见的是,还有很多其他合适的冗余或擦除-编码的存储方 案。
图5是显示了 RAID-5布局中的客户端和行之间的写入事务 的一个实施例的顺序图。在所显示的实施例中,显示了客户端510向 包括数据存储设备501-504和奇偶性存储设备505的行写入数据 的情况。假设数据大小等于一行的容量。在时间t0,客户端510可 以在消息520中向奇偶性存储设备505发送数据,消息520包括 要存储在每一个数据存储设备501-504中的数据。客户端510不必 察觉行的单个组件。相反地,客户端510可以从元数据服务器获取 数据存储的布局,包括奇偶性存储设备505的位置和行的大小。在 奇偶性存储设备505接收数据之后,在时间tl,奇偶性存储设备 505可以计算新的奇偶性条带单元,并将它和/或数据存储在其关联的 临时存储设备中(方框525)。在时间t2,存储设备505可以开始分 别在消息531-534中将数据的一部分转发到每一个数据存储设备 501-504中。每一个存储设备501-504都可以将接收到的数据存储在 其关联的临时存储设备中。
在时间t3,存储设备505可以开始分别在消息541-544中从 每一个数据存储设备501-504接收确认。 一旦接收到了全部确认, 在时间t4,存储设备505可以向客户端510发送写入完成消息 550。值得注意的是,写入完成消息550可能不会被发送到客户端, 直到由数据存储设备接收到并确认新的数据。这确保了数据被冗余地 存储,并可以在任何单个设备发生故障的情况下恢复。随后,在时间 t5,存储设备505可以基于其关联的临时存储设备中的新的数据, 计算新的奇偶性值,并将它写入到其奇偶性条带单元位置(方框 560),或者,如果新的奇偶性已经存储在其关联的临时存储设备中, 则将新的奇偶性值从其关联的临时存储设备写入到其奇偶性条带单 元位置(方框560 )。在时间t6,每一个数据存储设备501-504都 可以将数据从其关联的临时存储设备写入到其数据条带单元位置,完成写入事务(方框570)。
下面将描述许多错误恢复情况。在于时间tl和时间t2之间发 生了电源故障或存储设备的其他临时中断的情况下,写入可能被丢 弃。由于新的数据和/或新的奇偶性向临时存储设备的传输是不完整 的,因此, 一旦电源被恢复或中断被纠正,部分数据可能会被丢弃。 在在时间t2之后发生电源故障或其他临时中断的情况下,在电源被 恢复之后,可以继续进行处理,算法的其余步骤可以好像没有发生故 障那样执行。
在电源故障和奇偶性存储设备之外的存储设备的故障组合的情 况下,奇偶性存储设备可以检测故障,并向MDS发送消息,以报告 设备故障。或者,奇偶性存储设备可以向客户端发送错误消息,代替 写入完成消息。作为响应,客户端可以与MDS进行接触,以报告错 误。在从客户端或从奇偶性存储设备接收到错误消息时,MDS可以 选择新的存储设备以替换发生故障的设备,并基于存储在其余存储设 备中的数据使条带的内容被重建。如果在行中的全部设备已经接收到 并存储了它们各自的数据部分之前设备发生故障,则可以从奇偶性存 储设备获得写入数据的完整的副本,以完成写入操作。
在电源故障和奇偶性存储设备的故障组合的情况下,MDS可以 通过诸如轮询等等传统技术来识别奇偶性存储设备的故障,并选择新 的存储设备来替换它。新的奇偶性存储设备可以通过从其他存储设备 读取数据并将所产生的值存储在新的存储位置,来重新计算奇偶性 值。在某些实施例中,可以由诸如MDS之类的另一个设备进行重新 计算。
图6是显示了 RAID-5布局中的客户端和行的一部分之间的 写入事务的一个实施例的顺序图。在所显示的实施例中,显示了客户 端610向包括数据存储设备601-604和奇偶性存储设备605的行 写入数据的情况。假设数据大小小于一行的容量。在时间t0,客户端 610可以在消息620中向奇偶性存储设备605发送数据,消息620 包括要存储在每一个数据存储设备601和602中的数据。客户端610不必察觉行的单个組件。相反地,客户端610可以从元数据服 务器获取(或被告诉)数据存储的布局,包括奇偶性存储设备605的 位置和存储数据所需的数据条带单元的大小。在奇偶性存储设备605 接收数据之后,在时间tl,奇偶性存储设备605可以将数据存储在 其关联的临时存储设备中(方框625)。
在时间t2,存储i殳备605可以开始分别在消息631和632中 将数据的一部分转发到每一个数据存储设备601和602中。每一个 存储设备601和602都可以将接收到的数据存储在其关联的临时 存储设备中。在时间t3,存储设备605可以开始分别在消息641和 642中从每一个数据存储设备601和602接收确认。 一旦接收到了 全部确认,在时间t4,存储"i殳备605可以向客户端610发送写入 完成消息650。随后,在时间t5,每一个数据存储设备601和602 可以分别在消息661和662中将存储在其关联的数据存储位置的 旧的数据的副本发送到存储i殳备605。在接收消息661和662之 后,在时间t6,存储i殳备605可以分别在消息671和672中将确 认发送到每一个数据存储设备601和602。随后,在时间t7,存储 设备605可以使用从存储设备601和602接收到的旧数据和从客 户端610接收到的新的数据来计算新的奇偶性值,将结果存储在其 关联的临时存储设备中(方框682 )。在时间t8,每一个数据存储设 备601和602都可以将数据从其关联的临时存储设备写入到其数 据存储位置(方框684)。在时间t9,存储设备605可以将新的奇 偶性值从其关联的临时存储设备写入到其奇偶性数据存储位置,完成 写入事务(方框686)。对本领域技术人员显而易见的是,错误恢复 类似于上文所描述的处理,考虑了 RAID-5布局中的客户端和完整 的行之间的写入事务,因此,将不再对其进行进一步的描述。
图7是显示了 RAID-6布局中的客户端和行之间的写入事务 的一个实施例的顺序图。在所显示的实施例中,显示了客户端710向 包括数据存储设备702-705和奇偶性存储设备701和706的行写 入数据的情况。假设数据大小等于一行的容量。在时间t0,客户端710可以在消息720中向奇偶性存储设备706发送数据,消息720包 括要存储在每一个数据存储设备702-705中的数据。客户端710不 必察觉行的单个组件。相反地,客户端710可以从元数据服务器获 取(或被告诉)数据存储的布局,包括主奇偶性存储设备706的位 置和行的大小。在主奇偶性存储设备706接收数据之后,在时间tl, 主奇偶性存储设备706可以将新的数据存储在其关联的临时存储设 备中,计算新的主奇偶性值,并将主奇偶性值存储在其关联的临时存 储设备中(方框725)。
在时间t2,存储设备706可以在消息731中将新的数据发送 到次要奇偶性存储设备701。次要奇偶性存储设备701可以将新的 数据存储在其关联的临时存储设备中。在时间t3,次要奇偶性存储 设备701可以在消息732中将确认发送回主奇偶性存储设备706。 一旦接收到确认,在时间t4,存储设备706可以开始分别在消息 741-744中向每一个数据存储设备705-702转发数据的一部分的处 理。每一个存储设备705-702都可以将接收到的数据存储在其关联 的临时存储设备中。在时间t5,存储设备706可以开始分别在消息 751-754中从每一个数据存储设备702-705接收确认。一旦接收到了 全部确认,在时间t6,存储设备706可以在消息761中向存储设 备701发送写入完成消息。存储设备701可以基于数据计算新的奇 偶性条带单元的值,将次要奇偶性条带单元位置的状态设置为完成, 并在时间t7在消息762中将确认发送回存储设备706。
在时间t8,存储设备706可以将写入完成消息770发送到客 户端710。随后,在时间t9,存储i殳备706和701可以将新的奇
位置(方框780)。在时间t10,每一个数据存储设备702-705都可 以将数据从其关联的临时存储设备写入到其数据条带单元位置,完成 写入事务(方框790)。虽然在上面的描述中,主奇偶性存储设备706 可以在时间tl计算新的主奇偶性值,辅助存储器设备701可以在 时间t7计算新的主奇偶性值,但是,在备选实施例中,存储设备701和706可以在接收到新的数据之后和时间t9之前的任何时间,根 据新的数据计算新的奇偶性值。
下面将描述许多错误恢复情况。在在时间tl和时间t2之间发 生了电源故障或存储设备的其他临时中断的情况下,写入可能被丢 弃。由于新的数据和/或新的奇偶性向临时存储设备的传输是不完整 的,因此, 一旦电源被恢复或中断被纠正,部分数据可能会被丢弃。 在在时间t2之后发生电源故障或其他临时中断的情况下,在电源被 恢复之后,可以继续进行处理,算法的其余步骤可以好像没有发生故 障那样执行。
在电源故障和不同于任何一个奇偶性存储设备的存储设备的故 障组合的情况下,任何一个奇偶性存储设备都可以检测故障,并向 MDS发送消息,以报告设备故障。或者,主奇偶性存储设备可以向 客户端发送错误消息,代替写入完成消息。作为响应,客户端可以与 MDS进行接触,以报告错误。在从客户端或从奇偶性存储设备接收 到错误消息时,MDS可以选择新的存储设备以替换发生故障的设备, 并基于存储在其余存储设备中的数据,使条带的内容被重建。如果在 行中的全部设备已经接收到并存储了它们各自的数据部分之前设备 发生故障,则可以从任何 一 个奇偶性存储设备获得写入数据的完整的 副本,以完成写入操作。
在电源故障和奇偶性存储设备的故障组合的情况下,MDS可以 通过诸如轮询等等传统技术来识别奇偶性存储设备的故障,并选择新 的存储设备来替换它。新的奇偶性存储设备可以通过从其他存储设备 读取数据并将所产生的值存储在新的存储位置,来重新计算奇偶性 值。在某些实施例中,可以由诸如MDS之类的另一个设备进行重新 计算。
图8是显示了 RAID-6布局中的客户端和行的一部分之间的 写入事务的一个实施例的顺序图。在所显示的实施例中,显示了客户 端810向包括数据存储设备802-805和奇偶性存储设备801和 806的行写入数据的情况。假设数据大小小于一行的容量。在时间tO,客户端810可以在消息820中向奇偶性存储设备806发送数 据,消息820包括要存储在数据存储设备805中的数据。客户端 810不必察觉行的单个组件。相反地,客户端810可以从元数据服 务器获取(或被告诉)数据存储的布局,包括主奇偶性存储设备806 的位置和存储数据所需的数据条带单元的大小。在主奇偶性存储设备 806接收数据之后,在时间tl,奇偶性存储设备806可以将数据存 储在其关联的临时存储设备中(方框825)。
在时间12,存储设备806可以在消息831中将新的数据发送 到次要奇偶性存储设备801。次要奇偶性存储设备801可以将新的 数据存储在其关联的临时存储设备中。在时间t3,次要奇偶性存储设 备801可以在消息832中将确认发送回主奇偶性存储设备806。 一 旦接收到确认,在时间t4,存储设备806可以开始在消息841中 向存储设备805转发数据的一部分的处理。存储设备805可以将接 收到的数据存储在其关联的临时存储设备中。在时间t5,存储设备 806可以在消息842中从存储设备805接收到确认。 一旦接收到了 确认,在时间t6,存储设备805可以向客户端810发送写入完成 消息850。随后,在时间t7,数据存储i更备805可以在消息861中 将存储在其关联的数据条带单元位置的旧的数据的副本发送到存储 设备806,在消息862中发送到存储i殳备801。在接收到消息861 之后,在时间t8,存储设备806可以在消息871中将确认发送到 数据存储设备805。
在接收到消息862之后,在时间t9,存储设备801可以在消
息872中将确认发送到数据存储设备805。随后,在时间t10,存
储设备806可以使用从存储设备805接收到的旧数据和从客户端
810接收到的新的数据来计算新的奇偶性值,将结果存储在其关联的
临时存储设备中(方框882 )。在时间tll,数据存储设备805可 以将数据从其关联的临时存储设备写入到其关联的数据条带单元位
置(方框884)。在时间t12,存储^殳备806可以将新的奇偶性值 从其关联的临时存储设备写入到其奇偶性条带单元位置(方框886)。在时间t13,存储设备801可以使用从存储设备805接收到的旧数 据和从存储设备806接收到的新的数据来计算新的奇偶性值,将结 果存储在其关联的临时存储设备中(方框892)。在时间t14,存储 设备801可以将新的奇偶性值从其关联的临时存储设备写入到其奇 偶性条带单元位置,完成写入事务(方框894)。对本领域技术人员 显而易见的是,错误恢复类似于上文所描述的处理,考虑了 RAID-6 布局中的客户端和完整的行之间的写入事务,因此,将不再对其进行 进一步的描述。
图9显示了过程900的一个实施例,该过程900可以在 RAID-5布局中的客户端和行之间的写入事务中被RAID-5布局中 的奇偶性存储设备使用。当奇偶性存储设备从客户端接收到写入请求 时,过程900可以开始(方框910)。在一个实施例中,主奇偶性 存储设备可以将新的数据存储在关联的临时存储设备中(方框915 )。 如果写入请求包含全宽的RAID-5行的数据(判断方框920 ),那 么,奇偶性存储设备可以计算新的奇偶性值,并将它们与新的数据一 起存储在关联的临时存储设备中(方框932 )。随后,奇偶性存储设 备可以将部分数据发送到RAID-5行中的每一个数据存储设备(方 框934),并等待确认。当已经从RAID-5行中的全部数据存储设 备接收到确认时(方框936 ),奇偶性存储设备可以将写入完成消息 返回到客户端(方框938)。在发送完写入完成消息之后,奇偶性存 储设备可以将新的奇偶性值从关联的临时存储设备写入到奇偶性存 储设备内的奇偶性条带单元位置,完成写入操作(方框940)。
如果写入请求只包含RAID-5行的一部分的数据(判断方框 920 ),那么,奇偶性存储设备可以将新的数据从写入请求发送到对 应的存储设备(它们是其RAID-5行中的数据存储设备)(方框 954),并等待确认。当已经从RAID-5行中的全部对应的数据存储 设备接收到确认时(方框956),奇偶性存储设备可以将写入完成消 息返回到客户端(方框958)。在发送完写入完成消息之后,奇偶性 存储设备可以从每一个存储设备(它们是其RAID-5行中的数据存储设备)接收数据的旧的部分的副本(方框960)。奇偶性存储设备 可以向每一个对应的存储设备(它们是其RAID-5行中的数据存储 设备)发送确认(方框970),从旧的奇偶性值、数据的旧的部分, 以及数据的新的部分,计算新的奇偶性值,并将所产生的值写入到关 联的临时存储设备中(方框980)。然后,奇偶性存储设备可以将新 的奇偶性值从关联的临时存储设备写入到奇偶性存储设备内的奇偶 性条带单元位置,完成写入操作(方框940)。
图10显示了过程1000的一个实施例,该过程1000可以在 RAID-6布局中的客户端和行之间的写入事务中被RAID-6布局中 的主奇偶性存储设备使用。当主奇偶性存储设备从客户端接收到写入 请求时,过考呈1000可以开始(方框1010)。在一个实施例中,主 奇偶性存储设备可以将新的数据存储在关联的临时存储设备中(方框 1015)。如果写入请求包含全宽的RAID-6 4亍的数据(判断方框 1020 ),那么,主奇偶性存储设备可以计算新的主奇偶性值,并将它 们存储在关联的临时存储设备中(方框1032 )。随后,主奇偶性存 储设备可以向次要奇偶性存储设备发送新的数据,并等待确认(方框 1034)。当已经从次要奇偶性存储设备接收到确认时(方框1036), 主奇偶性存储设备可以向RAID-6行中的每一个数据存储设备发送 部分数据(方框1038),并等待确认。当已经从RAID-6行中的全 部数据存储设备接收到确认时(方框1040),主奇偶性存储设备可 以将写入完成消息返回到次要奇偶性存储设备并等待确认(方框 1042 )。
在已经接收到确认之后(方框1044),主奇偶性存储设备可以 将写入完成消息返回到客户端(方框1046)。 一旦发送完写入完成 消息,主奇偶性存储设备可以将新的奇偶性值从关联的临时存储设备 写入到主奇偶性存储设备内的主奇偶性条带单元位置,完成写入操作 (方框1050 )。
如果写入请求只包含RAID-6行的一部分的数据(判断方框 1020),那么,主奇偶性存储设备可以将新的数据的副本转发到存储设备(它是其RAID-6行中的次要奇偶性存储设备)(1062)。主 奇偶性存储设备也可以将新的数据从写入请求发送到存储设备(它们 是其RAID-6行中的目标数据存储设备)中(方框1064),并等待 确认。当已经从向其中发送了数据的全部数据存储设备接收到确认 (方框1066),并从其RAID-6行中的次要奇偶性存储设备接收到 确认时(方框1068),主奇偶性存储设备可以将写入完成消息返回 到客户端(方框1070 )。在发送完写入完成消息之后,主奇偶性存 储设备可以从其RAID-6行中的接收到新的数据的每一个存储设备 接收数据的旧的部分的副本(方框1072 )。主奇偶性存储设备可以 向每一个存储设备(它从其中接收到了数据的旧的部分)发送确认(方 框1074 ),从旧的奇偶性值、数据的旧的部分,以及数据的新的部 分,计算新的奇偶性值,并将所产生的值写入到关联的临时存储设备 中(方框1076)。然后,主奇偶性存储设备可以将新的奇偶性值从 关联的临时存储设备写入到主奇偶性存储设备内的奇偶性条带单元 位置,完成写入操作(方框1050)。
图11显示了过禾呈1100的一个实施例,该过程1100可以在 RAID-6布局中的客户端和行之间的写入事务中被RAID-6布局中 的次要奇偶性存储设备使用。当次要奇偶性存储设备从其RAID-6 行中的主奇偶性存储设备接收到包括新的数据的消息时,过程1100 可以开始(方框1110)。如果该消息包括足够填充RAID-6布局中 的一个完整的行的新的数据(判断方框1120),则次要奇偶性存储 设备可以将新的数据存储在关联的临时存储设备中(方框1132), 并向主奇偶性存储设备发送确认(方框1134)。随后,次要奇偶性 存储设备可以从其RAID-6行中的主奇偶性存储设备接收写入完成 消息(方框1136)。次要奇偶性存储设备可以向主奇偶性存储设备 发送确认(方框1138),计算新的次要奇偶性值,并将新的次要奇 偶性值从关联的临时存储设备写入到次要奇偶性存储设备内的奇偶 性条带单元位置(方框1140)。然后,次要奇偶性存储设备可以将 新的奇偶性值从关联的临时存储设备写入到次要奇偶性存储设备内的奇偶性条带单元位置(方框1170),完成写入操作(方框1180)。 如果来自主奇偶性存储设备的消息没有包括足以填充RAID-6 布局中的一个完整的行的数据,但是,包括数据的新的部分(判断方 框1120),则次要奇偶性存储设备可以将数据的新的部分存储在关 联的临时存储设备中(方框1160),并向主奇偶性存储设备发送确 认(方框1162)。随后,次要奇偶性存储设备可以接收数据的旧的 部分的副本(从它们的相应的数据存储设备发送了新的数据)(方框 1164)。次要奇偶性存储设备可以向每一个存储设备(它从其中接收 到了数据的旧的部分)发送确认(方框1166)。然后,次要奇偶性 存储设备可以从旧的次要奇偶性值、数据的旧的部分,以及数据的新 的部分,计算新的次要奇偶性值,并将所产生的值写入到关联的临时 存储设备中(方框1168)。然后,次要奇偶性存储设备可以将新的 奇偶性值从关联的临时存储设备写入到次要奇偶性存储设备内的奇 偶性条带单元位置(方框1170),完成写入操作(方框1180)。值 得注意的是,前面的流程图只用于讨论目的。在备选实施例中,流程 图中所描述的组成要素可以按不同的顺序进行,或者,在某些情况下 同时进行。例如,在图5中,时间t6可以在时间t5之前发生,在 时间t6,每一个数据存储设备501-504都可以从其关联的临时存储 设备向其数据条带单元位置写入数据(方框570),而在时间t5,存 储设备505可以基于其关联的临时存储设备中的新的数据,计算新 的奇偶性值,并将它写入到其奇偶性条带单元位置(方框560)。类 似地,在图6中,时间t8可以在时间t7之前发生,而在图8中, 时间tll可以在时间t10之前发生等等。此外,在图9中,奇偶性 存储设备可以将新的奇偶性值从关联的临时存储设备写入到奇偶性 存储设备内的奇偶性条带单元位置,在写入完成消息被发送到客户端 (方框938)之前完成写入操作(方框940)。类似地,在图10中, 在写入完成消息被发送到客户端(方框1046)之前,主奇偶性存储 设备可以将新的奇偶性值从关联的临时存储设备写入到主奇偶性存 储设备内的主奇偶性条带单元位置(方框1050 )等等。很多这样的替代方案都是可以的。另外, 一些流程图的组成要素可以在各种实施 例中不存在,或者,也可以与其他组成要素相结合。所有这样的替代 方案也是可以的。
值得注意的是,上文所描述的实施例可以包括软件。在这样的实 施例中,实现了方法和/或机制的程序指令可以利用计算机可读取的介 质传送或存储。有很多被配置为存储程序指令的介质类型可用,它们
包括硬盘、软盘、CD-ROM、 DVD、快擦写存储器、可编程ROM (PROM)、随机存取存储器(RAM),以及各种其他形式的易失性或非 易失性存储器。
虽然非常详细地描述了上文的实施例, 一旦完全理解了上面的说
明,很多变化和修改方案对于那些所属领域的技术人员将变得显而易 见。下面的权利要求应被解释为包括所有这样的变化和修改方案。
权利要求
1. 一种计算机系统,包括客户端;以及连接到所述客户端的存储子系统,其中,所述存储子系统包括可作为阵列中的行和列寻址的多个数据存储位置,所述阵列的每一列都包括多个存储设备的单独的存储设备;其中,所述多个存储设备中的至少两个被预先确定为所述阵列的不同行的协调存储设备,其中,对于所述阵列中的对应的行,只有单个存储设备被配置为在给定时间充当协调存储设备;其中,对于所述阵列中的给定行,协调存储设备被配置为从所述客户端接收数据,以便存储在所述给定行中;将接收到的数据的一个或多个部分转发到所述多个存储设备的一个或多个其他存储设备;以及协调冗余数据在所述给定行中的计算和存储。
2. 根据权利要求1所述的系统,其中,响应接收到以存储在特定存储设备的给定存储位置中为目标的数据的一部分的情况,与所述特定存储设备关联的非易失性临时存储设备被配置为在接收到的 数据的一部分被存储在所迷给定存储位置之前緩存接收到的数据的一部分。
3. 根据权利要求2所述的系统,其中,所述协调存储设备进 一步被配置为,响应检测到数据的一个或多个部分的一个或多个副本 被緩存在与所述给定行的一个或多个存储设备关联的非易失性临时 存储设备中的情况,将写入完成消息传送到所述客户端。
4. 根据权利要求3所述的系统,其中,所述系统被配置为 检测所述多个存储设备中的至少一个存储设备的故障;以及 如果所述故障是在写入完成消息被传送之后并且在緩存的数据的至少 一 部分被从所述非易失性临时存储设备传输到给定行中的关 联的存储位置之前发生的,则从过去存储在所述非易失性临时存储设备中的数据重建存储在所述给定行中的至少包括一些冗余数据的数据;以及如果所述故障是在緩存的数据被从所述非易失性临时存储设备 传输到给定行中的关联的存储位置之后发生的,则从过去存储在所述 给定行中的数据重建存储在所述给定行中的至少包括一些冗余数据 的数据。
5. 根据权利要求1所述的系统,其中,所述协调存储设备进 一步被配置为计算存储在所述给定行中的数据的多个部分的第一奇 偶性值。
6. 根据权利要求5所述的系统,其中,响应检测到用于计算 奇偶性值的数据已经被所述给定行的协调存储设备接收到的情况,与 所述多个存储设备中的每一个存储设备关联的非易失性临时存储设 备进一步被配置为将数据的被緩存的部分传输到关联的存储设备的 给定行中的存储位置。
7. 根据权利要求1所述的系统,其中,所述阵列利用RAID-1 布局、RAID-5布局、RAID-6布局或另 一个擦除-编码布局中的至少 一个。
8. 根据权利要求5所述的系统,其中,对于所述阵列中的给定行,所述协调存储设备进一步被配 置为将数据的一个或多个接收到的部分转发到所述给定行中单独的 存储设备中的第二个;其中,所迷单独的存储设备中的第二个被配置为使用数据的转发 的部分计算存储在所述给定行中的数据的多个部分的第二奇偶性值。
9. 一种将数据存储在包括多个存储设备的阵列的存储位置中 的方法,其中,所述存储位置是可作为行和列寻址的,所迷阵列的每 一列都包括单独的存储设备,所述方法包括将所述多个存储设备中的至少两个指定为所述阵列的不同行的 协调存储设备,其中,对于所述阵列中的对应的行,只有单个存储设 备被配置为在给定时间充当协调存储设备;在被指定为所述阵列的给定行的协调存储设备的所述多个存储 设备中的预定的存储设备接收数据,其中,所述数据以存储在所迷给定行中为目标;以及从预定的协调存储设备将数据的一个或多个部分转发到所述多 个存储设备中的一个或多个其他存储设备。
10. 根据权利要求9所述的方法,其中,响应接收到以存储在 特定存储设备的给定存储位置中为目标的数据的一部分的情况,所述 方法进一步包括,在数据的接收到的部分存储在所述给定存储位置之 前,与所述特定存储设备关联的非易失性临时存储设备緩存接收到的 数据的一部分。
11. 根据权利要求10所述的方法,进一步包括响应检测到数 据的一个或多个部分的一个或多个副本被緩存在与所述给定行的一 个或多个存储设备关联的非易失性临时存储设备中的情况,将写入完 成消息传送到所述客户端。
12. 根据权利要求11所述的方法,进一步包括 检测所述多个存储设备中的至少一个存储设备的故障;以及 如果所述故障是在写入完成消息被传送之后并且在緩存的数据的至少 一部分被从所述非易失性临时存储设备传输到给定行中的关 联的存储位置之前发生的,则从过去存储在所述非易失性临时存储设 备中的数据重建存储在所述给定行中的至少包括一些冗佘数据的数 据;以及如果所述故障是在緩存的数据被从所述非易失性临时存储设备 传输到给定行中的关联的存储位置之后发生的,则从过去存储在所述 给定行中的数据重建存储在所述给定行中的至少包括一些冗余数据 的数据。
13. 根据权利要求9所述的方法,其中,进一步包括所述协调 存储设备计算存储在所迷给定行中的数据的多个部分的奇偶性值。
14. 根据权利要求13所述的方法,其中,响应检测到用于计算设备接收到的情况,所述方法进一步包括与所述多个存储设备中的每一个存储设备关联的 非易失性临时存储设备将数据的被緩存的部分传输到关联的存储设 备的给定行中的存储位置。
15. 根据权利要求9所述的方法,其中,所述阵列利用RAID-1 布局、RAID-5布局、RAID-6布局或另 一个擦除-编码布局中的至少 一个。
16. 存储可由处理器执行的计算机指令的多个计算机可读取的 存储介质,执行计算机指令以便执行下列操作访问包括多个存储设备的存储器阵列的存储位置,其中,所述存 储位置是可作为行和列寻址的,所述阵列的每一列都包括单独的存储 设备;将所述多个存储设备中的至少两个指定为所述阵列的不同行的 协调存储设备,其中,对于所述阵列中的对应的行,只有单个存储设 备被配置为在给定时间充当协调存储设备;在被指定为所述阵列的给定行的协调存储设备的所述多个存储 设备中的预定的存储设备接收数据,其中,所述数据以存储在所述给 定行中为目标;以及从预定的协调存储设备将数据的一个或多个部分转发到所述多 个存储设备中的一个或多个其他存储设备。
17. 根据权利要求16所述的计算机可读取的存储介质,其中, 所述指令是进一步可执行的,以响应接收到以存储在所迷给定存储位 置中为目标的数据的一部分的情况,将数据的接收到的部分緩存在与 存储设备关联的包括给定存储位置的非易失性临时存储设备中。
18. 根据权利要求17所述的计算机可读取的存储介质,其中, 所述指令是进一步可执行的,以响应检测到数据的一个或多个部分的 一个或多个副本被緩存在与给定行的一个或多个存储设备关联的非 易失性临时存储设备中的情况,将写入完成消息传送到所述客户端。
19. 根据权利要求18所述的计算机可读取的存储介质,其中, 所述指令是进一步可执行的,以便检测所述多个存储设备中的至少一个存储设备的故障;以及 如果所述故障是在写入完成消息被传送之后并且在緩存的数据 的至少 一部分被从所述非易失性临时存储设备传输到给定行中的关 联的存储位置之前发生的,则从过去存储在所述非易失性临时存储设 备中的数据重建存储在所述给定行中的至少包括一些冗余数据的数 据;以及如果所述故障是在緩存的数据被从所述非易失性临时存储设备 传输到给定行中的关联的存储位置之后发生的,则从过去存储在所述 给定行中的数据重建存储在所述给定行中的至少包括一些冗余数据 的数据。
20.根据权利要求16所述的计算机可读取的存储介质,其中, 所述指令是进一步可执行的,以便使所述协调存储设备计算存储在所述给定行中的数据的多个部 分的奇偶性值;以及使每一个非易失性临时存储设备,响应检测到用于计算奇偶性值 的数据已经被所述给定行的协调存储设备接收到的情况,将数据的被 緩存的部分传输到关联的单独的存储设备的所述给定行中的存储位 置。
全文摘要
一种用于将数据存储在阵列中的系统和方法。系统包括连接到存储子系统的客户端。存储子系统包括可作为阵列中的行和列寻址的数据存储位置。每一列都包括单独的存储设备。每一行都包括冗余数据。对于给定行,协调存储设备从客户端接收数据,协调冗余数据的计算和存储,以及将数据转发到其他存储设备。响应接收到以存储在给定存储位置为目标的数据的情况,与单独的存储设备关联的包括给定存储位置的非易失性临时存储设备缓存接收到的数据。协调存储设备响应检测到数据已经被缓存在非易失性临时存储设备中的情况,将写入完成消息传送到客户端中。至少两个存储设备是单独的行中的协调存储设备。
文档编号H04L29/08GK101415024SQ20081016808
公开日2009年4月22日 申请日期2008年9月27日 优先权日2007年9月28日
发明者G·马修, 克雷格·K·汉默, 欧莱格·吉塞莱弗, 罗纳尔德·S·卡尔 申请人:赛门铁克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1