CN108141229A - 损坏数据的高效检测 - Google Patents

损坏数据的高效检测 Download PDF

Info

Publication number
CN108141229A
CN108141229A CN201680056124.9A CN201680056124A CN108141229A CN 108141229 A CN108141229 A CN 108141229A CN 201680056124 A CN201680056124 A CN 201680056124A CN 108141229 A CN108141229 A CN 108141229A
Authority
CN
China
Prior art keywords
error
data
detecging code
container
storage region
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.)
Granted
Application number
CN201680056124.9A
Other languages
English (en)
Other versions
CN108141229B (zh
Inventor
C·E·拉特
W·蒂普顿
C·李
R·达斯
E·霍尔奇
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN108141229A publication Critical patent/CN108141229A/zh
Application granted granted Critical
Publication of CN108141229B publication Critical patent/CN108141229B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/093CRC update after modification of the information word
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2942Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

文件系统可将存储系统的数据分配为数据单元,其中数据单元集合可以被编组到卷内的存储区域。验证存储区域内的数据的有效性的过程可包括从存储在存储系统中的数据的子集(诸如从文件系统对象的数据单元)获得第一检错码集合。第一检错码集合中的每一个可以与该存储区域内相应的数据单元相关联。可至少部分地基于第一检错码集合来生成第二检错码集合,并且该第二检错码集合可与该存储区域相关联,使得第二检错码集合可被用于验证该存储区域内的数据的有效性。

Description

损坏数据的高效检测
背景
在计算中,文件系统被配置为管理对存储在存储系统中的数据的访问。在一些实例中,部分数据可能被损坏或以其他方式无效。如果这些损坏未被检测到并被修复,则存储系统具有无法挽回的数据丢失的风险。例如,将损坏数据片段移动到弹性介质上的不同存储位置可致使损坏数据传播遍及该存储系统,而无法修复损坏数据或以其他方式从不同的数据副本中恢复有效数据。
现有的文件系统提供了一些数据完整性工具。然而,在要检测存储系统中是否存在损坏数据的一些情形中,这些现有数据完整性工具的使用是计算密集的并可降低系统的吞吐量。因此,现有文件系统的用户必须在冒着传播损坏数据的风险或使用计算密集的损坏检测办法之间进行选择,该损坏检测办法不是可扩展的,因为计算开销会随着数据存储容量的增加而恶化。
概述
本文描述的是用于使用存储区域的至少部分地基于该数据区域内的数据单元的数据单元检错码的检错码集合来高效地检测该存储区域中的损坏数据的技术和系统。在一些配置中,文件系统可将存储系统的数据分配为数据单元,其中数据单元集合可以被编组到卷内的存储区域。验证存储区域内的数据的有效性的过程可包括从存储在存储系统中的数据的子集(诸如从文件系统对象的数据单元)获得第一检错码集合。第一检错码集合中的每个检错码可以与存储区域内相应的数据单元相关联。该过程可通过至少部分地基于第一检错码集合生成第二检错码集合并将该第二检错码集合与该存储区域相关联而继续。因此,第一检错码集合可由于它们与各个体数据单元相关联而被认为是“数据单元检错码”,并且第二检错码集合可由于它们与个体存储区域(出于说明性目的,本文中存储区域有时被称为“容器”)相关联而被认为是“容器检错码”。该过程可然后至少部分地基于第二检错码(即,容器检错码)集合来验证存储区域内的数据的有效性。
本文所描述的技术和系统提供了一种具有数据完整性的文件系统,由于高效使用了跨文件系统的整个存储区域计算并被存储在容器级(例如,在容器的元数据中)的容器检错码集合,该数据完整性也是可缩放的。容器检错码——至少部分地基于与存储区域内的底层数据单元相关联的数据单元检错码——允许实现具有经提高的吞吐量的文件系统,而无需在用于存储容器检错码的存储占用方面增加显著的成本。此外,由于所描述的存储区域验证过程可避免访问和读取数据的子集(例如,文件系统对象,诸如文件本身和/或文件元数据)以便重新计算数据单元检错码以验证存储区域内的数据,本文所描述的技术和系统很可能造成性能方面的显著提高。另外,响应于对存储区域内的数据的增量式改变,可以按计算高效的方式更新容器检错码集合。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
结合附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同的附图中使用相同的附图标记指示类似或相同的项。
图1例示了被配置成执行高效数据损坏检测过程的示例计算机系统。
图2A是例示包括高效损坏检测的示例数据移动操作的示图。
图2B是例示根据图2A的示图移动数据之后的示例数据结构的示图。
图3是例示还原容器中的有效数据的修复技术的示图。
图4是用于高效地验证容器内的数据的有效性的说明性过程的流程图。
图5是用于高效地还原容器内的有效数据的说明性过程的流程图。
详细描述
本公开的配置尤其涉及使用至少部分地基于存储区域内的数据单元的数据单元检错码的容器检错码集合来高效地检测存储区域(出于说明性目的,本文将其称为“容器”)中的损坏数据的技术和系统。虽然本文中呈现的许多示例是按照管理对存储在存储系统内的数据的访问的文件系统来描述的,但是本文公开的配置可以按多种方式并在各种应用中被实现。具体而言,本文所描述的技术和系统可被应用于包括数据单元并将数据单元编组成数据单元集的任何类型的数据集。此外,尽管许多示例描述了在各存储位置之间移动数据的上下文中确定数据损坏,但应该理解,本文描述的技术和系统可被用于诸如不涉及在各存储位置之间移动数据的任何数据复制上下文之类的其他上下文中。例如,可响应于检查容器内的损坏数据的指令(例如,一般“健康”监测过程)来执行验证容器内的数据的有效性的过程,而无需将容器移动到不同存储位置。
通过使用本文所公开的技术,一个或多个设备可被配置成在有关功率资源、存储器资源、通信带宽资源、处理资源和/或其他资源方面节约资源,同时提供用于检测存储系统内的损坏数据的存在的机制。此外,可在数据传输操作中实施本文所描述的高效损坏检测技术以避免损坏数据传播遍及存储系统,从而使得数据传输(或移动)操作更加安全和可靠。除了本文中提到的那些之外的技术效果也可通过本文中所公开的技术的实施来实现。
如上所述,本文呈现的许多示例都是按照管理对存储在存储系统内的数据的访问的文件系统来描述的。在参考附图之前,提供了关于文件系统组织的一些介绍性上下文。为了管理对所存储的数据的访问,文件系统通常以粒度方式分配可用的存储空间,使得数据可被分割成各数据单元,这在一些系统中包括“块”或“聚类”,其中数据单元可以是被文件系统跟踪的数据的最小大小部分。数据单元可根据分层布置以各种大小被编组到数据的各较大存储区域(或即“容器”)。例如,数据可被存储在特定大小的卷(例如,一太字节(TB)卷)上,并且该卷可包括多个较小大小的容器(例如,多个64兆字节(MB)容器),以及每个容器可包括多个更小大小的数据单元(例如,多个4千字节(kB)的数据块)。
附加地,文件系统可包括至少两种类型的数据:用户数据,和文件系统元数据。此外,此数据可被组织成一个或多个目录的分层组织。用户数据可包括但不限于文本数据、图像数据、音频数据(例如音乐)、视频数据、多媒体数据等。文件系统元数据可包括不是用户数据的任何类型的数据,并且可包括但不限于:向处理系统通知包含用户数据的文件的统计和结构的数据、访问控制信息(例如,指定哪些用户、系统进程和/或操作被允许访问文件的访问控制列表)、或不与任何特定文件相关联的数据(诸如关于未使用的存储区域的信息),等等。文件系统元数据可包括与个体文件相关联的元数据,在本文中被称为“文件元数据”。此类文件元数据可包括描述个体文件的任何信息,诸如但不限于:检错信息,包含在文件中的数据的长度或大小,创建文件的时间,以及文件被修改、访问、备份、移动或以其他方式使用的时间,与该文件相关联的一个或多个标识符,与该文件相关联的访问许可,格式化该文件的方式,存储在该文件中的内容的类型,或文件的其他属性(例如,该文件是否是只读的、读/写的、可执行的等)等等。此外,文件系统可管理各种“文件系统对象”。如本文所使用的,文件系统对象可包括可被视为对象的任何文件系统实体,而不管文件系统本身是否以面向对象的方式与文件系统实体进行交互。如此,文件系统对象可包括但不限于:文件、目录对象(例如,根目录对象(即,子目录从其延伸的目录内的顶层位置)、子目录对象、目录表对象,其中目录表存储具有各个体文件的属性的多个目录条目等)、文件系统元数据和/或其任何组合。文件还可被分割并作为多个数据单元来被存储,使得文件可以按分段的方式跨多个存储设备被存储。因此,容器内给定的数据单元集合可代表单个文件或多个文件或任何文件系统对象(例如,文件元数据等)的全部或一部分。
本文所描述的技术和系统可以以多种方式实现。以下参照下面的附图提供各示例实现。
图1例示了根据本文所公开的配置被配置成执行高效数据损坏检测过程的示例计算机系统100。例如,计算机系统100可包括一个或多个计算设备102(或计算机器),包括但不限于:一个或多个服务器、一个或多个数据中心系统、一个或多个个人计算机、或任何其他合适的计算设备。计算机系统100仅仅是用于实现本文所描述的技术的一个示例系统,使得本文所描述的技术不限于使用图1的计算机系统100来执行。
计算设备102可包括一个或多个处理器104,其可取决于计算设备102的实现细节来表示任何合适类型的执行单元(诸如中央处理单元(CPU)、核、和/或节点)。例如,任何个体处理器104可表示单个CPU、具有被配置为执行各独立线程的多个处理器或核的节点、或任何其他合适的处理器布置。在一些配置中,处理器104可包括硬件处理器,其包括但不限于:硬件中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、应用专用集成电路(ASIC)、片上系统(SoC)或其组合。
计算设备102可配备有一种或多种形式的计算机可读存储介质106。计算机可读介质可包括两种类型的计算机可读介质,即计算机存储介质106和通信介质。例如,计算机存储介质106可包括以存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质106包括但不限于,随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EEPROM)、闪存或其他存储器技术、紧致盘只读存储器(CD-ROM)、DVD或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁性存储设备、或可用于存储所需信息并可由计算设备102访问的任何其他非瞬态介质。任何此类计算机存储介质都可以是计算设备102的一部分。
相反,通信介质在诸如载波的已调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
在一些配置中,计算机存储介质106可存储编程指令、数据结构、程序模块和其他数据,其在由处理器104中的一者或多者执行时实现本文所描述过程中的一些或全部。此外,计算机存储介质106的全部或部分可相对于计算设备102在物理上集中,或者计算机存储介质106的至少一部分可被物理地跨多个不同的存储设备分布。此外,计算设备102可表示单个计算设备102或可经由通信接口(例如,计算机网络)被物理地分布并通信地耦合的多个计算设备102。在一些配置中,计算机系统100表示用于存储数据并管理对所存储的数据的访问的存储系统的全部或部分。
计算机存储介质106可包括操作系统108,该操作系统108被配置为提供用于管理对存储在计算机系统100的一个或多个存储设备上的数据的访问的文件系统110等。因此,计算设备102可至少部分地表示被配置为服务一个或多个卷112(1)、112(2)、...、112(M)(统称为112)的存储系统架构。卷112可表示或关联于任何数量的物理存储设备,诸如独立(或廉价)磁盘冗余阵列(RAID)、一个或多个硬盘驱动器(HDD),一个或多个固态驱动器(SSD)、分层存储系统或任何类似的物理存储配置。此外,如本文所使用的术语,卷112可被认为是一种类型的“容器”(或“存储区域”),其中“容器”包括(或关联于)大小小于容器大小的多个数据单元。在一个说明性示例中,卷与容器之间可存在一一对应关系,使得卷包括与该卷大小相同的单个容器。在一些情况下,诸如卷112之类的容器本身可包括附加的数据容器(即,容器分层结构内的容器),其中卷112内的附加容器的大小小于卷112的大小。
操作系统108可以是基于Windows的、基于Unix的、基于Linux的、或任何其他合适的操作系统类型。文件系统110可被配置成在逻辑上组织被存储在卷112上的数据。每个卷112都可包括文件系统110已知的用于在逻辑上组织被存储在卷112上的数据的地址空间。例如,卷112(1)可被指定为从零到一TB的位置范围,但是该大小是示例性的,并且个体卷112可取决于配置而更大或更小。例如,当数据被写入卷112(1)时,可为将被写入的数据指定在卷112(1)内的物理位置,并且被指定的位置可以是用于管理对所存储的数据的访问的文件系统110已知的。
尽管图1将文件系统110示为被实现为操作系统108的一部分,但是可至少部分地由一个或多个硬件逻辑组件来执行本文所描述的文件系统110的至少一些功能。例如而非限制,可被使用的硬件逻辑组件的说明性类型包括FPGA、ASIC、SOC、CPLD等。
图1示出计算机存储介质106可维护与多个容器116(1)、116(2)、...、116(P)(统称为116)相关联的容器元数据114,该多个容器116(1)、116(2)、...、116(P)(统称为116)与各个体卷112相关联。容器元数据114可包括描述各个体容器116的任何信息,诸如但不限于:检错信息(在下文更详细地描述),包含在容器116中的数据的长度或大小,创建容器的时间,以及容器116被修改、访问、移动、备份或以其他方式使用的时间,与该容器116相关联的一个或多个标识符,与该容器116相关联的访问许可,格式化该容器116的方式,存储在该容器116中的内容的类型,或容器116的其他属性(例如,该容器116是否是只读的、读/写的、可执行的等)等等。术语“缓冲区”、“区域”、“存储区域”、和“带”在本文中可与术语“容器”可互换地用于指代容器116。在一个示例中,卷112(1)可包括第一容器116集合,卷112(2)可包括不同的第二容器116集合,以此类推。因此,在一些配置中,容器116可按照比卷112的大小小的大小来定义。
个体容器116可包含被文件系统110跟踪的甚至更小大小的多个数据单元。在说明性示例中,卷112(1)的大小可以是1TB,并且可包括每个大小都为64MB的多个容器116,并且每个容器116可包括每个大小都为4kB的多个数据单元。应该理解,其他大小和分层结构可被用于本文而不背离本文描述的技术和系统的范围。
在一些配置中,容器116充当卷112的物理位置与被文件系统110跟踪的数据的文件表示之间的间接层,并且每个容器116可由卷112内的特定位置指定,其中卷内的位置可按照偏移和大小来指定。此外,容器116的大小可以是基本相等的,或者容器116的大小可以不同,即使在单个卷112内也是如此。
容器元数据114可包括与每个容器116相关联的检错信息,例如,容器检错码118集合等。在一个实施例中,容器116(1)与称为“EC1”的容器检错码118集合相关联,容器116(2)与称为“EC2”的检错码118集合相关联,并以此类推到针对第P个容器116的“ECP”。此外,诸如EC1之类的个体容器检错码118集合可包括任意数量为N的容器检错码118。
此外,每组容器检错码118可从与每个容器116内的底层数据单元相关联的数据单元检错码中导出。简要参考图2A,示例容器116(被标记为容器“1”)包括多个数据单元200(1)、200(2)、200(3)、...、200(R)(统称为200),该多个数据单元在本文中可互换地称为数据的“块200”或“聚类200”,其表示被文件系统110跟踪的数据的最小大小单元。文件系统110还可将“文件”定义为存储在卷112中的数据的子集,并且每个文件可被分解成多个离散数据单元200。文件系统110可提供间接层,其他应用可通过该间接层创建、删除、修改和读取文件,而无需该应用具有有关文件的实际存储位置的信息。
文件系统110可允许使用文件系统元数据中的检错信息来启用其跟踪的数据(例如,文件系统对象)的完整性,例如通过计算构成文件的每个数据单元200(例如,每个4kB的数据块)的检错码(例如校验值,诸如校验和、循环冗余校验(CRC)值等)并将相应的数据单元检错码存储在与每个文件相关联的元数据中。在一个实施例中,为了将容器检错码(EC)与数据单元检错码进行区分,与每个数据单元200相关联的数据单元检错码可被称为“C”(以表示数据单元检错码是容器116内相应数据单元200的校验值(C))。因此,给定文件可包括描述其上存储有构成该文件的一部分的数据单元200的卷112内的物理位置的条目,并文件的元数据可被用于理解该数据单元200的数据单元检错码C。
尽管存在许多利用文件的元数据的方式,但是在说明性示例中,文件的元数据可包括数据单元检错码C,其允许在文件被打开时对损坏进行检测。即,文件可被读取、被推入缓冲区,并且此文件的数据单元检错码可被计算并与文件的元数据中的所存储的数据单元检错码C进行比较。如果计算得到的数据单元检错码C与所存储的数据单元检错码C相匹配,则文件中的数据被认为是有效的。如果所比较的各码不匹配,则文件中的数据认为是损坏的。在每个数据单元200的多个副本被独立地维护的冗余存储系统中,可从数据单元200的有效副本修复损坏数据单元200。
返回图1,文件系统110可利用检错码生成器120来生成容器检错码118EC以用于与被文件系统110跟踪的各个体容器116相关联。只要容器检错码118至少部分地基于容器116内的数据单元200的数据单元检错码C,检错码生成器120就可利用任何合适的技术来生成容器检错码118EC。在一些配置中,检错码生成器120可将数据单元检错码C直接存储在容器元数据114中,而无需将数据单元检错码C存储在文件元数据中。换言之,数据单元检错码C可与文件级解耦并且与各个体容器116相关联地存储在容器级。替换地,检错码生成器120可将数据单元检错码C存储在容器元数据114和文件元数据两者中。例如,检错码生成器120可从数据的子集(例如,从文件元数据)复制数据单元检错码C,并将经复制的检错码C作为容器检错码118EC存储在容器元数据114中。在此情形中,容器元数据114通过在容器级以重复数据单元检错码C的形式维护将容器检错码118EC来维护数据单元检错码C的一对一映射。这提供了经提高的吞吐量,因为可从容器元数据114访问容器检错码118EC,而无需打开并读取底层文件以从文件元数据检索数据单元检错码C。
在一些配置中,检错码生成器120可使用编码技术来生成容器检错码118EC。在一些配置中,用于生成容器检错码118的编码技术包括将数学函数应用于数据单元检错码C,以便生成容器检错码118EC。例如,检错码生成器120可利用Reed Solomon编码技术从数据单元检错码C中导出容器检错码118EC。例如,容器116(1)的容器检错码118的集合“EC1”可包括下文在等式(1)的集合中示出的容器检错码118的集合:
在等式集合(1)中,求和符号表示一系列异或(XOR,)运算。此外,值Ci表示具有多个数据单元的容器116中的第i个数据单元的数据单元检错码C。P0到PN表示相应的多项式函数,其表征由等式集合(1)表示的检错码118的“EC1”集合中的相应的容器检错码118。此外,等式集合(1)中的“N”可表示给定的容器检错码118集合中的任何数量的容器检错码EC。例如,N可以等于16,以便生成16个容器检错码118以用于给定容器116的每个容器检错码118集合EC。N可被选择为大于或小于16,其中较大的N值可允许:检测相对较大数量的损坏并且标识给定容器116内损坏的相对较大数量的数据单元200。然而,较大的N值导致以较大的存储器成本将较大的容器检错码118集合存储在容器元数据114中。给定容器检错码118集合中的N个检错码,系统可检测给定容器116的至少N个损坏,并且如果容器116中的损坏的数量小于N,则可标识在容器116内损坏的最多N-1个数据单元200。
在一些配置中,检错码生成器120可通过计算各奇偶校验(奇偶校验0、奇偶校验1、...、奇偶校验N-1)从数据单元检错码C中导出容器检错码118EC。例如,对于0小于或等于k,且k小于或等于N,可基于数据单元检错码C来计算以下等式(2)中的奇偶校验:
在此,总和再次表示一系列XOR运算,并且所有的乘法都是域乘法(mi k和*),奇偶校验k值作为容器检错码118EC被存储在容器元数据114中。在一些配置中,此类编码方案的变型可对容器116内的三个示例数据单元200的数据单元检错码C1、C2和C3进行编码,如等式(3)和(4)所示:
在此,E0和E1值作为容器检错码118EC被存储在容器元数据114中。
应该理解,不管所采用的编码方案如何,容器检错码118集合EC可包括较小的容器检错码集合EC,其对为容器116内的数据单元200生成的相对较大的数据单元检错码C的集合进行建模。即,与用于存储容器118内的底层数据单元200的数据单元检错码C所花费的存储器相比,这样可花费较少的存储器来存储给定容器116的容器检错码118集合EC。以此方式,容器检错码118集合EC可以是底层数据单元检错码C的经压缩形式,而容器检错码118EC仍保留数据单元检错码C的特性以用于检测容器116数据中的损坏。
与处理数据单元检错码C相比,容器检错码118集合EC也可以按更加计算高效的方式进行处理。这至少是由于以下事实:容器检错码118EC可被用于检测数据中的损坏,而无需打开和读取文件、文件元数据、或在文件级的其他数据的子集以检索数据单元检错码C。相反,如果系统被约束为使用存储在文件元数据中的数据单元检错码C(即,如果容器检错码118不可用),为了确定容器116内的数据是否是有效的,则系统将必须通过读取卷112上的所有文件来扫描整个卷112,并且驻留在容器116内的文件将不得不被标识和打开以使得数据单元检错码C可被重新计算并与经存储的数据单元检错码C进行比较。然而,扫描整个卷112(例如,一TB的卷112)可能会花费几天,并且单个容器116可能包含大量(例如,数万个)文件。替换地,代替扫描整个卷112来标识与给定容器116相关联的文件,系统可在将每个数据单元200映射到给定文件的表中存储反向索引映射。然而,维护此类反向索引映射是在计算上昂贵的并且与本文所描述的技术相比具有更高的存储占用。因此,使用容器元数据114中的容器检错码118集合验证容器116内的数据在计算上更高效并可增加系统的吞吐量。
检错码生成器120可包括检错码更新模块122,该检错码更新模块122被配置成响应于容器116内的底层数据的改变来更新检错码118的各个集合。例如,当容器116(1)内的数据单元200以某种方式改变时,容器检错码118集合EC被检错码更新模块122更新,使得经修改的数据在将来不会被误认为是损坏数据片段。在一些配置中,响应于容器116的底层数据的改变,检错码更新模块122可利用更新容器检错码118集合EC的效率。例如,代替读取容器116的整个内容以获得全部的数据单元检错码C,并此后更新所有N个容器检错码118EC,检错码更新模块122可标识容器116内已改变的特定数据单元200、获得所标识的数据单元200的先前数据单元检错码(Ci_old(Ci_旧))、根据与数据单元200相关联的数据子集(例如,文件)生成/计算新数据单元检错码(Ci_new(Ci_新))、以及然后执行有限数量的操作以更新容器116的容器检错码118EC。这进而允许更新容器检错码118EC,而无需盖写N个容器检错码118的整个集合EC。例如,在检错码118的“EC1”集合中的N个容器检错码中,第k个容器检错码EK可被更新,如公式(5)所示:
等式(5)涉及通过减去先前数据单元检错码Ci_old并且添加新数据单元检错码Ci_new来更新第k个容器检错码,以更新第k个容器检错码118EK的等式。与重新计算容器116内的每个数据单元200的数据单元检错码C和更新容器检错码118EC形成对比,所描述的更新技术在更新容器检错码118EC时需要较少的操作并且提高了系统的吞吐量。此外,在数据单元200已经改变并且容器检错码118将响应于该改变而被更新时,文件系统110已经访问了先前数据单元检错码(Ci_old))使得由更新模块122实现的更新处理可被执行,而无需重新读取与经改变的数据单元200相关联的文件并且重新计算先前数据单元检错码(Ci_old)。容器116的N个检错码118的集合中的每个容器检错码EC可以通过隔离容器116内已被改变的数据单元200并且以高效的方式更新容器检错码118的集合来按这一方式个体地更新。
随着在容器元数据114中生成、维护和更新容器检错码118,文件系统110可利用数据损坏检测器124来检测任何给定容器116中的数据的损坏,而无需打开与容器116中的每个数据单元200相关联的数据子集(例如,文件)。即,数据损坏检测器124被配置成利用容器元数据114中的容器检错码118EC来确定容器116内的数据是有效的还是损坏/无效的。可能存在各种原因来使用数据损坏检测器124以检查容器116内的损坏数据。一个示例情形可涉及将容器116移动到卷112内的新存储位置。例如,容器116(1)可被移动到卷112(1)内的更容易访问的存储位置以提高对容器116(1)中的数据的访问速度。此移动指令可源于自动的系统发起过程,或源于用于移动容器116的用户(例如,管理员)指令。在此示例中,容器116(1)可在分层存储系统之间移动,诸如将容器116(1)从第一存储层(例如,SSD)移动到第二存储层(例如,HDD)。移动容器116的一些附加示例原因包括实现期望的性能要求,对容器116中的数据提供增加的保护,和/或其他考虑。
再次参考图2A,卷112的两个副本被显示为“副本0”和“副本1”。这可表示提供冗余的存储系统,诸如出于故障安全的目的在不同位置处提供相同数据的多个副本的具有镜像配置或奇偶校验配置的存储系统。例如,如果维护卷112的副本0的系统关闭或崩溃,则卷112的副本1的可用性允许系统恢复丢失的数据。相应地,卷112的副本0可包含多个容器116,在图2A中被标记为1到Q。卷112可从零开始并在任意大小(例如,一TB)处结束,并且卷112中的每个容器116(1-Q)可按照卷112内的容器化范围和物理范围来指定。例如,图2A中的容器“1”可具有从1000开始并有1000长度的容器化范围,以及从0开始并有1000长度的物理范围。如果容器“1”将被移动到被容器“100”占据的存储位置,而容器“100”将被移动到被容器“1”占据的存储位置(即,如果容器“1”和“100”被调换),则在容器“1”被移动到新存储位置之前,数据损坏检测器124可尝试从副本0读取容器“1”。图2A示出了容器“1”包括多个数据单元200(1)-(R),其中数据单元200(3)是损坏的(如图2A中的数据单元200(3)的虚线所示)。选择将读取哪个副本(即,副本0或副本1)来移动容器“1”可以是随机的或预配置的。无论如何,系统在选择用于读取操作的副本0之前并不知道容器“1”中的数据是损坏的。
在从副本0读取容器“1”时,数据损坏检测器124可利用检错码发生器120重新计算容器“1”的容器检错码118集合EC。例如,如果容器“1”对应于图1中的容器116(1),则可为容器“1”生成检错码118的“EC1”集合。数据损坏检测器124可访问在容器元数据114中存储的检错码118集合EC1,以将重新计算的容器检错码118与EC1的所存储的容器检错码118进行比较。在此情况下,由于容器“1”的副本0中的损坏数据单元200(3),比较会导致重新计算的容器检错码118和EC1的所存储的容器检错码118之间的失配,这向数据损坏检测器124指示来自副本0的容器“1”包含损坏数据。在检测到容器检错码118的失配时,数据损坏检测器124可将容器“1”标识为不可移动的,使得损坏数据单元200(3)不在存储系统内进一步传播。在此情形中,如果用户尝试打开容器“1”内由诸如数据单元200(3)之类的数据单元表示的文件,则系统可尝试从副本0读取数据单元,发现数据单元200(3)已损坏(例如,经由数据单元检错码C),并且可从另一副本(例如,图2A中的容器“1”的副本1)获得数据单元的有效副本。因此,数据损坏检测器124防止本来可在数据移动的上下文中经历的无法挽回的数据丢失。即使在具有内置冗余的存储系统中,移动具有损坏数据的容器116涉及(例如以奇偶校验或镜像的方式)写入损坏容器的多个副本,从而将损坏数据传播到容器的所有可用副本,而无法修复损坏数据或以其他方式恢复有效数据。通过使用数据损坏检测器124,防止了此类无法挽回的数据丢失。
替换地,在检测到EC1的所比较的容器检错码118之间的失配时,文件系统110可利用修复模块126修复容器“1”内的损坏数据,如图2A中的示图所示。在一些配置中,修复模块126可读取容器“1”的不同副本(诸如副本1),并可利用数据损坏检测器124重新计算来自容器“1”的副本1的容器检错码118集合,将重新计算的容器检错码118与存储在容器元数据114中的EC1的容器检错码118进行比较,并且如果所比较的容器检错码118匹配,则指示容器“1”的副本1中的数据是有效的,修复模块126将容器“1”移动到被容器100在卷112内的副本1所占据的新存储位置。在一些配置中,在使用附加副本修复容器“1”内的损坏数据之前,修复模块126可确认容器“1”的多个可用副本是同步的。如果任何可用副本与容器“1”的其他副本不同步,则修复模块126可同步存储重复系统中的副本。同步副本可能涉及验证每个副本中的数据的有效性,并用有效副本盖写被确定为无效的副本。
当容器“1”被移动到新存储位置时,例如,新存储位置可具有从5千兆字节(GB)开始的物理范围,使得容器“1”向新存储位置的移动包括将容器“1”的物理范围的开始更新到5GB的新位置,但不改变容器“1”的容器化范围。尽管这描述了在不改变容器116的大小的情况下将容器116移动到新存储位置的一类数据移动(基本容器旋转过程),但其他类别的数据移动也是可能的。例如,移动容器“1”可涉及压缩容器“1”(即,缩短容器“1”的长度)并将容器“1”嵌入较大的父容器内。容器“1”也可在容器移动时加密。容器“1”也可在容器的移动时通过将容器116截短至与容器116的已使用部分相对应的大小而被紧凑化。紧凑操作可被执行,其中容器116被推入比容器116大小更大的父容器中,并在容器116被推入父容器中之后将父容器的任何未使用部分移除(即,父容器被紧凑化)。通常,对于将被移动的诸如图2A的容器“1”之类的容器116,目标(或目的地)存储位置将是空闲的并且可用于将数据存储在目标位置处,在目标位置处的可用存储空间的大小将等于或大于正被移动的容器116的大小,并且移动操作所涉及的容器116将能够移动(诸如容器元数据114之类的一些数据是不可移动的)。
当容器“1”被写入新存储位置时,写入被传播到冗余存储系统中的所有副本,如图2A中从副本1到副本0的传播箭头所示。因此,在将容器“1”写入新存储位置时,修复模块126也将容器“1”写入/传播到副本0内的相应存储位置以确保副本0和1同步。由于副本0中的容器“1”的原始存储位置释放了容器“1”的损坏版本,所以图2A所示的修复过程在副本0内还原了容器“1”的有效数据。图2B示出了在将容器“1”与容器“100”调换之后得到的配置。在图2B中,副本0和1两者都被修复,并且数据单元200(3)在副本0中不再是损坏的。
在一些配置中,数据损坏检测器124可标识容器116内的一个或多个损坏数据单元200,诸如图2A中的损坏数据单元200(3)。如上所述,当为给定容器116存储N个容器检错码118EC时,数据损坏检测器124可使用容器检错码118集合来标识在容器116内最多N-1个损坏数据单元200。因此,代替从容器116的有效副本读取整个容器116并使用容器116的有效副本来修复容器的损坏副本,可使用容器检错码118集合EC在容器116内精确定位损坏数据单元200(3),以及可从容器116的有效副本读取数据单元200(3)的有效副本并将其用于修复数据单元200(3)的损坏副本)。
图3是例示还原损坏容器的有效数据的示例修复技术的示图。在图3中,容器116的副本0被示为包括有效数据单元200(除一个损坏数据单元200(3)之外),而容器116的副本1被示为包括有效数据单元200(除在容器116内的与数据单元200(3)不同位置处的一个损坏数据单元200(R)之外)。在此情形中,如果要执行容器级修复过程(如图2A所例示的),容器116的副本1将不会被视为适合于修复容器116的副本0,因为一旦对容器116的副本1重新计算容器检错码118集合EC并将重新计算的容器检错码118与所存储的容器116的容器检错码118进行比较,数据损坏检测器124将会注意到所比较的容器检错码118之间的失配而认为副本1损坏。然而,如上所述,容器116的容器检错码118集合EC可被用于精确定位容器116的副本0中的损坏数据单元200(3),以及容器116的副本1中的损坏数据单元200(R)。一旦这些损坏数据单元200在容器116的相应副本内被标识,修复模块126可通过从副本1读取数据单元200(3)并将有效数据单元200(3)写入到修复副本300来修复容器116。类似地,修复模块126可从副本0读取数据单元200(R),并将有效数据单元200(R)写入容器116的修复副本300。容器116的所得到的修复副本300随后修复了损坏数据单元200(3)和200(R),并且修复过程涉及从容器116的可用副本读取各个体数据单元200而无需读取整个容器116来修复损坏数据,这降低了修复过程的计算成本。
在容器116的所有副本都具有至少N个损坏数据单元200的情形中,其中N是诸如EC1之类的容器检错码118集合中的容器检错码118的数目,容器检错码118集合EC1不能标识容器116内的损坏的确切数据单元200,但数据损坏检测器124仍可使用容器检错码118集合EC1来检测容器116包括损坏数据。在此情形中,修复模块126可尝试通过以下修复容器116:将容器116的损坏副本中的各个体数据单元200替换为从容器116的附加副本检索到的数据单元200、用替代损坏数据单元200的新数据单元200重新计算容器116的容器检错码118集合、以及将重新计算的容器检错码118与容器116的所存储的容器检错码118EC1进行比较,以便确定所替换的数据单元200是否成功地修复了容器116中的损坏数据单元200。修复模块126可递归地替换各个体数据单元200,并且在容器检错码118对来自容器116的附加副本的数据单元200替换的每个可能的排列进行比较时校验成功匹配,以及可执行此修复过程直到所有可能的排列穷尽为止。如果容器116不能被修复,则容器116可被标识为不可移动的以防止损坏数据的传播。
本文所描述的过程被例示为逻辑流程图中的各框的集合,其表示可在硬件、软件或其组合中被实现的操作序列。在软件上下文中,各个框表示当由一个或多个处理器执行时完成既定操作的计算机可执行指令。一般而言,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述各操作的次序并不旨在被解释为限制,并且任何数量的所述框可以按任何次序和/或并行地组合以实现该过程。
图4是用于高效地验证容器116内的数据的有效性的说明性过程400的流程图。出于讨论的目的,参考图1的计算机系统100以及图2A-3的示图来描述过程400。
在402,检错码生成器120可从存储在存储系统中的数据的子集获得第一检错码集合,该第一检错码集合中的每个检错码C都与数据单元200的容器116内的一相应数据单元200相关联。在一些配置中,数据的子集可包括诸如文件元数据之类的文件系统对象的数据单元。
在404,检错码生成器120可至少部分地基于第一检错码集合来生成第二检错码118集合,并在406,检错码生成器120可将第二检错码集合与容器116相关联,诸如通过将第二检错码集合存储在与容器116相关联的容器元数据114中。在一些配置中,第二检错码118集合是根据第一检错码集合而生成的。在一些配置中,在404,如本文所描述的,编码方案可被用于导出第二容器检错码118集合。
在408,数据损坏检测器124可至少部分地基于在404处生成并且在406处与容器116相关联的第二检错码集合来验证容器116内的数据的有效性。在一些配置中,408处的验证可包括读取容器116的副本、根据容器116的副本重新计算容器检错码118以获得经重新计算的容器检错码118、以及将经重新计算的容器检错码118与在404处生成并且在406处与容器116相关联的第二检错码集合进行比较。如果经重新计算的容器检错码118和与容器118相关联的第二检错码118集合之间存在匹配,则容器116内的数据被视为有效。如果所比较的检错码118之间存在失配,则容器116中的数据被视为损坏/无效。此外,过程400可在将容器116移动到新存储位置的上下文中执行,使得一旦在408处验证了容器116的有效性,就可将该容器移动到新存储位置。在一些配置中,过程400的一个或多个操作可由诸如FPGA、ASIC、SOC、CPLD等硬件逻辑组件执行。
图5是用于高效地还原容器116内的有效数据的说明性过程500的流程图。出于讨论的目的,参考图1的计算机系统100以及图2A-3的示图来描述过程500。
在502,可作出容器116内的数据是有效的还是损坏的确定。例如,数据损坏检测器124可读取容器116的副本、基于容器116的副本重新计算容器116的容器检错码118以获得经重新计算的容器检错码118,并将经重新计算的容器检错码118与存储在容器元数据114中的容器检错码118集合进行比较。如果容器116中的数据在502被确定为有效(例如,如果经重新计算的容器检错码118与所存储的容器检错码118集合之间存在匹配),则过程500可沿着“是”路线前进到504,其中该容器被移动到新存储位置。如果容器116中的数据在502被确定为损坏(例如,如果所比较的容器检错码118之间存在失配),则过程500可沿着“否”路线前进到506,其中修复模块126可至少部分地基于所存储的容器检错码118集合来标识容器116内的损坏数据单元200。
在508,修复模块126可从与在506标识的损坏数据单元200相对应的容器116的附加副本(例如,镜像副本)中读取数据单元200。
在510,修复模块126可用来自容器116的附加副本的数据单元200替换损坏数据单元200。
在512,数据损坏检测器124可至少部分地基于所存储的容器116的容器检错码118集合在510处的替换之后验证容器116内的数据的有效性。过程500提供了无需从附加副本读取整个容器116来修复损坏容器116的计算便宜的方法。相反,损坏数据单元200被隔离,并用来自容器116的副本的有效数据单元200修复。在一些配置中,过程500的一个或多个操作可由诸如FPGA、ASIC、SOC、CPLD等的硬件逻辑组件执行。
示例一:一种方法,包括:从存储在存储系统中的数据的子集(例如,诸如文件、文件元数据等文件系统对象的数据单元)获得第一检错码集合(例如,诸如校验和、循环冗余校验(CRC)值等校验值集合),该第一检错码集合中的每个检错码都与数据单元的存储区域(例如,64兆字节(MB)容器)内的相应数据单元(例如,4千字节(kB)数据块)相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合与该存储区域相关联;以及至少部分地基于第二检错码集合来验证该存储区域内的数据的有效性。可响应于从文件系统自动发出的或从用户命令(例如,来自文件系统的管理员或授权用户的命令)发出的验证有效性的指令(或检查损坏数据的指令)来执行对有效性的验证。响应于将存储区域移动到新存储位置的指令,可提供验证存储区域内的数据的有效性的指令。此移动指令可以是系统生成的或用户生成的。
示例二:如示例一的方法,其中验证存储区域内的数据的有效性包括:读取存储区域中的副本(例如,作为镜像配置、奇偶校验配置等的一部分提供的相同数据的多个副本中的一个,其为存储系统内存储的数据提供冗余);根据存储区域的副本重新计算存储区域的检错码以获得经重新计算的检错码;以及将经重新计算的检错码与第二检错码集合进行比较以确定经重新计算的检错码与第二检错码集合之间是否存在匹配。
示例三:如前述示例中的任一项的方法,单独地或组合地,其中生成第二检错码集合包括通过将数学函数(例如,被应用于表征第二检错码集合中的各个体检错码的多项式函数的一系列异或(XOR,⊕)运算)应用于第一检错码集合来编码第一检错码集合。
示例四:如前述示例中的任一项的方法,单独地或组合地,其中使用Reed Solomon编码来执行对第一检错码集合的编码。
示例五:如前述示例中的任一项的方法,单独地或组合地,其中第二检错码集合:在数目上少于第一检错码集合的数目(例如,将用于存储第一检错码集合的数据量压缩成用于存储第二检错码集合的较小的数据量);以及保留用于检测数据中的损坏的第一检错码集合的特性。
示例六:如前述示例中的任一项的方法,单独地或组合地,其中将第二检错码集合与存储区域相关联包括:将第二检错码集合存储在与存储区域相关联的元数据中。
示例七:如前述示例中的任一项的方法,单独地或组合地,进一步包括在验证存储区域内的数据的有效性之前,从与存储区域相关联的元数据中检索第二检错码集合。
示例八:如前述示例中的任一项的方法,单独地或组合地,进一步包括:至少部分地基于验证存储区域内的数据的有效性来确定存储区域内的数据是有效的;以及响应于确定存储区域内的数据是有效的,将存储区域从当前存储位置移动到新存储位置(例如,执行容器旋转过程)。
示例九:如前述示例中的任一项的方法,单独地或组合地,进一步包括:至少部分地基于验证存储区域的副本内的数据的有效性来确定存储区域的副本内的数据的至少一部分是损坏的;以及响应于确定存储区域的副本内的数据的至少一部分是损坏的,修复存储区域的副本内的损坏数据。
示例十:如前述示例中的任一项的方法,单独地或组合地,其中修复损坏数据包括:选择存储区域的附加副本;读取存储区域的附加副本;至少部分地基于第二检错码集合来确定存储区域的附加副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配);以及使用存储区域的附加副本内的数据修复损坏数据(例如用来自存储区域的有效附加副本的数据盖写存储区域的损坏副本)。
示例十一:如前述示例中的任一项的方法,单独地或组合地,其中修复损坏数据进一步包括:将存储区域的附加副本写入与存储区域的副本的当前存储位置不同的存储位置(例如,通过将有效的附加存储区域移动到目标/目的地存储位置来执行存储区域的移动操作);以及将存储区域的附加副本传播到存储系统中的存储区域的其他副本。
示例十二:如前述示例中的任一项的方法,单独地或组合地,其中修复损坏数据包括:至少部分地基于第二检错码集合来标识存储区域的副本内的损坏数据单元;从存储区域的附加副本读取与损坏数据单元相对应的数据单元;用来自存储区域的附加副本的数据单元替换损坏数据单元以将存储区域的该副本转换为存储区域的新副本;以及至少部分地基于第二检错码集合来确定存储区域的新副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配)。
示例十三:如前述示例中的任一项的方法,单独地或组合地,进一步包括:接收数据单元在存储区域内已经改变的指示;标识已经改变的数据单元;从第一检错码集合获得先前的数据单元检错码;根据数据的子集计算新数据单元检错码;以及基于先前的数据单元检错码和新数据单元检错码更新第二检错码集合的特定检错码。
示例十四:如前述示例中的任一项的方法,单独地或组合地,其中生成第二检错码集合包括基于第一检错码集合来计算奇偶校验集合。
示例十五:如前述示例中的任一项的方法,单独地或组合地,其中:数据的子集包括与文件相关联的元数据;获得第一检错码集合包括从与文件相关联的元数据复制第一检错码集合以获得第一检错码集合的副本;以及生成第二检错码集合包括将第一检错码集合的副本存储在与存储区域相关联的元数据中作为第二检错码集合。
示例十六:如前述示例中的任一项的方法,单独地或组合地,其中:数据的子集包括文件系统对象的数据单元;以及存储区域是卷内的多个存储区域中的一个。
示例十七:一种系统,包括:处理器(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等);以及存储文件系统的存储器(例如,RAM、ROM、EEPROM、闪存等),该文件系统被配置为管理对存储在存储系统内的数据的访问,该文件系统包括在被处理器执行时执行以下操作的指令,该操作包括:从存储在存储系统中的数据的子集(例如,诸如文件、文件元数据等文件系统对象的数据单元)获得第一检错码集合(例如,诸如校验和、循环冗余校验(CRC)值等校验值集合),该第一检错码集合中的每个检错码都与数据单元的存储区域(例如,64兆字节(MB)容器)内的相应数据单元(例如,4千字节(kB)数据块)相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合与存储区域相关联;以及至少部分地基于第二检错码集合来验证存储区域内的数据的有效性。可响应于从文件系统自动发出的或从用户命令(例如,来自文件系统的管理员或授权用户的命令)发出的验证有效性的指令(或检查损坏数据的指令)来执行对有效性的验证。响应于将存储区域移动到新存储位置的指令,可提供验证存储区域内的数据的有效性的指令。此移动指令可以是系统生成的或用户生成的。
示例十八:示例十七的系统,其中验证存储区域内的数据的有效性包括:读取存储区域中的副本(例如,作为镜像配置、奇偶校验配置等的一部分提供的相同数据的多个副本中的一个,其为存储系统内存储的数据提供冗余);根据存储区域的副本重新计算存储区域的检错码以获得经重新计算的检错码;以及将经重新计算的检错码与第二检错码集合进行比较以确定经重新计算的检错码与第二检错码集合之间是否存在匹配。
示例十九:如前述示例中的任一项的系统,单独地或组合地,其中生成第二检错码集合包括通过将数学函数(例如,被应用于表征第二检错码集合中的各个体检错码的多项式函数的一系列异或(XOR,⊕)运算)应用于第一检错码集合来编码第一检错码集合。
示例二十:如前述示例中的任一项的系统,单独地或组合地,使用Reed Solomon编码来执行对第一检错码集合的编码。
示例二十一:如前述示例中的任一项的系统,单独地或组合地,其中第二检错码集合:在数目上少于第一检错码集合的数目(例如,将用于存储第一检错码集合的数据量压缩成用于存储第二检错码集合的较小的数据量);以及保留用于检测数据中的损坏的第一检错码集合的特性。
示例二十二:如前述示例中的任一项的系统,单独地或组合地,其中将第二检错码集合与存储区域相关联包括:将第二检错码集合存储在与存储区域相关联的元数据中。
示例二十三:如前述示例中的任一项的系统,单独地或组合地,该操作进一步包括在验证存储区域内的数据的有效性之前,从与存储区域相关联的元数据中检索第二检错码集合。
示例二十四:如前述示例中的任一项的系统,单独地或组合地,该操作进一步包括:至少部分地基于验证存储区域内的数据的有效性来确定存储区域内的数据是有效的;以及响应于确定存储区域内的数据是有效的,将存储区域从当前存储位置移动到新存储位置(例如,执行容器旋转过程)。
示例二十五:如前述示例中的任一项的系统,单独地或组合地,该操作进一步包括:至少部分地基于验证存储区域的副本内的数据的有效性来确定存储区域的副本内的数据的至少一部分是损坏的;以及响应于确定存储区域的副本内的数据的至少一部分是损坏的,修复存储区域的副本内的损坏数据。
示例二十六:如前述示例中的任一项的系统,单独地或组合地,其中修复损坏数据包括:选择存储区域的附加副本;读取存储区域的附加副本;至少部分地基于第二检错码集合来确定存储区域的附加副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配);以及使用存储区域的附加副本内的数据修复损坏数据(例如用来自存储区域的有效附加副本的数据盖写存储区域的损坏副本)。
示例二十七:如前述示例中的任一项的系统,单独地或组合地,其中修复损坏数据进一步包括:将存储区域的附加副本写入与存储区域的副本的当前存储位置不同的存储位置(例如,通过将有效的附加存储区域移动到目标/目的地存储位置来执行存储区域的移动操作);以及将存储区域的附加副本传播到存储系统中的存储区域的其他副本。
示例二十八:如前述示例中的任一项的系统,单独地或组合地,其中修复损坏数据包括:至少部分地基于第二检错码集合来标识存储区域的副本内的损坏数据单元;从存储区域的附加副本读取与损坏数据单元相对应的数据单元;用来自存储区域的附加副本的数据单元替换损坏数据单元以将存储区域的该副本转换为存储区域的新副本;以及至少部分地基于第二检错码集合来确定存储区域的新副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配)。
示例二十九:如前述示例中的任一项的系统,单独地或组合地,该操作进一步包括:接收数据单元在存储区域内已经改变的指示;标识已经改变的数据单元;从第一检错码集合获得先前的数据单元检错码;根据数据的子集计算新数据单元检错码;以及基于先前的数据单元检错码和新数据单元检错码更新第二检错码集合的特定检错码。
示例三十:如前述示例中的任一项的系统,单独地或组合地,其中生成第二检错码集合包括基于第一检错码集合来计算奇偶校验集合。
示例三十一:如前述示例中的任一项的系统,单独地或组合地,其中:数据的子集包括与文件相关联的元数据;获得第一检错码集合包括从与文件相关联的元数据复制第一检错码集合以获得第一检错码集合的副本;以及生成第二检错码集合包括将第一检错码集合的副本存储在与存储区域相关联的元数据中作为第二检错码集合。
示例三十二:如前述示例中的任一项的方法,单独地或组合地,其中:数据的子集包括文件系统对象的数据单元;以及存储区域是卷内的多个存储区域中的一个。
示例三十三:存储计算机可执行指令的一个或多个计算机可读存储介质(例如,RAM、ROM、EEPROM、闪存等),该计算机可执行指令在由处理器(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等)执行时,执行以下操作,该操作包括:从存储在存储系统中的数据的子集(例如,诸如文件、文件元数据等文件系统对象的数据单元)获得第一检错码集合(例如,诸如校验和、循环冗余校验(CRC)值等校验值集合),该第一检错码集合中的每个检错码都与数据单元的存储区域(例如,64兆字节(MB)容器)内的相应数据单元(例如,4千字节(kB)数据块)相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合与存储区域相关联;以及至少部分地基于第二检错码集合来验证存储区域内的数据的有效性。可响应于从文件系统自动发出的或从用户命令(例如,来自文件系统的管理员或授权用户的命令)发出的验证有效性的指令(或检查损坏数据的指令)来执行对有效性的验证。响应于将存储区域移动到新存储位置的指令,可提供验证存储区域内的数据的有效性的指令。此移动指令可以是系统生成的或用户生成的。
示例三十四:示例三十三的一个或多个计算机可读存储介质,其中验证存储区域内的数据的有效性包括:读取存储区域中的副本(例如,作为镜像配置、奇偶校验配置等的一部分提供的相同数据的多个副本中的一个,其为存储系统内存储的数据提供冗余);根据存储区域的副本重新计算存储区域的检错码以获得经重新计算的检错码;以及将经重新计算的检错码与第二检错码集合进行比较以确定经重新计算的检错码与第二检错码集合之间是否存在匹配。
示例三十五:如前述示例中的任一项的一个或多个计算机可读存储介质,,单独地或组合地,其中生成第二检错码集合包括通过将数学函数(例如,被应用于表征第二检错码集合中的各个体检错码的多项式函数的一系列异或(XOR,)运算)应用于第一检错码集合来编码第一检错码集合。
示例三十六:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,使用Reed Solomon编码来执行对第一检错码集合的编码。
示例三十七:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中第二检错码集合:在数目上少于第一检错码集合的数目(例如,将用于存储第一检错码集合的数据量压缩成用于存储第二检错码集合的较小的数据量);以及保留用于检测数据中的损坏的第一检错码集合的特性。
示例三十八:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中将第二检错码集合与存储区域相关联包括:将第二检错码集合存储在与存储区域相关联的元数据中。
示例三十九:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,该操作进一步包括在验证存储区域内的数据的有效性之前,从与存储区域相关联的元数据中检索第二检错码集合。
示例四十:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,该操作进一步包括:至少部分地基于验证存储区域内的数据的有效性来确定存储区域内的数据是有效的;以及响应于确定存储区域内的数据是有效的,将存储区域从当前存储位置移动到新存储位置(例如,执行容器旋转过程)。
示例四十一:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,该操作进一步包括:至少部分地基于验证存储区域的副本内的数据的有效性来确定存储区域的副本内的数据的至少一部分是损坏的;以及响应于确定存储区域的副本内的数据的至少一部分是损坏的,修复存储区域的副本内的损坏数据。
示例四十二:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中修复损坏数据包括:选择存储区域的附加副本;读取存储区域的附加副本;至少部分地基于第二检错码集合来确定存储区域的附加副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配);以及使用存储区域的附加副本内的数据修复损坏数据(例如用来自存储区域的有效附加副本的数据盖写存储区域的损坏副本)。
示例四十三:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中修复损坏数据进一步包括:将存储区域的附加副本写入与存储区域的副本的当前存储位置不同的存储位置(例如,通过将有效的附加存储区域移动到目标/目的地存储位置来执行存储区域的移动操作);以及将存储区域的附加副本传播到存储系统中的存储区域的其他副本。
示例四十四:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中修复损坏数据包括:至少部分地基于第二检错码集合来标识存储区域的副本内的损坏数据单元;从存储区域的附加副本读取与损坏数据单元相对应的数据单元;用来自存储区域的附加副本的数据单元替换损坏数据单元以将存储区域的该副本转换为存储区域的新副本;以及至少部分地基于第二检错码集合来确定存储区域的新副本内的数据是有效的(例如,重新计算第二检错码集合,将该经重新计算的第二检错码集合与先前生成的与存储区域相关联的第二检错码集合进行比较,并确定所比较的检错码匹配)。
示例四十五:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,该操作进一步包括:接收数据单元在存储区域内已经改变的指示;标识已经改变的数据单元;从第一检错码集合获得先前的数据单元检错码;根据数据的子集计算新数据单元检错码;以及基于先前的数据单元检错码和新数据单元检错码更新第二检错码集合的特定检错码。
示例四十六:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中生成第二检错码集合包括基于第一检错码集合来计算奇偶校验集合。
示例四十七:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中:数据的子集包括与文件相关联的元数据;获得第一检错码集合包括从与文件相关联的元数据复制第一检错码集合以获得第一检错码集合的副本;以及生成第二检错码集合包括将第一检错码集合的副本存储在与存储区域相关联的元数据中作为第二检错码集合。
示例四十八:如前述示例中的任一项的一个或多个计算机可读存储介质,单独地或组合地,其中:数据的子集包括文件系统对象的数据单元;以及存储区域是卷内的多个存储区域中的一个。
示例四十九:一种方法,包括:从存储在存储系统中的文件系统对象的数据单元中获得第一检错码集合,第一检错码集合中的每个检错码都与卷中的数据单元的存储区域内的相应数据单元相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合与存储区域相关联;以及至少部分地基于第二检错码集合来验证存储区域内的数据的有效性。
示例五十:一种方法,包括:从存储在存储系统中的数据的子集中获得第一检错码集合,第一检错码集合中的每个检错码都与数据单元的存储区域内的相应数据单元相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合存储在与存储区域相关联的元数据中;从与存储区域相关联的元数据中检索第二检错码集合;以及至少部分地基于从与存储区域相关联的元数据中检索的该第二检错码集合来验证该存储区域内的数据的有效性。
示例五十一:一种系统,包括:用于执行计算机可执行指令的装置(例如,中央处理单元(CPU)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)、专用集成电路(ASIC)、片上系统(SoC)等);以及用于存储文件系统的装置(例如,RAM、ROM、EEPROM、闪存等),该文件系统被配置为管理对存储在用于存储数据的装置内数据的访问,该文件系统包括在被用于执行计算机可执行指令的装置执行时执行以下操作的指令,操作包括:从存储在用于存储数据的装置中的数据的子集(例如,诸如文件、文件元数据等文件系统对象的数据单元)获得第一检错码集合(例如,诸如校验和、循环冗余校验(CRC)值等校验值集合),该第一检错码集合中的每个检错码都与数据单元的存储区域(例如,64兆字节(MB)容器)内的相应数据单元(例如,4千字节(kB)数据块)相关联;至少部分地基于第一检错码集合生成第二检错码集合;将第二检错码集合与存储区域相关联;以及至少部分地基于第二检错码集合来验证存储区域内的数据的有效性。可响应于从文件系统自动发出的或从用户命令(例如,来自文件系统的管理员或授权用户的命令)发出的验证有效性的指令(或检查损坏数据的指令)来执行对有效性的验证。响应于将存储区域移动到新存储位置的指令,可提供验证存储区域内的数据的有效性的指令。此移动指令可以是系统生成的或用户生成的。
本文所描述的环境和各个元件当然可包括许多其它的逻辑、程序以及物理组件,其中显示在附图中的那些仅仅是与本文的讨论有关的示例。
其它架构可被用于实现所描述的功能,这些其它架构也落于本公开的范围内。此外,尽管以上为了讨论的目的描述了具体的职责分布,但可根据情况以不同方式分布和划分各组功能和职责。
结语
总而言之,尽管用对结构特征和/或方法动作专用的语言描述了各配置,但可以理解,所附权利要求书中定义的主题不必限于所述具体特征或动作。相反,这些具体特征和动作是作为实现所要求保护的主题内容的示例形式而公开的。

