CN109478159B - 损坏数据块的在线修复 - Google Patents
损坏数据块的在线修复 Download PDFInfo
- Publication number
- CN109478159B CN109478159B CN201780043371.XA CN201780043371A CN109478159B CN 109478159 B CN109478159 B CN 109478159B CN 201780043371 A CN201780043371 A CN 201780043371A CN 109478159 B CN109478159 B CN 109478159B
- Authority
- CN
- China
- Prior art keywords
- structured data
- blocks
- storage
- allocation map
- allocated
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文中描述的实施例涉及在对应的结构化数据保持在线时测试存储系统的元数据的完整性。实施例还涉及在元数据保持在使用中并且在它的结构化数据保持在线时使得损坏的存储系统元数据能够被修复。关于分配元数据和引用计数元数据描述了损坏检测和修复。实施例适用于很多类型的存储系统,包括例如文件系统和数据库。
Description
背景技术
计算机被用于存储和组织数据。存储的数据可以利用很多目标而被结构化和管理,这些目标中的一些目标是冲突的。例如,数据可以被构建和管理以用于可靠性和完整性、高效的读取和写入、高效的搜索、底层存储的最小浪费、易于管理、最小的计算开销等。可以被用于构建和管理任何特定数据的特定算法和策略通常取决于这些目标中哪些目标对于该数据的使用最为重要。如下所述,期望能够在不显著破坏其他目标的情况中改进这些目标中的任何目标的算法和技术。在讨论结构化数据存储领域中的一些缺点和改进之前,将建立一些术语。
公共数据存储方案涉及在基础的基于块的存储单元上对结构化数据进行分层的存储系统。存在很多种类的基于块的存储单元。例如,磁盘驱动、逻辑和物理文件系统卷、存储器、虚拟化存储设备、数据库页面文件、基于块的云存储系统等。基于块的存储单元在本文中被称为“存储单元”,并且理解该术语是指能够在它的离散块、页面、群集或通常被分段为存储装置的均匀子单元的其他部分(本文中其被称为“块”)中存储结构化数据的任何类型的离散存储单元(物理的或虚拟的)。通常,存储单元的块是连续的,它们的大小与它们的存储单元的大小一致,并且它们离散地被写入它们的存储单元并且从其被读取。注意,块也可以是字节可寻址存储装置(DAX)的字节。
术语“存储系统”在本文中被用于指代在存储单元的块内组织和管理结构化数据(“数据”)的任何计算机可执行系统,其中数据被构造用于由存储系统取回、更新、删除等。“结构化数据”将是指由存储系统提供并且在存储单元之上被分层的数据抽象。通常,结构化数据被存储在由存储系统定义和实现的对象(数据类型、项目、子结构等)中。对象通常存储被传递到存储系统中的数据(例如,“用户数据”或“客户端数据”)以及由存储系统生成和使用的管理元数据。存储系统通常在存储单元上维持“存储元数据”以逻辑地布置存储单元的对象并且可能跟踪对象的属性(即,对象元数据)。存储系统还存储和管理针对存储单元的全局元数据。存储单元的全局元数据可以包括关于存储单元本身的数据,例如,它的大小(或位置和区段)、布局、块大小、属性、访问凭证或键(key)、关于结构化数据本身的全局信息等。为了高效性,全局和存储元数据(被统称为“元数据”)通常被存储在树中。通常,全局元数据的根部分指向全局元数据的其他单元。
文件系统是一种类型的结构化数据。就文件系统而言,文件系统管理器是存储管理器的示例。无论是物理的还是逻辑的,卷是由块(即,节点、群集等)组成的存储单元的示例。文件系统是由文件系统管理器管理的结构化数据的示例,其通常作为操作系统的存储堆栈的一部分被包括。文件系统的对象通常包括文件、目录、链接、访问控制列表等。存储元数据提供文件系统的层次结构。文件系统或卷的全局元数据可以包括关于以下各项的信息:哪些块被分配、对文件系统中的对象的引用的计数、块的数目和它们的大小、卷的属性等。这些文件系统信息中的所有文件系统信息被覆盖在卷的块上,并且由文件系统管理器管理。
数据库是另一种类型的结构化数据。就数据库而言,数据库引擎是存储系统的示例。由页面(即,块)组成的页面文件是由数据库引擎管理的存储单元的示例。数据库是被覆盖在页面文件的页面上的结构化数据的示例,并且数据库的对象通常由表、记录、索引、模式、安全信息组成。全局元数据可以包括关于以下各项的信息:哪些页面被分配、哪些对象存储在哪些页面的哪些位置处等。
考虑到这一术语,考虑大多数存储系统允许更新它们的结构化数据;它们支持添加、移除和修改对象。因此,针对给定的存储单元,大多数存储系统具有一些机制以用于跟踪存储单元的哪些块当前被分配,即,哪些块在使用中以存储全局元数据、存储元数据、对象、对象元数据或任何其他信息。因为分配块、解除分配块以及查询块分配状态是存储系统的频繁操作,所以存储系统的性能可能受到这些分配操作可以多么快地被执行的限制。针对速度,存储系统通常使用某种形式的索引(一种类型的全局元数据)来跟踪块分配状态。最近,诸如B-树和B+树的树受到青睐,部分原因在于它们的快速搜索时间和其他优点。在任何情况中,通常,索引越有效,索引就越容易受到损坏的影响。对于某些类型的索引,一个错误的位可能导致存储系统认为整个对应的存储单元损坏且不可用。下面描述用于在相关的结构化数据和存储单元保持在线并且继续由对应的存储系统使得可用时检测分配索引中的损坏并且修复损坏的分配索引的技术。
很多存储系统还跟踪有多少引用针对存储单元中的对象当前活跃。例如,文件系统可以具有由文件系统管理器维持以跟踪有多少引用针对文件系统中的对象活跃的引用计数的树。下面描述用于在对应的结构化数据保持在线时并且在结构化数据保持在线时监测全局引用计数的完整性以便以允许结构化数据保持在线的方式来修复引用计数的技术。
下面还描述用于提高结构化数据、特别是存储元数据和全局元数据的可用性和鲁棒性的其他技术。
发明内容
包括以下发明内容仅为了介绍在以下具体实施方式中被讨论的一些概念。本发明内容并不是综合性的,并且并非旨在描述由被呈现在最后的权利要求阐述的要求保护的主题的范围。
本文中描述的实施例涉及在对应的结构化数据保持在线时测试存储系统的元数据的完整性。实施例还涉及在元数据保持在使用中并且在它的结构化数据保持在线时使得能够修复损坏的存储系统元数据。关于分配元数据和引用计数元数据描述了损坏检测和修复。实施例适用于很多类型的存储系统,包括例如文件系统和数据库。
下面将参考结合附图而被考虑的以下详细描述来说明伴随特征中的很多伴随特征。
附图说明
从以下根据附图阅读的详细描述将能够更好地理解本说明书,其中相同的附图标记被用于表示所附说明书中的相同部分。
图1示出了示例存储系统。
图2示出了分配映射或索引如何被实现为稀疏数据结构。
图3示出了用于搜索稀疏分配映射的过程。
图4示出了用于实现分配映射或索引的示例稀疏B+树。
图5示出了分配映射区段。
图6示出了分配映射的完整性值如何可以被计算并且用于避免数据损坏。
图7示出了如何可以在保持在使用中以用于服务于在线存储单元时修复存储单元的分配映射。
图8示出了另一分配映射修复过程。
图9示出了用于处理损坏的引用计数树的修复技术。
图10示出了计算设备的细节。
具体实施方式
图1示出了示例存储系统100。存储系统100控制和访问基于块的存储单元102,其被分段为块104。通常,存储系统100通过传入要被写入的整个块104并且请求和接收从存储单元102被读取的整个块104来与存储单元102通信。可以通过标识符、偏移等来跟踪块。为了讨论,块将被认为在完全地描述存储单元102的块的范围或命名空间(或键空间)中具有唯一标识符。然而,可以使用用于块标识的任何方案。
存储系统100使用块104作为粗略存储单元,并且管理块104内的更细粒度的独立结构化数据106的存储。通常,结构化数据106的覆盖开始于存储管理器100被配置为读取和解释的全局元数据108。如上所述,全局元数据108可以包括关于作为整体的结构化数据106的信息、关于存储单元102的信息(诸如块的大小、块的总体大小或数目、布局、空闲和使用的空间的量)、全局元数据(或它的指针)子单元(诸如分配树/索引或引用计数树)。全局元数据108还可以指向组织结构化数据106的存储元数据110,例如,通过指示由存储系统100管理的对象112的位置、对象112之间的关系、对象的属性的可能位置等。简而言之,存储管理器100使用包括对象112和存储元数据110的结构化数据106来管理被存储在存储单元102中的“用户”数据(内容),并且全局元数据108被用于维持相关的全局信息。如将看到的,全局元数据与结构化数据之间通常存在一些功能关系。
存储系统100可以包括存储分配器114和结构化数据管理器116。结构化数据管理器116(“数据管理器”)是存储系统100的主逻辑,并且在存储单元的块104顶上提供数据抽象级别。数据管理器116被配置有用以在处理来自与存储系统100对接的客户端、应用或其他实体118的请求时解释存储元数据110和对象112并且构造结构化数据的逻辑。通常,客户端经由存储系统100的对应的应用程序编程接口(API)发布指向对象112中的一个或多个对象的请求120。请求120可以被用于更新对象的内容,删除对象,读取对象的内容,读取或修改对象的属性,查询对象元数据和全局元数据(例如,存储单元102上有多少空间空闲),移动对象,创建新对象,等等。数据管理器116在高级请求120与被存储在块104中的较低级数据之间转换,并且通过读取和更新块104来更新对象112、存储元数据110和全局元数据108。数据管理器116返回响应122,诸如成功或失败的指示、请求的数据(诸如对象112或它们的属性)等。
分配器114执行用于存储系统100、并且特别是用于数据管理器116的块分配功能。分配器114访问和维持将被称为分配映射124(或,“分配索引”)的全局元数据的单元。分配映射124可以通过在全局元数据108中找到它的根的位置,或者通过访问存储单元102的预定义位置而被访问。分配映射124被用于存储全局分配状态,即,指示块104中的哪些块在逻辑上被认为在使用中(已分配)以及哪些块在逻辑上被认为是可用于使用(未分配)的信息。
应当注意,分配器114和数据管理器116作为存储系统100的不同组件的实现是设计便利性,并且对于存储系统100的操作并不重要,存储系统100的功能可以按照多种方式而被组织。此外,如上所述,存储系统100可以是文件系统管理器、数据库引擎或任何其他类型的数据抽象层。对象112可以是文件、目录、记录、表等。
图2示出了分配映射或索引可以如何被实现为稀疏数据结构。在图2中,键140是地址空间或命名空间中的通用元素。例如,键可以是块编号或标识符、页面编号、从对应的存储单元的起始处的偏移(以字节为单位)(即,字节地址)、块区段、或可以被用于表示和标识相关存储单元中的所有块的任何其他类型的信息。稀疏映射是其中未在映射或索引中被显式地存储的键在逻辑上被视为存在于映射中的映射。在图2的示例中,块1、2和6在分配映射124中没有键,并且因此被认为是(通过它们的缺少)被隐式地指示为“已分配”。如果针对键搜索映射并且未找到键,则存储系统将键视为“存在”于映射中。
图3示出了用于搜索稀疏分配映射的过程。如果在步骤150处,分配器114例如接收针对keyN的查询,则在步骤152处,分配器114针对keyN搜索分配映射124,可能遍历搜索树或其他类型的数据结构,直到搜索算法确定keyN是否存在于分配映射124中。如果搜索键keyN被找到,则在步骤154处,分配器114返回对应的块没有被分配的指示(或者备选地,块的分配状态可以取决于与keyN相关联的值,诸如位图中的位)。如果搜索键keyN未被找到,则在步骤156处,分配器114返回对应的块已被分配的指示。总之,稀疏搜索索引的想法是,在索引中未被显式地表示的键被认为存在于索引中,除了下面讨论的其他益处之外,其导致更紧凑的索引。
图4示出了用于实现分配映射或索引的示例稀疏B+树124A。图4中的示例的命名空间(或键空间)被表示为键和位数目的组合。每个键/叶子表示一大块(a chunk of)块并且存储位图,该位图的位分别表示大块中的各个块的分配状态。在图4的示例中,每个大块是8个块/位。每个键位组合是对应的存储单元中的所有块的命名空间中的唯一条目(块号)。在图4的示例中,假定基于零的索引,键9的位图中的第4位(位#3)表示块号67;((9-1)*8)+(3)。
B+树是公知的数据结构,并且用于构造和维持非稀疏B+树的算法是已知的,并且如本文中描述的,可以适于实现稀疏B+树。以与搜索其他B+树相同的方式搜索稀疏B+树124A。假定正在查询块号67的存在,针对块号67的位图将被存储在具有键9的叶子处。从根节点处开始(可能通过读取一条全局元数据108而被找到),比较键9与根节点中的键值13和23来选择要搜索的子节点。由于9小于根节点中的键值13,因此跟随根节点中的“左”13的子节点,并且然后搜索节点A。由于搜索键9在节点A中的键值7和11之间,因此搜索中间子节点E-并且找到键9。读取键9的位图,并且发现第4位为“1”,从而致使当前分配了块号67。如果已经搜索了块号66,则键9'位图中的第3位为“0”,并且块号66将被视为当前未分配。如果叶子键或节点的位图达到指示所有对应的块被分配的状态,则删除键或节点,如由节点F所示。
其他寻址方案可以与搜索树结合被使用。例如,如图5所示,叶子可以存储区段而不是位图。图5中的节点D具有与图4中的节点D相同的信息,但是被设置为“1”的位由区段而不是位图描述。每个区段表示已分配的块的运行。链表也可以被用于表示块。为了便于讨论,将参考通用“键”来描述修复技术,其中理解键映射到各个块。可以假定区段、位数或其他细粒度块标识信息。在另一实施例中,每个块号被表示为B+树叶中的完整键。
图6示出了如何计算分配映射的完整性值并且将其用于检测数据损坏。如图4所示,可以为分配映射/索引的每个元素或者为分配映射的任意部分存储完整性值。为了讨论,将使用校验和、特别是循环冗余校验(CRC)作为示例性完整性值。然而,可以使用其他类型的完整性代码,例如纠错码、散列函数等。
在图4中表示为CRCN的每个完整性值对应于分配映射的不同部分。在B+树的情况中,每个树节点具有在节点上计算并且存储在其父节点中的CRC。每个节点与其相关联地存储其子节点的CRC。对于其他类型的分配映射或索引,其不同的子单元可以按照覆盖分配映射的结构和实质内容的任何方式进行校验和。可以针对节点的整个内容计算节点的CRC,包括至少其子指针、键,并且在叶节点的情况中,包括其实质内容(项)。在更新B+树时,完整性值保持最新。例如,如果在键9的位图中改变了位,则重新计算节点E的CRC(CRCE)并且将其存储在父节点A中。因为节点A已经改变(CRCE的新值),所以也必须重新计算CRCA,依此类推,直到根节点。在添加、删除、更新、合并、拆分等节点时,必须同样重新计算CRC;对节点内容的任何改变都会导致重新计算受影响的CRC。
返回图6,当搜索分配映射以获取某个键K时,在步骤170处,测试根节点的完整性。根节点的CRC可以被存储在单独的全局元数据项中(图4中的CRCN)。计算根节点的当前CRC并且将其与存储的根CRCN比较,并且如果它们相等,则在步骤172处,搜索通过为键K(例如,节点A)选择适当的子节点来正常进行。在步骤174处,通过计算子节点的CRC并且将其与存储在父/根节点中的CRC(例如,CRCA)比较来检查所选择的子/中间节点的完整性。该检查以递归方式继续,直到在步骤176处确定对于键K不存在叶节点,在这种情况中,搜索返回存在键K的指示。如果叶节点包含键K,则类似地检查叶节点的完整性。
在另一实施例中,维持另外的全局结构以跟踪存储单元中的哪些块具有完整性值(例如,校验和)以及哪些不具有完整性值。这种校验和结构具有与本文中描述的稀疏分配映射类似的稀疏表示行为,因为缺失范围表示缺失范围中的所有块都具有校验和。尽管所表示/索引的数据不同,但是本文中描述的用于实现稀疏分配映射的相同技术可以用于实现稀疏校验和映射或索引。在一个实施例中,可以分配块,但是块没有校验和,但是如果块具有校验和,则还必须分配块。
图7示出了如何在保持用于服务于在线存储单元的同时修复存储单元的分配映射124/124B。图7的过程可以由存储系统执行。参考图7讨论的分配功能可以与要存储或查询的任何类型的数据的分配有关,包括全局元数据、用户数据、结构化数据对象、存储元数据、或存储系统的任何其他分配请求。
在步骤190处,确定分配映射的一部分损坏(分配映射124的粗体部分)。该部分可以通过任何信息来标识,诸如分配映射的不一致或错误的结构、支持媒体的失败、完整性值的失败等。在搜索树的情况中,可以检测损坏的子树,如上所述。索引/名称空间的子空间损坏的指示就足够了。
在步骤192处,修改或补充分配映射124(分配映射124B)以指示损坏部分被分配。也就是说,以适合于所使用的分配映射类型的任何方式,由分配映射的损坏部分表示的块从被认为是未分配的块池中取出。对于稀疏类型的分配映射,其中不存在于映射中的键在逻辑上被视为已分配,步骤192可以仅涉及在逻辑上删除损坏部分中的任何键(或键范围/区段)。如果使用B+树,则可以删除或标记损坏节点。如果节点是中间节点,则自然删除其作为根的子树,并且有效地分配与损坏节点相关联的命名空间的相应部分。在图7的示例中,将删除从key1到key3的分配映射的部分。或者,对于图4所示的示例,如果发现节点A已经损坏,则将其删除,并且然后节点A的键空间的所有键(每个根节点0到13)将被视为要分配。由节点D和E中的位图表示的所有块(包括先前设置为“0”(空闲)的那些块)将被隐式地分配。由于分配映射的一部分损坏,因此可能无法确切地知道哪些键受到影响,因此在实践中,可能存在于损坏部分中的所有键都将被视为已分配。损坏部分可以是从最低可能损坏键到最高可能损坏键(例如,B+树节点中的键范围)的所有键的范围。
为了跟踪分配映射的损坏部分以用于稍后的离线重建,可以使用标记来更新已删除节点的父节点以指示子节点被删除。例如,在图4中,节点A的子指针可以从指向节点A(节点A的位置)改变为具有预定义值,诸如空、-1等,按照惯例表示损坏的子节点。当离线修复过程遍历分配树时,可以检测这种标记,这又可以触发分配映射的离线重建。或者,可以设置相关全局元数据中的标志以指示分配映射需要修复,并且当存储单元离线时,可以进行修复。
如果正在使用非稀疏分配映射并且跟踪显式分配(未在映射中描述未分配的块),则可以使用其他修改。例如,可以将损坏范围标记为保留(不能授予新的分配),或者,作为另一种形式的保留,可以就地覆盖状态以使其保持一致。这些操作可以直接在结构之上执行,也可以被存储在用作间接层的其他结构中。但是,因为已知分配映射已经损坏,所以用于修复分配映射的任何技术都应当避免分配块的需要,因为存储数据的块可能被错误地分配用于修复;块中的实际数据可能会被覆盖。例如,为了跟踪分配映射损坏,可以保留(预分配)相关存储单元的一部分。该技术还可以用于稀疏分配映射,并且可以允许存储分配映射的损坏部分的记录并且稍后通过使用元数据来重建底层数据并且标识它存储在哪些块上来将该记录用于分配映射的离线修复。例如,如果存储系统是文件系统管理器,则可以按照只读模式重建文件系统以标识所有分配的块并且将其捕获到新的分配映射中。
在步骤194处,当相关存储单元及其结构化数据保持在线时,继续使用经修改或补充的分配映射124B。在步骤196处,如果分配器114接收到对于块分配的请求,则选择来自经修改/补充的分配映射124B的未损坏部分的键/块,并且然后将其标记为已分配(例如,key0)。如果分配器接收到关于key5的查询,则分配器应答key5被分配。如果分配器接收到关于key6的查询,则分配器指示key6未分配。因此,即使经修改/补充的分配映射124B损坏,它仍然是完全起作用的。在步骤198处,如果请求key3的分配,则分配器拒绝该请求,即使在损坏之前,key3尚未分配。可以看出,将分配映射124/124B的一部分视为由于其已经被破坏而被分配可以使一些空块不在流通中,但是它还允许在线修复以使分配映射保持服务。
此外,可以使用任何类型的分配映射。稀疏索引将方便使用。当以分配映射的部分被认为隐式分配的方式实现分配映射时,则可以删除分配映射的一部分。简而言之,当发现分配映射的一部分被破坏时,更新或补充损坏部分,从而使得有效地保护分配映射的受影响部分免于被新分配。
图8示出了另一分配映射修复过程。可以在相关存储单元保持在线的同时执行图8中的过程。例如,文件系统或数据库可以在图8所示的所有步骤中在线。当分配器114接收到更新给定键的请求时,在步骤200处,在搜索分配映射时检测校验和不匹配。调用修复过程202,并且根据结果和更新类型,在步骤204处返回成功或失败。修复过程202可以包括寻找分配映射的损坏部分的副本的初始步骤206。例如,可以访问镜像或RAID驱动器、备份、检查点或存储损坏部分的副本的任何其他源,并且将其用于覆盖分配映射的损坏部分。如果成功,则允许更新操作正常进行并且返回成功。然而,如果没有可用的备份数据,则在步骤208处使用任何先前描述的用于隔离分配映射的损坏部分的技术。在步骤210处,如果需要,更新完整性值。如果更新是将键设置为“已分配”(“1”),则可以在步骤204处将更新请求应答为真/成功。
类似地,如果分配器114在步骤212处接收到查询键的请求,并且检测到损坏,则调用相同的修复过程202。在步骤214处,如果步骤206的基于副本的修复成功,则返回值取决于副本中的键值。如果在步骤206处的基于副本的修复不成功,则根据使得分配映射的损坏部分全部“分配”的修复步骤,查询被应答为“真”,即,查询的键/块被视为已分配,而无论键/块的预先破坏的地面实况状态如何。
图8还示出了监测器过程216。虽然可以在针对分配映射的普通分配相关操作期间检查分配映射的完整性,但是替代地或附加地,通过扫描分配映射(例如,行走B+树),可以独立于分配相关活动来执行完整性检查扫描。在步骤218处,遍历分配映射。在步骤220处,如果找到损坏,则调用修复过程202。
在一个实施例中,使用一些全局元数据来帮助更新稀疏分配映射可能是有用的。全局元数据可能指示相关存储单元或卷的大小。因此,当发现分配映射已经损坏时,可以使用全局元数据来理解分配映射的完整命名空间。也就是说,可以从全局元数据得出分配命名空间的范围。因此,如果在分配命名空间的上限附近存在损坏,则可以更新分配映射以指示从损坏的最低点到最大块名称或键的块处于已分配状态。
通常,存储系统可以使用的包含关于另一全局结构的部分或完整(冗余)信息的任何数据可以被用于修复所标识的损坏。使用的数据类型(或部分信息)将取决于特定的存储系统。在分配器的情况中,可以存在另一表,诸如容器表,该表存储在相关存储单元的给定区域中分配了多少块。如果容器表指出所有群集在给定区域内都是空闲的,则不需要“泄漏”分配器的该区域中的空间,损坏范围内的所有内容都可以基本上标记为已分配,除了被描述为在容器表中完全空闲的范围。
为了计数到块(通常在下面讨论引用计数),如果区域被破坏,则整个区域可以被描述为具有最大引用计数。然而,可以知道在分配器中将损坏范围内的各个子范围标记为空闲,在这种情况中,可以为范围存储零的引用计数,并且可以仅为被标记为在分配器结构中分配的那些设置最大引用计数。
在一些情况中,如果系统的最终状态保持一致,则可以用最少的或没有附加信息来重建整个结构。例如,如果表存储上次安装时间和一些附加的卷特定的参数(例如,启用/禁用某些功能),如果结构变为损坏,则可以利用默认值被重新创建和填充,从而可能会丢失原始语义,但是保持卷在线。
这些仅是当可以从其他结构得出附加信息时如何提高修复的效率/质量的几个示例。
图9示出了用于处理损坏的引用计数树238的修复技术。很多存储系统跟踪针对存储的对象当前打开了多少引用。例如,对于文件系统,可以跟踪对各个文件的引用的数目。如果存储系统是数据库,则可以跟踪引用计数以获取对表、记录或其他对象的引用。引用计数可以被存储在单独的树或数据结构中,或者被存储在组织引用的对象(例如,文件系统树)的存储元数据中。可以使用上述任何损坏检测技术。在步骤240处,检测引用计数数据中的损坏。在步骤242处,将受影响部分中的引用计数全部设置为最大引用计数值,并且在步骤244处,标记引用计数数据以用于稍后的离线修复。
如果使用非稀疏引用计数数据结构,例如B+树,其中仅表示具有活动引用的块、对象、文件等,则修复可能需要更新引用计数命名空间的整个可能被破坏的部分。也就是说,如果发现节点已经损坏,因为整个节点的子树必须被认为是损坏的,仅仅更新现有节点可能是不够的。而是,确定潜在损坏的最大范围,并且更新引用计数树238以明确地添加相关范围的键空间损坏的表示。可能需要插入新节点,其值填充损坏范围,从而使得损坏范围中的每个键具有最大引用计数。
返回到图9,一旦修复了引用计数树238,一些引用计数相关操作就可以正常进行或者具有对于请求者有用的结果。例如,如果在步骤246处客户端请求新引用,则在步骤248处,存储系统确定已经达到最大引用并且拒绝对新引用的请求。虽然某些功能可能会丢失,但相关的存储单元仍然可用。如果在步骤250处,客户端请求递减特定键的引用计数,例如,当关闭文件描述符时,则系统能够安全地递减引用计数,并且在步骤252处向客户端通知请求已经完成。
尽管上面已经描述了对文件系统对象的引用计数,但是可以容易地将相同的技术扩展到计数对文件系统的块的引用。
图10示出了可以在其上实现上述实施例的计算设备450的细节。本文中的技术公开构成了足够信息以用于程序员编写软件和/或配置可重新配置的处理硬件(例如,FPGA)和/或设计专用集成电路(ASIC)等,以在一个或多个计算设备450上运行,以用于实现本文中的技术公开中描述的任何特征或实施例。
计算设备450可以具有显示器452、网络接口454、以及存储硬件456和处理硬件458,其可以是以下中的任何一个或多个的组合:中央处理单元、图形处理单元、模数转换器、总线芯片、FPGA、ASIC、专用标准产品(ASSP)或复杂可编程逻辑器件(CPLD)等。存储硬件456可以是磁存储器、静态存储器、易失性存储器、非易失性存储器、光学或磁性可读物质等的任何组合。本文中使用的术语“存储”的含义不是指代信号或能量本身,而是指代物理装置和物质状态。计算设备450的硬件元件可以按照计算领域中充分理解的方式进行协作。另外,输入设备可以与计算设备450集成或者与计算设备450通信。计算设备450可以具有任何形状因子,或者可以用在任何类型的包围设备中。计算设备450可以是手持设备的形式,诸如智能手机、平板计算机、游戏设备、服务器、机架安装或背板板载计算机、片上系统等。
上面讨论的实施例和特征可以按照被存储在易失性或非易失性计算机或设备可读存储硬件中的信息的形式而被实现。这被认为至少包括存储硬件,诸如光存储器(例如,光盘只读存储器(CD-ROM))、磁存储硬件、闪存只读存储器(ROM)等。存储在存储硬件中的信息可以是机器可执行指令(例如,编译的可执行二进制代码)、源代码、字节代码、或具有物理状态的任何其他物理硬件的形式,该物理状态可以将信息传送到处理硬件以启用或配置计算设备以用于执行上述各种实施例。这也被认为至少包括易失性存储器(诸如随机存取存储器(RAM)和/或虚拟存储器,其存储诸如执行实施例的程序的执行期间的中央处理单元(CPU)指令等信息)以及非易失性介质(其存储允许加载和执行程序或可执行文件的信息)。可以在任何类型的计算设备上执行实施例和特征,包括便携式设备、工作站、服务器、移动无线设备等。
Claims (15)
1.一种由处理硬件和存储硬件执行的方法,所述方法包括:
执行存储系统,所述存储系统管理在基于块的存储单元上被分层的结构化数据,所述结构化数据被存储在所述存储单元的块中,所述管理包括在所述存储单元的所述块中的一个或多个块中维持分配映射以跟踪所述存储单元中的所述块中的哪些块当前已经被分配用于存储所述结构化数据的部分;
在所述存储单元在线并且在所述结构化数据在线并且可访问用于经由所述存储系统更新所述结构化数据时:
由所述存储系统使用所述分配映射以分配块以用于存储所述结构化数据的部分,以及从存储所述结构化数据的部分解除分配块,其中使用所述分配映射以分配块包括:(i)根据所述分配映射来标识可自由被分配用于存储所述结构化数据的部分的块,以及(ii)更新所述分配映射以指示所标识的所述块被分配用于存储所述结构化数据的部分;
确定所述分配映射的一部分损坏,并且基于所述分配映射的所述一部分损坏的确定,更新所述分配映射以指示与所述分配映射的损坏部分对应的块当前被分配用于存储所述结构化数据的部分,这使得未存储所述结构化数据的部分的至少一些块在所述分配映射中被指示为存储所述结构化数据的部分。
2.根据权利要求1所述的方法,其中所述存储系统包括文件系统管理器,所述结构化数据包括文件系统,所述存储单元包括由所述文件系统管理器管理的存储卷,并且所述映射包括校验和映射或分配映射,所述校验和映射跟踪哪些块具有校验和,所述分配映射跟踪哪些块已经被分配。
3.根据权利要求1所述的方法,其中所述存储系统包括数据库引擎,所述结构化数据包括由所述数据库引擎管理的数据库,所述存储单元包括页面文件,并且所述映射包括分配映射,所述分配映射指示那些块已经被分配以用于存储所述数据库。
4.根据权利要求1所述的方法,其中所述分配映射包括稀疏数据结构,所述稀疏数据结构显式地表示未被分配用于存储所述结构化数据的部分的块,并且隐式地表示被分配用于存储所述结构化数据的部分的块,其中未被显式地表示在所述分配映射中的任何块由所述存储系统视为当前被分配用于存储所述结构化数据的部分。
5.根据权利要求4所述的方法,其中所述分配映射包括B+树,其中更新所述分配映射以指示与所述映射的所述损坏部分对应的块当前被分配用于存储所述结构化数据的部分包括逻辑地或物理地删除所述B+树的节点,并且其中删除所述节点使得与所述分配映射的损坏部分对应的至少一些块在它们未实际存储所述结构化数据的部分时被指示为存储所述结构化数据的部分。
6.根据权利要求1所述的方法,其中所述分配映射包括所述分配映射的各个部分的校验和,并且其中所述部分损坏的所述确定包括将所述部分的存储的校验和与所述部分的计算的校验和比较。
7.根据权利要求1所述的方法,还包括存储所述分配映射需要修复的指示,并且在所述存储单元和/或所述结构化数据离线时,使用所述结构化数据构建新分配映射以用于哪些块被分配用于存储所述结构化数据的部分的指示。
8.根据权利要求1所述的方法,其中损坏的所述确定在所述分配映射正被用于查询块是否已经被分配用于存储所述结构化数据的部分、请求块被指定为被分配用于存储所述结构化数据的部分或者块被指定为未被分配用于存储所述结构化数据的部分时被进行。
9.根据权利要求1所述的方法,其中所述分配映射跟踪针对全局元数据和存储元数据的块的分配,所述全局元数据包括所述存储单元的属性,所述存储元数据指示所述结构化数据的结构。
10.根据权利要求1所述的方法,其中在所述存储系统被配置为搜索所述分配映射以确定针对块的键是否存在于所述分配映射中,并且所述存储系统还被配置为如果所述键未在所述分配映射中被找到则将所述块视为被分配用于存储所述结构化数据的部分。
11.一种计算设备,包括:
处理硬件;
存储硬件,所述存储硬件被通信地耦合到所述处理硬件,所述存储硬件包括由存储系统分段为块的存储单元,所述存储硬件存储被配置为使得所述处理硬件执行以下各项的信息:
所述存储系统,所述存储系统被配置为通过将结构化数据存储在所述存储单元的所述块中来组织和维持所述结构化数据,所述存储系统被配置为通过跟踪所述块中的哪些块具有属性来管理所述结构化数据,所述属性包括被分配用于存储所述结构化数据的部分,所述结构化数据包括由所述存储系统管理的对象;
所述存储系统还被配置为在所述存储单元上维持映射并且在服务于来自所述存储系统的请求时,使用所述映射以:(i)将块指定为具有所述属性,(ii)将块解除指定为具有所述属性,以及(iii)查询块的属性状态,其中所述存储系统通过更新所述映射以反映块的指定和解除指定来维持所述映射,所述映射包括所述存储单元的块的键的描述;
所述映射;
完整性数据,所述完整性数据包括针对所述映射的各个部分的完整性值,每个完整性值被配置为被用于确定所述映射的相应部分是否损坏;并且
所述存储系统还被配置为,在服务于分配请求时,检查具有相应完整性值的所述映射的部分的完整性以标识所述映射的损坏部分,并且基于标识所述损坏部分,更新所述映射以使得所述映射指示与所述损坏部分对应的所述块的集合具有所述属性。
12.根据权利要求11所述的计算设备,其中所述存储系统包括文件系统,并且所述存储单元包括文件系统卷,所述文件系统卷被配置为由文件系统管理器管理。
13.根据权利要求12所述的计算设备,其中所述映射包括所述块的索引,并且所述存储系统包括分配器,所述分配器被配置为在分配块以存储所述结构化数据的部分时,针对标识块的键来搜索所述索引。
14.根据权利要求11所述的计算设备,其中所述存储系统还被配置为计算针对所述映射的新完整性值以使得能够检查更新的所述映射的完整性。
15.根据权利要求14所述的计算设备,其中所述映射包括树,所述树包括父节点和所述父节点的子节点,所述损坏部分包括所述子节点,并且所述新完整性值对应于所述父节点。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662362540P | 2016-07-14 | 2016-07-14 | |
US62/362,540 | 2016-07-14 | ||
US15/277,089 US10733045B2 (en) | 2016-07-14 | 2016-09-27 | Online repair of metadata for structured data including file systems |
US15/277,089 | 2016-09-27 | ||
PCT/US2017/040571 WO2018013378A1 (en) | 2016-07-14 | 2017-07-03 | Online repair of corrupted data blocks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109478159A CN109478159A (zh) | 2019-03-15 |
CN109478159B true CN109478159B (zh) | 2021-12-03 |
Family
ID=60941027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780043371.XA Active CN109478159B (zh) | 2016-07-14 | 2017-07-03 | 损坏数据块的在线修复 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10733045B2 (zh) |
EP (1) | EP3485377A1 (zh) |
CN (1) | CN109478159B (zh) |
WO (1) | WO2018013378A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201709499D0 (en) * | 2017-06-15 | 2017-08-02 | Microsoft Technology Licensing Llc | Memory management in non-volatile memory |
US10990486B2 (en) * | 2019-04-30 | 2021-04-27 | EMC IP Holding Company LLC | Data storage system with repair of mid-level mapping blocks of internal file system |
US11269716B2 (en) * | 2019-05-13 | 2022-03-08 | Microsoft Technology Licensing, Llc | Self-healing operations for root corruption in a file system |
US11514027B2 (en) * | 2019-06-07 | 2022-11-29 | Sap Se | Paged hybrid LOBs |
US20210042268A1 (en) * | 2019-08-05 | 2021-02-11 | International Business Machines Corporation | Maintaining metadata consistency of a mounted file system during runtime |
US11436101B2 (en) * | 2019-09-19 | 2022-09-06 | Samsung Electronics Co., Ltd. | Rebuild directory/block allocation map from embedded data block information in file system disk |
CN111382162B (zh) * | 2020-04-02 | 2023-09-05 | 安徽睿极智能科技有限公司 | 一种基于ai数据的结构化存储介质及其介质的读写方法 |
CN112162876B (zh) * | 2020-09-18 | 2024-08-13 | 北京浪潮数据技术有限公司 | 一种元数据修复方法、装置、设备及介质 |
CN112732188A (zh) * | 2021-01-06 | 2021-04-30 | 北京同有飞骥科技股份有限公司 | 基于分布式存储逻辑卷id分配效率的优化方法及系统 |
US11983147B2 (en) * | 2021-06-02 | 2024-05-14 | International Business Machines Corporation | Deduplicating data integrity checks across systems |
US20240104085A1 (en) * | 2022-09-27 | 2024-03-28 | Magnet Forensics Inc. | Computer system and method for evaluating integrity and parsing of a file system and parsing implementation |
CN117472290B (zh) * | 2023-12-27 | 2024-03-22 | 苏州元脑智能科技有限公司 | 存储数据的修复方法、装置、系统、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1650267A (zh) * | 2002-04-25 | 2005-08-03 | 甲骨文国际公司 | 增强数据完整性的检验装置 |
EP1594062A2 (en) * | 2004-04-30 | 2005-11-09 | Microsoft Corporation | Real-time and non disruptive file system repairs |
CN101187948A (zh) * | 2007-12-20 | 2008-05-28 | 中国科学院计算技术研究所 | 一种持续数据保护系统及其实现方法 |
CN101414277A (zh) * | 2008-11-06 | 2009-04-22 | 清华大学 | 一种基于虚拟机的按需增量恢复容灾系统及方法 |
CN102160030A (zh) * | 2008-09-19 | 2011-08-17 | 微软公司 | 对于数据存储的写通信的聚集 |
CN102385535A (zh) * | 2010-08-31 | 2012-03-21 | 苹果公司 | 处理从非易失性存储器进行设备引导期间的错误 |
CN103874980A (zh) * | 2011-08-16 | 2014-06-18 | 净睿存储股份有限公司 | 存储系统中的映射 |
CN104919451A (zh) * | 2012-12-19 | 2015-09-16 | 卓普网盘股份有限公司 | 用于与在线存储系统的数据同步的应用编程接口 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208999B1 (en) | 1996-12-12 | 2001-03-27 | Network Associates, Inc. | Recoverable computer file system with a signature area containing file integrity information located in the storage blocks |
US7055063B2 (en) * | 2000-11-14 | 2006-05-30 | International Business Machines Corporation | Method and system for advanced restart of application servers processing time-critical requests |
US8452929B2 (en) * | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US8495111B1 (en) | 2007-09-28 | 2013-07-23 | Symantec Corporation | System and method of hierarchical space management for storage systems |
US8271751B2 (en) * | 2008-04-24 | 2012-09-18 | Echostar Technologies L.L.C. | Systems and methods for reliably managing files in a computer system |
US7917803B2 (en) * | 2008-06-17 | 2011-03-29 | Seagate Technology Llc | Data conflict resolution for solid-state memory devices |
US8037345B1 (en) | 2010-03-31 | 2011-10-11 | Emc Corporation | Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata |
US8554741B1 (en) * | 2010-06-16 | 2013-10-08 | Western Digital Technologies, Inc. | Timeline application for log structured storage devices |
US8407265B1 (en) | 2010-11-19 | 2013-03-26 | Emc Corporation | Hierarchical mapping of free blocks of cylinder groups of file systems built on slices of storage and linking of the free blocks |
US9158605B2 (en) * | 2010-12-01 | 2015-10-13 | Microsoft Technology Licensing, Llc | Method, system and device for validating repair files and repairing corrupt software |
US8607099B2 (en) | 2010-12-17 | 2013-12-10 | Microsoft Corporation | Online fault verification in a file system |
US9342405B2 (en) | 2011-02-25 | 2016-05-17 | Seagate Technology Llc | Hierarchical data compression testing |
US9043280B1 (en) | 2011-08-15 | 2015-05-26 | Symantec Corporation | System and method to repair file system metadata |
US8856090B1 (en) * | 2012-03-20 | 2014-10-07 | Amazon Technologies, Inc. | Client-based computation of checksums for product information |
US9542401B1 (en) * | 2012-03-30 | 2017-01-10 | EMC IP Holding Company LLC | Using extents of indirect blocks for file mapping of large files |
US8612382B1 (en) | 2012-06-29 | 2013-12-17 | Emc Corporation | Recovering files in data storage systems |
US8782005B2 (en) | 2012-12-12 | 2014-07-15 | Storagecraft Technology Corporation | Pruning previously-allocated free blocks from a synthetic backup |
US9547549B2 (en) | 2013-01-16 | 2017-01-17 | Microsoft Technology Licensing, Llc | Handling file system corruption |
US9146853B2 (en) | 2013-03-28 | 2015-09-29 | Microsoft Technology Licensing, Llc | Managing capacity of a thinly provisioned storage system |
US9715507B2 (en) | 2013-03-28 | 2017-07-25 | Ctera Networks, Ltd. | Techniques for reconciling metadata and data in a cloud storage system without service interruption |
US9552382B2 (en) | 2013-04-23 | 2017-01-24 | Exablox Corporation | Reference counter integrity checking |
US9152353B1 (en) | 2013-09-30 | 2015-10-06 | Emc Corporation | Verifying the consistency of slice allocation metadata |
WO2015116023A1 (en) | 2014-01-28 | 2015-08-06 | Hewlett-Packard Development Company, L.P. | Online file system metadata analysis and correction |
US9798631B2 (en) | 2014-02-04 | 2017-10-24 | Microsoft Technology Licensing, Llc | Block storage by decoupling ordering from durability |
US9152507B1 (en) * | 2014-09-05 | 2015-10-06 | Storagecraft Technology Corporation | Pruning unwanted file content from an image backup |
US9606865B2 (en) * | 2015-02-23 | 2017-03-28 | Sandisk Technologies Llc | Method and apparatus for configuring a memory device |
-
2016
- 2016-09-27 US US15/277,089 patent/US10733045B2/en active Active
-
2017
- 2017-07-03 CN CN201780043371.XA patent/CN109478159B/zh active Active
- 2017-07-03 EP EP17739823.7A patent/EP3485377A1/en active Pending
- 2017-07-03 WO PCT/US2017/040571 patent/WO2018013378A1/en unknown
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1650267A (zh) * | 2002-04-25 | 2005-08-03 | 甲骨文国际公司 | 增强数据完整性的检验装置 |
EP1594062A2 (en) * | 2004-04-30 | 2005-11-09 | Microsoft Corporation | Real-time and non disruptive file system repairs |
CN101187948A (zh) * | 2007-12-20 | 2008-05-28 | 中国科学院计算技术研究所 | 一种持续数据保护系统及其实现方法 |
CN102160030A (zh) * | 2008-09-19 | 2011-08-17 | 微软公司 | 对于数据存储的写通信的聚集 |
CN101414277A (zh) * | 2008-11-06 | 2009-04-22 | 清华大学 | 一种基于虚拟机的按需增量恢复容灾系统及方法 |
CN102385535A (zh) * | 2010-08-31 | 2012-03-21 | 苹果公司 | 处理从非易失性存储器进行设备引导期间的错误 |
CN103874980A (zh) * | 2011-08-16 | 2014-06-18 | 净睿存储股份有限公司 | 存储系统中的映射 |
CN104919451A (zh) * | 2012-12-19 | 2015-09-16 | 卓普网盘股份有限公司 | 用于与在线存储系统的数据同步的应用编程接口 |
Non-Patent Citations (2)
Title |
---|
On-Demand Block-Level Address Mapping in Large-Scale NAND Flash Storage Systems.pdf;Renhai Chen .etal;《IEEE TRANSACTIONS ON COMPUTERS》;20150630;第64卷(第6期);1729-1741页 * |
面向大数据分析的分布式文件系统关键技术;周江 等;《计算机研究与发展》;20141231;第51卷(第2期);382-394页 * |
Also Published As
Publication number | Publication date |
---|---|
CN109478159A (zh) | 2019-03-15 |
WO2018013378A1 (en) | 2018-01-18 |
US10733045B2 (en) | 2020-08-04 |
US20180018218A1 (en) | 2018-01-18 |
EP3485377A1 (en) | 2019-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478159B (zh) | 损坏数据块的在线修复 | |
US11010075B2 (en) | Apparatus and method for using fields in N-space translation of storage requests | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
US8214400B2 (en) | Systems and methods for maintaining distributed data | |
US7917474B2 (en) | Systems and methods for accessing and updating distributed data | |
US10565125B2 (en) | Virtual block addresses | |
US9715505B1 (en) | Method and system for maintaining persistent live segment records for garbage collection | |
US8539148B1 (en) | Deduplication efficiency | |
US9594674B1 (en) | Method and system for garbage collection of data storage systems using live segment records | |
US8953265B1 (en) | Method and system for monitoring disk reliability with global disk scrubbing | |
US9405761B1 (en) | Technique to determine data integrity for physical garbage collection with limited memory | |
US10489240B2 (en) | Efficient detection of corrupt data | |
US10430273B2 (en) | Cache based recovery of corrupted or missing data | |
US20170212919A1 (en) | Bottom-up dense tree repair technique | |
US7526622B1 (en) | Method and system for detecting and correcting data errors using checksums and replication | |
US7996370B2 (en) | System restoration apparatus and method for management of dependencies, ordering sensitivities, and database index rebuilds | |
Xu et al. | Building a fast and efficient LSM-tree store by integrating local storage with cloud storage | |
US7412450B1 (en) | Method and apparatus for identifying tampering of data in a file system | |
US11880584B2 (en) | Reverse range lookup on a unified logical map data structure of snapshots | |
US7281188B1 (en) | Method and system for detecting and correcting data errors using data permutations | |
US20230325352A1 (en) | Systems and methods for race free and efficient segment cleaning in a log structured file system using a b+ tree metadata store | |
US20230195576A1 (en) | Resumable copy-on-write (cow) b+tree pages deletion |
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 |