CN105830041B - 元数据的恢复方法及装置 - Google Patents

元数据的恢复方法及装置 Download PDF

Info

Publication number
CN105830041B
CN105830041B CN201480048298.1A CN201480048298A CN105830041B CN 105830041 B CN105830041 B CN 105830041B CN 201480048298 A CN201480048298 A CN 201480048298A CN 105830041 B CN105830041 B CN 105830041B
Authority
CN
China
Prior art keywords
node
index information
destination node
destination
father
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
Application number
CN201480048298.1A
Other languages
English (en)
Other versions
CN105830041A (zh
Inventor
周钊
张田
程伟
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105830041A publication Critical patent/CN105830041A/zh
Application granted granted Critical
Publication of CN105830041B publication Critical patent/CN105830041B/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/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
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/14Details of searching files based on file 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/18File system types
    • G06F16/185Hierarchical storage management [HSM] systems, e.g. file migration or policies thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

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

Abstract

本发明公开了一种元数据的恢复方法及装置,涉及数据存储领域,用于解决当主文件和附文件均损坏时,虚拟数据读取失败的问题。所述方法包括查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。本发明主要应用与虚拟数据恢复的过程中。

Description

元数据的恢复方法及装置
技术领域
本发明涉及数据存储领域,尤其涉及一种元数据的恢复方法及装置。
背景技术
目前,虚拟化***能够为用户提供存储数据的连续逻辑空间,该逻辑空间也被称为逻辑单元号(Logical Unit Number,简称LUN)。逻辑空间上的数据块到实际物理空间的映射关系由元数据进行记载。虚拟化存储结构如图1所示,其中,元数据(meta)可以二叉树或多叉树的形式进行存储,元数据包括一个树根节点(root)和多个中间节点(node),树根(root)通过中间节点(node)指向各分支末端的中间节点(也称树叶),每个树叶分别对应一个数据节点(data),各个数据节点可位于不同的实体设备中,全部数据节点组成一个虚拟数据,数据节点的长度与其占用的存储空间大小成正比。
然而,如果元数据(Meta)出现损坏,则树根与各数据节点之间的连接将断开,导致虚拟数据读取失败。现有技术为了克服上述问题,如图2所示,将当前使用的元数据(主文件)全部进行备份,得到主文件的备份文件(附文件)。当主文件出现损坏时,通过附文件实现虚拟数据的成功读取。
在实现上述元数据恢复的过程中,发明人发现现有技术中至少存在如下问题:当主文件和附文件均损坏时,树根与各数据节点之间的连接将断开,导致虚拟数据读取失败。
发明内容
本发明提供一种元数据的恢复方法及装置,能够解决当主文件和附文件均损坏时,虚拟数据读取失败的问题。
第一方面,本发明提供了一种元数据的恢复方法,包括:
查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
结合第一方面,在所述第一方面的第一种可能的实现方式中,
所述根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
结合第一方面,在所述第一方面或所述第一方面的第一种可能的实现方式中,还提供了所述第一方面的第二种可能的实现方式,在所述第一方面的第二种可能的实现方式中,所述根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
结合第一方面,在所述第一方面或所述第一方面的第一种可能或第二种可能的实现方式中,还提供了所述第一方面的第三种可能的实现方式,在所述第一方面的第三种可能的实现方式中,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述方法还包括:
当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
根据查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
结合第一方面,在所述第一方面或所述第一方面的第一种可能或第二种可能或第三种可能的实现方式中,还提供了所述第一方面的第四种可能的实现方式,在所述第一方面的第四种可能的实现方式中,所述为每个节点添加索引信息,具体包括:
在生成每个节点时,为所述每个节点添加索引信息。
第二方面,本发明还提供了一种元数据的恢复方法,所述方法包括:
查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系。
第三方面,本发明还提供了一种元数据的恢复装置,包括:
查找单元,用于从存储单元存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
恢复单元,用于根据所述存储单元存储的相关节点记载的索引信息对所述查找单元查找的目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
结合第三方面,在所述第三方面的第一种可能的实现方式中,
所述恢复单元,具体包括:
临时节点生成子单元,用于当所述目标节点已损坏时,生成空白的临时节点,所述临时节点用于替换所述目标节点;
第一父亲节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
第一兄弟节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第一下层节点查找子单元,用于查找所述查找单元查找的所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第一孩子节点关联子单元,用于根据所述下层节点查找子单元查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
替换子单元,用于将所述目标节点替换为所述临时节点。
结合第三方面,在所述第三方面或所述第三方面的第一种可能的实现方式中,还提供了所述第三方面的第二种可能的实现方式,在所述第三方面的第二种可能的实现方式中,所述恢复单元还包括:
第二父亲节点关联子单元,用于当所述查找单元查找的所述目标节点记载的索引信息已丢失时,根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
第二兄弟节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第二下层节点查找子单元,用于查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第二孩子节点关联子单元,用于根据所述第二下层节点查找子单元查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
结合第三方面,在所述第三方面或所述第三方面的第一种可能或第二种可能的实现方式中,还提供了所述第三方面的第三种可能的实现方式,在所述第三方面的第三种可能的实现方式中,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述装置还包括:
归属节点查找单元,用于当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
所述恢复单元还用于,根据所述归属节点查找单元查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
结合第三方面,在所述第三方面或所述第三方面的第一种可能或第二种可能或第三种可能的实现方式中,还提供了所述第三方面的第四种可能的实现方式,在所述第三方面的第四种可能的实现方式中,所述添加单元具体用于:
在生成每个节点时,为所述每个节点添加索引信息。
第四方面,本发明还提供了一种元数据的恢复装置,包括:
查找单元,用于从存储单元存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
恢复单元,用于根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系。
第五方面,本发明还提供了一种元数据的恢复装置,包括:
处理器,用于从存储器存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据所述存储器存储的相关节点记载的索引信息对目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
结合第五方面,在所述第五方面的第一种可能的实现方式中,
所述处理器具体用于:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
结合第五方面,在所述第五方面或所述第五方面的第一种可能的实现方式中,还提供了所述第五方面的第二种可能的实现方式,在所述第五方面的第二种可能的实现方式中,
所述处理器具体用于:
如果所述目标节点记载的索引信息已丢失记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
结合第五方面,在所述第五方面或所述第五方面的第一种可能或第二种可能的实现方式中,还提供了所述第五方面的第三种可能的实现方式,在所述第五方面的第三种可能的实现方式中,
所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述处理器还用于:
当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
根据查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
结合第五方面,在所述第五方面或所述第五方面的第一种可能或第二种可能或第三种可能的实现方式中,还提供了所述第五方面的第四种可能的实现方式,在所述第五方面的第四种可能的实现方式中,
所述处理器还用于,在生成每个节点时,为所述每个节点添加索引信息。
第六方面,本发明还提供了一种元数据的恢复装置,所述装置包括处理器,用于从存储器存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系。
本发明提供的元数据的恢复方法及装置,在对目标节点进行恢复时,通过相关节点中记载的索引信息恢复目标节点中的索引信息,进而恢复树根与数据节点之间的连接。现有技术中,由于只是单纯的备份,且节点中未记载有索引信息,因此当某个节点损坏时,除非使用备份进行替换,否则无法恢复已损坏的节点。本发明由于为节点添加了指向其兄弟和父子的索引信息,因此当目标节点损坏时,通过目标节点的父亲节点、孩子节点以及兄弟(或表兄弟)节点中记载的索引信息,即可恢复目标节点中的索引信息,进而修复树根与各数据节点之间的连接,保证虚拟数据的成功读取。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中虚拟化存储结构示意图;
图2为现有技术中进行虚拟化数据备份的示意图;
图3为本发明实施例中第一个元数据的恢复方法的流程图;
图4为本发明实施例中虚拟化存储结构示意图;
图5为本发明实施例中虚拟化存储的二叉树结构示意图;
图6为本发明实施例中第二个元数据的恢复方法的流程图;
图7为本发明实施例中一个元数据结构示意图;
图8为本发明实施例中另一个元数据结构示意图;
图9为本发明实施例中第三个元数据的恢复方法的流程图;
图10为本发明实施例中第四个元数据的恢复方法的流程图;
图11为本发明实施例中第一个元数据的恢复装置的结构示意图;
图12为本发明实施例中第二个元数据的恢复装置的结构示意图;
图13为本发明实施例中第三个元数据的恢复装置的结构示意图;
图14为本发明实施例中第四个元数据的恢复装置的结构示意图;
图15为本发明实施例中第五个元数据的恢复装置的结构示意图;
图16为本发明实施例中第六个元数据的恢复装置的结构示意图;
图17为本发明实施例中第七个元数据的恢复装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,元数据中树根和中间节点只设置有孩子节点的索引信息,即采用的是单向索引。因此当单向索引上某个节点损坏导致树根到数据节点的链路断开时,现有技术无法对损坏的节点进行修复,进而造成虚拟数据读取失败。本发明为了克服单向索引无法恢复受损节点的问题,提供了下述方案以便实现对任意受损的节点进行恢复。
本发明实施例提供了一种元数据的恢复方法,所述方法应用于存储虚拟化***中,该虚拟化***可以是分布式***的也可以是集中式***,所述方法还可应用于磁盘阵列(Redundant Arrays of independent Disks,RAID)的管理中,如图3所示,所述方法包括:
步骤101、查找目标节点。
其中,所述目标节点已损坏或所述目标节点记载的索引信息已丢失。目标节点已损坏指其他节点无法访问到目标节点,造成目标节点访问失败。对于损坏的具体定义本发明中不做特别的限定,原因在于任何原因导致的数据无法读取均可认为是已损坏(受损)。目标节点记载的索引信息已丢失指,目标节点能够被访问,但是其中记载的索引信息已全部或部分丢失。
在步骤101之前,所述方法还包括:为每个节点添加索引信息。
其中,所述节点包括树根节点、中间节点和数据节点,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。元数据的节点用于记载索引信息,索引信息用于记录元数据的树形结构,以便达到叶子节点一一对应的数据节点,全部数据节点组成待读取的数据。
本发明实施例中,除了对元数据包含的树根节点和中间节点添加索引信息外,还对数据节点添加索引信息。由于对于树根节点、中间节点或数据节点的处理方式相同的步骤,为了方便描述方便,使用节点一词统一进行描述。索引信息是一个指向节点的指针类变量。兄弟索引信息用于指向与所述节点属于同一层且相邻的节点,通常,在二叉树中将归属于同一个父亲节点的孩子节点称为兄弟节点,将归属于不同父亲节点且相邻的节点称为表兄弟节点。父亲索引信息用于记载指向所述节点的父亲节点的指针,如果节点不是树根节点,则节点有唯一的父亲节点。孩子索引信息用于记载指向所述节点的孩子节点的指针,节点的孩子节点可以有一个或多个。元数据只要以树形结构进行存储即可,二叉树或多叉树均可采用本方法进行节点的恢复。
在树形存储结构中,如图4所示,树根节点位于最上层(第一层),与树根节点直接级联的中间节点为树根节点的下一层(第二层),以此类推第三层中间节点位于第二层中间节点的下一层,处于末端的中间节点又称树叶节点,每一个树叶节点与一个数据节点级联。
处于同一层且相邻的两个中间节点(或数据节点),不论是否归属于同一个父亲节点,均称为兄弟节点。以图4中第三层为例:如果中间节点D在中间节点E的左边,则中间节点D为中间节点E的左兄弟,同时,中间节点E为中间节点D的右兄弟;如果中间节点F在中间节点E的右边,则中间节点F为中间节点E的右兄弟,同时,中间节点E为中间节点F的左兄弟
下面给出上述索引信息的一个节点结构定义的具体实现方式:
typedef struct tagMultiDiNode_S
{
struct tagMultiDiTree_S*father;//记录父节点位置
struct tagMultiDiTree_S*rBro;//记录右兄弟节点位置
struct tagMultiDiTree_S*lBro;//记录左兄弟节点位置
struct tagMultiDiTree_S*rChild;//记录右孩子节点位置
struct tagMultiDiTree_S*lChild;//记录左孩子节点位置
}MultiDiNode_S;
其中,*father指向父节点;*rBro(right brother)指向右兄弟节点;*lBro(leftbrother)指向左兄弟;*rChild(right children)指向右孩子节点;*lChild(leftchildren)指向左孩子节点。
查找目标节点的方式为:遍历元数据的树,依次判断当前节点是否可访问,以及与当前节点级联的其他节点是否可访问,如果不可访问,则将不可访问的节点确定为目标节点。
遍历元数据的树的方式,可以为前序遍历、或后序遍历或中序遍历。以如图5所示的二叉树为例,当采用前序遍历时,如果树根不为空,则分别判断树根的左孩子节点和右孩子节点是否已损坏。具体的:将树根节点确定为当前节点,判断当前节点是否为空。如果为空,则退出;如果不为空,则判断当前节点的左孩子节点是否损坏。如果当前节点的左孩子节点损坏,则恢复当前节点的左孩子;如果当前节点的左孩子节点未损坏,则当前节点的右孩子节点是否损坏。如果当前节点的右孩子节点损坏,则恢复当前节点的右孩子;如果当前节点的右孩子节点未损坏,则退出(即没有损坏的节点)。上述遍历方法转换为代码为:
其中,funcRepairByRbro是功能函数,用于对左孩子或右孩子进行恢复,该功能函数的定义在见本发明实施例的后续描述。Traverse函数用于对树中某个节点进行访问,具体实现方式在此不做限定。
步骤102、根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复。
其中,所述相关节点包括所述目标节点的父亲节点、孩子节点和兄弟节点(即与所述节点属于同一层且相邻的节点)。所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。当所述节点有多个孩子节点时,相应的存在多个孩子索引信息,孩子索引信息与孩子节点一一对应。
在对目标节点的索引信息进行恢复时,可恢复目标节点的全部索引信息,也可先确定目标节点缺失的(或记载错误的)索引信息,再对缺失的(或记载错误的)索引信息进行恢复。
对于恢复全部索引信息的方式,如图6所示,当目标节点已损坏时,步骤102可通过下述方式进行实施:
步骤201、如果所述目标节点已损坏,则生成空白的临时节点。
所述临时节点用于替换所述目标节点;
步骤202、根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系。
在进行树的遍历时,通常是由树根向树叶方向进行遍历,如果目标节点已损坏,则从目标节点的父亲节点无法读取目标节点。可见,虽然目标节点已损坏,但是目标节点的父亲节点是可以被访问的。进而,可根据目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系。
步骤203、根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息。
步骤204、查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点。
步骤205、根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系。
步骤206、将所述目标节点替换为所述临时节点。
为了进一步说明图6所示的恢复方法,下面提供两个二叉树场景下的具体实现方式:
场景一,已损坏的目标节点为右孩子节点:
为了方便对二叉树右孩子节点的恢复流程进行理解,图7提供了一个具体的元数据结构示意图,该元数据为二叉树,树根的左右孩子分别为节点A和节点B,节点A的左右孩子分别问节点C和节点D,节点B的左右孩子分别为节点E和节点F,节点C的左右孩子分别为节点G和节点H,节点D的左右孩子分别为节点I和节点J,节点E的左右孩子分别为节点K和节点L,节点F的左右孩子分别为节点M和节点N。假设图7中目标节点为节点D。
步骤201、如果所述目标节点已损坏,则生成临时节点(tempnode)。
其中,所述临时节点用于替换所述目标节点。
如果目标节点已损坏,则需要申请一个新的(未赋值或赋初始值)的节点作为临时节点,该节点的数据结构包括tagMultiDiNode_S包含的索引信息。其中,tempnode为指向临时节点的指针。将临时节点应具有的数值全部赋值给临时节点后,使用临时节点替换目标节点,进而恢复目标节点。
步骤202a、根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系。
1)将目标节点的父亲节点的右孩子节点(fathernode->rchild)确定为所述临时节点(tempnode)。
如图7中①,由于节点D的父亲节点为节点A,因此将A的右孩子索引信息确定为指向临时节点的指针。
2)将临时节点的父亲节点(tempnode->father)确定为目标节点的父亲节点(fathernode)。
如图7中②,将临时节点的父亲索引信息确定为指向节点A的指针。
步骤203a、根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息。
步骤204a、查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点。
将下层节点(ptr)确定为目标节点的父亲节点的左孩子节点的右孩子节点的右兄弟节点(fathernode->lchild->rchild->rBro)。其中,ptr为指向下层节点的指针。
在图7中,当节点D为目标节点时,目标节点的父亲节点为节点A,目标节点的父亲节点(节点A)的左孩子节点为节点C,目标节点的父亲节点的左孩子节点(节点C)的右孩子节点为节点H,目标节点的父亲节点的左孩子节点的右孩子节点(节点H)的右兄弟节点为节点I。因此节点I为下层节点。
步骤205a、根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系。
步骤203a至步骤205a可通过下述方式进行实施:
1)将临时节点的左兄弟节点(tempnode->lBro)确定为目标节点的父亲节点的左孩子节点(fathernode->lchild)。
如图7中③,目标节点的父亲节点(节点A)的左孩子节点为节点C,因此将临时节点的左兄弟索引信息(tempnode->lBro)确定为指向节点C的指针。
2)将目标节点的父亲节点的左孩子节点的右兄弟节点(fathernode->lchild->rBro)确定为临时节点(tempnode)。
如图7中④,将目标节点的父亲节点的左孩子节点(节点C)的右兄弟索引信息确定为指向临时节点的指针。
3)将临时节点的左孩子节点(tempnode->lchild)确定为所述下层节点(ptr)。
如图7中⑤,将临时节点的左孩子索引信息确定为指向下层节点(节点I)的指针(ptr)。
4)将下层节点的父亲节点(ptr->father)确定为临时节点(tempnode)。
如图7中⑥,将下层节点(节点I)的父亲索引信息确定为指向临时节点的指针。
5)将临时节点的右孩子节点(tempnode->rchild)确定为下层节点的右兄弟节点(ptr->rBro)。
如图7中⑦,下层节点(节点I)的右兄弟节点为节点J。因此,将临时节点的右孩子索引信息(tempnode->rchild)确定为指向节点J的指针。
6)将下层节点的右兄弟节点的父亲节点(ptr->rBro->father)确定为临时节点(tempnode)。
如图7中⑧,下层节点的右兄弟节点为节点J。将节点J的父亲索引信息确定为指向临时节点的指针。
7)将临时节点的右兄弟节点(tempnode->rBro)确定为临时节点的右孩子节点的右兄弟节点的父亲节点(tempnode->rchild->rBro->father)。
如图7中⑨,临时节点的右孩子节点为节点J,临时节点的右孩子节点的右兄弟节点为节点K,临时节点的右孩子节点的右兄弟节点(节点K)的父亲节点为节点E。因此,将临时节点的右兄弟索引信息确定为指向节点E的指针。
8)将临时节点的右孩子节点的右兄弟节点的父亲节点的左兄弟节点(tempnode->rchild->rBro->father->lBro)确定为临时节点(tempnode)。
如图7中⑩,临时节点的右孩子节点的右兄弟节点的父亲节点为节点E。因此,将节点E的左兄弟索引信息确定为指向临时节点的指针。
场景一对应的代码为:
场景二,已损坏的目标节点为左孩子:
为了方便对二叉树左孩子节点的恢复流程进行理解,图8提供了一个具体的元数据结构示意图,该元数据为二叉树,树根的左右孩子分别为节点A和节点B,节点A的左右孩子分别问节点C和节点D,节点B的左右孩子分别为节点E和节点F,节点C的左右孩子分别为节点G和节点H,节点D的左右孩子分别为节点I和节点J,节点E的左右孩子分别为节点K和节点L,节点F的左右孩子分别为节点M和节点N。假设图8中目标节点为节点E。
步骤201、如果所述目标节点已损坏,则生成空白的临时节点。
所述临时节点用于替换所述目标节点。Tempnode为指向临时节点的指针。所述临时节点用于替换所述目标节点。
步骤202b、根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系。
1)将目标节点的父亲节点的左孩子(fathernode->rchild)确定为所述临时节点(tempnode)。
如图8中①,由于节点E的父亲节点为节点B,因此将B的左孩子索引信息确定为指向临时节点的指针。
2)将临时节点的父亲节点(tempnode->father)确定为所述目标节点的父亲节点(fathernode)。
如图8中②,将临时节点的父亲索引信息确定为指向节点B的指针。
步骤203b、根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息。
步骤204b、查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点。
将下层节点(ptr)确定为目标节点的父亲节点的右孩子的左孩子的左兄弟(fathernode->rchild->lchild->lBro)。其中,ptr为指向下层节点的指针。
在图8中,当节点E为目标节点时,目标节点的父亲节点为节点B,目标节点的父亲节点(节点B)的右孩子为节点F,目标节点的父亲节点的右孩子(节点F)的左孩子为节点M,目标节点的父亲节点的右孩子的左孩子(节点F)的左兄弟为节点L。因此节点L为下层节点。
步骤205b、根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系。
步骤206b、将所述目标节点替换为所述临时节点。
步骤203b至步骤205b可通过下述方式进行实施:
1)将临时节点的右兄弟节点(tempnode->rBro)确定为目标节点的父亲节点的右孩子节点(fathernode->rchild)。
如图8中③,目标节点的父亲节点(节点B)的右孩子节点为节点F,因此将临时节点的右兄弟索引信息(tempnode->lBro)确定为指向节点F的指针。
2)将目标节点的父亲节点的右孩子节点的左兄弟节点(fathernode->rchild->lBro)确定为临时节点(tempnode)。
如图8中④,将目标节点的父亲节点的右孩子节点(节点F)的左兄弟索引信息确定为指向临时节点的指针。
3)将临时节点的右孩子节点(tempnode->rchild)确定为下层节点(ptr)。
如图8中⑤,将临时节点的右孩子索引信息确定为指向下层节点(节点L)的指针。
4)将下层节点的父亲节点(ptr->father)确定为临时节点(tempnode)。
如图8中⑥,将下层节点(节点L)的父亲索引信息确定为临时节点。
5)将临时节点的左孩子节点(tempnode->lchild)确定为下层节点的左兄弟节点(ptr->lBro)。
如图8中⑦,下层节点(节点L)的左兄弟节点为节点K。因此,将临时节点的左孩子索引信息(tempnode->rchild)确定为指向节点K的指针。
6)将下层节点的左兄弟节点的父亲节点(ptr->lBro->father)确定为临时节点(tempnode)。
如图8中⑧,下层节点的左兄弟节点为节点K,将节点K的父亲索引信息确定为指向临时节点的指针。
7)将临时节点的左兄弟节点(tempnode->lBro)确定为临时节点的左孩子节点的左兄弟节点的父亲节点(tempnode->lchild->lBro->father)。
如图8中⑨,临时节点的左孩子节点为节点K,临时节点的左孩子节点(节点K)的左兄弟节点为节点J,临时节点的左孩子节点的左兄弟节点(节点J)的父亲节点为节点D。因此,将临时节点的左兄弟索引信息确定为指向节点D的指针。
8)将临时节点的左孩子节点的左兄弟节点的父亲节点的右兄弟节点(tempnode->lchild->lBro->father->rBro)确定为临时节点(tempnode)。
如图8中⑩,临时节点的左孩子节点的左兄弟节点的父亲节点为节点D。因此,将节点D的右兄弟索引信息确定为指向临时节点的指针。
场景二对应的代码为:
本发明实施例提供的元数据的恢复方法,在对目标节点进行恢复时,通过相关节点中记载的索引信息恢复目标节点中的索引信息,进而恢复树根与数据节点之间的连接。现有技术中,由于只是单纯的备份,且节点中未记载有索引信息,因此当某个节点损坏时,除非使用备份进行替换,否则无法恢复已损坏的节点。本发明由于为节点添加了指向其兄弟和父子的索引信息,因此当目标节点损坏时,通过目标节点的父亲节点、孩子节点以及兄弟(或表兄弟)节点中记载的索引信息,即可恢复目标节点中的索引信息,进而修复树根与各数据节点之间的连接,保证虚拟数据的成功读取。
对于目标节点未损坏,但目标节点记载的索引信息已丢失的情况,本发明实施例还提供了一种元数据的恢复方法,作为对上述实施例的进一步说明,步骤102、根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,具体包括:
201’、如果所述目标节点记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系。
202’、根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息。
203’、查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点。
204’、根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
本发明实施例提供的元数据的恢复方法,能够在目标节点记载的索引信息已丢失时,通过相关节点中记载的索引信息恢复目标节点中的索引信息,进而恢复树根与数据节点之间的连接。现有技术中,由于只是单纯的备份,且节点中未记载有索引信息,因此当某个节点损坏时,除非使用备份进行替换,否则无法恢复已损坏的节点。本发明由于为节点添加了指向其兄弟和父子的索引信息,因此当目标节点记载的索引信息已丢失时,通过目标节点的父亲节点、孩子节点以及兄弟(或表兄弟)节点中记载的索引信息,即可恢复目标节点中的索引信息,进而修复树根与各数据节点之间的连接,保证虚拟数据的成功读取。
上述实施例能够在树根与任意一个数据节点存在至少一条通路的情况下,对中间节点或数据节点进行恢复。发明人在实施上述方法的过程中发现,在某些极端环境下,如全部中间节点全部丢失的情况,此时按照上述实施例提供的方法无法对全部中间节点进行恢复。基于这种情况,本发明实施例还提供了一种元数据的恢复方法,结合上述实施例中提供的节点结构定义,本发明实施例在节点结构定义中添加了归属信息,所述归属信息用于描述节点归属的树,该节点结构定义具体为:
typedef struct tagMultiDiNode_S
{
unsigned long self_description[USR_DEFINED_LENGTH];//自描述信息
struct tagMultiDiTree_S*father;//记录父节点位置
struct tagMultiDiTree_S*rBro;//记录右兄弟节点位置
struct tagMultiDiTree_S*lBro;//记录左兄弟节点位置
struct tagMultiDiTree_S*rChild;//记录右孩子节点位置
struct tagMultiDiTree_S*lChild;//记录左孩子节点位置
}MultiDiNode_S;
其中,self_description为归属信息,其数据类型不限于unsigned long。
对于归属信息的具体格式,可根据使用者根据不同的使用场景进行定义,只要满足通过归属信息能够确定节点所归属的树即可。
基于上述节点结构定义,如图9所示,所述方法还包括:
步骤301、当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点。
目标树为当前被检测是否需要进行数据恢复的树。遍历存储空间中全部节点,包括树根节点、数据节点和中间节点,找到归属于目标树的归属节点。
步骤302、根据查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
根据查找出的归属节点后,按照上述实施例所述的方法对目标数中其余节点进行恢复。
本发明实施例提供的元数据的恢复方法,能够在在节点结构中添加归属信息,以对节点归属的树进行标识。当目标树中全部中间节点均损坏时,通过在查找到归属于目标树的全部归属节点,再基于查找到的归属节点对目标树进行恢复,保证在全部中间节点均损坏时,仍然可以进行恢复,进一步提高数据的可靠性。
发明人还发现,现有通过备份的方式存储元数据的方式,在进行备份的过程中,如果主文件发生变化,则备份后的附文件将于主文件存在差异。当使用附文件进行还原时,差异部分将无法被恢复。基于此,本发明实施例还提供了一种元数据的恢复方法,所述方法包括:
在生成每个节点时,为所述每个节点添加索引信息。
本发明实施例提供的元数据的恢复方法,由于无需进行备份,且在生成节点时即为节点添加索引信息,因此能够克服现有技术中附文件与主文件不符的问题,使得恢复后的数据与原数据相同,提高数据恢复效率。
发明人在使用上述方法进行元数据还原时发现,出了通过将索引信息添加到节点结构定义中,还可通过数组对各层存储的节点顺序进行保存,进而在恢复元数据时可根据数组中存储的信息进行恢复。基于上述技术构思,本发明实施例还提供了一种元数据的恢复方法,如图10所示,所述方法包括:
步骤401、查找目标节点,所述目标节点已损坏或所述目标节点记载的所以信息已丢失。
查找目标节点的方法可参照上述实施例中的实现方式。
在步骤401之前,所述方法还包括:分别为每一层节点创建一个数组,每个数组用于顺序记载一个层中节点的邻接关系。
以图4所示的元数据为例,第一层通过数组0记录为[R],第二层通过数组1记录为[A,B],第三层通过数组2记录为[C,D,E,F,G]。
步骤402、根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系。
在进行恢复时,可根据数组的角标确定节点的兄弟节点。例如:第三层中,[2,0]对应C,[2,1]对应D,[2,2]对应E,[2,3]对应F,[2,4]对应G。若目标节点为D[2,1],则将目标节点列号减1,得到目标节点的左兄弟C[2,0];将目标节点列号加1,得到目标节点的左兄弟E[2,2]。目标节点的父亲指针和孩子指针也可根据目标节点的位置推算出来,进而听过数组中的角标确定目标节点的父亲节点和孩子节点。
本发明实施例提供的元数据的恢复方法,能够通过数组的形式对处于同一层的各个节点的位置关系进行记录,与通过指针确定目标节点的兄弟节点相比,能够通过序号直接判断目标节点的兄弟节点,进而提高元数据恢复的速度。
本发明实施例还提供了一种元数据的恢复装置,如图11所示,所述装置包括:
查找单元51,用于从存储单元52存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
恢复单元53,用于根据所述存储单元52存储的相关节点记载的索引信息对所述查找单元51查找的目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点。
所述装置还包括添加单元50,用于为所述存储单元52存储的每个节点添加索引信息,所述节点包括树根节点、中间节点和数据节点,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
本发明实施例提供的元数据的恢复装置,在对目标节点进行恢复时,通过相关节点中记载的索引信息恢复目标节点中的索引信息,进而恢复树根与数据节点之间的连接。现有技术中,由于只是单纯的备份,且节点中未记载有索引信息,因此当某个节点损坏时,除非使用备份进行替换,否则无法恢复已损坏的节点。本发明由于为节点添加了指向其兄弟和父子的索引信息,因此当目标节点损坏时,通过目标节点的父亲节点、孩子节点以及兄弟(或表兄弟)节点中记载的索引信息,即可恢复目标节点中的索引信息,进而修复树根与各数据节点之间的连接,保证虚拟数据的成功读取。
进一步的,如图12所示,所述恢复单元53,具体包括:
临时节点生成子单元531,用于当所述目标节点已损坏时,生成空白的临时节点,所述临时节点用于替换所述目标节点;
第一父亲节点关联子单元532,用于根据所述查找单元51查找的所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
第一兄弟节点关联子单元533,用于根据所述查找单元51查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第一下层节点查找子单元534,用于查找所述查找单元51查找的所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第一孩子节点关联子单元535,用于根据所述第一下层节点查找子单元534查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系。
进一步的,如图13所示,所述恢复单元还包括:
第二父亲节点关联子单元536,用于当所述查找单元51查找的所述目标节点记载的索引信息已丢失时,根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
第二兄弟节点关联子单元537,用于根据所述查找单元51查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第二下层节点查找子单元538,用于查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第二孩子节点关联子单元539,用于根据所述第二下层节点查找子单元538查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
进一步的,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
如图14所示,所述装置还包括:
归属节点查找单元61,用于当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
所述恢复单元53还用于,根据所述归属节点查找单元61查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
本发明实施例提供的元数据的恢复装置,能够在在节点结构中添加归属信息,以对节点归属的树进行标识。当目标树中全部中间节点均损坏时,通过在查找到归属于目标树的全部归属节点,再基于查找到的归属节点对目标树进行恢复,保证在全部中间节点均损坏时,仍然可以进行恢复,进一步提高数据的可靠性。
进一步的,所述添加单元50还用于:
在生成每个节点时,为所述每个节点添加索引信息。
本发明实施例提供的元数据的恢复装置,由于无需进行备份,且在生成节点时即为节点添加索引信息,因此能够克服现有技术中附文件与主文件不符的问题,使得恢复后的数据与原数据相同,提高数据恢复效率。
本发明实施例还提供了一种元数据的恢复装置,如图15所示,所述装置包括:
查找单元71,用于从所述存储单元72存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
所述装置还包括数组创建单元70,用于在存储单元72中分别为每一层节点创建一个数组,每个数组用于顺序记载一个层中节点的邻接关系;
恢复单元73,用于根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点。
本发明实施例提供的元数据的恢复装置,能够通过数组的形式对处于同一层的各个节点的位置关系进行记录,与通过指针确定目标节点的兄弟节点相比,能够通过序号直接判断目标节点的兄弟节点,进而提高元数据恢复的速度。
本发明实施例还提供了一种元数据的恢复装置,如图16所示,包括:
处理器,用于从存储器82存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据所述存储器82存储的相关节点记载的索引信息对目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
所述处理器81,还用于为所述存储器82存储的每个节点添加索引信息,所述节点包括树根节点、中间节点和数据节点,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息。
本发明实施例提供的元数据的恢复装置,在对目标节点进行恢复时,通过相关节点中记载的索引信息恢复目标节点中的索引信息,进而恢复树根与数据节点之间的连接。现有技术中,由于只是单纯的备份,且节点中未记载有索引信息,因此当某个节点损坏时,除非使用备份进行替换,否则无法恢复已损坏的节点。本发明由于为节点添加了指向其兄弟和父子的索引信息,因此当目标节点损坏时,通过目标节点的父亲节点、孩子节点以及兄弟(或表兄弟)节点中记载的索引信息,即可恢复目标节点中的索引信息,进而修复树根与各数据节点之间的连接,保证虚拟数据的成功读取。
进一步的,所述处理器81具体用于:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
进一步的,所述处理器81具体用于:
如果所述目标节点记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
进一步的,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述处理器81还用于:
当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
根据查找出的所述归属节点对所述目标树的中间节点和数据节点进行恢复。
本发明实施例提供的元数据的恢复装置,能够在在节点结构中添加归属信息,以对节点归属的树进行标识。当目标树中全部中间节点均损坏时,通过在查找到归属于目标树的全部归属节点,再基于查找到的归属节点对目标树进行恢复,保证在全部中间节点均损坏时,仍然可以进行恢复,进一步提高数据的可靠性。
进一步的,所述处理器81还用于,在生成每个节点时,为所述每个节点添加索引信息。
本发明实施例提供的元数据的恢复装置,由于无需进行备份,且在生成节点时即为节点添加索引信息,因此能够克服现有技术中附文件与主文件不符的问题,使得恢复后的数据与原数据相同,提高数据恢复效率。
本发明实施例还提供了一种元数据的恢复装置,如图17所示,所述装置包括:
处理器91,用于从存储器92存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和所述与所述节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系。
所述处理器还用于,在所述存储器92中分别为每一层节点创建一个数组,每个数组用于顺序记载一个层中节点的邻接关系;
本发明实施例提供的元数据的恢复装置,能够通过数组的形式对处于同一层的各个节点的位置关系进行记录,与通过指针确定目标节点的兄弟节点相比,能够通过序号直接判断目标节点的兄弟节点,进而提高元数据恢复的速度。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (15)

