一种在存储系统中计算奇偶校验的方法.pdf

上传人:g**** 文档编号:815210 上传时间:2018-03-13 格式:PDF 页数:24 大小:1.94MB
返回 下载 相关 举报
摘要
申请专利号:

CN201110217894.6

申请日:

2008.03.27

公开号:

CN102346694A

公开日:

2012.02.08

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/10申请日:20080327|||公开

IPC分类号:

G06F11/10; G11B20/18

主分类号:

G06F11/10

申请人:

提琴存储器公司

发明人:

乔恩·C.R.·班尼特

地址:

美国新泽西州伊泽林伍德大道南33号3楼

优先权:

2007.03.29 US 60/920,737

专利代理机构:

广州三环专利代理有限公司 44202

代理人:

郝传鑫;倪小敏

PDF下载: PDF下载
内容摘要

本发明描述了一种存储系统和使用所述系统的方法,所述存储系统被用于以RAID式的方法存储数据。存储数据包括奇偶校验数据可被检索,以使当不具有奇偶校验数据的存储数据和奇偶校验数据,或来自所有存储模块(除了某一个存储模块之外)的存储数据和奇偶校验数据当中的首个数据被接收时,所述存储数据可被恢复。对于低的写负荷,数据的写入被管理以使在时间间隔内,RAID条带中的存储模块中只有一个存储模块正被写入或擦除。

权利要求书

1: 一种在存储系统中计算奇偶校验的方法, 其特征在于, 该方法包括 :   在树中配置多个存储模块, 所述树具有节点 ;   从两个第一节点的每一个传送数据给第三节点, 所述第三节点离树的根较近 ;   使用来自所述两个第一节点和存储在第三节点处的数据对第一奇偶校验数据进 行计算, 以产生第二奇偶校验数据 ;   将第二奇偶校验数据从两个第二节点的每一个传送给离根较近的节点 ;   存储第三奇偶校验数据, 所述第三奇偶校验数据是通过对接收自两个第三节点的 每一个的第二奇偶校验数据和存储在离根较近的节点处的数据进行计算获得的。
2: 权利要求 1 中的方法, 其特征在于, 所述第三奇偶校验数据是在根节点处计算的奇 偶校验数据。
3: 权利要求 1 中的方法, 其特征在于, 所述第三奇偶校验数据是存储在计算第三奇偶 校验数据的模块之外的模块中。
4: 权利要求 1 中的方法, 其特征在于, 奇偶校验数据是通过执行 “异或” 计算来计算的。

说明书