Claims (14)

1.一种系统,包括:
处理器;以及
存储文件系统的存储器,所述文件系统被配置为管理对存储在存储系统内的数据的访问,所述文件系统包括响应于由所述处理器执行而执行操作的指令,所述操作包括:
从存储在所述存储系统中的所述数据的子集中获得第一检错码集合,所述第一检错码集合中的每个检错码都与数据单元的存储区域内的相应数据单元相关联;
至少部分地基于所述第一检错码集合生成第二检错码集合;
将所述第二检错码集合与所述存储区域相关联;以及
至少部分地基于所述第二检错码集合来验证所述存储区域内的数据的有效性。
2.如权利要求1所述的系统,其特征在于,生成所述第二检错码集合包括通过将数学函数应用于所述第一检错码集合来对所述第一检错码集合进行编码。
3.如权利要求2所述的系统,其特征在于,所述数据的所述子集包括存储在所述存储系统中的文件系统对象的数据单元。
4.如权利要求1所述的系统,其特征在于,将所述第二检错码集合与所述存储区域相关联包括:将所述第二检错码集合存储在与所述存储区域相关联的元数据中。
5.如权利要求1所述的系统,其特征在于,所述操作进一步包括:
接收数据单元在所述存储区域内已经改变的指示;
标识已经改变的所述数据单元;
从所述第一检错码集合获得先前数据单元检错码;
根据所述数据的所述子集计算新数据单元检错码;以及
基于所述先前数据单元检错码和所述新数据单元检错码更新所述第二检错码集合的特定检错码。
6.如权利要求1所述的系统,其特征在于,验证所述存储区域内的所述数据的所述有效性包括:
读取所述存储区域的副本;
根据所述存储区域的所述副本重新计算所述存储区域的检错码以获得经重新计算的检错码;以及
将所述经重新计算的检错码与所述第二检错码集合进行比较以确定所述经重新计算的检错码与所述第二检错码集合之间是否存在匹配。
7.如权利要求1所述的系统,其特征在于,所述第二检错码集合:
在数目上少于所述第一检错码集合的数目;以及
保留用于检测数据中的损坏的所述第一检错码集合的特性。
8.如权利要求1所述的系统,其特征在于,所述操作进一步包括:
至少部分地基于验证所述存储区域内的所述数据的所述有效性来确定所述存储区域内的所述数据是有效的;以及
响应于确定所述存储区域内的所述数据是有效的,将所述存储区域从当前存储位置移动到新存储位置。
9.如权利要求1所述的系统,其特征在于,所述操作进一步包括:
至少部分地基于验证所述存储区域的副本内的所述数据的所述有效性来确定所述存储区域的所述副本内的所述数据的至少一部分是损坏的;以及
响应于确定所述存储区域的所述副本内的所述数据的至少一部分是损坏的,修复所述存储区域的所述副本内的损坏数据。
10.如权利要求9所述的系统,其特征在于,修复所述损坏数据包括:
选择所述存储区域的附加副本;
读取所述存储区域的所述附加副本;
至少部分地基于所述第二检错码集合来确定所述存储区域的所述附加副本内的数据是有效的;以及
使用所述存储区域的所述附加副本内的所述数据修复所述损坏数据。
11.如权利要求10所述的系统,其特征在于,修复所述损坏数据进一步包括:
将所述存储区域的所述附加副本写入与所述存储区域的所述副本的当前存储位置不同的存储位置;以及
将所述存储区域的所述附加副本传播到所述存储系统中的所述存储区域的其他副本。
12.如权利要求9所述的系统,其特征在于,修复所述损坏数据包括:
至少部分地基于所述第二检错码集合来标识存储区域的所述副本内的损坏数据单元;
从所述存储区域的附加副本读取与所述损坏数据单元相对应的数据单元;
用来自所述存储区域的所述附加副本的所述数据单元替换所述损坏数据单元以将所述存储区域的所述副本转换为所述存储区域的新副本;以及
至少部分地基于所述第二检错码集合来确定所述存储区域的所述新副本内的所述数据是有效的。
13.如权利要求1所述的系统,其特征在于,生成所述第二检错码集合包括基于所述第一检错码集合来计算奇偶校验集合。
14.如权利要求1所述的系统,其特征在于:
所述数据的所述子集包括与文件相关联的元数据,其中所述存储区域内的所述数据单元中的至少一些表示所述文件的至少一部分;
获得所述第一检错码集合包括从与所述文件相关联的所述元数据复制所述第一检错码集合以获得所述第一检错码集合的副本;以及
生成所述第二检错码集合包括将所述第一检错码集合的所述副本存储在与所述存储区域相关联的所述元数据中作为所述第二检错码集合。
CN201680056124.9A 2015-09-25 2016-09-11 损坏数据的高效检测的方法和系统 Active CN108141229B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562233182P 2015-09-25 2015-09-25
US62/233,182 2015-09-25
US14/986,333 US10489240B2 (en) 2015-09-25 2015-12-31 Efficient detection of corrupt data
US14/986,333 2015-12-31
PCT/US2016/051193 WO2017053100A1 (en) 2015-09-25 2016-09-11 Efficient detection of corrupt data