1.一种元数据的恢复方法,其特征在于,包括:
查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息;
所述根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
2.根据权利要求1所述的元数据的恢复方法,其特征在于,还包括:
如果所述目标节点记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
3.根据权利要求1或2所述的元数据的恢复方法,其特征在于,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述方法还包括:
当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,所述相关节点为所述目标树的归属节点,所述目标节点包括所述目标树的中间节点和数据节点。
4.根据权利要求1所述的元数据的恢复方法,还包括:
在生成每个节点时,为所述每个节点添加索引信息。
5.一种元数据的恢复方法,其特征在于,所述方法包括:
查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述目标节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系;
所述根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点所在层对应的数组中记载的索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
6.一种元数据的恢复装置,其特征在于,包括:
查找单元,用于从存储单元存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
恢复单元,用于根据所述存储单元存储的相关节点记载的索引信息对所述查找单元查找的目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息;
所述恢复单元,具体包括:
临时节点生成子单元,用于当所述目标节点已损坏时,生成空白的临时节点,所述临时节点用于替换所述目标节点;
第一父亲节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
第一兄弟节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第一下层节点查找子单元,用于查找所述查找单元查找的所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第一孩子节点关联子单元,用于根据所述下层节点查找子单元查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
替换子单元,用于将所述目标节点替换为所述临时节点。
7.根据权利要求6所述的元数据的恢复装置,其特征在于,所述恢复单元还包括:
第二父亲节点关联子单元,用于当所述查找单元查找的所述目标节点记载的索引信息已丢失时,根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
第二兄弟节点关联子单元,用于根据所述查找单元查找的所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
第二下层节点查找子单元,用于查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
第二孩子节点关联子单元,用于根据所述第二下层节点查找子单元查找的所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
8.根据权利要求6或7所述的元数据的恢复装置,其特征在于,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述装置还包括:
归属节点查找单元,用于当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
所述恢复单元还用于,根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,其中,所述相关节点为所述目标树的归属节点,所述目标节点包括所述目标树的中间节点和数据节点。
9.根据权利要求6所述的元数据的恢复装置,其特征在于,所述装置还包括:
添加单元,用于在生成每个节点时,为所述每个节点添加索引信息。
10.一种元数据的恢复装置,其特征在于,所述装置还包括:
查找单元,用于从存储单元存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
恢复单元,用于根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述目标节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系;
所述根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点所在层对应的数组中记载的索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
11.一种元数据的恢复装置,其特征在于,包括:
处理器,用于从存储器存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据所述存储器存储的相关节点记载的索引信息对目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述目标节点属于同一层且相邻的节点,其中,所述索引信息包括指向与所述节点属于同一层且相邻的节点的兄弟索引信息、指向所述节点的父亲节点的父亲索引信息以及指向所述节点的孩子节点的孩子索引信息;
其中,所述处理器具体用于:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
12.根据权利要求11所述的元数据的恢复装置,其特征在于,所述处理器具体用于:
如果所述目标节点记载的索引信息已丢失,则根据所述目标节点的父亲节点中记载的指向所述目标节点的孩子索引信息,建立所述目标节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点中记载的其他孩子的索引信息,建立所述目标节点与所述目标节点属于同一层且相邻的兄弟节点的对应关系,所述其他孩子索引信息为所述父亲节点中除指向所述目标节点的孩子索引信息以外的孩子索引信息;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点中记载的兄弟索引信息确定所述目标节点的孩子节点,建立所述目标节点与所述目标节点的孩子节点的对应关系。
13.根据权利要求11或12所述的元数据的恢复装置,其特征在于,所述索引信息还包括归属信息,所述归属信息用于描述节点归属的树;
所述处理器还用于:
当目标树中每个节点均为所述目标节点时,根据各节点的归属信息查找出归属于所述目标树的归属节点;
根据相关节点记载的索引信息对所述目标节点的索引信息进行恢复,其中,所述相关节点为所述目标树的归属节点,所述目标节点包括所述目标树的中间节点和数据节点。
14.根据权利要求11所述的元数据的恢复装置,其特征在于,所述处理器还用于,在生成每个节点时,为所述每个节点添加索引信息。
15.一种元数据的恢复装置,其特征在于,所述装置包括处理器,用于从存储器存储的节点中查找目标节点,所述目标节点已损坏或所述目标节点记载的索引信息已丢失;
根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,所述相关节点包括所述目标节点的父亲节点、孩子节点和与所述目标节点属于同一层且相邻的节点,所述数组用于顺序记载一个层中节点的邻接关系;
所述根据相关节点所在层对应的数组中记载的索引信息,对所述目标节点的索引信息进行恢复,具体包括:
如果所述目标节点已损坏,则生成空白的临时节点,所述临时节点用于替换所述目标节点;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述目标节点的父亲节点的对应关系;
根据所述目标节点的父亲节点所在层对应的数组中记载的索引信息,建立所述临时节点与所述临时节点属于同一层且相邻的兄弟节点的对应关系;
查找所述目标节点的下层节点,所述下层节点为与所述目标节点的孩子节点属于同一层且相邻的兄弟节点;
根据所述下层节点所在层对应的数组中记载的索引信息确定所述目标节点的孩子节点,建立所述临时节点与所述目标节点的孩子节点的对应关系;
将所述目标节点替换为所述临时节点。
CN201480048298.1A 2014-11-27 2014-11-27 元数据的恢复方法及装置 Active CN105830041B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/092384 WO2016082156A1 (zh) 2014-11-27 2014-11-27 元数据的恢复方法及装置