一种在存储系统中计算奇偶校验的方法

    分案申请说明   本专利申请是申请日为 2008 年 3 月 27 日、 申请号为 200880007937.4、 发明名称为 “存储管理系统和方法” 的分案申请。
     本申请主张 2007 年 3 月 29 日递交的序列号为 60/920,737 的美国临时申请的权 益, 该临时申请通过引用结合在本申请中。
     技术领域
     本申请涉及计算机存储系统中计算奇偶校验的方法。背景技术 计算机存储系统可以是永久或非永久类型中的任何一个。 永久存储类型的例子是 磁芯、 磁盘驱动器、 磁带驱动器和半导体闪存。 非永久存储类型可以是诸如动态随机存储器 (DRAM) 之类的半导体存储。 非永久存储类型典型地对数据的读和写都具有快速存取时间且 被用作计算机主存储器或高速缓冲存储器。 数据通过一种需要电力供应的方法被保留在这 样的存储器中, 且如果电力中断, 存储在那里的信息可能会丢失。 非永久存储系统通常具有 后备电源, 其可以是用于短时间电力中断的电容性存储设备, 或是使用电池、 发电机之类的 用于长期数据保留的后备电源。
     永久存储设备, 例如磁盘、 磁带或闪存, 即使电源被从设备上移除也会保留存储的 数据, 且常常被用于备份非永久数据存储设备和实际上不能提供持续电力的花费或可靠性 的地方的长期数据存储。 另外, 因为更大量的数据被存储在永久存储设备中, 技术发展被导 向降低每比特存储的成本而不是存取速率。因此, 许多计算系统使用多种存储类型来执行 不同的功能, 在那里, 即时需要的数据被存储在非永久存储器中, 且可以被备份在永久存储 器中, 而低频率存取的数据和大组数据被存储在永久存储器中。
     可以称为数据中心的计算机数据库系统或诸如因特网的分布式数据系统, 以及 与其关联的存储设备可以存储大量的数据。现今, 这样的数据量可能超过 1000 太字节 (Terabyte, TB) , 且预计会继续增长。很多这些数据集充分大于用于即时存取的非永久存 储器的容量, 且在数据中心的服务器在服务来自客户机的请求时的响应时间可能是在系统 执行中的严重瓶颈。这个限制很大程度上是永久存储介质的数据存取时间等待的结果。对 于磁带系统, 线性磁带必须被转换以使将要被读或写的数据块在读头或写头处定位。类似 地, 对于磁盘, 该头必须被定位以跨越想要的数据扇区所处的数据道, 然后磁盘控制器等待 直到扇区在定位的头的下面旋转。 这些操作中的任一个都充分慢于对非永久存储设备的读 或写。 在数据库中具有随机单元的数据单个存储单元需要读、 写或修改的地方, 这样的局限 尤其严重。
     在对存储在存储器中的数据的请求以及对来自存储器的数据的检索之间的时间 可称为等待时间。在目前使用的永久存储技术中, 闪存比诸如磁盘之类的机械设备具有较 低的等待时间, 但比现有的非永久存储类型明显具有更长的等待时间。闪存和类似固态技
     术的存储器的价格传统上遵循知名的摩尔定律的原则, 该定律表示, 在 18 个月的周期内, 设备容量通常倾向于翻番, 且价格减半。依此, 在闪存内而非在例如磁盘内存储数据的成 本, 预计很快会 (与后者) 达到相等。
     由于具有比磁盘明显较低的等待时间, 采取当前可用的存储模块的设计和操作 方法, 闪存在存取时间上仍然有局限。闪存是一种通称, 且多种类型的固态设备可被视 为是闪存。最初有一种电可擦除只读存储器 (EEPROM) , 随后是其他发展, 称为或非闪存 (NOR-flash) 、 与非闪存 (NAND-flash) 等等。 所述每种技术具有不同的设计和结构以及关于 数据的读和写的不同特性。就是说, 在可被读或写的数据块 (例如数据字、 页或数据扇区) 的 最小尺寸上可能存在限制, 或在读或写数据所需的时间上存在差异。 在许多例子中, 读或写 数据的时间是不确定的, 可能在大范围内变化。存储控制器或其他这类设备必须记录未解 决的请求直到他们被实现, 这种要求使得数据等待时间成为变量, 它可使整个系统慢下来, 还会增加硬件以及用于管理存储器的软件的复杂度。此外, 闪存设备的生存期被认为取决 于耗尽机制, 且是用读、 写 (当涉及闪存时也被称为 “编程” ) 或擦除周期来测定的。当闪存 被使用时此中术语 “写” 用于表示 “编程” 的意思。
     尽管对于各个单元或扇区, 在生存期内周期的数目可能是个大的数目, 但通过计 算可以显示, 实践中以及在病态情况下, 由快速设备构成的大容量存储器的单独元件的生 存期是足够短的, 以致可能需要相当大的努力来拉平存储器的磨损以及执行差错检测和修 正、 标记不良数据块等等。 独立 / 廉价磁盘冗余阵列 (Redundant Arrays of Independent /Inexpensive Disks, RAID)的概念至少要回溯远至大卫· 帕特森 (David Patterson)、 加思· 吉布森 (Garth Gibson) 和朗帝·H.·卡兹 (Randy H. Katz) 在 1988 年写的一篇论文。RAID 允许 磁盘存储器系统被安排用于通过增加冗余码防止他们包含的数据的损失。在适当配置的 RAID 结构中, 任意单个磁盘的损失不会妨碍存取或重构存储的数据的能力。 没有 RAID 的磁 盘阵列的平均故障间隔时间 (Mean Time Between Failure, MTBF) 除以所述阵列中的驱动 数目, 将与单独驱动的 MTBF 相等, 因为任意磁盘的损失会导致数据的损失。因为如此, 对于 许多应用需求来说, 一排磁盘驱动的 MTBF 将会太低。然而, 可通过以各种各样的方式冗余 地存储信息使磁盘阵列变成容错的。
     例如, RAID-3、 RAID-4 和 RAID-5 全都是主题的变种。该主题是基于奇偶校验的 RAID。将数据分布在几个磁盘处并增加辅助磁盘, 而不是保留 RAID-1 中的数据的完整副 本。可基于在其他磁盘上的数据来计算 ( 使用布尔型 “异或” ) 在辅助磁盘上的数据。若在 该组磁盘中任意单个磁盘损坏了, 可以通过执行对在剩余盘上的数据的计算来恢复存储在 那个坏磁盘中的数据。这些工具没 RAID-1 那么贵, 因为他们不要求 RAID-1 要求的 100% 的 磁盘空间开销。 然而, 因为要计算磁盘上的数据, 因此存在与写和磁盘损失后恢复数据相关 联的性能影响。许多奇偶校验 RAID 的商业实施中使用缓冲存储器来缓解性能问题。
     在 RAID-4 磁盘阵列中有一组数据磁盘, 通常 4 或 5 个, 外加一个额外的用于存储 对其他磁盘上的数据的奇偶校验的磁盘。因为所有写都会导致奇偶校验磁盘的更新, 因此 该磁盘成为使所有对全部阵列的写动作减速的性能瓶颈。
     RAID 的基础原则是 “条带化” , 其是一种把多个驱动 (存储单元) 连接到一个逻辑存 储单元中的方法。条带化包含把每个驱动的存储空间划分成可能小到一个扇区 (例如 512
     比特) 或大到数兆字节的 “条带” 。这些条带随后被交叉存取以使组合的存储空间由来自条 带中的每个驱动组成。应用环境的类型, 输入 / 输出 (I/O) 或数据密集 (data intensive) , 是确定使用大的还是小的条带的设计根据。
     RAID-5 可使用与 RAID-4 相同的硬件配置来实现。在 RAID-4 的情况中, 对于各条 带, 奇偶校验块被存储在相同的磁盘上, 以使人们可以拥有所谓的奇偶校验磁盘。 在 RAID-5 的情况中, 对于各条带, 奇偶校验块被存储在作为条带一部分的磁盘上, 但奇偶校验块是分 布式的以使他们根本上均匀地分布在组成存储系统的多个所述磁盘处。 RAID-6 是在数据保 护中的另一个改进, 其包含对跨越多个条带的奇偶校验的计算, 例如使用条带的列作为计 算奇偶校验的基础。
     RAID 4 阵列的执行可能对读有利 (与 0 级相同) 。然而, 写入要求每次更新奇偶校 验数据。这特别减慢小的随机写入, 尽管大的写入或顺序写入是相当快的。因为在阵列中 只有一个驱动存储冗余数据, 所以 RAID 4 阵列的每兆字节的成本可以相当低。跨越多磁盘 的数据的分布可以通过专用的硬件或通过软件来管理。另外, 存在基于部分软件部分硬件 的解决方案的混合电路 RAID 结构。
     概念上, 数据和纠错奇偶校验数据的结构如图 1 所示, 此处, 一个块 A 中的数据被 条带化到跨越三个磁盘成为数据组 A1、 A2 和 A3, 且奇偶校验数据组 Ap 在第四个磁盘上, 且 此处, 典型地, 奇偶校验数据组 Ap 计算成数据组 A1、 A2 和 A3 的异或 (XOR)。如本领域技术 人员所熟知的, 数据组 A1、 A2、 A3 或 Ap 中的任意一个随后可能通过其他三个数据组被重构。 因此, 在任意所述数据组中表示例如其中一个磁盘故障的错误, 可通过使用其他数据组进 行纠正。
     纠错码 (error-correcting code, ECC) 是一种算法, 在其中, 每个数据信号符合 特定的计算法则, 以使在被接收或恢复的信号中违反该计算的表示出错的部分通常能够 被自动检测并纠正。ECC 被用于诸如动态 RAM、 闪存等等计算机数据存储器中以及数据传 输中。ECC 的例子包括汉明码 (Hamming code) 、 BCH 码、 里德-所罗门码 (Reed- Solomon code)、 里德-马勒码 (Reed-Muller code)、 二进制戈莱码 (binary Golay code)、 卷积码 (convolutional code) 和涡轮码 (turbo code)。最简单的纠错码能纠正单个位错误并检 测双个位错误。其它码可以检测或纠正多个位错误。ECC 存储通过防止在计算机存储器中 的错误来提供较大的数据精度和系统正常运行时间。被条带化的数据的各数据组 A1, A2, A3, Ap 可能具有附加到其上且存储在相同磁盘上的关联的纠错码 ECC 数据组。 当数据从磁 盘中被读出时, 通过 ECC 校验数据的完整且依所用的 ECC 而定可以检测并纠正一个或更多 错误。总体来说, 多个错误的检测和纠正是所采用的 ECC 的一个功能, 且对 ECC 的选择将依 所需的数据完整性的水平、 处理时间和其它花费而定。 发明内容
     本发明描述了一种存储系统, 包括多个存储模块, 此处, 各模块具有写和读数据的 性能。在所述多个存储模块中的一组 N 个存储模块中可存储 M 字节数据。存储在所述一组 N 个存储模块的 M 字节数据的纠错码可被存储在所述多个模块中的另一个存储模块中, 或 分布在各模块内。当存储的数据被从所述一组 N 个存储模块中的任意 N-1 个模块恢复且包 含纠错码数据时, 存储在一组 N 个存储模块中的 M 字节数据可被恢复。在另一方面, 一种存储系统包括多个存储模块, 各模块可具有定时电路, 且所述定 时电路在相同时间点被初始化或与基准时间具有周知的关系。一组 K 个存储模块可配置为 用于存储数据块和数据块中的奇偶校验数据块, 且可给 K 个存储模块中的每个分配一个不 重叠的时间间隔, 在该时间间隔内, 可在所述 K 个存储模块中的各存储模块写入数据或执 行擦除数据的操作。
     而在再一方面, 描述了一种操作存储系统的方法, 该方法包括 : 提供一种具有多个 存储模块的存储系统 ; 存储 M 个数据块和所述多个存储模块中的奇偶校验块存储模块的条 带; 从所述存储模块恢复至少 M 个数据块或 M-1 个数据块及奇偶校验数据 ; 使用 M 个数据块 或 M-1 个数据块及奇偶校验数据中的最早接收的一组, 以表示所述 M 个数据块。
     还是在另一方面, 描述了一种计算机程序产品。所述产品存储或分布在计算机可 读媒介上, 且包含用于管理存储系统中的数据的指令。所述存储系统可包含多个被配置以 使数据块和奇偶校验数据被存储在所述多个模块中的 L 个不同的存储模块上的存储模块。 L-1 个数据块和所述奇偶校验数据或存储数据块被恢复, 且要么是被恢复的 L-1 个数据块 和所述奇偶校验数据, 要么是总是较早被接收的存储数据块被用来表示存储数据块。可选 地, 所述奇偶校验数据可与存储数据块关联且分布在 L + 1 个存储模块, 或所述奇偶校验数 据可存储在另外的存储模块。 此外在另一方面, 一种在存储系统中计算奇偶校验的方法, 包括 : 在树中配置多个 存储模块, 所述树具有节点。 来自两个节点中的每一个的数据块可传送到第三节点, 所述第 三节点离树的根较近。从接收的数据块计算第一奇偶校验块。使用第一奇偶校验块和存储 在第三节点处的数据块计算第二奇偶校验块以产生第三奇偶校验块。 两个第三节点中的每 一个的所述第三奇偶校验块作为数据块被传送到离树的根较近的节点。 计算并存储第四奇 偶校验块, 所述第四奇偶校验块是通过对两个所述第三奇偶校验块和存储在离树的根较近 的节点处的数据计算获得的。
     附图说明 图 1 显示在多个磁盘驱动上的 RAID 4 数据存储系统 (现有技术) 。
     图 2 显示布置在行和列存储阵列中的多个存储模块。
     图 3 是存储在多个存储模块上的阵列 A 的数据结构的例子。
     图 4A 显示布置在树结构中的存储模块的配置, 此处, 在逻辑数据条带内的所述存 储模块位于树枝末端的树叶处。
     图 4B 显示如图 4A 中的存储模块的配置, 此处, 在逻辑数据条带内的所述存储模块 位于树枝处。
     图 5 是在 RAID 存储器内的数据的配置图。
     图 6A 显示对 RAID 条带的写操作的时间序列。
     图 6B 显示对图 6A 中的连续时间间隔的写和读操作的关系。
     图 7 是存储模块的方框图。
     图 8 显示一组存储模块, 此处, 各模块属于一个以上的 RAID 组, 且所述 RAID 组以 不同方式被条带化到跨越各模块。
     图 9 显示 RAID 配置, 此处, 一组内的地址序列可能不是邻近的。
     具体实施方式
     参考附图可较好地理解代表性实施例, 但这些实施例非用于限制。在相同的或不 同的附图中相同编号的元件执行相同的功能。各元件可能是编号的或用首字母缩略词标 明, 或两者皆有, 且作出上述描述之间的选择只是为了清晰, 以使由数字标明的元件和用首 字母缩略词或包括文字与数字的标志标明的相同元件在此基础上不是突出的。
     可以意识到的是, 各图中描述的方法和显示的装置可被配置或包含在机器可执行 指令 (例如软件) 中, 或在硬件中, 或是两者的组合中。指令可被用于使采用所述指令编程的 通用计算机、 特殊用途处理器 (如 DSP) 或阵列处理器之类执行所描述的操作。可选地, 所述 操作可以通过包含用于执行所描述的操作的硬布线逻辑或固件指令的特定的硬件元件、 或 通过可包含模拟电路的编程计算机元件和用户硬件元件的任意组合来执行。
     所述方法可以被作为计算机程序产品的形式提供, 至少是部分地被提供, 该计算 机程序产品可包含有存储了可用于编程一计算机 (或其他电子设备) 以执行所述方法的指 令的机器可读媒介。为了本说明书的目的, 术语 “机器可读媒介” 应被认为包括能够存储或 编码供计算机器或特殊用途硬件的执行的一序列指令或数据的任意媒介, 且该指令或数据 可使该机器或特殊用途硬件执行本发明的方法或功能中的任意一个。因此术语 “机器可读 媒介” 应被认为包括但不限于固态存储器、 光盘和磁盘、 磁存储器、 光存储器和载波信号。 对 由计算机执行的方法的描述不应排除由人执行的同样的方法。 例 如, 非 用 于 限 制, 机 器 可 读 媒 介 可 包 含 只 读 存 储 器 (ROM)、 任何类型 (例 如 S-RAM、 D-RAM、 P-RAM) 的随机存取存贮器 (RAM)、 可编程只读存储器 (PROM)、 电可擦除只读 存储器 (EPROM)、 磁随机存取存贮器、 磁盘存储介质、 闪存或电、 光、 声数据存储媒介之类。 数 据常常存储在逻辑阵列形式中作为数据结构。 然而相同的逻辑阵列可与具有相同结构的物 理存储阵列相关联。 尽管在此中许多例子的操作被描述为在逻辑数据结构和物理装置之间 似乎存在直接的对应, 但这可能不是实践中的配置, 此处, 数据分配到存储单元可能受存储 系统的结构、 坏存储单元的可能性等等的支配。如此的向物理单元的数据分配可通过文件 管理系统例如 PCMCIA 闪译层 (Flash Translation Layer, FTL) 或文件系统例如 Linux 日志 闪文件系统第 2 版 (Journaling Flash File System version 2, JFFS2)、 阿尔法一 YAFFS (Yet Another Flash File System) , 或存储察觉文件系统 (storage-aware file systems) 例如太阳 ZFS(Sun Microsystems, 太阳微系统 ) 以及本领域普通技术人员所能知道的其他 方式来执行。
     当解释此处描述的例子时可假设在逻辑和物理地址之间存在这种联系。 除非特别 提到, 选择对一个或另一个进行讨论的仅为方便而非限制。因此, RAID 组织的存储器的数 据条带 (stripe) 可映射到存储系统中的任意实际的存储单元处。因此关于条带中的数据, 在存储系统中任何此条带存放之处, 对擦除、 写和读操作的定时的限制应被理解。就是说, 存储模块、 存储单元、 数据块等等术语通常事实上可交换地使用。
     此 外, 在本领域中以一种或另一种形式谈到软件 (例 如, 程 序 (program, procedure)、 进程、 应用、 模块、 运算法则或逻辑) 采取行动或引起结果是常见的。如熟悉本 领域人员所熟知的, 这样的表达仅仅是一种表明用计算机或等同设备对软件的执行会引起 计算机或等同设备中的处理器去执行行动或产生结果的方便的方式。
     当描述特定的例子时, 该例子可能包含特定的特征、 结构或特性, 但可能不是每个 例子均必须包含该特定的特征、 结构或特性。这不能被认为是两个或更多例子中的所述特 征、 结构或特性不应或不能组合的迹象或暗示, 除非这样的组合被明确排除。当特定的特 征、 结构或特性连同其它例子被描述时, 熟悉本领域的人员可结合其它例子实施这样的特 征、 结构或特性, 无论其是否被明确描述。
     存储阵列可由磁盘驱动之外的存储元件构成。 例如所述存储阵列可由多个闪存模 块或其它半导体存储设备形成。
     在第一个例子中, 使用 RAID 4 结构, 这不意味着排除其它 RAID 结构或类似的结 构。 RAID 结构的选择是基于如成本、 可靠性、 读或写的等待时间、 功率消耗、 数据恢复速率等 等标准的工程和经济性决策。 本领域技术人员会理解到本例所示系统和方法可适应于改善 RAID 式系统读数据、 写数据或两者的性能。
     闪存具有有限寿命。闪存的故障可概括地分为常规故障模式和磨损机制, 该常规 故障模式与结构中的潜在的或随时间推移而显现的瑕疵有关系, 其被认为是电子元件中的 典型模式。典型地, 该磨损机制与存取的次数有关, 特别是对于擦除操作, 尽管依赖于特定 的技术, 读或写可成为磨损机制。 尽管这是一种电子故障机制, 人们可认为其是更典型的一 种机械故障机制, 例如熟知的由汽车已驾驶的里程导致的。两种机制需要在系统设计中被 考虑, 以及避免特定的存储单元被系统操作的硬件或软件管理过度使用。 当使用闪存时, 磨损处的故障机制可能是数据阵列中的单个位错误。这单个位错 误可能通常被与特定存储模块内的数据组关联的纠错码 (ECC) 检测并纠正。被纠正的数据 随后被传送到存储控制器且与读取自其他条带数据结合以形成所请求的数据组 A。因为从 存储数据组 A1、 A2、 A3 恢复的数据不具有任何错误, 或者该错误已经被 ECC 纠正, 因此来自 数据组 Ap 的数据是冗余的。只有所述数据组 A1、 A2、 A3 具有被检测到的但无法校正的错误 时, 例如由存储模块故障导致的, 才需要数据组 Ap 来纠正数据组 A 的错误。这样的多位错 误会发生在诸如当存储模块本身失效以及数据需要用剩余三个数据组 (A1、 A2、 A3、 Ap 组中 的其它三个) 来重构时。可认为这样的错误类型的发生是单个存储模块的电子平均故障间 隔时间 (MTBF)。通常, 仅使用条带 A1、 A2 和 A3 中的数据, 只有在故障发生时, 为了数据的 重构才检索并使用奇偶校验条带 Ap。
     当存储在存储模块内的数据中的单个位错误被报告时, 闪存模块可认为是不可靠 的, 且所述存储控制器可 “标记” 或记录存储模块的位置为不可用, 直到存储模块被更换的 时候。可选地, 在进行修补行动前, 可允许积累确定数目的单个位错误。
     一些闪存技术的特性可能使对小块数据的写和读有点不切实际, 可能出现要写入 的块的大小可能小于存储系统能够写入的最小块大小的情形。例如, 一种软件系统可将文 件划分成 512 字节的块大小, 然而对于存储系统, 最小可行的擦除大小是 128 千字节。4 个 512 字节块 (是在指操作系统时。若涉及 FLASH, 则为 “扇区” ) 一起可认为组成一个 2 千字 节的页。术语 “块” 在一般用于指包括奇偶校验数据的任意类型数据时, 无意暗示特定的以 字节或任意其它单位为度量的大小, 且用于指可与特定的类型关联的数据组。
     在使用 RAID 4 系统的地方, 所述页中各自包括 512 字节的各片段可跨越四个存储 模块被条带化, 而第五存储模块被用作奇偶校验数据。在这个例子中, 将假定 512 字节的块 大小、 5 个存储块的特性的存储模块的使用、 以及 128 千字节的最小擦除大小, 但要理解这
     些参数仅仅是一个例子且无意暗示对系统或方法的任意特定的限制。
     图 2 显示一种存储系统, 包括多个存储模块, 所述存储模块通过总线与存储控制 器 (memory controller, MC) 连接。各总线具有多个连接在一系列总线构造中的存储模块, 且具有可被认为是与图 1 的磁盘阵列中的一个磁盘相当的结构。除了作为存储模块的物 理配置的代表之外, 此配置可被认为是适用于具有不同物理结构的存储模块的逻辑地址空 间。
     图 3 显示对应于数据阵列 A 的存储单元的结构, 此处, 数据阵列被认为是可写入到 存储设备的最小块大小的大小。每个存储模块具有 128 千字节大小, 由多个 512 字节大小 的存储扇区组成, 被指定为 Amn, 此处 m 是存储总线, 存储模块被设置在其上, 且 n 表示在各 存储模块写入块中与 512 字节扇区关联的单独的存储单元。 在本例中, 在存储模块的各 126 千字节擦除块中有 256 个 512 字节的扇区。
     512 字节数据块可能因此被写入扇区 A11、 A21、 A31、 A41, 且奇偶校验阵列 Ap 可能 通过在数据阵列 A1、 A2、 A3 和 A4 上计算 “异或” 被更新。当写数据到扇区 A11、 A21、 A31 和 A41 时, 包含在存储模块 0 的例如扇区 A12-A1n 中的数据也被写入。 这可能出现在数据阵列 Al 中的数据需要先于将改变的或新数据记录进扇区 A11 而被擦除的时候。 此操作的一个例 子可能包含将数据阵列 A1 读出到非永久存储设备中, 擦除存储模块 0 中与阵列 Al 关联的 存储, 改变存储模块 0 中阵列 A1 的数据的扇区 A11 中的数据, 以及随后把阵列 A1 的数据从 非永久存储设备写入到存储模块 0。这表示可在改变存储在闪存中的数据的程序中执行的 操作的例子。通常的闪存系统的整理操作 (housekeeping operation) 不会在此描述。它 们可能包含对不良块的检查、 磨损水准测量、 合并数据以实现纠正存储单元 ( “碎片帐集” ) 、 错误检测和修正等等。 这些操作可被认为是开销, 且导致供读或写的系统带宽的减少, 并且 也增加了等待时间。这些例子中的闪存的操作在宏观水平上被描述, 此处对用户充分透明 的任意内部操作被假定为发生, 而未进一步描述。 然而, 当声称存储器的读或写操作的限制 时, 所述整理操作通常符合外部的读或写的限制, 但如果必要的话, 在允许的时间间隔内它 们的执行可能被给予优先权。 可能是必须的以引起外部命令的内部操作, 例如 “读” 或 “写” , 可在分配给读和写的时间周期 (time period, 或称为 “期间” ) 内被执行, 即使这样的操作可 能是读和写内部操作的结合。
     在一个使用目前可得到的闪存元件的例子中, 对于读, 在位于闪存和内部数据寄 存器之间的 FLASH 芯片内的 2K 字节的数据传送可能需要大约 25 微秒。在用于通过存储模 块上的控制器访问 FLASH 芯片的总线上以 25MB/s 的速率从内部寄存器传送 512 字节数据 到控制 FLASH 的设备可能需要大约 20 微秒, 总时间大约 45 微秒。然而, 执行擦除 FLASH 的 128KB 的块以使新数据能被写入的时间可能需要大约 1 毫秒到大约 2 毫秒, 这大约是执行 读操作的时间的 20 到 40 倍长。执行 FLASH 的编程 (写) 操作可花费大约 20 微秒以在总线 上传送 512 字节数据到 FLASH 芯片的内部寄存器中, 以及花费大约 200 微秒到大约 700 微 秒将数据编程进闪存中, 这大约是执行读操作花费的 5 到 15 倍长。擦除 128K 的块以及编 程所述 128K 的块可能需要大约 13 毫秒到大约 42 毫秒, 或者是执行读操作的 200 到 800 倍 长。在所述存储模块从事于擦除或编程 (写) 操作的时间周期内, 该存储模块可能不能执行 其它功能, 例如从其它扇区 A12 到 A1n 中的任何一个中读数据, 如果想要读的数据位于正被 擦除或编程的所述模块中的相同设备上。 因此, 在各可能是无关联的读操作的时间周期内,当写 (编程) 操作是在当接收到读请求的进程中时, 同样存储在相同的存储阵列块 A1 中的数 据可能被阻止。在许多数据库系统中, 这样的可被称为等待时间的延迟可能是不合意的且 可能是不能接受的。所述延迟可能变成与在磁盘存储介质中遇到的延迟相似的。
     在希望对数据扇区的读操作时间和写操作时间之间的不对称导致数据速读的情 况中, 写入被条带化到 4 个存储模块和奇偶校验模块的 2 千字节的数据块的行为可能导致 读操作的堵塞, 在等待时间内多达 10K 到 30K 的数据本可被读出。类似的, 擦除操作会堵塞 对 80K 到 160K 数据的读操作。
     可通过存储控制器和存储模块的操作以使将数据以 512 字节扇区为单位顺次而 非并行写入到所述存储模块 A1、 A2、 A3、 A4 和 Ap 中每一个中来缓和这种情况。因此, 对阵 列 A1 的写操作被允许在对 A2 的写操作开始前完成, 而类似地, 对阵列 A2 的写操作被允许 在对 A3 的写操作开始前完成。这样继续下去, 直到完成条带 A 中的所有存储模块, 包括到 模块 Ap 的奇偶校验的计算和写。在每个包含数据阵列 A1、 A2、 A3 和 Ap 的模块正被写入的 时间内, 特定的与所述模块关联的数据阵列不能被读出。 然而, 在这个例子中, 在任一时刻, 所述模块 A1、 A2、 A3 和 Ap 中只有一个可执行写操作。
     当对存储在模块 A11、 A21、 A31、 A41 和 Ap 中的 512 字节数据的读命令发出时, 各 所述存储模块可接收该读请求。通常, 所有存储模块都处在读请求可被迅速地处理并返回 数据给存储控制器的状态。 然而, 当由存储模块正在处理写命令时, 该数据可能不能从存储 模块即时读出, 因此, 来自数据阵列 A1、 A2、 A3、 A4 或 Ap 的各响应中的一个可能大幅度地被 延迟。在所述模块 Ap 仅被用作数据恢复目的的情况中, 它不能被读出, 除非存在存储故障。 因为存储管理硬件或软件期望从所有适当的存储模块 A1— A4 收到响应, 所以若由外部命 令或整理 (housekeeping) 导致一个或多个所述存储模块正被写入, 所述响应的完成可能延 迟。
     然而, 在存在 4 个包含数据的存储模块和一个包含奇偶校验数据的存储模块的情 况中, 该 5 个模块中只有 4 个可能需要返回 (return) 数据以使期望的数据被读出。就是说, 各数据模块中的一个可以是故障的或可以报告不可恢复的错误, 或被写操作或擦除操作所 堵塞。例如, 若不返回数据的数据模块是 A2, 剩余的数据模块可以是 A1、 A3、 A4 和 Ap, 此例 中所期望的 512 字节已被检索到。当丢失的数据是来自所述模块 A1、 A2、 A3 和 A4 中的一个 时, 来自模块 Ap 的数据即奇偶校验数据, 可被用于恢复所述丢失或延迟的响应模块中的数 据。
     例如, 当存储在存储模块 A1 中的数据被读出时, 可使用纠错码校验所述数据, 这 些纠错码数据 ECC1 可存储在与所述数据相同的存储模块中。若所述数据是正确的, 那么不 必采取行动。 若检测到错误, 所述错误可被纠正, 可被检测或纠正的一定数目的错误是所使 用的特定的纠错码的特性。 当返回到存储控制器时, 该被读出的数据要么是正确的, 要么已 被 ECC 纠正过的, 要么被标记为正出错, 此处 ECC 能检测该错误但不能纠正该错误。
     典型地, 在闪存系统中, 要么由于磨损现象发生单个错误, 要么该存储模块具有较 大范围硬件故障, 其导致一种类型的多个错误, 该类型可被存储控制器检测。 该存储模块可 能变成无效了。
     在报告单个错误但错误被 ECC 纠正的情况下, 错误的发生可被报告给用于管理闪 存存储系统的存储控制器或其它硬件或软件, 包括芯片上的存储管理器, 且所述存储模块或特定的芯片或数据块可被标记为是有瑕疵的, 或监测进一步可纠正的错误。存储管理运 算法则可确定存储模块或芯片可能不再用作数据存储。 目前正被存储到该存储模块或芯片 中的数据会被移动到另外的未被标记为有瑕疵的存储单元。
     可选地, 当存储模块整体是有瑕疵时, 例如由于较大范围的硬件故障, 来自数据阵 列 A1、 A2、 A3、 A4 中的一个的数据将会丢失或确定会出错。来自 Ap 的数据可被用于重构故 障模块的数据, 且重构的数据存储在未被标记为有瑕疵的模块中。即使当大范围硬件故障 发生时, 该数据的完整性因此也可被维持。
     在知道数据是正确的或曾由 ECC 纠正了错误的实例中, 当来自包含所述五个存储 模块 A1、 A2、 A3、 A4 和 Ap 中的任意四个的阵列的模块的数据已被返回时, 期望的 512 字节 数据可能对存储控制器是可用的。例如, 来自存储模块 A1、 A2、 A3 和 A4 的数据可被接收。 随后, 因为不需要测定期望的 512 字节中数据的正确性或不必纠正错误, 所以来自包含 Ap 的模块的数据是冗余的。在具有数据阵列 A1、 A2、 A3 或 A4 的模块中的任意一个未返回数 据, 或返回知道是不正确的数据或数据被延迟的情形中, 利用 Ap 中的奇偶校验数据和剩余 的三个数据阵列, 该来自模块 Ap 的数据可被用于重构丢失的数据。当使用术语 “未返回数 据” 时, 标准可能是没在特定的时间周期内返回数据, 对于读操作这可能是有代表性的。较 长的返回数据的时间可能是由于干扰性写或擦除操作, 或由于硬件故障。 可允许来自 “未返 回数据” 的模块的数据在较晚的时间被返回, 或取消对那个模块的写操作。无论如何, 从数 据条带恢复数据的时间可能不会因模块未能在合理时帧内返回数据而持续很久。 因此, 在存储模块的配置中, 此处, 存储模块中的一个被用作冗余数据 (例如奇偶 校验数据) , 不是所有的存储模块都需要在被请求数据可用之前返回有效的数据, 或者需要 该数据可以被重构。就是说, 例如, 当来自模块 A1、 A2、 A3 和 Ap 的数据已被读出时, 被请求 的数据是可用的。来自 A4 的数据可能不是必须的。
     来自 A4 的数据可能不可用或不能被以及时的方式可用的一个原因是正在将数据 写到 A4 中的一些扇区或正在擦除一个扇区, 且这可能延迟来自正被写入的块的数据的读 取。在接收该读出时间内特有的读请求之后的时刻, 来自 5 个存储模块中 4 个的数据是可 用的。在写操作不在进行中的条件下, 来自第 5 个模块的数据可以是被及时的方式可用, 但 来自第 5 个模块的数据可被忽略, 除非在不可纠正的错误的情况下。当数据被充分延迟时, 被延迟的数据是冗余数据且在存储控制器中的数据的常规处理中可被忽略。
     因此, 来自条带内 5 个存储模块中任意 4 个的数据可被用于读存储在条带内的数 据, 其具有低的等待时间, 因为对 5 个模块中 4 个的数据的读取不被到 5 个模块中 4 个的写 操作所阻碍。
     管理在读和写时间不对称的且写时间充分长于读时间的存储系统中的存储器的 步骤可包括 : 将数据写到多个存储模块, 存储模块被逻辑上安排在条带模型中。 各存储模块 可具有一个与存储模块中的数据相关的纠错码, 以及辅助存储模块可具有与所述多个模块 中的数据相关的纠错码 (例如, 异或奇偶校验) 。可通过连续写入或擦除数据来对所述存储 模块的每一个执行写或擦除操作, 对各连续的模块的写或擦除操作会被延迟, 直到对可通 行的存储模块的写操作的完成。在对各存储模块的写或擦除操作完成的基础上, 在辅助模 块中的冗余数据被更新以使数据完整性被维持。因此, 在一时刻只有一个存储模块是处于 写状态中的。 可选地, 冗余数据在非永久存储器中被更新, 直到完成包含模块的数据的写入
     或擦除, 且随后将所述数据写入辅助模块。
     当以顺次的方式对条带内的存储模块进行写或擦除操作时, 条带内的存储模块中 只有一个被阻碍即时读出数据以响应读请求, 且在这个例子中, 5 个存储模块中的至少 4 个 会迅速地返回数据到存储控制器。这足够完成读操作。因此, 尽管写或擦除操作的总速率 下降, 但读操作不会被写操作或擦除操作所延迟, 因为在一时刻只有一个模块可处于写状 态或擦除状态。 用于写数据到存储模块的充分地不重叠的时段使对数据条带的读和写操作 之间的冲突最小化。
     存储控制器可等待一段时间以便完成读操作, 然后使用所述 5 个响应中的至少 4 个以组合请求的数据扇区, 该扇区存在数据或重构数据。是否所有 5 个数据块应被返回, 或 者一个数据块可被忽略, 或冗余数据能用作辅助误差检测步骤, 依赖于设计中期望的数据 置信度 (data confidence) 的水平。
     在数据阵列的原始群体中, 数据的写入可能是优先考虑的事, 且数据能被并行地 写入到条带中的多个存储模块。既然这样, 由于前面描述的原因, 数据的读出可能被延迟, 然而当初始化大阵列或转移大块数据时, 这是可接受的。 在目前的例子中, 数据写速率是最 大写速率的大约 20%, 因为所述 5 个存储模块中的每个是被顺次地写入, 而读速率大约不比 对于单个模块的期望读速率长, 因为 5 个存储模块中的 4 个需要响应成功的读出, 且他们被 写入堵塞了。当写负荷增长时可控制该堵塞。 在另外的例子中, 存储阵列的结构可能不是在前面例子中的行列矩阵。上面描述 的数据的行列标记可被理解为逻辑地址和变换到物理地址的逻辑地址。在图 4 的存储结构 中, 存储模块被配置在树中, 这在本发明人在 2006 年 4 月 17 日提交的主题为 “互连系统” 的 美国专利申请 11/405,083 中被讲解, 且在此处通过引用进行结合。在本例子的方案中, 树 状结构是互连的且具有到一个或更多的存储控制器的外部连接。如图 4A 中显示的树系统 的属性是任意存储模块 (用方框显示) 可被存储控制器中的至少一个存取, 即使存储模块中 的一个已经完全失效, 或物理链接中的任意一个已经被断掉, 或存储控制器中的一个已经 失效。因此, 单个存储模块 M 可被分配给数据阵列 A, 无需详细考虑系统中存储模块的物理 定位。 (在本例子中, 为了简单起见, 存储模块的标记 M 用关联数据阵列的标记 A 代替) 。就 信号可能必须传播的距离而言, 当与具有类似数目的存储模块和存储控制器的线性结构比 较时, 树结构可适应于包含大量的存储模块, 每一个模块相对靠近树根。
     作为示例, 在对图 4 的存储系统的物理模块进行配置的一个例子中显示了数据阵 列 A, 可以理解的是, 这是大量可能的配置中的一种。对存储模块的数据阵列的分配可被改 变以解决一个或更多的存储模块的故障, 使不再具有在等待时间或其它执行度量上的明显 影响。当存储系统在实施中时, 带有冗余互连结构的树存储系统的一个属性是其单个的存 储模块可被替换。这可被称为 “热交换” 。
     图 4B 显示在图 4A 的存储结构中数据阵列 A1、 A2、 A3、 A4 和 Ap 到不同的物理存储 模块的另一种可能的配置。 这里, 所述模块被选择成彼此靠近, 且使用在存储模块和其中一 个存储控制器之间的相同的或部分相同的数据路径。 存储控制器或其中一个存储模块有可 能失效, 可选的路径 (其中一些被显示为短划线) 将被用于将存储模块连接到初始控制器或 者备选的控制器。因此, 数据阵列 A 的逻辑表示和物理存储模块的关联是灵活的。重新指 定关于存储系统中的单元的数据阵列 A 中的任意部分会改变逻辑到物理映射和数据路由,
     且通常是只受物理存储模块的可用性而不是受存储系统内存储模块的位置所限制的。
     当存储模块失效且需要被替换时, 存在在该时段内发生第二故障的可能性。存储 模块的故障机制可能被分为磨损机制和常规电子电路机制。后者取决于操作的总时间, 而 前者取决于存储模块的使用。磨损故障是缓慢的, 以可纠正的单个位故障为初始故障。在 这样的情况中, 当第一模块正被替换时第二模块故障的概率可被估计为是存储系统的 MTBF 的倒数, 除以替换故障存储器所需小时数。类似地, 若起因是电子的, 则在替换故障存储模 块所需的短时间内磨损故障不太可能引起故障, 且第二故障的可能性也是类似同样小的。 因为该系统是 RAID 4, 在 5 个包含数据阵列的存储模块中的各存储模块中的两个发生时才 会引起数据丢失。
     闪存的错误机制是这样的, 磨损现象的发生导致错误状态。在各种各样的闪存和 被个别生产商使用的制造技术之间磨损机制可能不同。然而, 由于闪存的磨损会导致设备 故障、 系统停机以及数据完整性的可能的损失, 各种管理闪存的磨损的策略已被发展。常 常, 各数据的写或擦除循环的数目被记录, 且随着写循环的数目增加, 数据可能被从高使用 区域移动到低使用区域, 以延长存储模块的寿命。由磨损导致的闪存模块的典型的故障模 型是单个位出错。在重复读操作中, 那个位将趋向于仍然是错误, 直到第二个位也显出错 误。因为可被使用的纠错码 (ECC) 具有检测和纠正单个错误以及检测但不纠正双重错误的 能力, 所以所述存储模块可继续被使用, 直到两位错误 (two bit error) 发生。当遇到两位 错误时, 需要冗余奇偶校验数据去重构该期望的数据。因此, 可使用可选的系统管理策略。
     在第一种策略中, 当遇到单个位错误时, 该存储模块被标记为不可用的。 因为单个 位错误被与该存储模块关联的 ECC 纠正, 所以不需要使用与条带关联的冗余数据 (例如奇 偶校验数据) 。因为前面例子的 5 个模块中只需 4 个就能足够表示该期望的数据, 且读操作 不会因为等待写操作的完成而被延迟。 可选地, 存储模块可继续使用, 直到存储模块的数据 阵列的第二位错误被检测到。在这种情况中, 若错误发生在包含冗余数据的存储模块之外 的存储模块中, 冗余数据可用于重构数据。
     一旦存储模块中的位单元已经遭受磨损, 故障位中的位的状态不会改变。 就是说, 若所述位期望为逻辑 1 且出故障变为 0, 所述位继续保持逻辑零的故障状态。 包含逻辑 0 数 据位的位单元的故障不会被马上检测到, 因为标记为故障单元的位与期望值相同, 均为逻 辑 0。 然而, 当存储在位单元的数据被改变, 且新数据是逻辑 1 时, 所述位单元会标记该数据 为逻辑 0, 且错误会最终被检测并纠正。在这样的情况中, 与存储模块关联的 ECC 可纠正从 存储模块读出的数据, 但因为所述位单元是故障单元, 那个单元中的实际值不能被改变。 然 而, 故障位单元中的位的修正值可通过使用另外的存储模块中的奇偶校验信息重构数据来 确定。当这么做时, 可确定故障位单元的实际单元, 且对那个单元的纠正可被分开存储, 且 在两个错误被 ECC 检测到时被应用, 以进一步延长闪存模块的寿命。通过增加 ECC 的大小, 故障存储单元的位置上的信息可被存储在 ECC 区域内, 且可在应用 ECC 前纠正小数目的故 障位。
     当与磁盘系统比较时, 固态存储系统可存取存储在多个存储模块中的数据阵列, 在读和写或擦除操作之间或在相同类型的多操作之间只有充分少的干扰。
     在另外的例子中, 如图 5 显示, 显示了二维阵列数据的管理。如前面提到的, 当操 作 RAID-4 系统以使在任意时刻所述五个存储模块 A1-Ap 中只有一个被允许处于写模式时,剩余四个所述存储模块迅速地返回数据以使不因 20% 或更少写负荷损害读操作的等待时 间。 这个情况与在写操作序列上不具有此限制的系统截然不同, 那里, 在读和写操作之间的 干扰起始于非常低的写负荷处。
     然而, 可能有想要写负荷大于时线 (time line) 的 20% 的情况, 但读出等待时间仍 被希望与此情况一致的尽量小。这可能通过对多组条带的写操作的管理进行调节。
     描述这个或其它例子的操作时, 存储模块和系统的加载和响应时间是可变的, 以 解释操作原理。 为了方便, 假定读和写请求的时间分布在时间上是均匀的, 且平均水准相当 于一个读或一个写负荷。同样, 在短时期内, 加载被认为是稳态值, 通常当与总线传输时间 关联的等待时间相比, 该存储模块的等待时间和响应时间相当长时, 可忽略总线带宽等的 限制。 此外, 因为存储系统中的各种各样的数据区域可能遭受不同的读和写负荷, 所以在存 储系统中不同的条带处加载可能呈现不同, 且所述的情况可被认为表示局部加载值而非总 加载值, 不同的读和写负荷归因于, 除其他因素之外还有存储的数据的类型、 访问数据的应 用程序等等。因为如此, 存储器的适配可能是在本地而全局基础上的。所需的操作的协调 可能被全局的或本地时间算法、 传送令牌、 轮询、 信令之类的或其它的协调计算机或存储系 统内暂时的操作的方法所影响。
     图 5 中的数据被显示为以条带方式被组织, 且第 0 条带 410 包括存储模块 310 (或, 例如, 芯片) A0、 B0、 C0、 D0 和 P0, 分别被安排列 A、 B、 C、 D 和 P。系统的剩余的条带 2— 9 是 类似的, 以形成具有 50 个模块的存储系统。
     为说明的目的, 各存储模块上的定时电路被认为是在与在其它存储电路上相同的 时刻被初始化, 且以 1 毫秒的间隔标记时间, 这相当于足够完成至少一个写或擦除操作的 时间。在连续时间间隔中的某个时刻, 这样的写或擦除操作在一个列上被执行。图 6A 显示 了存储模块的列 514, 其可在连续的且以 10 为模重复的时间间隔 t1、 t2、…… t10 内用于 写操作。如图 6B 中所示, 此处显示了条带 0 的时间关系曲线图, 可见在任意时间周期单个 存储模块可用于写操作。这满足任意时刻在条带中 5 个存储模块的 4 个可用于读操作的标 准。这导致等待时间只取决于读出等待时间而没有写负荷的影响。
     当写负荷超过 20% 时, 这个策略不能满足所要写入的数据的数量。需要分配额外 的写入周期。 就根据需要分配而言, 在读请求的时刻, 条带的超过一个存储模块可处于写状 态。因此, 5 个存储模块中的 4 个不能快速响应读请求, 且读等待时间从非常小的值 (10 微 秒) 增加到至少大约 1 毫秒, 相当于写状态的持续时间。
     在讨论等待时间时, 且对于统一的请求到达速率, 等待时间是由写状态导致的堵 塞持续时间的一半。然而, 为说明的简单, 采用写状态的持续时间。
     当写负荷增加时, 任意时刻处于写状态的在条带中存储模块的数目增加, 且等待 时间可能上升到与条带的写状态关联的延迟的总和, 可能到大约 4 毫秒。
     然而, 若使在条带 410 中的所有的存储模块在相同的时刻处于写状态, 写状态的 最大值可能局限在 1 毫秒, 例如, 在本例中, 当写负荷超过 20%, 但小于 28% 时, 每 10 时间间 隔也可能为写操作启动各条带。因此, 除列 (例如图 5 中的 P) 之外, 可在整段第一时间间隔 时间内启动条带 410。在这个策略中, 所有的 s 条带同时地被写入, 以使总写入时间堵塞局 限在 1 毫秒。随着写负荷增加, 可为条带的写入分配额外的时间间隔。尤其, 该策略可把条 带的写入间隔得在时间上离得很远。就是说, 后续增量可使用模 10 循环的第一和第五时间间隔。 可预计, 在任意时期, 条带中的存储模块的写负荷预计是大约相同的, 因为, 若至 少写入多页, 对一个存储模块的写入会导致对条带中所有存储模块的写入。 然而, 在写负荷 内会有不同, 这可能是由于少于一页的写入, 或由于整理的动作, 这依赖于特定的存储芯片 (由于坏块等等) 。
     如图 7 中显示的存储模块 310 可包括, 例如, 永久存储器 320(其可以是闪存) , 缓 冲存储器 330(其可以是, 例如 DRAM) , 以及控制器 / 总线接口 340(其可以是例如在美国申 请序列号 11/405,083 中描述的可控制转换设备 (CSE), 或者其它总线接口) 。 存储模块可以 有能力控制输入和输出数据和指令, 以使存储模块可保留待决操作的队列。
     可把与低等待时间的读、 写和擦除冲突的操作限制在给写操作指定的时间间隔 内。当存储模块定时空档允许写操作时, 可使在所述空档的时间周期内可执行的尽可能多 写或擦除操作从保留在控制器 340 中的序列出列并执行。然而, 若没有未决的写或擦除操 作, 可使未决的读操作从控制器 340 中的序列出列并执行。
     可选地, 可以保留有写或擦除操作 (为了方便, 在这里他们都被称为写操作) 。随编 制的操作策略而定, 当保留额外的写操作时, 这被视为指示了写负荷已经超过 20% 以及可 能需要分配额外的写周期。要么通知主存储控制器以调节对条带的写操作, 要么给写操作 配置额外的时间空档, 直到所述队列被降低到额定水平, 这可能是零或小数目的待决操作。 当分配时间空档到写进程时, 在模 10 循环模式时间周期各时间空档被隔开。随着写负荷增 加以及需要更多的写空档, 它们相互变得间隔更近, 然而, 在连续的写入之间, 保留尽可能 长的空档。如此, 随着写负荷增加, 读请求的任意写堵塞的总长度被最小化, 且对于低于大 约 50% 写负荷, 最大堵塞仅仅是一个写周期。 相对地, 可用于读出的时线被减少 ; 然而, 向相
     同的条带的高读出负荷和高写入负荷可能性质上是瞬变的且对整修系统响应时间具有小 的影响。
     依赖于本地队列配置额外的写时间块的策略允许各条带的操作适应于被系统的 动态操作放置其上的读和写指令。
     在另外的方面, 当各条带中的单个的模块互相联系时, 例如, 使用令牌传递结构, 所述令牌可表示执行写入时间间隔的许可。令牌可在条带 (例如条带 1) 的存储模块 A— P 之间顺次传递。当 A1 持有该令牌时, 一个写间隔的写间隔 (这在本例子中是 1 毫秒) 被许 可。若在队列中有写操作, 那些可在那个间隔内完成的写操作被执行。令牌随后被传递到 B1, 此处重复所述过程 ; 令牌被不停地传递, 且当 P1 持有所述令牌时它被传递到 A1, 以执行 循环复用。
     在所述写间隔结束后写操作仍然是待决的地方, 有迹象表明当前写负荷超过 20% 的值, 在该值内读等待时间对写是透明的。 若没有其它限制写负荷的方法, 该待决的写入可 能必须在不久内被执行以防止缓冲存储器 330 的溢出。在这种情况中, 在令牌已被传递后 执行另外的写操作, 这可在各写间隔之间允许至少一个时间间隔。在任意循环复用时间周 期被使用的写间隔的数目可能因此随写负荷而变化, 但在写负荷已经变得非常高之前连续 写间隔的数目是一致的。
     对各存储模块可能在其中执行它们的擦除或编程操作的时间周期的分配可以用 许多方式来做 : 例如, 通过来自全局控制器的控制信息的传送、 通过模块到模块的令牌传递、 通过模块之间的指令总线或导线之类的, 考虑全局参考时间来分配时间周期以使模块 以本地确定的时间周期进行操作。可使用各方法的结合 : 例如, 在一个系统中, 此处当期 望的编程数据速率大于用于满足能够通过持有 RAID 组的单个列在一个时刻执行编程的速 率, 且存在多个 RAID 组时, 随后一些或所有 RAID 组中的一个模块是可编程或擦除的, 而同 时对于一些数目的 RAID 组超过一个或所有的模块是可编程或擦除的, 如图 5 中所显示的。 在这样的系统中, 例如, 由时间周期的固定分配来确定可执行擦除或编程的列, 而需要通过 RAID 组中的模块中的一个发送指令到下一个 RAID 组以指示该下一个 RAID 组可以开始来确 定何时整个行或 RAID 组可执行擦除或编程操作, 即令牌传递的方式, 而该模块可能已经确 定, 在它的 RAID 组中的所有模块已经通过使用第二令牌传递方案、 或所有模块具有的直到 它们已经完结的 “毁坏” 导线、 或其它模块用来指示它们已经完结的指令总线、 或类似的方 法或配置来完成它们的编程或擦除操作。
     若所有时间周期都是不重叠的, 那么擦除或编程操作的等待时间影响可完全被隐 藏; 若所述时间周期只是不充分重叠的, 可能观察到擦除或编程操作的等待时间高达重叠 的持续时间。 只要时间重叠的量小于 100%, 那么当与完全重叠的擦除和编程操作比较, 该装 置和方法仍可能导致减少的存取时间等待。 如图 5 中所显示的, 当一些 RAID 组跨越多于一个模块或该组中的所有模块执行编 程擦除操作时, 一个 RAID 组不重叠的次数是与下一个 RAID 组相关的, 而非从 RAID 组中一 个模块到下一个模块的那些。 这里的等待时间改进不是单个读访问的, 但如果, 例如正有对 所有 RAID 组的读访问时, 那么只有对超过一个模块是可编程或擦除的 RAID 组的那些访问 时间周期会经历增加的等待时间, 而对那些只为一个模块编程或擦除的 RAID 组的访问不 会经历这样的增加。因此, 遍及所有读访问的平均等待时间可被改进。
     所述方法可应用于其它结构的闪存, 其可是可移动的或固定的。如果模块具有足 够数据的 FLASH 设备, 于此描述的方法可在模块本身内执行。所述方法可因此在存储结构 中的多级的独立使用。 例如, 在标准硬盘驱动器的形状因子中的固态磁盘 (SSD) 间通过磁盘 存取协议互联, 该磁盘存取协议为诸如 SATA、 SCSI、 纤维信道, 或其它已知的或可能被发展 的形式因子或存取协议。RAID 组和模块之间的联系是不存在模块和 RAID 组的 “列” 的一对 一的联系。例如, 当 RAID 组的 “列” 可能是散布在不只一个模块时, 或当模块上的数据由于 RAID 重构可能会在被移动到替换模块以及在某些时间周期内超过一个模块可能包含 RAID 组的列的进程中时。
     在另一个方面, 可将 RAID-6 结构叠加到另外的在数据阵列的列上进行奇偶校验 计算的 RAID-4/5 上。可选地, 在被认为是物理构造的存储模块上可进行额外的奇偶校验计 算。 就是说, 不考虑存储模块到条带的配置, 可对模块的线性阵列的列中的数据进行异或运 算以计算奇偶校验数据。这也在例如图 4A 或 4B 中显示的二进制树形网络的情形中进行。 例如, 当在树中的下一个更高级处被接收时, 来自树中两个存储模块的数据可进行异或运 以产生第一奇偶校验数据。类似地, 该奇偶校验块可与该接收模块处的数据一起进行异或 运算以产生新的奇偶校验块。因为这是二进制树形网络, 可将该两个新的奇偶校验块从它 们各自的节点传送到树中下一个更高的物理节点, 此处, 异或运算的过程可能再次被执行, 并持续直到到达树的根或其它一些更高级的节点。 该奇偶校验数据可被类似地用于 RAID-6 系统的列奇偶校验, 以在万一超过一个模块出现故障时提供额外的奇偶校验数据。异或奇
     偶校验数据的传播被局限于在树的任意级需用于数据块自身的数据的数目, 且该传播可在 没有重大总线负荷、 且伴随与用相当均匀的方式分散在各存储模块的异或奇偶校验关联的 计算情况下被执行。
     当使用术语存储模块时, 存储模块可以是, 例如在其上具有多个存储电路的可插 电路卡, 或该存储模块可以是所述电路卡上的一组存储电路中的每一个, 或知名的固态磁 盘 (SSD) ; SSD 出现了许多形状因子 (form factors) , 从单卡到符合机械磁盘驱动的大小和 形状的封装 (packages) 。可能与存储模块或存储单元关联的逻辑地址范围 (range) 的数值 大小无意被此处的说明所限制, 且存储模块因此可包含较大和较小的数据存储设备或数据 结构。
     作为例子, 图 8 显示一组模块, 此处, 不仅各模块属于超过一个 RAID 组, 而且 RAID 组以不同的方式被条带化到各模块。例如, RAID 组 A、 B、 C、 D 被水平地条带化, 与此同时各 条带包含 X 个地址, 条带 A 具有地址 0 到 X-1, B 具有 X 到 2X-1, 以此类推, 而组 E、 F、 G、 H、 I 被对角地条带化, 各组也包含 X 个地址。图 9 显示, 一组中的地址的数字不必是连续的或 与其它组同一的。在此例子中, 在组 1 中的最后一个地址之后, 寻址 (addressing) 回绕到 以组 A 开始, 其具有地址 0 到 X-1 和 9X 到 10X-1。
     虽然图 8 和 9 显示一致的有规律的布局, 但不要求 RAID 条带是有规律的或一致 的, 作为例子, ZFS 文件系统使每片数据被写入它拥有的可能位于这里描述的存储系统中任 何一组模块上的 RAID 条带。
     从一个方面, RAID 条带的数据被分成多个数据组。奇偶校验被计算为所述多个数 据组的异或。所述数据组和奇偶校验被写入 RAID 条带。奇偶校验数据可分布在 RAID 条带 的各存储模块之内, 或从数据分离被写入所述 RAID 条带的存储模块。当 RAID 条带被读出 且 RAID 条带具有 M 个存储模块时, 来自开头 M-1 个存储模块的数据可被用于确定已被存储 于 RAID 条带中的数据。当每次 RAID 条带的存储模块被管理以使写操作或擦除操作能在所 述模块中的仅一个上被执行时, 足以恢复存储数据的读操作可被执行, 而无需等待任意写 或擦除操作结束。
     前面提到的例子普遍使用术语模块来表示物理存储电路, 或逻辑或物理地址范 围, 这可以是单个地址单元, 或分散在一系列物理或逻辑单元上。 物理模块上的各存储电路 可被分组以作为不同 RAID 条块的部分, 且具有不同的时间周期, 读出和写入和擦除可能发 生在该时间周期内。 因此, 术语模块的使用关键是为了方便, 不意味着建议或要求特定的装 置。类似地, 可以理解的是, 未必是最佳的生产能力 (throughput) 配置可能因其它原因而 被选用, 且可与此处描述的可取的配置相混合。
     因此, 此处意图是认为前面提到的详细描述是解说性的而非限制, 并且可以理解 的是, 后续的权利要求, 包括所有等同变化, 用于定义本发明的精神和范围。

