CN1862500B - 用于数据存储的系统和方法 - Google Patents

用于数据存储的系统和方法 Download PDF

Info

Publication number
CN1862500B
CN1862500B CN2006100589914A CN200610058991A CN1862500B CN 1862500 B CN1862500 B CN 1862500B CN 2006100589914 A CN2006100589914 A CN 2006100589914A CN 200610058991 A CN200610058991 A CN 200610058991A CN 1862500 B CN1862500 B CN 1862500B
Authority
CN
China
Prior art keywords
data
memory storage
memory
storage
coded data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006100589914A
Other languages
English (en)
Other versions
CN1862500A (zh
Inventor
丹尼尔·J·威纳尔斯基
克雷格·A·克莱因
尼尔斯·豪斯坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1862500A publication Critical patent/CN1862500A/zh
Application granted granted Critical
Publication of CN1862500B publication Critical patent/CN1862500B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general

Abstract

一种使用卷积编码来提供写入某些装置中的分带区数据的冗余度的独立装置冗余阵列。在卷积编码处理中不使用奇偶校验。格解码用于从RAID读取数据,并且根据最小而且最好是0汉明距离(用于选择通过格图的连接路径)从一个或多个发生故障的存储装置中重建丢失的编码数据。

Description

用于数据存储的系统和方法
技术领域
本发明涉及数据存储。
背景技术
发明内容
公开用于在独立存储装置冗余阵列(RAID)中存储卷积编码的数据的方法、系统和计算机程序产品。在系统形式中,实施例包括多个存储装置和耦合到存储装置的格解码器(trellis decoder)。该解码器用于处理从存储装置接收的经编码的数据来产生解码的数据。编码数据包括由信息的当前和过去位的卷积产生的纠错编码数据。该系统用于确定是否存在发生故障的存储装置,并且响应于确定存在发生故障的存储装置,该系统分配用于存储重建数据的存储空间。重建数据包括预先存储在发生故障的存储装置上的编码数据。该系统处理解码的数据来产生重建数据,并且将重建数据存储在所分配的存储空间中。
在某些实施例中,该系统还用于测量解码数据中的错误量,将错误量与用于多个存储装置中的每一个的出错限制相比较,并且响应于超过存储装置的出错限制的错误量,将该存储装置识别为发生故障的存储装置。在某些实施例中,系统还用于从多个存储装置接收自监测分析和报告技术信息,并且响应于自监测分析和指示存储装置发生故障的报告技术信息,将存储装置识别为发生故障的存储装置。在某些实施例中,编码数据包括一个或多个字,每个字包括n位,其中n大于0,从卷积编码器产生的每个字处理一部分信息,并且多个存储装置都不具有两个或多个相邻字或每个字的n位中的一个位以上。在某些实施例中,系统还包括元数据控制器,用于处理与编码数据相关联的元数据,元数据包括用于指定编码数据的存储位置和/或指定编码数据的编码类型的存储位置信息。
附图说明
图1是图解示例性存储区域网络(“SAN”)的各方面的方框图。
图2图解示例性读命令。
图3图解元数据结构。
图4图解用于2位字输出编码器的、具有1位宽的带区(wide stripe)的卷积RAID。
图5图解用于2位字输出编码器的、具有2位宽的带区的卷积RAID。
图6图解用于从卷积编码的RAID读取编码数据的流程图。
图7图解用于(2,1,3)码的格解码器。
图8图解用于使用格解码器来检测丢失的编码数据的流程图。
图9图解用于使用格解码器来重建丢失的编码数据和它表示的信息的流程图。
图10图解用于(2,1,3)码以及丢失信息的重建的格解码器。
图11图解用于(3,2,1)码的格解码器。
图12图解用于(2,1,3)纠错码的编码器状态示意图。
图13以表的形式图解图12的用于(2,1,3)纠错码的编码器状态示意图。
图14图解具有两个输出、一个输入和三级延迟元件的(2,1,3)二进制卷积编码器电路。
图15图解用于将重建的编码数据写入备用存储空间的示例性SCSI写命令。
具体实施方式
参照附图,其中相同的部分用相同的附图标记表示,图1是图解示例性存储区域网络(SAN)10的各方面的方框图。SAN 10典型地设计成作为交换访问网络工作,其中使用交换机67创建交换网(fabric)66。在某些实施例中,使用运行在光纤信道(“FC”)物理层上的小型计算机系统接口(SCSI)协议来实现SAN 10。在其他实施例中,可以使用其他协议,例如Infiniband、FICON(光纤信道连接的一种特殊形式)、TCP/IP、以太网、千兆位以太网或iSCSI来实现SAN 10。交换机67具有主机61、62、63、64、65和控制器80两方的地址,因而主机61-65中的任一个可以互换地连接到任何控制器80。
主机61、62、63、64、65分别使用I/O接口71、72、73、74、75连接到网66。I/O接口71-75可以是任何类型的I/O接口;例如,FC环、直接附接到网66或者主机61-65使用的一条或多条信号线,用于分别向/从网66传输信息。网66包括例如用于连接两个或多个计算机网络的一个或多个FC交换机67。在某些实施例中,FC交换机67是常规的路由器交换机。
交换机67通过I/O接口79将主机61-65与控制器80互连。I/O接口79可以是任何类型的I/O接口,例如,光纤信道、Infiniband、千兆位以太网、以太网、TCP/IP、iSCSI、SCSI I/O接口或者由FC交换机67用来分别向/从控制器80并进而向多个存储装置91-93传输信息的一条或多条信号线。在图1所示的例子中,存储装置91-93和控制器80在RAID 90内操作。RAID 90还可以包括备用存储装置97,它在存储装置91-93中的任一个发生故障时可以与存储装置91-93交换。在RAID 90中可以包括除了存储装置91-93之外的额外存储装置。作为选择,存储装置91-93以及控制器80物理上可以彼此远离,从而一次灾难只能损害存储装置91-93中的一个。
RAID 90典型地包括用于指导RAID操作的一个或多个控制器80。控制器80可以采用很多不同的形式,并且可以包括嵌入式系统、分配式控制系统、个人计算机、工作站等。图1示出了典型的RAID控制器80,具有处理器82、元数据控制器98、随机存取存储器(RAM)84、非易失性存储器83、专用电路81、编码数据接口85和主机信息接口89。处理器82、RAM84、非易失性存储器83、专用电路81、元数据控制器98、编码数据接口85和主机信息接口89通过总线99相互通信。
作为选择,RAM 84和/或非易失性存储器83可以与专用电路81、编码数据接口85、元数据控制器98和主机信息接口89一起位于处理器82中。处理器82可以包括通用微处理器、定制处理器、FPGA、ASIC或其他形式的分立逻辑。RAM 84典型地用作主机61-65写或主机61-65读数据的高速缓存,用来保存计算出的数据、堆栈数据、可执行指令等。此外,RAM 84通常用于在数据存储在存储装置91-93之前临时存储来自编码器(即,编码器86)的编码数据87。编码器的示例是卷积编码器220(图14)。在某些实施例中,卷积编码器220可以位于专用电路81中。RAM 84通常用于在从存储装置91-93读取数据之后,在由解码器77解码该数据之前临时存储编码数据87。解码器77的示例是图7中的格解码器300和图11中的格解码器500。
在某些实施例中,由软件、固件、专用逻辑及其它们的组合在处理器82中实现分配器101。此外,分配器101可以全部或部分位于控制器80之外,诸如在主机61-65之一的软件实现中。在一个或多个存储装置发生故障的情况下,分配器101将编码数据(即编码数据87)分配到RAM 84,和/或以可以从未发生故障的存储装置解码和/或重建编码数据和/或源信息的格直接分配到存储装置。在写处理期间,当分配器101将数据分配到存储装置(诸如装置91-93)时,根据元数据88完成分配,以便以后可以从该存储装置读取所分配的数据。在读取处理中,分配器101根据元数据88从存储装置(诸如装置91-93)取出数据,并且将编码数据87重新汇集到RAM 84。
非易失性存储器83可以包括任何类型的非易失性存储器,如电可擦可编程只读存储器(EEPROM)、闪速可编程只读存储器(PROM)、电池备用RAM、硬盘驱动器或其他类似装置。非易失性存储器83典型地用于保存可执行固件和任何非易失性数据,例如元数据88。元数据88的细节将在下面参照图3进一步讨论。
在某些实施例中,编码数据接口85包括允许处理器82与存储装置91-93通信的一个或多个通信接口。主机信息接口89允许处理器82与网66、交换机67和主机61-65通信。编码数据接口85和主机信息接口89的例子包括诸如RS-232、USB(通用串行总线)、SCSI(小型计算机系统接口)、光纤信道、千兆位以太网等串行接口。此外,编码数据接口85和/或主机信息接口89可以包括诸如射频(“RF”)(如蓝牙)之类的无线接口,或者诸如红外(IR)之类的光通信装置。
在某些实施例中,元数据控制器98在处理器82中由软件、固件、专用逻辑或者其组合来实现。此外,元数据控制器98的全部或部分可以位于控制器82外部,例如以主机61-65之一或其他处理装置中的软件实现。元数据控制器98管理与为作为编码数据在存储装置上存储而接收的信息相关联的元数据。在某些实施例中,元数据控制器98负责生成、改变、维护、存储、取出和处理与为作为编码数据存储而接收的信息相关联的元数据。
专用电路81提供额外的硬件来使控制器80执行独有功能,诸如存储装置91-93、控制器80和解码器77的环境冷却的风扇控制。解码器77可以实现为格解码器。特定的专用电路81可以包括提供脉冲带宽调制(PWM)控制、模数转换(ADC)、数模转换(DAC)、异或(XOR)之类的电子电路。此外,特定的电路81可以全部或部分位于控制器80之外,诸如在主机61-65之一的软件实现中。
解码器77可以实现为格解码器来解码从RAID存储装置(即,存储装置91-93)读取的编码数据。可以使用格图300(图7)解释格解码器的操作。在图7中显示了状态S0-S7,并且假设用于将信息编码为存储在存储装置的编码数据的卷积编码器的所有存储器寄存器的初始内容都被初始化为0。例如,卷积编码器220(图14)的存储器寄存器230-232被初始化为0。这具有这样的结果:用于解码从存储装置读取的编码数据87来产生原始主机信息78的格图总是在状态S0开始并在状态S0终止。
格图300(图7)在状态S0 310A开始。格图300从S0 310A转移到S0 310B或S1 311B。在格图300中,状态编号从后缀A到后缀B的增加称为分支,并且当从后缀A转移到后缀B时,分支索引I为0。格图300从S0 310B转移到S0 310C或S1 311C,并从S1 311B转移到S2 312C或S3 313C,而分支索引I为1。格图300从S0 310C转移到S0 310D或S1 311D,从S1 311C转移到S2 312D或S3 313D,从S2 312C转移到S4 314D或S5 315D,或从S3 313C转移到S6 316D或S7 317D,而分支索引I是3。
在格图300中,下一系列转移显示了解码尝试的所有分支。格图300从S0 310D转移到S0 310E或S1 311E,从S1 311D转移到S2 312E或S3 313E,从S2 312D转移到S4 314E或S5 315E,或从S3 313D转移到S6 316E或S7 317E,并且分支索引I是4。此外,格图300从S7 317D转移到S7 317E或S6 316E,从S6 316D转移到S5 315E或S4 314E,从S5 315D转移到S3 313E或S2 312E,从S4 314D转移到S1 311E或S0 310E。
通常,在格图中多次重复显示关于分支索引I=4的内容。然而,为了简化仅在图7中允许一次这样的重复。对于图7的剩余部分,显示格图以终止指示解码处理的结束。格图300从S0 310E仅转移到S0 310F,从S1 311E仅转移到S2 312F,从S2 312E仅转移到S4 314F,以及从S3313E仅转移到S6 316F,并且分支索引为5。此外,格图300从S7 317E仅转移到S6 316F,从S6 316E仅转移到S4314F,从S5 315E仅转移到S2 312F,以及从S4 314E仅转移到S0310F。格图300从S0 310F仅转移到S0 310G,以及从S2 312F仅转移到S4 312G,并且分支索引为6。此外,格图300从S6 316F仅转移到S4 310G,以及从S4 314F仅转移到S0 310G。最后,格图300从S0 310G仅转移到S0 310H,并且分支索引为7。此外,格图300从S4 314G仅转移到S0 310H。
在图7中,示例性的突出表示解码路径S0 310A、S1 311B、S3 313C、S7317D、S7 317E、S6 316F、S4 314G和S0 310H取得编码数据11100110010011,并根据图13的表290将其解码为1111000。
图6中所示的流程图700描述了用于实现对从RAID存储装置获得的纠错编码数据解码的一个实施例的处理。该处理从步骤701进行至判定步骤705,来确定控制器80是否从源(即,主机61-65)接收到了关于存储信息的请求。从控制器80请求的信息可以是预先由客户、提供服务给客户的第三方、用户或任何其它访问控制器80的实体存储在存储装置上的。如果没有接收到关于存储信息的请求,处理循环返回到步骤705。在某些实施例中,主机信息接口89接收关于存储信息的请求,并且将该请求传送到其他耦合到控制器80的部件(即,处理器82、专用电路81等)。如果接收到关于存储信息的请求,处理进行至步骤707,其中控制器根据主机61-65之一请求的、所期望的文件名626(或其它识别符)首先获得与所期望的存储信息相关联的元数据88(图3),从而确定编码数据放置到什么存储装置(即,通过使用图3的指示符)、编码数据的起始LBA 622、用以获得编码数据的传送长度623、带区宽度(stripe width)624和序列号625。可以从非易失性存储器83获得元数据88。
在某些实施例中,元数据控制器(即,元数据控制器98)定位并处理与编码数据相关联的元数据88。该元数据包括:存储位置信息,用于指定编码数据的存储位置;和/或编码器信息,用于指定编码数据的编码类型。指定用于纠错编码数据的存储位置的存储位置信息可以包括存储器永久名、逻辑块地址、装置号、逻辑单元号、卷序列号或其它存储位置识别符。在步骤707,处理器82可以用于实现元数据控制器,来从非易失性存储器83定位所期望的元数据88。
处理从步骤707进行至步骤708,其中控制器80使用读命令(即,读命令605(图2))来从独立存储器91-93读取编码信息,并且将其放入RAM 84。例如,参照图5,从驱动器281读取V(1,1)、V(1,2)、V(4,1)、V(4,2)、V(7,1)、V(7,2)、V(10,1)、V(10,2)等,从驱动器282读取V(2,1)、V(2,2)、V(5,1)、V(5,2)、V(8,1)、V(8,2)、V(11,1)、V(11,2)等,而从驱动器283读取V(3,1)、V(3,2)、V(6,1)、V(6,2)、V(9,1)、V(9,2)、V(12,1)、V(12,2)等来完成编码数据290。在读命令605中的是目标存储装置的逻辑单元号609(从图3的元数据88获得)、存储在存储装置上(在逻辑单元号609)的编码数据的起始逻辑块地址607(从图3的元数据88获得)和传送长度608(从图3的元数据88获得)。读命令605也许可以越过SCSI或光纤信道接口来实现。读命令605是SCSI读命令,并且是可以使用的、唯一可能的读命令。可以多次使用读命令605来从存储装置91-93取出编码数据。对于每个存储装置,通常使用至少一次读命令605。
图4显示了当(2,1,3)二进制卷积编码器(图14)用于处理信息来产生纠错编码数据时,分配到存储设备(260)的纠错编码数据的示例。纠错编码数据的每个字可以包括例如如图4所示的两位(n=2),第一字包括V(1,1)和V(1,2),第二字包括V(2,1)和V(2,2),第三字包括V(3,1)和V(3,2)等。对于该示例,没有存储装置接收每个字的两位中多于一个的位。
图5显示了当(2,1,3)二进制卷积编码器(图14)用于处理信息来产生纠错编码数据时,分配到存储设备(280)的纠错编码数据的示例。纠错编码数据的每个字可以包括例如如图5所示的两位(n=2),第一字包括V(1,1)和V(1,2),第二字包括V(2,1)和V(2,2),第三字包括V(3,1)和V(3,2)等。对于该示例,没有存储装置接收两个或两个以上的相邻字。对于该示例,相邻字包括例如第一字(V(1,1)、V(1,2))和第二字(V(2,1)、V(2,2))或第二字(V(2,1)、V(2,2))和第三字(V(3,1)、V(3,2))。非相邻字的示例是:第一字(V(1,1)、V(1,2))和第三字(V(3,1)、V(3,2))或第二字(V(2,1)、V(2,2))和第四字(V(4,1)、V(4,2))。
对于图4所示的数据分配,可以在步骤708调用六次读命令605来读取存储在存储装置261-266中的信息。对于图5所示的数据分配,在步骤708可以三次调用读命令来读取存储在存储装置281-283中的信息。
一旦从每个驱动器读取了所有的编码数据并放置到RAM 84中,处理进行至步骤S709,其中控制器80将来自每个驱动器的编码数据汇集为编码数据87。从每个驱动器读取的编码数据汇集的编码数据87的示例为270(图4)和290(图5)。该汇集基于元数据88中的序列号625的,其中序列号从先前分布到RAID的编码数据确定编码数据87的恰当汇集。
类似地,图4还显示在步骤709存储在存储装置(例如RAM 84)中的纠错编码数据的示例的表(270)。表270组织为列,其中每一列包括在步骤708中从相应存储装置(即,存储装置91-93)读取的纠错编码数据。例如,表270的第一列显示在步骤708中从驱动器261读取的纠错编码数据。
图5还显示在步骤709在存储装置(例如RAM 84)中汇集的纠错编码数据的示例的表(290)。表290组织为列,其中每一列包括在步骤708从相应存储装置读取的纠错编码数据。例如,表290的第一列显示在步骤708从驱动器281读取的纠错编码数据。
在完成步骤709(其中在RAM 84中汇集了编码数据87)之后,处理进行至步骤711,其中解码编码数据87来产生解码的数据(即,信息78)。可以通过耦合到存储装置(通过使用在RAM 84中汇集的编码数据87)的格解码器(即,专用电路81中的格解码器,用于解码编码数据87来获得用于一个或多个主机61-65的原始信息78)完成步骤711。格解码器77可以用于处理从存储装置91-93接收到的编码数据来产生解码的数据。通过卷积信息78的当前位和过去位的卷积产生包含纠错编码数据的编码数据。解码器77可以是图7或11表示的格解码器,或任何其它格解码器。作为选择,解码器77可以采用“堆栈算法”,其可以被认为是格图的二进制树形实现。
在某些实施例中,解码器77包含在时间上扩展编码器的状态示意图(图12),以便以单独状态示意图来表示每个时间单元。产生的结构称为格图,如图7和11所示。通过具有最小汉明(Hamming)距离的格图的路径是用于解码(即读取)编码数据87来产生所期望的信息78的期望路径。优选的最小汉明距离为0,意味着在编码数据87和通过格图选择来将编码数据87解码为信息78的路径之间没有错误。
通过为格图的该分支读取的字和分配给在该分支中的每个路径的字,计算汉明距离。将所读取的字和所分配的字相加而不用进位(carryover)(XOR),以产生关于该分支中的每个路径的汉明距离。例如,如果读取的字是111,而且路径具有分配的字010,则汉明距离是111+010=101。
最好在每个分支中的汉明距离是0。例如,如果读取的字是111,并且在该分支中存在分配了字111的路径,则111+111=000会表示0汉明距离。该路径应是该分支的期望路径,并且分配给相同路径的分支和信息应是表示在编码发生前的原始信息。
如果没有实现0汉明距离,则为所读取的编码数据计算通过格图的所有允许路径,并且选择穿过所有分支的、具有最小汉明距离的路径作为表示编码数据和原始信息的路径。因此,格图实际上是用于卷积码的最大似然性解码算法,即解码器输出选择总是以汉明距离的形式给出最小度量(metric)的码字。
对于读取(解码)处理,格图的第一分支总是从状态S0出发,并且格图的最后分支总是在状态S0终止。这是开始和终止利用卷积编码器中初始化为0的所有存储器(诸如图14中的存储器230-232)的编码处理的指示。
对于正确操作,解码器77经由带区宽度624(stripe width)、从元数据88获得包括字的位的顺序。例如,不同地排列在表270(图4)和表290(图5)中的位。通过说明元数据88中的带区宽度624,由格图300(图7)和500(图11)以正确的顺序处理编码数据的各个位。
在某些实施例中,编码数据包括一个或多个字,每个字包括n位,其中n大于0,从卷积编码器产生的每个字处理一部分信息,并且其中多个存储装置都不具有多于每个字的n位中的一位。
在某些实施例中,编码数据包括一个或多个字,每个字包括n位,其中n大于0,从卷积编码器产生的每个字处理一部分信息,并且其中多个存储装置都不具有两个或更多相邻字。
处理从步骤711进行至步骤712,以确定产生由请求者请求的信息所需的所有编码数据是否已经被解码器77解码。如果答案为“是”,则处理进行至步骤713,其中主机信息接口89从解码器77和耦合到控制器80的、参与传送需要的任何其它部件(即,处理器82、专用电路81等)接收信息78,并且将从编码数据87获得的信息78传送到请求主机61-65。在解码器77处理纠错编码数据87之前、期间和之后,信息78可以暂时存储在存储装置(即,RAM 84、非易失性存储器83、专用处理器存储器等)。纠错编码数据87和/或获得的信息78可以在分配到SAN 10的请求主计算机61-65之前存储在RAM(即,RAM 84)中。作为选择,由于从存储装置读取(通过图2的读取命令605)的片断来汇集纠错编码数据87,所以纠错编码数据87可以存储在非易失性存储器83、另一存储装置、高速缓存等中。在某些实施例中,纠错编码数据87以与先前分配到存储装置进行存储使用的格式相同的格式存储在RAM 84中。
如果在步骤712已经解码了所有的编码数据,则执行步骤713。步骤713将请求者请求的信息78发送到请求者,并且将程序控制返回到步骤705来处理另一请求。如果在步骤712需要解码更多的编码数据87,则执行步骤715。
在步骤715,编码数据87的格解码可以检测错误。在某些实施例中,每当在解码处理中出现非0汉明距离,则检测解码错误。如果在解码编码数据87时没有检测到错误(即,在格图300或500中发现具有0汉明距离的路径),则控制进行至步骤711来继续解码处理。在某些实施例中,通过连续检查编码数据的解码来实现步骤715,以通过非0汉明距离检测错误。作为选择,可以周期地检查解码处理。例如,连续或周期地检查可以包括逐位、多位、逐字、多字地检查或检查编码数据的其他部分、解码数据或导出信息,以检测错误。在编码数据、解码数据、导出信息及其组合中存在出错的情况下,如果存储装置发生故障,则控制进行至步骤720。
如果在步骤720中存储装置没有发生故障,则执行步骤722。在步骤722,纠正错误并且将控制返回到步骤711来恢复解码编码数据87。这种纠错会包括在出错(非0汉明距离)出现之前备份解码处理,然后当查看最小汉明距离的所有可能路径时恢复解码处理。这个最小汉明距离最好是0。
在一个实施例中,在步骤715,通过在各个存储装置内(即在存储装置91-93的每一个内)读取编码数据时测量ECC(纠错码)错误量并且将该ECC错误量与每个存储装置(即存储装置91-93)内的出错限制进行比较来完成步骤720。在步骤720,响应于ECC错误量超过关于给定存储装置的出错限制,系统识别该存储装置为发生故障的存储装置。
在作为选择的实施例中,通过从每个存储装置(即存储装置91-93)接收自监测分析和报告技术(即,S.M.A.R.T技术)信息,并且响应于自监测分析和指示存储装置发生故障的报告技术信息(将存储装置识别为发生故障的存储装置)来完成步骤720。
S.M.A.R.T是自监测分析和报告技术的首字母缩写。该技术意欲识别用于指示驱动器(即,存储装置91-93)故障的状态,并且设计来提供足够的故障警告来允许在实际故障发生前进行数据备份。存储装置可以实时监视关于降级的特定属性,但是不能预测瞬时驱动故障。
关于降级的每个属性监测驱动器的操作性能中的故障状态的特定集合,并且优化阈值来最小化“错误”和“发生故障”的预测。S.M.A.R.T监测错误发生的比率,并且在降级的出错比率增加到不可接受的水平时,发出预测故障的信号。为确定该比率,记录出错事件并且与给定的属性的全部操作数量相比。间隔(interval)定义用于测量比率的操作的数量。跟踪操作的当前数量的计数器称为间隔计数器。
S.M.A.R.T测量出错比率,因此对于每个属性记录错误的出现。计数器跟踪关于当前间隔期间的错误量。该计数器称为故障计数器。出错比率简单地是每个操作的错误量。S.M.A.R.T是用来记录出错比率的算法设置错误量的阈值和间隔。如果错误量在间隔过去前超过阈值,则认为出错比率是不可接受的。如果错误量在间隔过去前没有超过阈值,则认为出错比率是可以接受的。在任意一种情况下,都重置间隔和故障计数器并开始该处理。
当驱动器在一段时间的运行不可接受时,S.M.A.R.T发出预测故障的信号。固件保持计数对于每个属性来说出错比率不可接受的次数。为了实现它,只要出错比率不可接受计数器(值)就递增,而只要出错比率可以接受计数器就递减(不超过0)。若计数器持续递增以至到达预定的阈值,则发出预测故障信号。这种计数器称为故障历史计数器。对于每个属性具有一个单独的故障历史计数器。
在作为选择的实施例中,在步骤720,发生故障的存储装置被确定为控制器80不能与之建立(例如,通过编码数据接口85)I/O通信的存储装置。
如果存储装置发生故障,可以经由步骤719接入流程图700来直接进行至步骤725。不需要发生读操作来搜索发生故障的驱动器,并开始重建发生故障的驱动器先前保持的编码数据。
响应于在步骤720确定存在发生故障的存储装置,执行步骤725来为重建数据的存储分配存储空间。在某些实施例中,通过使用用于所分配的存储空间的备用存储装置(即,备用存储装置97)来完成步骤725。如果采用这样的备用存储装置97来替代存储装置91-93之一,则备用存储装置97会具有与所替代的发生故障的存储装置的存储容量相同或更多的存储容量。另外,备用存储装置97最好是相同类型的存储器,即如果存储装置91-93是具有光纤通道连接的硬盘驱动器,则备用存储装置97也应该是具有光纤通道连接的硬盘驱动器。在某些实施例中,所分配的存储空间可以包括一个或多个存储装置91-93、存储装置91-93的一部分、在SAN 10之内或之外的外部存储装置、耦合到控制器80的存储装置等。在某些实施例中,重建数据包括先前存储在发生故障的存储装置上的编码数据(即,卷积编码器产生的数据)。
处理从步骤725进行至步骤730,来完成(1e,14e,78f)处理解码数据以产生重建数据,并将重建数据存储在所分配的存储空间中。例如,可以通过控制器80使用格解码器77处理解码的数据,并且经由在RAM 84中构造表270(图4)或表290(图5)的全部内容,来重建存储在发生故障的存储装置上的数据的映像,并且使用写命令(即,写命令600,图15)将对应于已经存储在发生故障的驱动器上的映像的列存储在所分配的存储空间(即备用存储装置97),从而完成步骤730和735。在重建存储之前、期间或之后,该映像可以临时存储在存储装置(即,RAM 84)。该重建处理还恢复原来由主机提供的信息。因此,该重建处理还解码先前编码的数据,并且如果读取处理需要读取已经存储在发生故障的存储装置上的编码数据的片断,则重建处理可以认为是读取处理的一部分。如果用户期望读取(解码)在发生故障的卷积编码的RAID(如图4-5)上的数据,则从发生故障的存储装置恢复丢失的编码数据的相同重建处理还向用户提供期望的信息。在某些实施例中,系统可以用于关于在所分配的存储空间上存储重建数据向客户收费。可以通过系统、服务提供商、第三方等向客户收费。该费用可以基于所使用的存储空间容量、底价(flat fee)、所使用的、所分配的存储装置的数量等。例如,这可以通过客户同意服务提供商存储数据来实现,其中服务提供商负责按需存储并取出客户的数据。该服务商可以是存储系统的管理者和/或在客户和另一实体之间的商业关系中的第三方。客户可以配有到用于存储信息的系统的连接(即,图1的SAN 10)。客户可以使用该连接或其他装置发送该信息到系统来进行存储。可以由用于测量数据量的本领域公知的方法测量客户发送或SAN 10和/或控制器80接收的信息的总量或数量。通过考虑发送来存储的信息量和其它因素(诸如信息流速率、使用频率、压缩或非压缩信息费率、固定月费率和其它考虑)来确定用于在所分配的存储空间存储重建数据的费用。处理从步骤735进行至步骤740结束。
在特定实施例中,通过解码器77的操作完成步骤720、722和730。解码器77可以实现为格解码器来解码从RAID存储装置(即,存储装置91-93)读取的编码数据。格解码器的操作解释如下。
在某些实施例中,对于图7、10和11中的格解码,由图8所示的流程图340的步骤341、342、343、344、345、347和348和图9所示的流程图360来完成步骤720和722。在图8中,处理从步骤341开始。处理进行至步骤342,其中分支索引I被设置为0。格图的分支表示卷积编码器(图12)的输出中的一个字。例如,格图300在字中具有两个位,而格图在一个字中具有三个位。因为当获得0汉明距离时(这表示没有检测到错误并且不存在来自发生故障的存储器的丢失数据,以及在分支索引I中识别的单独路径完全对应于编码数据87中的编码数据)格解码器通常每次顺序解码一个分支,所以分支索引I是重要的。格解码器的值是可以“先行、不按顺序、逐分支”并绕过具有错误的分支,并且使用错误分支后的那些分支来校正错误分支。
处理从步骤342进行至判定步骤343,其中做出是从存储装置91-93获得编码数据87的字的所有n位,还是对于分支I某些位丢失的决定。每个字包括n位,并且n位的每组包括格解码器300和500中的一个分支。如果对于分支I获得所有n位,则该处理进行至步骤344,其中在(a)从编码数据87获得的编码数据的所有n位和(b)包括图7的格图300(作为选择,图11的格图500)的分支索引I的路径中的状态转移之间执行XOR(异或)操作。例如,对于图7的格图300的分支索引I=0,读取的编码数据是11(每次处理编码数据的单一字)。格图允许从S0 310A到S0 310B或S1 311B的转移。从S0 310A到S0 310B的转移表示编码数据00,而S0 310A到S1 311B的转移表示编码数据11。在判定步骤345中,读取的数据11和从S0 310A到S1 311B的转移之间的XOR处理得出0汉明距离(0错误)(11XOR 11=00),指示这是在两种可能之间做出的正确选择,并且解码和期望的解码的信息是1。如果在判定步骤345中识别出路径具有0汉明距离(0错误),则该处理进行至步骤347,其中选择具有0汉明距离的路径作为正确路径。然后,该处理进行至判定步骤348,其中做出通过是否在每个元数据88已处理所有数据推断处理是否结束的评估,这确定编码数据87的大小。假设在步骤348处理未结束,则分支索引I在步骤349增加1,并且在步骤343处理返回来尝试读取更多的数据。如果处理在步骤348完成,则处理前进到步骤398,其中通过解码编码数据87获得的原始信息78被发送到主机61-65,然后处理在步骤399终止。
在某些实施例中,对于图7的格图300或图11的格图500,通过经由图8所示的流程图340的步骤343到步骤351来完成步骤720、725、730和735(图6)。如果在判定步骤343中没有获得所有n位(即,没有获得分支的所有位,如图10的虚线路径I=1所示),则处理进行至步骤350,其中确定丢失位Q的数量。例如,对于字的长度(n=2位),在装置263-264(图4)之一发生故障而另一个正常操作的情况下,Q可以是1。然而,如果装置281-285(图5)之一发生故障,则Q会等于n。然后,该处理进行至判定步骤351,其中做出备用存储器(诸如图1的备用存储器97)是否已经可用的询问。如果在步骤351答案是“否”,则处理进行至步骤352,其中由用户获得备用存储器来替代发生故障的存储器。在某些实施例中,系统可以用于为备用存储其分配存储空间而向客户(即,用户)收费。获得备用存储器97可以涉及用户购买备用存储器,例如,如果发生故障的存储器的保修期已过。当客户首先调用备用存储器时,可以电子方式实现该购买。如果保修期仍然有效,则可以免费提供备用存储器。
在某些实施例中,在用户需要备用存储装置之前,用户不购买备用存储装置。如果在保修期中调用备用存储器,备用存储器的费用可以是0。步骤352还可以包括在利用现有备用存储器,制造商自动交付替代备用存储器。该替代备用存储器应放置在故障存储器移开的地方。在某些实施例中,替代存储器可以位于与存储装置91-93不同的物理位置上。例如,可以通过高速接口(即,因特网、企业内部网、TCP/IP等)按需访问替代存储器。作为保修协议的一部分,发生故障的存储器可以返回到工厂来进行故障分析。然后,该处理从步骤352进行至步骤353,其中做出到图9的流程图360的步骤361的转移。如果步骤351的答案为“是”,则处理直接进行至步骤352和步骤353。在某些实施例中,存储装置(即,RAID 90中的存储器91-93)支出到分离的物理位置。例如,通过将存储装置92-93放置在不同的房间、建筑、城市、州、国家等,存储装置91、92和93每一个可以相互物理分离。
在图10中,假设编码数据包括两位的字,诸如图12所示的编码器编码的数据。还假设因为灾难性故障、具有1位宽的带区的相邻装置对(诸如图4的装置263-264),或具有2位宽的带区的单独装置(诸如图5的装置282)已经丢失了所有数据。图8-9显示在流程图340的步骤343中不能读取的情况下如何重建数据。
在某些实施例中,通过经由图8所示的流程图340的步骤346到步骤351完成步骤720、725、730和735(图6)。如果在判定步骤345中没有识别出具有0错误的路径,则处理进行至步骤346,其中通过设置Q=n假设所处理的字的所有n位都是错误的,并且处理进行至下面的判定步骤351,然后到流程图360(图9)的步骤361。
在图9中,处理从步骤361进行至判定步骤362,其中做出在分支I中是否所有位丢失(即,Q=n),以及由于分支I的丢失是否需要重建所有n位的判定。如果在步骤362答案为“是”,处理进行至步骤363,其中跳过丢失的分支I,并且从下一个Q-1分支(表示Q-1个字)读取全部(Q-1)*n位。这是格图的值,其中它可能“先行”并使用后续分支来确定来自分支I的丢失的编码数据。然后,在步骤364中,在n个读取位和格图300的分支I+1到分支I+(Q-1)中允许的路径之间的n位组中执行XOR(异或)操作。然后,在步骤365中,在分支I+1到分支I+(Q-1)中的期望路径是具有0汉明距离的分支(即,0错误)的分支和相互连接的、具有0汉明距离的那些先前识别的分支。在解码中,0汉明距离等效于0错误。
一旦在分支I+1到I+(Q-1)中建立解码路径,丢失的分支I就重建为连接先前识别的分支I-1和新识别的分支I+1到I+(Q-1)中的路径的路径。该“连通性”在通过格图建立正确路径中是非常关键的。通过连续连接在格图中每个分支中的各个路径来获得整个解码路径(如图7的格图300中的突出表示的线所示)。它是由0汉明距离识别的、重建的路径,并且写入在步骤351购买的备用装置中。然后处理从步骤365进行至步骤366(图9),其中分支索引递增Q-1来说明在该重建处理阶段解码的分支。然后,处理从步骤366进行至步骤378,其中将所恢复的、丢失的编码数据存储在备用存储器上。然后,该处理从步骤378进行至步骤379,其中该处理返回到图8的步骤355。
图10给出经由图12所示的(2,1,3)卷积编码器的编码数据的数据重建的说明示例。在图10的情况中,所有数据丢失是包括分支索引I=1的数据,这表示Q=2个丢失位,而且Q=n。最后的已知状态是S1 311B,这是仅仅对分支索引I=0计算出的。图10由图7的格图300创建的,而且从格图300中删除所有不可能的状态。对于图10,对于分支I=1,允许的转移仅是从S1 311B到S2 312C和S3 313C,并且由需要为了重建分支I的、丢失/损毁的编码数据的编码数据做出实际进行这两个转移中的哪一个的确定。为了重建丢失的数据,对于分支I=1,流程图340(图8)“先行(look ahead)”,并且如步骤364中所述,为分支I+Q-1(分支I=2(Q=2))从编码数据87读取编码数据,并且按照图10编码数据是01。按照图13中的表290,从S2 312C到S4 314D的转移表示11,而从S2 312C到S5 315D的转移表示00。类似地,按照图13中的表290,从S3 313C到S6 316D的转移表示10,而从S3 313C到S7 317D的转移表示01。
按照流程图360(图9)的步骤364,在为分支I=2(I+Q-1=2)读取的编码数据和由关于分支I=2的四个可能路径表示的编码数据之间的XOR处理给出下面的结果:对于S3 313C到S7 317D,01 XOR 01=00,对于S3 313C到S6 316D,10XOR 01=11,对于S2 312C到S5 315D,00XOR 01=01,而对于S2 312C到S4 314D,11XOR 01=10。因此,对于分支I=2,S3 313C到S7317D表示仅有的基于0汉明距离(01 XOR 01=00)的可行路径。基于格图中的解码路径之间所需要的连通性,在分支I=1中必须由从S1 311B到S3 313C的转移表示丢失的编码数据,并且丢失的编码数据是10。因此,关于分支I=1和I=2的编码数据是10和01,而关于这两个分支的编码信息是11。假设解码处理正在进行,由于解码是对两个分支进行的,所以在步骤366分支索引必须按Q-1=1增加,并且在步骤348再加1。重建编码数据存储在RAID 90的备用存储器97中。如果这种重建作为用户初始读操作的一部分进行,则在RAM 84中放置作为重建处理的一部分的原始信息,例如用于最终发送到主机61-65之一。
步骤363-366(图9)重建在分支I中的所有n位。如果在步骤362中Q不等于n,则已经恢复了分支I的一些位,但不是恢复了所有的位,并且处理从步骤362进行至步骤370来部分重建分支I。
在步骤370,所读取的可用位与格解码器的分支I中的每个允许路径进行XOR。然后,处理从步骤370进行至判定步骤371,其中做出是否存在足够的生存信息来唯一识别分支I中对于所读取位具有0错误的期望路径。如果答案为“是”,处理进行至步骤372,其中选择与原始数据和丢失的编码数据都得出0错误的分支I中的路径。然后,处理从步骤372进行至步骤378,其中将所恢复的、丢失的编码数据存储在备用存储器上。然后,处理从步骤378进行至步骤379,其中处理返回到图8的步骤355。
图10的分支I中的部分完成信息的示例是如果对于I=1取出一位,而一位丢失。在图9的步骤362中检测分支I=1中部分恢复的数据的存在。从S1311B到S2 312C的路径表示编码数据01。从S1 311B到S3 313C的路径表示编码数据10。因此,如果数据的两位对的首位或尾位可用,则经由图9的步骤371-372足以确定用于图10的分支I=1的正确路径。例如,如果首位是1而尾位是丢失位,则根据分支I=1中仅允许的路径(具有首位1)是S1 311B到S3 313C,即仅可允许的、可以导致0汉明距离的路径,重建的编码数据是10。然后,在图9的步骤378,重建数据被存储在图1的备用存储器97上。如果该重建作为用户初始读取处理(诸如图6的处理700)的一部分进行,则作为重建处理的一部分获得的原始信息放置在RAM 84。
如果在步骤371中不存在编码数据足够的幸存位来唯一识别分支I中对于所读取位具有0汉明距离的路径,则处理进行至步骤373,其中从编码数据87读取下一n位来形成在格图的分支I+1分析的字,然后处理进行至步骤374。在步骤374中,将所读取的n位与格解码器的分支I+1中的每个允许路径实现XOR来隔离具有0汉明距离(0错误)的路径。图7和11是特定格解码器300和500的示例。在分支I+1中、与部分读取的分支I不兼容的路径被认为是不允许的,并且忽略它们。该处理从步骤374进行至步骤375,其中处理选择分支I+1中具有0汉明距离(0错误)的路径。选择分支I中的路径以便连接所有在分支I-1和I+1中已经识别的路径,这表示各个分支路径必须穿过格图的所有通路连接到相邻分支的路径上。以这种方式,识别关于分支I的丢失的编码数据和关于分支I和分支I+1的原始信息。然后,处理从步骤375进行至377,其中分支I索按单位递加。然后,处理从步骤377进行至378(对此已经进行描述)。
如果在一个字中有三个位(诸如图11的格图500所示),则分支I的恢复可以采用分支I+1和I+2的“先行”,以便找出通过分支I-1、I+1和I+2的具有0汉明距离的连接路径。
在发生故障后,可以通过使用后台处理或前台处理进行数据重建。后台处理是控制器80独立执行数据重建而没有主机61-65的参与。前台处理是由主机61-65之一特别请求控制器80重建数据。可以在后台从很靠前的带区到很靠后的带区地重建数据。此外,当客户需要时,由于数据文件相互独立编码,所以可以在前台重建数据。假设控制器80在后台监视重建效果,并且在前台扫描哪个文件被重建,一旦在前台重建了数据,它就不需要在后台重建了。对于编码数据来说,不需要重建两次,一次在前台(基于主机61-65之一请求(按用户需要)),再次在后台(由于控制器80运行的后台处理忽略丢失的编码数据已经在前台重建)。
在图12中显示了关于(2,1,3)二进制卷积编码的状态示意图200。它是图7的格解码器300,在图6的、从RAID 90向主机61-65之一读取处理700期间使用它,在从主机61-65之一向RAID 90的原始写处理期间用来解码由状态示意图200创建的编码数据87。状态示意图200包括8个状态:S0 210、S1 211、S2 212、S3 213、S4 214、S5 215、S6 216、S7 217。以数量和方向限制在状态示意图200中的状态之间的离散转移。例如,在状态S0 210开始的编码处理仅可以向后转移到S0 210或向前转移到S1 211。类似地,从S1 211开始的处理仅可以转移到S2 212或S3 213等。在状态示意图200的状态之间的每个转移导致将信息中的一位编码为两位纠错编码数据。参考图13的表290进一步解释该编码。
图13的表290具有四列:初始状态291、目的状态、信息293和纠错编码数据294。基于状态示意图200中的总共8个状态和从一个特定状态到紧跟着的下一可能状态的两种可能转移,在表290中具有总共16行。经由状态示意图200产生表290,并且这里用于说明用于产生编码数据的信息的编码和用于获得原始信息的编码数据的解码。
在图12中,显示了突出表示的编码路径,包括:S0 210、S1 211、S3 213、S7 217、S7 217、S6 216、S4 214和S0 210,用于示范编码输入信息1111000。S0 210到S1 211将1编码为11。S1 211到S3 213将1编码为10。S3 213到S7217将1编码为01。S7 217到S7 217将1编码为10。S7 217到S6 216将0编码为01。S6 216到S4 214将0编码为00。最后,S4 214到S0 210将0编码为11。其结果是输入信息(即来自主机61-65的主机信息)1111000被编码为用于在RAID 90中存储的纠错编码数据11100110010011。在图7的格图300中,解码纠错编码数据11100110010011来产生原始信息1111000,如图7的突出表示的路径所示。
在图14中,显示用于图12的状态示意图200和图13中的表290的二进制(2,1,3)码的编码器电路220。编码器220可以位于控制器80的专用电路81中。作为选择,编码器220可以实现在控制器80的外部。编码器电路220每次接收一位输入数据流U(J)221,用于进行编码。编码器电路220包括m=3级移位寄存器,其包括寄存器230、231和232。对于编码处理,寄存器230-232的初始内容是0,因此诸如图7的格图300和图11的格图500所示的格解码处理总是在状态S0开始并结束。
参照图14,通过n=2模2加法器(致使二进制加法不用进位,并且包括加法器240和加法器242)选择性相加输入信息流U(J)221和寄存器230、231和232的输出来产生输出V(J,1)241和输出V(J,2)243。复用器251将各个编码器输出V(J,1)241和V(J,2)243串行化为编码输出V 250。模2加法器可以实现为专用电路中XOR(异或)门,或通过使用软件、固件、专用电路等实现。由于模2二进制加法是线性操作,编码器可以运行为线性前馈移位寄存器。对于索引J的V250的每个地增的输出(由图14中的V(J,1)和V(J,2)限定)称为字。图7的格图300和图11的格图500的每个分支表示这些字之一。因此,以一个分支表示一个字来完成格解码,从而对应于每次传送卷积编码器的输出。
图15图解作为SCSI写命令的示例的写命令600,包括起始逻辑块地址(LBA)602、传送长度603和逻辑单元号(LUN)604。LUN 604指定重建的编码数据由写命令600写入哪个备用存储装置,诸如备用存储器97。起始LBA 602指示备用存储器97的第一逻辑块地址来接收数据,并且传送长度指示传送了多少数据。通过SCSI或光纤通道接口可以实现写命令600。写命令600是仅一个可以使用的可能的写命令。其它SCSI写命令包括写加校验,例如其中在写命令成功结束前验证所写的数据。
这里所述的实施例可以采用完全硬件实现、完全软件实现或包括硬件和软件部分的实现的形式。在某些实施例中,本发明用软件实现,包括但不限于固件、驻留软件、微代码等。
此外,这里所述的实施例可以采用可从计算机可用或计算机可读介质访问的计算机程序产品的形式,该介质提供由(或连同)计算机或任何指令执行系统使用的程序代码。为了描述的目的,计算机可用或计算机可读介质可以是包含、存储、通信、传播或传送由(或连同)指令执行系统、设备或装置使用的程序的任何装置。
介质可以电、磁、光、电磁、红外或半导体系统(或设备或装置)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。光盘的当前例子包括紧致盘只读存储器(CD-ROM)、紧致盘读/写(CD-R/W)和DVD。
适合存储和/或执行程序代码的数据处理系统可以包括至少一个直接或间接通过总线连接到存储器元件的处理器。存储器元件可以包括在程序代码实际执行期间使用的局部存储器、海量存储装置和高速缓存,高速缓存提供至少一些程序代码的临时存储以便减少在执行期间必须从海量存储装置中取出代码的次数。
输入/输出或I/O装置(包括但不限于键盘、显示器、指针装置等)可以直接或通过中间的I/O控制器连接到系统。
网络适配器还可以连接到系统以允许数据处理系统通过中间的专用或公用网络连接到其他数据处理系统或远程打印机或存储装置。调制解调器、有线调制解调器和以太网卡只是几个当前可用类型的网络适配器。
这里所述的实施例可以作为方法、装置或者使用生产软件、固件、硬件或其组合的标准编程和/或引擎技术实现的计算机程序产品。
在某些实施例中,申请人的发明包括指令,其中这些指令由处理器82(图1)和/或控制器80(图1)运行来执行图6、8和9中所示的流程图中的步骤。
在其他实施例中,申请人的发明包括驻留在任何其他计算机程序产品中的指令,其中这些指令由控制器80外部或内部的计算机执行。在任一种情况中,指令可以编码在信息存储介质中,介质包括磁信息存储介质、光信息存储介质、电信息存储介质等。申请人所谓的“电存储介质”是指诸如PROM、EPROM、EEPROM、闪速PROM、压缩闪存、智能卡之类的装置。
某些实施例可以指向由人或自动处理系统采用计算基础架构的方法,包括将计算机可读代码集成进执行上述实施例的操作的系统。例如,图6、8和9图解使用所述实施例取出编码数据格式的信息的步骤。代码与系统(即,SAN 10)的组合能够执行这里所述实施例的操作的步骤。计算基础架构的部署可以在这里所述的实施例的服务、制造和/或配置期间进行。例如,咨询公司可以有对多个系统的服务责任。这种服务责任可以包括诸如系统升级、错误诊断、性能调整和增强、安装新硬件、安装新软件、与其他系统的配置等。作为该服务的一部分,或者作为单独的服务,服务人员可以根据这里所述的技术配置系统,以便有效地允许这里所述实施例的操作。例如,该配置可以包括将计算机指令、参数、常数(即,卷积编码类型、一个字中的位数量n、带区宽度、存储装置数量等)、中断向量加载到存储器中,以便当执行代码时,系统可以执行所述的技术来实现这里所述的实施例。
上述用于说明目的的描述使用特定术语来提供对所述实施例的详尽理解。然而,本领域技术人员应当明白,这些特定细节并不是实践实施例的操作所必须的。在其他方面,公知的电路和装置用方框图的形式示出,以便避免不必要地分散对实施例的注意。因此,上述对特定实施例的描述是用于说明和描述目的。它们并不意图穷举或将实施例的操作限制于所公开的精确形式。显然,根据上述讨论,许多修改和变型是可能的。
图6、8和9的逻辑描述了以特定顺序发生的特定操作。在替代的实现中,一些逻辑操作可以以不同的顺序执行、修改或删除。此外,可以向上述逻辑添加步骤并且任何符合所述实现。此外,这里所述的操作可以顺序发生,或者可以并行处理某些操作,或者由单个处理执行的所述操作可以由分散的处理来执行。
图6、8和图9的逻辑可以用软件实现。该逻辑可以是主机的操作系统的一部分或应用程序。在另一个实现中,该逻辑可以保存在由SAN 10管理的存储区域中,或者在只读存储器或其他硬线类型的装置中。优选的逻辑可以在硬盘驱动器中实现或者在可编程和非可编程门阵列逻辑中实现。
RAID领域中的技术人员可以开发等效于这里所述实施例的其他实施例。上述说明书中采用的术语和表示方式在这里是用作描述性的术语,而非限制性,并且在使用这些术语和表示方式时并没有意图将其所示和描述的特征的等效物或其部分排除在外,应当认识到范围仅仅由权利要求书定义和限制。

Claims (20)

1.一种用于存储编码数据的系统,包括:
多个存储装置;
耦合到所述多个存储装置的格解码器,所述解码器用于处理从所述多个存储装置接收到的编码数据来产生解码数据,所述编码数据包括通过信息的当前和过去位的卷积产生的纠错编码数据;
其中所述系统包括:
用于确定是否存在发生故障的存储装置的装置;
响应于确定为存在发生故障的存储装置:
用于分配用于存储重建数据的存储空间的装置,所述重建数据包括预先存储在所述发生故障的存储装置上的编码数据;
用于处理所述解码数据来产生所述重建数据的装置;和
用于将所述重建数据存储在所述分配的存储空间中的装置。
2.如权利要求1所述的系统,其中所述系统还包括:
用于测量所述解码数据中错误量的装置;
用于将所述错误量与所述多个存储装置的出错限制比较的装置;和
用于响应于所述错误量超过存储装置的所述出错限制,将所述存储装置识别为发生故障的存储装置的装置。
3.如权利要求1所述的系统,其中所述系统还包括:
用于从所述多个存储装置接收自监测分析和报告技术信息的装置;和
用于响应于所述自监测分析和指示存储装置发生故障的报告技术信息,将所述存储装置识别为所述发生故障的存储装置的装置。
4.如权利要求1所述的系统,其中所述编码数据包括一个或多个字,每个所述字包括n位,其中n大于0,从卷积编码器产生的每个所述字用于处理一部分所述信息,并且所述多个存储装置都不具有两个或多个相邻字。
5.如权利要求1所述的系统,其中所述编码数据包括一个或多个字,每个所述字包括n位,其中n大于0,从卷积编码器产生的每个所述字用于处理一部分所述信息,并且所述多个存储装置都不具有多于每个所述字的n位中的一位。
6.如权利要求1所述的系统,还包括:
元数据控制器,用于处理与所述编码数据相关联的元数据,所述元数据包括用于指定所述编码数据的存储位置的位置信息。
7.如权利要求1所述的系统,还包括:
元数据控制器,用于处理与所述编码数据相关联的元数据,所述元数据包括用于指定编码数据的编码类型的编码器信息。
8.一种存储区域网络,包括:
至少一个主机;
多个存储装置;
耦合到所述多个存储装置的格解码器,所述解码器用于处理从所述多个存储装置接收到的编码数据来产生解码的数据,所述编码数据包括通过信息的当前和过去位的卷积产生的纠错编码数据;
其中所述存储区域网络包括:
用于确定是否存在发生故障的存储装置的装置;
并且响应于确定为存在发生故障的存储装置:
用于分配用于存储重建数据的存储空间的装置,所述重建数据包括预先存储在所述发生故障的存储装置上的编码数据;
用于处理所述解码的数据来产生所述重建数据的装置;和
用于将所述重建数据存储在所述分配的存储空间中的装置。
9.如权利要求8所述的存储区域网络,其中所述网络还包括:
用于测量所述解码数据中错误量的装置;
用于将所述错误量与所述多个存储装置的每一个的出错限制比较的装
置;和
用于响应于所述错误量超过存储装置的所述出错限制,将所述存储装置识别为发生故障的存储装置的装置。
10.如权利要求8所述的存储区域网络,其中所述网络还包括:
用于从所述多个存储装置接收自监测分析和报告技术信息的装置;和
用于响应于所述自监测分析和指示存储装置发生故障的报告技术信息,将所述存储装置识别为所述发生故障的存储装置的装置。
11.如权利要求8所述的存储区域网络,其中所述编码数据包括一个或多个字,每个所述字包括n位,其中n大于0,从卷积编码器产生的每个所述字用于处理一部分所述信息,并且所述多个存储装置都不具有两个或多个相邻字。
12.如权利要求8所述的存储区域网络,其中所述编码数据包括一个或多个字,每个所述字包括n位,其中n大于0,从卷积编码器产生的每个所述字用于处理一部分所述信息,并且所述多个存储装置都不具有多于每个所述字的n位中的一位。
13.如权利要求8所述的存储区域网络,其中所述多个存储装置分配到分离的物理位置上。
14.一种用于存储编码数据的方法,包括:
从多个存储装置接收编码数据;
通过使用格解码器解码所述编码数据来产生解码的数据;
确定是否存在发生故障的存储装置;
响应于确定为存在发生故障的存储装置:
分配用于存储重建数据的存储空间,所述重建数据包括预先存储在所述发生故障的存储装置上的编码数据;
处理所述解码的数据来产生所述重建数据;和
将所述重建数据存储在所述分配的存储空间中。
15.如权利要求14所述的方法,其中所述确定步骤还包括:
测量所述解码数据中错误量;
将所述错误量与所述多个存储装置的出错限制比较;和
响应于所述错误量超过存储装置的所述出错限制,将所述存储装置识别为发生故障的存储装置。
16.如权利要求14所述的方法,其中所述确定步骤还包括:
从所述多个存储装置接收自监测分析和报告技术信息;和
响应于所述自监测分析和指示存储装置发生故障的报告技术信息,将所述存储装置识别为所述发生故障的存储装置。
17.如权利要求14所述的方法,还包括:
处理与所述编码数据相关联的元数据,所述元数据包括指定所述编码数据的编码类型的编码器信息。
18.如权利要求14所述的方法,还包括:
为所述分配存储空间向客户收费。
19.如权利要求14所述的方法,还包括:
为将所述重建数据存储在所述分配的存储空间向客户收费。
20.如权利要求14所述的方法,其中所述编码数据包括一个或多个字,每个所述字包括n位,其中n大于0,从卷积编码器产生的每个所述字用于处理一部分所述信息,并且所述多个存储装置都不具有两个或多个相邻字。
CN2006100589914A 2005-05-09 2006-03-09 用于数据存储的系统和方法 Expired - Fee Related CN1862500B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/125,288 US7370261B2 (en) 2005-05-09 2005-05-09 Convolution-encoded raid with trellis-decode-rebuild
US11/125,288 2005-05-09

Publications (2)

Publication Number Publication Date
CN1862500A CN1862500A (zh) 2006-11-15
CN1862500B true CN1862500B (zh) 2010-06-16

Family

ID=37389934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006100589914A Expired - Fee Related CN1862500B (zh) 2005-05-09 2006-03-09 用于数据存储的系统和方法

Country Status (5)

Country Link
US (2) US7370261B2 (zh)
JP (1) JP4988247B2 (zh)
KR (1) KR100827281B1 (zh)
CN (1) CN1862500B (zh)
TW (1) TW200713844A (zh)

Families Citing this family (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681072B1 (en) * 2004-08-13 2010-03-16 Panasas, Inc. Systems and methods for facilitating file reconstruction and restoration in data storage systems where a RAID-X format is implemented at a file level within a plurality of storage devices
US7401253B2 (en) * 2005-05-09 2008-07-15 International Business Machines Corporation Convolution-encoded data storage on a redundant array of independent devices
US10878646B2 (en) 2005-12-08 2020-12-29 Smartdrive Systems, Inc. Vehicle event recorder systems
US20070150138A1 (en) 2005-12-08 2007-06-28 James Plante Memory management in event recording systems
US9201842B2 (en) 2006-03-16 2015-12-01 Smartdrive Systems, Inc. Vehicle event recorder systems and networks having integrated cellular wireless communications systems
US8996240B2 (en) 2006-03-16 2015-03-31 Smartdrive Systems, Inc. Vehicle event recorders with integrated web server
US20080043736A1 (en) * 2006-08-18 2008-02-21 Drivecam, Inc. Data Transfer System and Method
WO2007132452A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Reducing programming error in memory devices
KR101375955B1 (ko) 2006-05-12 2014-03-18 애플 인크. 메모리 디바이스 내의 왜곡 추정 및 상쇄
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
KR101202537B1 (ko) 2006-05-12 2012-11-19 애플 인크. 메모리 디바이스를 위한 결합된 왜곡 추정 및 에러 보정 코딩
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
CN101601094B (zh) 2006-10-30 2013-03-27 苹果公司 使用多个门限读取存储单元的方法
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8649933B2 (en) 2006-11-07 2014-02-11 Smartdrive Systems Inc. Power management systems for automotive video event recorders
US8989959B2 (en) 2006-11-07 2015-03-24 Smartdrive Systems, Inc. Vehicle operator performance history recording, scoring and reporting systems
US8868288B2 (en) 2006-11-09 2014-10-21 Smartdrive Systems, Inc. Vehicle exception event management systems
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US8667379B2 (en) 2006-12-20 2014-03-04 International Business Machines Corporation Apparatus and method to generate, store, and read, a plurality of error correction coded data sets
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US8369141B2 (en) 2007-03-12 2013-02-05 Apple Inc. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US8239092B2 (en) 2007-05-08 2012-08-07 Smartdrive Systems Inc. Distributed vehicle event recorder systems having a portable memory data transfer system
US8429493B2 (en) 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8713253B1 (en) * 2007-06-18 2014-04-29 Guidance-Tableau, Llc Modular storage system
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US7822892B2 (en) * 2007-07-19 2010-10-26 International Business Machines Corporation Managing the copying of writes from primary storages to secondary storages across different networks
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US7793146B1 (en) * 2007-08-07 2010-09-07 Panasas, Inc. Methods for storing data in a data storage system where a RAID-X format or formats are implemented at a file level
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit memory devices
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
CN102314322B (zh) * 2011-07-01 2015-04-15 杭州华三通信技术有限公司 一种基于raid阵列的数据处理方法和设备
US8782494B2 (en) * 2011-10-04 2014-07-15 Cleversafe, Inc. Reproducing data utilizing a zero information gain function
US20140359381A1 (en) * 2011-11-02 2014-12-04 The University Of Tokyo Memory controller and data storage device
US9728228B2 (en) 2012-08-10 2017-08-08 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9495246B2 (en) * 2013-01-21 2016-11-15 Kaminario Technologies Ltd. Raid erasure code applied to partitioned stripe
US8996741B1 (en) * 2013-09-25 2015-03-31 International Business Machiness Corporation Event driven remote direct memory access snapshots
US9501878B2 (en) 2013-10-16 2016-11-22 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9610955B2 (en) 2013-11-11 2017-04-04 Smartdrive Systems, Inc. Vehicle fuel consumption monitor and feedback systems
US9660882B2 (en) * 2014-01-07 2017-05-23 International Business Machines Corporation Selective convolution encoding of data transmitted over degraded links
US8892310B1 (en) 2014-02-21 2014-11-18 Smartdrive Systems, Inc. System and method to detect execution of driving maneuvers
US9663127B2 (en) 2014-10-28 2017-05-30 Smartdrive Systems, Inc. Rail vehicle event detection and recording system
US11069257B2 (en) 2014-11-13 2021-07-20 Smartdrive Systems, Inc. System and method for detecting a vehicle event and generating review criteria
US9679420B2 (en) 2015-04-01 2017-06-13 Smartdrive Systems, Inc. Vehicle event recording system and method
CN105095013B (zh) * 2015-06-04 2017-11-21 华为技术有限公司 数据存储方法、恢复方法、相关装置以及系统
CN105389243B (zh) * 2015-10-26 2018-06-05 华为技术有限公司 一种容器监控方法和装置
US20170337103A1 (en) * 2016-05-19 2017-11-23 Intel Corporation Method and apparatus to provide data redundancy in a solid-state drive
US10114696B2 (en) * 2016-07-14 2018-10-30 International Business Machines Corporation Tracking data access in a dispersed storage network
US10304468B2 (en) * 2017-03-20 2019-05-28 Qualcomm Incorporated Target sample generation
US10848554B2 (en) * 2017-03-30 2020-11-24 Oracle International Corporation Memory efficient asynchronous high availability replication
CN109150792B (zh) * 2017-06-15 2022-03-08 杭州海康威视数字技术股份有限公司 一种提高数据存储安全性方法及装置
US10727867B2 (en) * 2018-06-28 2020-07-28 Western Digital Technologies, Inc. Error correction decoding augmented with error tracking
US11736124B2 (en) 2019-01-17 2023-08-22 The Trustees Of Princeton University System and method for decoding Reed-Muller codes
CN109948186B (zh) * 2019-02-19 2023-04-28 中国科学院微电子研究所 一种汉明码SRAM时序参数Setup特征化建模方法
US11237893B2 (en) 2019-06-26 2022-02-01 Western Digital Technologies, Inc. Use of error correction-based metric for identifying poorly performing data storage devices
US10969969B2 (en) * 2019-06-26 2021-04-06 Western Digital Technologies, Inc. Use of recovery behavior for prognosticating and in-situ repair of data storage devices
US11340986B1 (en) * 2020-12-08 2022-05-24 Western Digital Technologies, Inc. Host-assisted storage device error correction
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4606027A (en) * 1983-10-12 1986-08-12 Nec Corporation Error correction apparatus using a Viterbi decoder
CN1167981A (zh) * 1995-12-25 1997-12-17 索尼公司 编码数字信号的解码装置和方法
US6519732B1 (en) * 1998-08-19 2003-02-11 Fujitsu Limited Error-correcting encoding apparatus
US6868132B1 (en) * 2000-02-10 2005-03-15 Motorola, Inc. Soft output decoder for convolutional codes

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4761785B1 (en) 1986-06-12 1996-03-12 Ibm Parity spreading to enhance storage access
JPH0731582B2 (ja) 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション パリティ保護データを回復するための方法および装置
US5315602A (en) 1992-08-12 1994-05-24 Digital Equipment Corporation Optimized stripe detection for redundant arrays of disk drives
US5987562A (en) * 1996-03-08 1999-11-16 Texas Instruments Incorporated Waveform sampler and method for sampling a signal from a read channel
JP3679853B2 (ja) * 1996-03-15 2005-08-03 株式会社日立グローバルストレージテクノロジーズ ディジタル記録再生方法および信号処理装置
US6219800B1 (en) 1998-06-19 2001-04-17 At&T Corp. Fault-tolerant storage system
US6516443B1 (en) 2000-02-08 2003-02-04 Cirrus Logic, Incorporated Error detection convolution code and post processor for correcting dominant error events of a trellis sequence detector in a sampled amplitude read channel for disk storage systems
JP4144727B2 (ja) * 2001-07-02 2008-09-03 株式会社日立製作所 情報処理システム、記憶領域提供方法、およびデータ保持管理装置
JP4141665B2 (ja) * 2001-07-10 2008-08-27 株式会社日立製作所 ストレージの運用方法およびこれに用いるストレージおよび遠隔ストレージ
JP4685317B2 (ja) * 2002-03-29 2011-05-18 株式会社富士通ソーシアルサイエンスラボラトリ データ分散格納方法、データ分散格納装置、プログラム及びバックアップサイト
KR20040054267A (ko) * 2002-12-18 2004-06-25 한국전자통신연구원 다중 레이드 제어기를 갖는 분산공유 레이드 시스템 및 그관리방법
JP4546387B2 (ja) * 2005-11-17 2010-09-15 富士通株式会社 バックアップシステム、方法及びプログラム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4606027A (en) * 1983-10-12 1986-08-12 Nec Corporation Error correction apparatus using a Viterbi decoder
CN1167981A (zh) * 1995-12-25 1997-12-17 索尼公司 编码数字信号的解码装置和方法
US6519732B1 (en) * 1998-08-19 2003-02-11 Fujitsu Limited Error-correcting encoding apparatus
US6868132B1 (en) * 2000-02-10 2005-03-15 Motorola, Inc. Soft output decoder for convolutional codes

Also Published As

Publication number Publication date
JP4988247B2 (ja) 2012-08-01
CN1862500A (zh) 2006-11-15
TW200713844A (en) 2007-04-01
US20060253767A1 (en) 2006-11-09
KR100827281B1 (ko) 2008-05-07
US7370261B2 (en) 2008-05-06
JP2006318467A (ja) 2006-11-24
KR20060116150A (ko) 2006-11-14
US20080209304A1 (en) 2008-08-28
US8245113B2 (en) 2012-08-14

Similar Documents

Publication Publication Date Title
CN1862500B (zh) 用于数据存储的系统和方法
US10613934B2 (en) Managing RAID parity stripe contention
CN1862501B (zh) 存储信息的系统和方法
CN103577274B (zh) 管理存储器阵列的方法和装置
US8839046B2 (en) Arranging data handling in a computer-implemented system in accordance with reliability ratings based on reverse predictive failure analysis in response to changes
US9104321B2 (en) Redundant array of independent disks (RAID) system backup management
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
EP2255287B1 (en) Selecting a deduplication protocol for a data storage library
CN105159618B (zh) 用于单盘失效修复的优化方法及优化装置
US20170147437A1 (en) Intelligent stress testing and raid rebuild to prevent data loss
US20120011337A1 (en) Heterogeneous redundant storage array
CN102520890B (zh) 基于gpu的rs-draid系统及存储设备数据控制方法
US20160342470A1 (en) Separating a hybrid asymmetric mix of a raid 1 mirror and a parity-based raid array
Venkatesan et al. Effect of codeword placement on the reliability of erasure coded data storage systems
US20140143594A1 (en) Optimizing a raid volume
US9785364B2 (en) Increasing data storage reliability in a heterogeneous storage system
US10768822B2 (en) Increasing storage capacity in heterogeneous storage arrays
CN101482800B (zh) 独立磁盘冗余阵列的等级转换方法及系统
US11243697B1 (en) Designing a computerized storage system having a prescribed reliability

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100616