Publications (2)

Publication Number Publication Date
CN108141229A true CN108141229A (zh) 2018-06-08
CN108141229B CN108141229B (zh) 2021-11-23

Family

ID=57047290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680056124.9A Active CN108141229B (zh) 2015-09-25 2016-09-11 损坏数据的高效检测的方法和系统

Country Status (4)

Country Link
US (1) US10489240B2 (zh)
EP (1) EP3353897A1 (zh)
CN (1) CN108141229B (zh)
WO (1) WO2017053100A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994719A (zh) * 2019-06-07 2022-01-28 梭纳斯株式会社 通信系统、通信方法及通信装置

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170230186A1 (en) * 2016-02-05 2017-08-10 Samsung Electronics Co., Ltd. File management apparatus and method for verifying integrity
US10785116B1 (en) * 2017-01-12 2020-09-22 Electronic Arts Inc. Computer architecture for asset management and delivery
US10460130B1 (en) 2017-09-18 2019-10-29 Amazon Technologies, Inc. Mechanism to protect a distributed replicated state machine
US11468037B2 (en) * 2019-03-06 2022-10-11 Semiconductor Components Industries, Llc Memory device and data verification method
US11487628B1 (en) * 2019-05-13 2022-11-01 R-Stor Inc. System and method for rapidly transferring and recovering large data sets
US11971891B1 (en) * 2023-12-20 2024-04-30 Citibank, N.A. Accessing siloed data across disparate locations via a unified metadata graph systems and methods

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1164941A (zh) * 1994-09-16 1997-11-12 西尔拉斯逻辑公司 Crc/edc校验器系统
CN1534622A (zh) * 2003-03-11 2004-10-06 ��ʢ���ӹɷ����޹�˾ 错误检测码产生方法和对多个区段产生错误检测码的方法
CN101080875A (zh) * 2005-09-01 2007-11-28 日本电信电话株式会社 纠错方法以及装置
CN104040505A (zh) * 2012-01-11 2014-09-10 国际商业机器公司 错误检测码的增量修改

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040098419A1 (en) 2002-11-18 2004-05-20 International Business Machines Corporation Method and apparatus for a migration assistant
US7103811B2 (en) * 2002-12-23 2006-09-05 Sun Microsystems, Inc Mechanisms for detecting silent errors in streaming media devices
JP4399704B2 (ja) * 2003-03-27 2010-01-20 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
US7523343B2 (en) 2004-04-30 2009-04-21 Microsoft Corporation Real-time file system repairs
US7774320B1 (en) 2005-04-01 2010-08-10 Apple Inc. Verifying integrity of file system data structures
US9996413B2 (en) * 2007-10-09 2018-06-12 International Business Machines Corporation Ensuring data integrity on a dispersed storage grid
US8145941B2 (en) * 2006-10-31 2012-03-27 Hewlett-Packard Development Company, L.P. Detection and correction of block-level data corruption in fault-tolerant data-storage systems
TWI332650B (en) * 2007-01-31 2010-11-01 Realtek Semiconductor Corp Error detection code generating circuit and encoding circuit utilizing which and the method of which
US8316258B2 (en) * 2007-05-03 2012-11-20 Oracle America, Inc. System and method for error detection in a data storage system
US7873878B2 (en) 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
MX2013002443A (es) 2010-09-30 2013-05-06 Hendrickson Usa Llc Conexion de eje de vehiculo de trabajo pesado.
US8719520B1 (en) 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
EP2756399B1 (en) 2011-09-12 2021-01-20 Microsoft Technology Licensing, LLC Querying and repairing data
US8832524B2 (en) 2011-09-22 2014-09-09 Violin Memory, Inc. System and method for correcting errors in data using a compound code
KR20130105972A (ko) * 2012-03-19 2013-09-27 삼성전자주식회사 라이트 데이터의 에러 검출 방법 및 상기 방법을 수행할 수 있는 데이터 처리 시스템
US9811423B2 (en) 2013-01-11 2017-11-07 Commvault Systems, Inc. Partial file restore in a data storage system
US8977896B1 (en) 2013-03-13 2015-03-10 Emc Corporation Maintaining data integrity in data migration operations using per-migration device error flags
US9021296B1 (en) 2013-10-18 2015-04-28 Hitachi Data Systems Engineering UK Limited Independent data integrity and redundancy recovery in a storage system
CN103778030B (zh) 2013-12-30 2017-09-22 上海晨思电子科技有限公司 日志子系统写入方法、错误追踪方法及处理器
US20150256204A1 (en) * 2014-03-07 2015-09-10 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
US9348695B2 (en) * 2014-05-21 2016-05-24 Sandisk Technologies Inc. System and method of storing redundancy data
CN104199888B (zh) 2014-08-25 2017-08-01 厦门市美亚柏科信息股份有限公司 弹性文件系统的数据恢复方法和装置
US10331515B2 (en) * 2014-12-10 2019-06-25 Cnex Labs, Inc. Computing system with shift data protection mechanism and method of operation thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1164941A (zh) * 1994-09-16 1997-11-12 西尔拉斯逻辑公司 Crc/edc校验器系统
CN1534622A (zh) * 2003-03-11 2004-10-06 ��ʢ���ӹɷ����޹�˾ 错误检测码产生方法和对多个区段产生错误检测码的方法
CN101080875A (zh) * 2005-09-01 2007-11-28 日本电信电话株式会社 纠错方法以及装置
CN104040505A (zh) * 2012-01-11 2014-09-10 国际商业机器公司 错误检测码的增量修改

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994719A (zh) * 2019-06-07 2022-01-28 梭纳斯株式会社 通信系统、通信方法及通信装置
CN113994719B (zh) * 2019-06-07 2024-04-02 梭纳斯株式会社 通信系统、通信方法及通信装置