Publications (2)

Publication Number Publication Date
CN105830041A CN105830041A (zh) 2016-08-03
CN105830041B true CN105830041B (zh) 2019-06-18

Family

ID=56073359

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480048298.1A Active CN105830041B (zh) 2014-11-27 2014-11-27 元数据的恢复方法及装置

Country Status (4)

Country Link
US (1) US10423501B2 (zh)
EP (1) EP3214551B1 (zh)
CN (1) CN105830041B (zh)
WO (1) WO2016082156A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170024140A1 (en) * 2015-07-20 2017-01-26 Samsung Electronics Co., Ltd. Storage system and method for metadata management in non-volatile memory
CN109426587B (zh) * 2017-08-25 2020-08-28 杭州海康威视数字技术股份有限公司 一种数据恢复方法及装置
CN109828723B (zh) * 2019-02-13 2020-05-05 山东大学 一种分布式存储***及其精确数据修复方法及装置
CN110058969B (zh) * 2019-04-18 2023-02-28 腾讯科技(深圳)有限公司 一种数据恢复方法及装置
CN110569147B (zh) * 2019-09-05 2022-06-07 厦门市美亚柏科信息股份有限公司 一种基于索引的删除文件恢复方法、终端设备及存储介质
CN110764946B (zh) * 2019-11-12 2021-04-02 焦点科技股份有限公司 一种基于文件的索引数据失败补偿的方法
CN112925671A (zh) * 2019-12-06 2021-06-08 伊姆西Ip控股有限责任公司 用于管理应用***的方法、设备和计算机程序产品
CN111444046B (zh) * 2020-06-16 2021-01-22 北京金山云科技有限公司 一种数据恢复方法及分布式数据恢复***
CN116700635B (zh) * 2023-08-09 2024-01-30 深圳市威科伟业电子科技有限公司 固态硬盘数据恢复方法及固态硬盘
CN117435384B (zh) * 2023-12-14 2024-04-16 中电云计算技术有限公司 目录修复方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5794242A (en) * 1995-02-07 1998-08-11 Digital Equipment Corporation Temporally and spatially organized database
CN100377154C (zh) * 2002-01-08 2008-03-26 英特尔公司 改进型多路基数树
CN101763321A (zh) * 2010-02-24 2010-06-30 华为技术有限公司 数据容灾的方法、装置及***
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储***
CN103744961A (zh) * 2014-01-06 2014-04-23 清华大学 用可重构的文件***目录树提高非易失性存储寿命的方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276872A (en) * 1991-06-25 1994-01-04 Digital Equipment Corporation Concurrency and recovery for index trees with nodal updates using multiple atomic actions by which the trees integrity is preserved during undesired system interruptions
GB2311392B (en) * 1996-03-22 1998-03-04 Digital Equipment Corp A method of maintaining information in a memory of a computer system
US5806065A (en) * 1996-05-06 1998-09-08 Microsoft Corporation Data system with distributed tree indexes and method for maintaining the indexes
US6792432B1 (en) * 1998-03-31 2004-09-14 Sybase, Inc. Database system with methods providing high-concurrency access in B-Tree structures
US6192376B1 (en) * 1998-11-13 2001-02-20 International Business Machines Corporation Method and apparatus for shadowing a hierarchical file system index structure to enable error recovery
CA2279119C (en) * 1999-07-29 2004-10-19 Ibm Canada Limited-Ibm Canada Limitee Heuristic-based conditional data indexing
KR100327122B1 (ko) * 1999-12-24 2002-03-13 오길록 재삽입 연산을 수행하는 고차원 색인구조를 위한 회복방법
US7287033B2 (en) * 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
US7843871B2 (en) * 2004-12-21 2010-11-30 International Business Machines Corporation Method of reestablishing communication by a mobile node upon recovery from an abrupt shut down
KR20060117505A (ko) * 2005-05-11 2006-11-17 인하대학교 산학협력단 비공유 공간 데이터베이스 클러스터에서 확장성 해싱을이용한 클러스터 로그 기반의 회복 방법
US7577865B2 (en) * 2006-04-14 2009-08-18 Dell Products L.P. System and method for failure recovery in a shared storage system
US8346824B1 (en) * 2008-05-21 2013-01-01 Translattice, Inc. Data distribution system
CN101539873B (zh) * 2009-04-15 2011-02-09 成都市华为赛门铁克科技有限公司 数据恢复的方法、数据节点及分布式文件***
AU2012225130A1 (en) * 2011-03-04 2013-10-24 Scribble Technologies Inc. System and methods for facilitating the synchronization of data
US9176829B2 (en) * 2011-07-01 2015-11-03 Microsoft Technology Licensing, Llc Managing recovery virtual machines in clustered environment
US9171031B2 (en) * 2012-03-02 2015-10-27 Cleversafe, Inc. Merging index nodes of a hierarchical dispersed storage index
US9792309B2 (en) * 2014-08-04 2017-10-17 Cohesity, Inc. Write operations in a tree-based distributed file system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5794242A (en) * 1995-02-07 1998-08-11 Digital Equipment Corporation Temporally and spatially organized database
CN100377154C (zh) * 2002-01-08 2008-03-26 英特尔公司 改进型多路基数树
CN101763321A (zh) * 2010-02-24 2010-06-30 华为技术有限公司 数据容灾的方法、装置及***
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储***
CN103744961A (zh) * 2014-01-06 2014-04-23 清华大学 用可重构的文件***目录树提高非易失性存储寿命的方法

Also Published As

Publication number Publication date
EP3214551B1 (en) 2019-01-02
US10423501B2 (en) 2019-09-24
EP3214551A1 (en) 2017-09-06
EP3214551A4 (en) 2018-02-21
WO2016082156A1 (zh) 2016-06-02
CN105830041A (zh) 2016-08-03
US20170262351A1 (en) 2017-09-14

Similar Documents

Publication Publication Date Title
CN105830041B (zh) 元数据的恢复方法及装置
US10496627B2 (en) Consistent ring namespaces facilitating data storage and organization in network infrastructures
CN106201338B (zh) 数据存储方法及装置
US9116903B2 (en) Method and system for inserting data records into files
CN102521072B (zh) 虚拟磁带库设备及数据恢复方法
CN105938457B (zh) 数据的过滤方法、装置及数据读取***
CN107807794A (zh) 一种数据存储方法和装置
CN102609446B (zh) 一种分布式Bloom过滤***及其使用方法
EP3113036A1 (en) Data matching method and apparatus and computer storage medium
CN107798130A (zh) 一种分布式存储的快照方法
CN104375784B (zh) 一种降低虚拟磁盘管理复杂度的方法和装置
CN107729536A (zh) 一种数据存储方法和装置
CN101986276B (zh) 文件存储方法、文件恢复方法、***及服务器
CN107003933B (zh) 部分复制码的构建方法、装置及其数据修复的方法
CN103268270A (zh) 快照的管理方法和装置
CN110597655A (zh) 一种迁移与基于纠删码的重构相耦合的快速预知修复方法和实现
CN105100716A (zh) 一种用于网络视频监控的安全存储单元及其***
CN106095330B (zh) 一种元数据的存储方法和装置
CN101556802A (zh) 一种raid阵列转换的方法及装置
CN106027638A (zh) 一种基于混合编码的hadoop数据分发方法
CN103544124B (zh) Nand Flash存储器的访问方法
CN106933707B (zh) 基于raid技术的数据存储设备数据恢复方法及***
CN106648474A (zh) 一种基于逻辑卷恢复虚拟机磁盘的方法
CN106227627A (zh) 一种raid在数据恢复后再***新磁盘的数据分布方法及***
CN107704208A (zh) 一种元数据的修复方法、装置及介质

Legal Events

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