一种在存储系统中计算奇偶校验的方法.pdf_第1页
第1页 / 共24页
一种在存储系统中计算奇偶校验的方法.pdf_第2页
第2页 / 共24页
一种在存储系统中计算奇偶校验的方法.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《一种在存储系统中计算奇偶校验的方法.pdf》由会员分享,可在线阅读,更多相关《一种在存储系统中计算奇偶校验的方法.pdf(24页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102346694A43申请公布日20120208CN102346694ACN102346694A21申请号201110217894622申请日2008032760/920,73720070329US200880007937420080327G06F11/10200601G11B20/1820060171申请人提琴存储器公司地址美国新泽西州伊泽林伍德大道南33号3楼72发明人乔恩CR班尼特74专利代理机构广州三环专利代理有限公司44202代理人郝传鑫倪小敏54发明名称一种在存储系统中计算奇偶校验的方法57摘要本发明描述了一种存储系统和使用所述系统的方法,所述存储系统被用于以R。

2、AID式的方法存储数据。存储数据包括奇偶校验数据可被检索,以使当不具有奇偶校验数据的存储数据和奇偶校验数据,或来自所有存储模块(除了某一个存储模块之外)的存储数据和奇偶校验数据当中的首个数据被接收时,所述存储数据可被恢复。对于低的写负荷,数据的写入被管理以使在时间间隔内,RAID条带中的存储模块中只有一个存储模块正被写入或擦除。30优先权数据62分案原申请数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书15页附图7页CN102346714A1/1页21一种在存储系统中计算奇偶校验的方法,其特征在于,该方法包括在树中配置多个存储模块,所述树具有节点;从两个第。

3、一节点的每一个传送数据给第三节点,所述第三节点离树的根较近;使用来自所述两个第一节点和存储在第三节点处的数据对第一奇偶校验数据进行计算,以产生第二奇偶校验数据;将第二奇偶校验数据从两个第二节点的每一个传送给离根较近的节点;存储第三奇偶校验数据,所述第三奇偶校验数据是通过对接收自两个第三节点的每一个的第二奇偶校验数据和存储在离根较近的节点处的数据进行计算获得的。2权利要求1中的方法,其特征在于,所述第三奇偶校验数据是在根节点处计算的奇偶校验数据。3权利要求1中的方法,其特征在于,所述第三奇偶校验数据是存储在计算第三奇偶校验数据的模块之外的模块中。4权利要求1中的方法,其特征在于,奇偶校验数据是通。

4、过执行“异或”计算来计算的。权利要求书CN102346694ACN102346714A1/15页3一种在存储系统中计算奇偶校验的方法0001分案申请说明本专利申请是申请日为2008年3月27日、申请号为2008800079374、发明名称为“存储管理系统和方法”的分案申请。0002本申请主张2007年3月29日递交的序列号为60/920,737的美国临时申请的权益,该临时申请通过引用结合在本申请中。技术领域0003本申请涉及计算机存储系统中计算奇偶校验的方法。背景技术0004计算机存储系统可以是永久或非永久类型中的任何一个。永久存储类型的例子是磁芯、磁盘驱动器、磁带驱动器和半导体闪存。非永久存。

5、储类型可以是诸如动态随机存储器(DRAM)之类的半导体存储。非永久存储类型典型地对数据的读和写都具有快速存取时间且被用作计算机主存储器或高速缓冲存储器。数据通过一种需要电力供应的方法被保留在这样的存储器中,且如果电力中断,存储在那里的信息可能会丢失。非永久存储系统通常具有后备电源,其可以是用于短时间电力中断的电容性存储设备,或是使用电池、发电机之类的用于长期数据保留的后备电源。0005永久存储设备,例如磁盘、磁带或闪存,即使电源被从设备上移除也会保留存储的数据,且常常被用于备份非永久数据存储设备和实际上不能提供持续电力的花费或可靠性的地方的长期数据存储。另外,因为更大量的数据被存储在永久存储设。

6、备中,技术发展被导向降低每比特存储的成本而不是存取速率。因此,许多计算系统使用多种存储类型来执行不同的功能,在那里,即时需要的数据被存储在非永久存储器中,且可以被备份在永久存储器中,而低频率存取的数据和大组数据被存储在永久存储器中。0006可以称为数据中心的计算机数据库系统或诸如因特网的分布式数据系统,以及与其关联的存储设备可以存储大量的数据。现今,这样的数据量可能超过1000太字节(TERABYTE,TB),且预计会继续增长。很多这些数据集充分大于用于即时存取的非永久存储器的容量,且在数据中心的服务器在服务来自客户机的请求时的响应时间可能是在系统执行中的严重瓶颈。这个限制很大程度上是永久存储。

7、介质的数据存取时间等待的结果。对于磁带系统,线性磁带必须被转换以使将要被读或写的数据块在读头或写头处定位。类似地,对于磁盘,该头必须被定位以跨越想要的数据扇区所处的数据道,然后磁盘控制器等待直到扇区在定位的头的下面旋转。这些操作中的任一个都充分慢于对非永久存储设备的读或写。在数据库中具有随机单元的数据单个存储单元需要读、写或修改的地方,这样的局限尤其严重。0007在对存储在存储器中的数据的请求以及对来自存储器的数据的检索之间的时间可称为等待时间。在目前使用的永久存储技术中,闪存比诸如磁盘之类的机械设备具有较低的等待时间,但比现有的非永久存储类型明显具有更长的等待时间。闪存和类似固态技说明书CN。

8、102346694ACN102346714A2/15页4术的存储器的价格传统上遵循知名的摩尔定律的原则,该定律表示,在18个月的周期内,设备容量通常倾向于翻番,且价格减半。依此,在闪存内而非在例如磁盘内存储数据的成本,预计很快会(与后者)达到相等。0008由于具有比磁盘明显较低的等待时间,采取当前可用的存储模块的设计和操作方法,闪存在存取时间上仍然有局限。闪存是一种通称,且多种类型的固态设备可被视为是闪存。最初有一种电可擦除只读存储器(EEPROM),随后是其他发展,称为或非闪存(NORFLASH)、与非闪存(NANDFLASH)等等。所述每种技术具有不同的设计和结构以及关于数据的读和写的不同。

9、特性。就是说,在可被读或写的数据块(例如数据字、页或数据扇区)的最小尺寸上可能存在限制,或在读或写数据所需的时间上存在差异。在许多例子中,读或写数据的时间是不确定的,可能在大范围内变化。存储控制器或其他这类设备必须记录未解决的请求直到他们被实现,这种要求使得数据等待时间成为变量,它可使整个系统慢下来,还会增加硬件以及用于管理存储器的软件的复杂度。此外,闪存设备的生存期被认为取决于耗尽机制,且是用读、写(当涉及闪存时也被称为“编程”)或擦除周期来测定的。当闪存被使用时此中术语“写”用于表示“编程”的意思。0009尽管对于各个单元或扇区,在生存期内周期的数目可能是个大的数目,但通过计算可以显示,实。

10、践中以及在病态情况下,由快速设备构成的大容量存储器的单独元件的生存期是足够短的,以致可能需要相当大的努力来拉平存储器的磨损以及执行差错检测和修正、标记不良数据块等等。0010独立/廉价磁盘冗余阵列(REDUNDANTARRAYSOFINDEPENDENT/INEXPENSIVEDISKS,RAID)的概念至少要回溯远至大卫帕特森DAVIDPATTERSON、加思吉布森GARTHGIBSON和朗帝H卡兹RANDYHKATZ在1988年写的一篇论文。RAID允许磁盘存储器系统被安排用于通过增加冗余码防止他们包含的数据的损失。在适当配置的RAID结构中,任意单个磁盘的损失不会妨碍存取或重构存储的数据。

11、的能力。没有RAID的磁盘阵列的平均故障间隔时间MEANTIMEBETWEENFAILURE,MTBF除以所述阵列中的驱动数目,将与单独驱动的MTBF相等,因为任意磁盘的损失会导致数据的损失。因为如此,对于许多应用需求来说,一排磁盘驱动的MTBF将会太低。然而,可通过以各种各样的方式冗余地存储信息使磁盘阵列变成容错的。0011例如,RAID3、RAID4和RAID5全都是主题的变种。该主题是基于奇偶校验的RAID。将数据分布在几个磁盘处并增加辅助磁盘,而不是保留RAID1中的数据的完整副本。可基于在其他磁盘上的数据来计算使用布尔型“异或”在辅助磁盘上的数据。若在该组磁盘中任意单个磁盘损坏了,可。

12、以通过执行对在剩余盘上的数据的计算来恢复存储在那个坏磁盘中的数据。这些工具没RAID1那么贵,因为他们不要求RAID1要求的100的磁盘空间开销。然而,因为要计算磁盘上的数据,因此存在与写和磁盘损失后恢复数据相关联的性能影响。许多奇偶校验RAID的商业实施中使用缓冲存储器来缓解性能问题。0012在RAID4磁盘阵列中有一组数据磁盘,通常4或5个,外加一个额外的用于存储对其他磁盘上的数据的奇偶校验的磁盘。因为所有写都会导致奇偶校验磁盘的更新,因此该磁盘成为使所有对全部阵列的写动作减速的性能瓶颈。0013RAID的基础原则是“条带化”,其是一种把多个驱动(存储单元)连接到一个逻辑存储单元中的方法。。

13、条带化包含把每个驱动的存储空间划分成可能小到一个扇区(例如512说明书CN102346694ACN102346714A3/15页5比特)或大到数兆字节的“条带”。这些条带随后被交叉存取以使组合的存储空间由来自条带中的每个驱动组成。应用环境的类型,输入/输出(I/O)或数据密集(DATAINTENSIVE),是确定使用大的还是小的条带的设计根据。0014RAID5可使用与RAID4相同的硬件配置来实现。在RAID4的情况中,对于各条带,奇偶校验块被存储在相同的磁盘上,以使人们可以拥有所谓的奇偶校验磁盘。在RAID5的情况中,对于各条带,奇偶校验块被存储在作为条带一部分的磁盘上,但奇偶校验块是分布。

14、式的以使他们根本上均匀地分布在组成存储系统的多个所述磁盘处。RAID6是在数据保护中的另一个改进,其包含对跨越多个条带的奇偶校验的计算,例如使用条带的列作为计算奇偶校验的基础。0015RAID4阵列的执行可能对读有利(与0级相同)。然而,写入要求每次更新奇偶校验数据。这特别减慢小的随机写入,尽管大的写入或顺序写入是相当快的。因为在阵列中只有一个驱动存储冗余数据,所以RAID4阵列的每兆字节的成本可以相当低。跨越多磁盘的数据的分布可以通过专用的硬件或通过软件来管理。另外,存在基于部分软件部分硬件的解决方案的混合电路RAID结构。0016概念上,数据和纠错奇偶校验数据的结构如图1所示,此处,一个块。

15、A中的数据被条带化到跨越三个磁盘成为数据组A1、A2和A3,且奇偶校验数据组AP在第四个磁盘上,且此处,典型地,奇偶校验数据组AP计算成数据组A1、A2和A3的异或XOR。如本领域技术人员所熟知的,数据组A1、A2、A3或AP中的任意一个随后可能通过其他三个数据组被重构。因此,在任意所述数据组中表示例如其中一个磁盘故障的错误,可通过使用其他数据组进行纠正。0017纠错码ERRORCORRECTINGCODE,ECC是一种算法,在其中,每个数据信号符合特定的计算法则,以使在被接收或恢复的信号中违反该计算的表示出错的部分通常能够被自动检测并纠正。ECC被用于诸如动态RAM、闪存等等计算机数据存储器。

16、中以及数据传输中。ECC的例子包括汉明码(HAMMINGCODE)、BCH码、里德所罗门码REEDSOLOMONCODE、里德马勒码REEDMULLERCODE、二进制戈莱码BINARYGOLAYCODE、卷积码CONVOLUTIONALCODE和涡轮码TURBOCODE。最简单的纠错码能纠正单个位错误并检测双个位错误。其它码可以检测或纠正多个位错误。ECC存储通过防止在计算机存储器中的错误来提供较大的数据精度和系统正常运行时间。被条带化的数据的各数据组A1,A2,A3,AP可能具有附加到其上且存储在相同磁盘上的关联的纠错码ECC数据组。当数据从磁盘中被读出时,通过ECC校验数据的完整且依所用。

17、的ECC而定可以检测并纠正一个或更多错误。总体来说,多个错误的检测和纠正是所采用的ECC的一个功能,且对ECC的选择将依所需的数据完整性的水平、处理时间和其它花费而定。发明内容0018本发明描述了一种存储系统,包括多个存储模块,此处,各模块具有写和读数据的性能。在所述多个存储模块中的一组N个存储模块中可存储M字节数据。存储在所述一组N个存储模块的M字节数据的纠错码可被存储在所述多个模块中的另一个存储模块中,或分布在各模块内。当存储的数据被从所述一组N个存储模块中的任意N1个模块恢复且包含纠错码数据时,存储在一组N个存储模块中的M字节数据可被恢复。说明书CN102346694ACN1023467。

18、14A4/15页60019在另一方面,一种存储系统包括多个存储模块,各模块可具有定时电路,且所述定时电路在相同时间点被初始化或与基准时间具有周知的关系。一组K个存储模块可配置为用于存储数据块和数据块中的奇偶校验数据块,且可给K个存储模块中的每个分配一个不重叠的时间间隔,在该时间间隔内,可在所述K个存储模块中的各存储模块写入数据或执行擦除数据的操作。0020而在再一方面,描述了一种操作存储系统的方法,该方法包括提供一种具有多个存储模块的存储系统;存储M个数据块和所述多个存储模块中的奇偶校验块存储模块的条带;从所述存储模块恢复至少M个数据块或M1个数据块及奇偶校验数据;使用M个数据块或M1个数据块。

19、及奇偶校验数据中的最早接收的一组,以表示所述M个数据块。0021还是在另一方面,描述了一种计算机程序产品。所述产品存储或分布在计算机可读媒介上,且包含用于管理存储系统中的数据的指令。所述存储系统可包含多个被配置以使数据块和奇偶校验数据被存储在所述多个模块中的L个不同的存储模块上的存储模块。L1个数据块和所述奇偶校验数据或存储数据块被恢复,且要么是被恢复的L1个数据块和所述奇偶校验数据,要么是总是较早被接收的存储数据块被用来表示存储数据块。可选地,所述奇偶校验数据可与存储数据块关联且分布在L1个存储模块,或所述奇偶校验数据可存储在另外的存储模块。0022此外在另一方面,一种在存储系统中计算奇偶校。

20、验的方法,包括在树中配置多个存储模块,所述树具有节点。来自两个节点中的每一个的数据块可传送到第三节点,所述第三节点离树的根较近。从接收的数据块计算第一奇偶校验块。使用第一奇偶校验块和存储在第三节点处的数据块计算第二奇偶校验块以产生第三奇偶校验块。两个第三节点中的每一个的所述第三奇偶校验块作为数据块被传送到离树的根较近的节点。计算并存储第四奇偶校验块,所述第四奇偶校验块是通过对两个所述第三奇偶校验块和存储在离树的根较近的节点处的数据计算获得的。附图说明0023图1显示在多个磁盘驱动上的RAID4数据存储系统(现有技术)。0024图2显示布置在行和列存储阵列中的多个存储模块。0025图3是存储在多。

21、个存储模块上的阵列A的数据结构的例子。0026图4A显示布置在树结构中的存储模块的配置,此处,在逻辑数据条带内的所述存储模块位于树枝末端的树叶处。0027图4B显示如图4A中的存储模块的配置,此处,在逻辑数据条带内的所述存储模块位于树枝处。0028图5是在RAID存储器内的数据的配置图。0029图6A显示对RAID条带的写操作的时间序列。0030图6B显示对图6A中的连续时间间隔的写和读操作的关系。0031图7是存储模块的方框图。0032图8显示一组存储模块,此处,各模块属于一个以上的RAID组,且所述RAID组以不同方式被条带化到跨越各模块。0033图9显示RAID配置,此处,一组内的地址序。

22、列可能不是邻近的。说明书CN102346694ACN102346714A5/15页7具体实施方式0034参考附图可较好地理解代表性实施例,但这些实施例非用于限制。在相同的或不同的附图中相同编号的元件执行相同的功能。各元件可能是编号的或用首字母缩略词标明,或两者皆有,且作出上述描述之间的选择只是为了清晰,以使由数字标明的元件和用首字母缩略词或包括文字与数字的标志标明的相同元件在此基础上不是突出的。0035可以意识到的是,各图中描述的方法和显示的装置可被配置或包含在机器可执行指令(例如软件)中,或在硬件中,或是两者的组合中。指令可被用于使采用所述指令编程的通用计算机、特殊用途处理器(如DSP)或阵。

23、列处理器之类执行所描述的操作。可选地,所述操作可以通过包含用于执行所描述的操作的硬布线逻辑或固件指令的特定的硬件元件、或通过可包含模拟电路的编程计算机元件和用户硬件元件的任意组合来执行。0036所述方法可以被作为计算机程序产品的形式提供,至少是部分地被提供,该计算机程序产品可包含有存储了可用于编程一计算机(或其他电子设备)以执行所述方法的指令的机器可读媒介。为了本说明书的目的,术语“机器可读媒介”应被认为包括能够存储或编码供计算机器或特殊用途硬件的执行的一序列指令或数据的任意媒介,且该指令或数据可使该机器或特殊用途硬件执行本发明的方法或功能中的任意一个。因此术语“机器可读媒介”应被认为包括但不。

24、限于固态存储器、光盘和磁盘、磁存储器、光存储器和载波信号。对由计算机执行的方法的描述不应排除由人执行的同样的方法。0037例如,非用于限制,机器可读媒介可包含只读存储器ROM、任何类型(例如SRAM、DRAM、PRAM)的随机存取存贮器RAM、可编程只读存储器PROM、电可擦除只读存储器EPROM、磁随机存取存贮器、磁盘存储介质、闪存或电、光、声数据存储媒介之类。数据常常存储在逻辑阵列形式中作为数据结构。然而相同的逻辑阵列可与具有相同结构的物理存储阵列相关联。尽管在此中许多例子的操作被描述为在逻辑数据结构和物理装置之间似乎存在直接的对应,但这可能不是实践中的配置,此处,数据分配到存储单元可能受。

25、存储系统的结构、坏存储单元的可能性等等的支配。如此的向物理单元的数据分配可通过文件管理系统例如PCMCIA闪译层(FLASHTRANSLATIONLAYER,FTL)或文件系统例如LINUX日志闪文件系统第2版JOURNALINGFLASHFILESYSTEMVERSION2,JFFS2、阿尔法一YAFFS(YETANOTHERFLASHFILESYSTEM),或存储察觉文件系统(STORAGEAWAREFILESYSTEMS)例如太阳ZFSSUNMICROSYSTEMS,太阳微系统以及本领域普通技术人员所能知道的其他方式来执行。0038当解释此处描述的例子时可假设在逻辑和物理地址之间存在这种。

26、联系。除非特别提到,选择对一个或另一个进行讨论的仅为方便而非限制。因此,RAID组织的存储器的数据条带(STRIPE)可映射到存储系统中的任意实际的存储单元处。因此关于条带中的数据,在存储系统中任何此条带存放之处,对擦除、写和读操作的定时的限制应被理解。就是说,存储模块、存储单元、数据块等等术语通常事实上可交换地使用。0039此外,在本领域中以一种或另一种形式谈到软件(例如,程序PROGRAM,PROCEDURE、进程、应用、模块、运算法则或逻辑)采取行动或引起结果是常见的。如熟悉本领域人员所熟知的,这样的表达仅仅是一种表明用计算机或等同设备对软件的执行会引起计算机或等同设备中的处理器去执行行。

27、动或产生结果的方便的方式。说明书CN102346694ACN102346714A6/15页80040当描述特定的例子时,该例子可能包含特定的特征、结构或特性,但可能不是每个例子均必须包含该特定的特征、结构或特性。这不能被认为是两个或更多例子中的所述特征、结构或特性不应或不能组合的迹象或暗示,除非这样的组合被明确排除。当特定的特征、结构或特性连同其它例子被描述时,熟悉本领域的人员可结合其它例子实施这样的特征、结构或特性,无论其是否被明确描述。0041存储阵列可由磁盘驱动之外的存储元件构成。例如所述存储阵列可由多个闪存模块或其它半导体存储设备形成。0042在第一个例子中,使用RAID4结构,这不意。

28、味着排除其它RAID结构或类似的结构。RAID结构的选择是基于如成本、可靠性、读或写的等待时间、功率消耗、数据恢复速率等等标准的工程和经济性决策。本领域技术人员会理解到本例所示系统和方法可适应于改善RAID式系统读数据、写数据或两者的性能。0043闪存具有有限寿命。闪存的故障可概括地分为常规故障模式和磨损机制,该常规故障模式与结构中的潜在的或随时间推移而显现的瑕疵有关系,其被认为是电子元件中的典型模式。典型地,该磨损机制与存取的次数有关,特别是对于擦除操作,尽管依赖于特定的技术,读或写可成为磨损机制。尽管这是一种电子故障机制,人们可认为其是更典型的一种机械故障机制,例如熟知的由汽车已驾驶的里程。

29、导致的。两种机制需要在系统设计中被考虑,以及避免特定的存储单元被系统操作的硬件或软件管理过度使用。0044当使用闪存时,磨损处的故障机制可能是数据阵列中的单个位错误。这单个位错误可能通常被与特定存储模块内的数据组关联的纠错码ECC检测并纠正。被纠正的数据随后被传送到存储控制器且与读取自其他条带数据结合以形成所请求的数据组A。因为从存储数据组A1、A2、A3恢复的数据不具有任何错误,或者该错误已经被ECC纠正,因此来自数据组AP的数据是冗余的。只有所述数据组A1、A2、A3具有被检测到的但无法校正的错误时,例如由存储模块故障导致的,才需要数据组AP来纠正数据组A的错误。这样的多位错误会发生在诸如。

30、当存储模块本身失效以及数据需要用剩余三个数据组(A1、A2、A3、AP组中的其它三个)来重构时。可认为这样的错误类型的发生是单个存储模块的电子平均故障间隔时间MTBF。通常,仅使用条带A1、A2和A3中的数据,只有在故障发生时,为了数据的重构才检索并使用奇偶校验条带AP。0045当存储在存储模块内的数据中的单个位错误被报告时,闪存模块可认为是不可靠的,且所述存储控制器可“标记”或记录存储模块的位置为不可用,直到存储模块被更换的时候。可选地,在进行修补行动前,可允许积累确定数目的单个位错误。0046一些闪存技术的特性可能使对小块数据的写和读有点不切实际,可能出现要写入的块的大小可能小于存储系统能。

31、够写入的最小块大小的情形。例如,一种软件系统可将文件划分成512字节的块大小,然而对于存储系统,最小可行的擦除大小是128千字节。4个512字节块(是在指操作系统时。若涉及FLASH,则为“扇区”)一起可认为组成一个2千字节的页。术语“块”在一般用于指包括奇偶校验数据的任意类型数据时,无意暗示特定的以字节或任意其它单位为度量的大小,且用于指可与特定的类型关联的数据组。0047在使用RAID4系统的地方,所述页中各自包括512字节的各片段可跨越四个存储模块被条带化,而第五存储模块被用作奇偶校验数据。在这个例子中,将假定512字节的块大小、5个存储块的特性的存储模块的使用、以及128千字节的最小擦。

32、除大小,但要理解这说明书CN102346694ACN102346714A7/15页9些参数仅仅是一个例子且无意暗示对系统或方法的任意特定的限制。0048图2显示一种存储系统,包括多个存储模块,所述存储模块通过总线与存储控制器(MEMORYCONTROLLER,MC)连接。各总线具有多个连接在一系列总线构造中的存储模块,且具有可被认为是与图1的磁盘阵列中的一个磁盘相当的结构。除了作为存储模块的物理配置的代表之外,此配置可被认为是适用于具有不同物理结构的存储模块的逻辑地址空间。0049图3显示对应于数据阵列A的存储单元的结构,此处,数据阵列被认为是可写入到存储设备的最小块大小的大小。每个存储模块具。

33、有128千字节大小,由多个512字节大小的存储扇区组成,被指定为AMN,此处M是存储总线,存储模块被设置在其上,且N表示在各存储模块写入块中与512字节扇区关联的单独的存储单元。在本例中,在存储模块的各126千字节擦除块中有256个512字节的扇区。0050512字节数据块可能因此被写入扇区A11、A21、A31、A41,且奇偶校验阵列AP可能通过在数据阵列A1、A2、A3和A4上计算“异或”被更新。当写数据到扇区A11、A21、A31和A41时,包含在存储模块0的例如扇区A12A1N中的数据也被写入。这可能出现在数据阵列AL中的数据需要先于将改变的或新数据记录进扇区A11而被擦除的时候。此操。

34、作的一个例子可能包含将数据阵列A1读出到非永久存储设备中,擦除存储模块0中与阵列AL关联的存储,改变存储模块0中阵列A1的数据的扇区A11中的数据,以及随后把阵列A1的数据从非永久存储设备写入到存储模块0。这表示可在改变存储在闪存中的数据的程序中执行的操作的例子。通常的闪存系统的整理操作(HOUSEKEEPINGOPERATION)不会在此描述。它们可能包含对不良块的检查、磨损水准测量、合并数据以实现纠正存储单元(“碎片帐集”)、错误检测和修正等等。这些操作可被认为是开销,且导致供读或写的系统带宽的减少,并且也增加了等待时间。这些例子中的闪存的操作在宏观水平上被描述,此处对用户充分透明的任意内。

35、部操作被假定为发生,而未进一步描述。然而,当声称存储器的读或写操作的限制时,所述整理操作通常符合外部的读或写的限制,但如果必要的话,在允许的时间间隔内它们的执行可能被给予优先权。可能是必须的以引起外部命令的内部操作,例如“读”或“写”,可在分配给读和写的时间周期(TIMEPERIOD,或称为“期间”)内被执行,即使这样的操作可能是读和写内部操作的结合。0051在一个使用目前可得到的闪存元件的例子中,对于读,在位于闪存和内部数据寄存器之间的FLASH芯片内的2K字节的数据传送可能需要大约25微秒。在用于通过存储模块上的控制器访问FLASH芯片的总线上以25MB/S的速率从内部寄存器传送512字节。

36、数据到控制FLASH的设备可能需要大约20微秒,总时间大约45微秒。然而,执行擦除FLASH的128KB的块以使新数据能被写入的时间可能需要大约1毫秒到大约2毫秒,这大约是执行读操作的时间的20到40倍长。执行FLASH的编程(写)操作可花费大约20微秒以在总线上传送512字节数据到FLASH芯片的内部寄存器中,以及花费大约200微秒到大约700微秒将数据编程进闪存中,这大约是执行读操作花费的5到15倍长。擦除128K的块以及编程所述128K的块可能需要大约13毫秒到大约42毫秒,或者是执行读操作的200到800倍长。在所述存储模块从事于擦除或编程(写)操作的时间周期内,该存储模块可能不能执行。

37、其它功能,例如从其它扇区A12到A1N中的任何一个中读数据,如果想要读的数据位于正被擦除或编程的所述模块中的相同设备上。因此,在各可能是无关联的读操作的时间周期内,说明书CN102346694ACN102346714A8/15页10当写(编程)操作是在当接收到读请求的进程中时,同样存储在相同的存储阵列块A1中的数据可能被阻止。在许多数据库系统中,这样的可被称为等待时间的延迟可能是不合意的且可能是不能接受的。所述延迟可能变成与在磁盘存储介质中遇到的延迟相似的。0052在希望对数据扇区的读操作时间和写操作时间之间的不对称导致数据速读的情况中,写入被条带化到4个存储模块和奇偶校验模块的2千字节的数据。

38、块的行为可能导致读操作的堵塞,在等待时间内多达10K到30K的数据本可被读出。类似的,擦除操作会堵塞对80K到160K数据的读操作。0053可通过存储控制器和存储模块的操作以使将数据以512字节扇区为单位顺次而非并行写入到所述存储模块A1、A2、A3、A4和AP中每一个中来缓和这种情况。因此,对阵列A1的写操作被允许在对A2的写操作开始前完成,而类似地,对阵列A2的写操作被允许在对A3的写操作开始前完成。这样继续下去,直到完成条带A中的所有存储模块,包括到模块AP的奇偶校验的计算和写。在每个包含数据阵列A1、A2、A3和AP的模块正被写入的时间内,特定的与所述模块关联的数据阵列不能被读出。然而。

39、,在这个例子中,在任一时刻,所述模块A1、A2、A3和AP中只有一个可执行写操作。0054当对存储在模块A11、A21、A31、A41和AP中的512字节数据的读命令发出时,各所述存储模块可接收该读请求。通常,所有存储模块都处在读请求可被迅速地处理并返回数据给存储控制器的状态。然而,当由存储模块正在处理写命令时,该数据可能不能从存储模块即时读出,因此,来自数据阵列A1、A2、A3、A4或AP的各响应中的一个可能大幅度地被延迟。在所述模块AP仅被用作数据恢复目的的情况中,它不能被读出,除非存在存储故障。因为存储管理硬件或软件期望从所有适当的存储模块A1A4收到响应,所以若由外部命令或整理(HOU。

40、SEKEEPING)导致一个或多个所述存储模块正被写入,所述响应的完成可能延迟。0055然而,在存在4个包含数据的存储模块和一个包含奇偶校验数据的存储模块的情况中,该5个模块中只有4个可能需要返回(RETURN)数据以使期望的数据被读出。就是说,各数据模块中的一个可以是故障的或可以报告不可恢复的错误,或被写操作或擦除操作所堵塞。例如,若不返回数据的数据模块是A2,剩余的数据模块可以是A1、A3、A4和AP,此例中所期望的512字节已被检索到。当丢失的数据是来自所述模块A1、A2、A3和A4中的一个时,来自模块AP的数据即奇偶校验数据,可被用于恢复所述丢失或延迟的响应模块中的数据。0056例如,。

41、当存储在存储模块A1中的数据被读出时,可使用纠错码校验所述数据,这些纠错码数据ECC1可存储在与所述数据相同的存储模块中。若所述数据是正确的,那么不必采取行动。若检测到错误,所述错误可被纠正,可被检测或纠正的一定数目的错误是所使用的特定的纠错码的特性。当返回到存储控制器时,该被读出的数据要么是正确的,要么已被ECC纠正过的,要么被标记为正出错,此处ECC能检测该错误但不能纠正该错误。0057典型地,在闪存系统中,要么由于磨损现象发生单个错误,要么该存储模块具有较大范围硬件故障,其导致一种类型的多个错误,该类型可被存储控制器检测。该存储模块可能变成无效了。0058在报告单个错误但错误被ECC纠正。

42、的情况下,错误的发生可被报告给用于管理闪存存储系统的存储控制器或其它硬件或软件,包括芯片上的存储管理器,且所述存储模块说明书CN102346694ACN102346714A9/15页11或特定的芯片或数据块可被标记为是有瑕疵的,或监测进一步可纠正的错误。存储管理运算法则可确定存储模块或芯片可能不再用作数据存储。目前正被存储到该存储模块或芯片中的数据会被移动到另外的未被标记为有瑕疵的存储单元。0059可选地,当存储模块整体是有瑕疵时,例如由于较大范围的硬件故障,来自数据阵列A1、A2、A3、A4中的一个的数据将会丢失或确定会出错。来自AP的数据可被用于重构故障模块的数据,且重构的数据存储在未被标。

43、记为有瑕疵的模块中。即使当大范围硬件故障发生时,该数据的完整性因此也可被维持。0060在知道数据是正确的或曾由ECC纠正了错误的实例中,当来自包含所述五个存储模块A1、A2、A3、A4和AP中的任意四个的阵列的模块的数据已被返回时,期望的512字节数据可能对存储控制器是可用的。例如,来自存储模块A1、A2、A3和A4的数据可被接收。随后,因为不需要测定期望的512字节中数据的正确性或不必纠正错误,所以来自包含AP的模块的数据是冗余的。在具有数据阵列A1、A2、A3或A4的模块中的任意一个未返回数据,或返回知道是不正确的数据或数据被延迟的情形中,利用AP中的奇偶校验数据和剩余的三个数据阵列,该来。

44、自模块AP的数据可被用于重构丢失的数据。当使用术语“未返回数据”时,标准可能是没在特定的时间周期内返回数据,对于读操作这可能是有代表性的。较长的返回数据的时间可能是由于干扰性写或擦除操作,或由于硬件故障。可允许来自“未返回数据”的模块的数据在较晚的时间被返回,或取消对那个模块的写操作。无论如何,从数据条带恢复数据的时间可能不会因模块未能在合理时帧内返回数据而持续很久。0061因此,在存储模块的配置中,此处,存储模块中的一个被用作冗余数据(例如奇偶校验数据),不是所有的存储模块都需要在被请求数据可用之前返回有效的数据,或者需要该数据可以被重构。就是说,例如,当来自模块A1、A2、A3和AP的数据。

45、已被读出时,被请求的数据是可用的。来自A4的数据可能不是必须的。0062来自A4的数据可能不可用或不能被以及时的方式可用的一个原因是正在将数据写到A4中的一些扇区或正在擦除一个扇区,且这可能延迟来自正被写入的块的数据的读取。在接收该读出时间内特有的读请求之后的时刻,来自5个存储模块中4个的数据是可用的。在写操作不在进行中的条件下,来自第5个模块的数据可以是被及时的方式可用,但来自第5个模块的数据可被忽略,除非在不可纠正的错误的情况下。当数据被充分延迟时,被延迟的数据是冗余数据且在存储控制器中的数据的常规处理中可被忽略。0063因此,来自条带内5个存储模块中任意4个的数据可被用于读存储在条带内的。

46、数据,其具有低的等待时间,因为对5个模块中4个的数据的读取不被到5个模块中4个的写操作所阻碍。0064管理在读和写时间不对称的且写时间充分长于读时间的存储系统中的存储器的步骤可包括将数据写到多个存储模块,存储模块被逻辑上安排在条带模型中。各存储模块可具有一个与存储模块中的数据相关的纠错码,以及辅助存储模块可具有与所述多个模块中的数据相关的纠错码(例如,异或奇偶校验)。可通过连续写入或擦除数据来对所述存储模块的每一个执行写或擦除操作,对各连续的模块的写或擦除操作会被延迟,直到对可通行的存储模块的写操作的完成。在对各存储模块的写或擦除操作完成的基础上,在辅助模块中的冗余数据被更新以使数据完整性被维。

47、持。因此,在一时刻只有一个存储模块是处于写状态中的。可选地,冗余数据在非永久存储器中被更新,直到完成包含模块的数据的写入说明书CN102346694ACN102346714A10/15页12或擦除,且随后将所述数据写入辅助模块。0065当以顺次的方式对条带内的存储模块进行写或擦除操作时,条带内的存储模块中只有一个被阻碍即时读出数据以响应读请求,且在这个例子中,5个存储模块中的至少4个会迅速地返回数据到存储控制器。这足够完成读操作。因此,尽管写或擦除操作的总速率下降,但读操作不会被写操作或擦除操作所延迟,因为在一时刻只有一个模块可处于写状态或擦除状态。用于写数据到存储模块的充分地不重叠的时段使对。

48、数据条带的读和写操作之间的冲突最小化。0066存储控制器可等待一段时间以便完成读操作,然后使用所述5个响应中的至少4个以组合请求的数据扇区,该扇区存在数据或重构数据。是否所有5个数据块应被返回,或者一个数据块可被忽略,或冗余数据能用作辅助误差检测步骤,依赖于设计中期望的数据置信度(DATACONFIDENCE)的水平。0067在数据阵列的原始群体中,数据的写入可能是优先考虑的事,且数据能被并行地写入到条带中的多个存储模块。既然这样,由于前面描述的原因,数据的读出可能被延迟,然而当初始化大阵列或转移大块数据时,这是可接受的。在目前的例子中,数据写速率是最大写速率的大约20,因为所述5个存储模块中。

49、的每个是被顺次地写入,而读速率大约不比对于单个模块的期望读速率长,因为5个存储模块中的4个需要响应成功的读出,且他们被写入堵塞了。当写负荷增长时可控制该堵塞。0068在另外的例子中,存储阵列的结构可能不是在前面例子中的行列矩阵。上面描述的数据的行列标记可被理解为逻辑地址和变换到物理地址的逻辑地址。在图4的存储结构中,存储模块被配置在树中,这在本发明人在2006年4月17日提交的主题为“互连系统”的美国专利申请11/405,083中被讲解,且在此处通过引用进行结合。在本例子的方案中,树状结构是互连的且具有到一个或更多的存储控制器的外部连接。如图4A中显示的树系统的属性是任意存储模块(用方框显示)可被存储控制器中的至少一个存取,即使存储模块中的一个已经完全失效,或物理链接中的任意一个已经被断掉,或存储控制器中的一个已经失效。因此,单个存储模块M可被分配给数据阵列A,无需详细考虑系统中存储模块的物理定位。(在本例子中,为了简单起见,存储模块的标记M用关联数据阵列的标记A代替)。就信号可能必须传播的距离而言,当与具有类似数目的存储模块和存储控制器的线性结构比较时,树结构可适应于包含大量的存储模块,每一个模块相对靠近树根。0069作为示例,在对图4的存储系统的物理模块进行配置的一个例子中显示了数据阵列A,可以理解的是,这是大量可能的配置中的一种。对存储模块的数据阵列的分配可被改变以解决一。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1