Also Published As

Publication number Publication date
EP3353897A1 (en) 2018-08-01
US10489240B2 (en) 2019-11-26
CN108141229B (zh) 2021-11-23
US20170091020A1 (en) 2017-03-30
WO2017053100A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
US11636031B2 (en) Optimized inline deduplication
CN108141229A (zh) 损坏数据的高效检测
US10733053B1 (en) Disaster recovery for high-bandwidth distributed archives
CN104978281B (zh) 数据存储设备中的数据完整性管理
US9665302B1 (en) Method and apparatus for storing information using an intelligent block storage controller
US9715521B2 (en) Data scrubbing in cluster-based storage systems
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US20180101332A1 (en) Method and apparatus for storing information using an intelligent block storage controller
US11966841B2 (en) Search acceleration for artificial intelligence
US7103811B2 (en) Mechanisms for detecting silent errors in streaming media devices
US8953265B1 (en) Method and system for monitoring disk reliability with global disk scrubbing
US10146786B2 (en) Managing deduplication in a data storage system using a Bloomier filter data dictionary
US10481988B2 (en) System and method for consistency verification of replicated data in a recovery system
CN110720088A (zh) 集成到大容量存储设备的可访问快速耐久存储
US20100070478A1 (en) Retrieval and recovery of data chunks from alternate data stores in a deduplicating system
CN107111528A (zh) 用于存储错误管理的系统和方法
US9329799B2 (en) Background checking for lost writes and data corruption
CN109726036B (zh) 一种存储系统中的数据重构方法和装置
US10642508B2 (en) Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media
US7689877B2 (en) Method and system using checksums to repair data
US8543864B2 (en) Apparatus and method of performing error recovering process in asymmetric clustering file system
CN112749039A (zh) 用于数据写入和数据恢复的方法、设备和程序产品
US11144638B1 (en) Method for storage system detection and alerting on potential malicious action
US10997040B1 (en) System and method for weight based data protection
JP2013050836A (ja) ストレージシステムとデータ・インテグリティのチェック方法並びにプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant