CN110287164B - 一种数据恢复方法、装置及计算机设备 - Google Patents
一种数据恢复方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN110287164B CN110287164B CN201910577985.7A CN201910577985A CN110287164B CN 110287164 B CN110287164 B CN 110287164B CN 201910577985 A CN201910577985 A CN 201910577985A CN 110287164 B CN110287164 B CN 110287164B
- Authority
- CN
- China
- Prior art keywords
- file
- data
- time
- data recovery
- recovery
- 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
- 238000011084 recovery Methods 0.000 title claims abstract description 564
- 238000000034 method Methods 0.000 title claims abstract description 152
- 238000011156 evaluation Methods 0.000 claims abstract description 250
- 238000013500 data storage Methods 0.000 claims description 120
- 230000003993 interaction Effects 0.000 claims description 103
- 239000006185 dispersion Substances 0.000 claims description 102
- 238000010606 normalization Methods 0.000 claims description 72
- 230000008569 process Effects 0.000 claims description 58
- 238000012545 processing Methods 0.000 claims description 25
- 230000002159 abnormal effect Effects 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000012512 characterization method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000005856 abnormality Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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/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
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据恢复方法、装置及计算机设备,该方法在确定出需要进行数据恢复的第一文件以及用于对所述第一文件进行数据恢复的第二文件后,进一步确定了至少利用所述第二文件基于全量数据恢复方式以及基于增量恢复方式分别对所述第一文件进行恢复所对应的不同耗时评估结果,在此基础上,选取所表征的数据恢复耗时最低的评估结果对应的恢复方式作为目标恢复方式,对所述第一文件进行数据恢复。由于在存在数据恢复需求时,本申请首先基于对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,有效提升了数据恢复速率。
Description
技术领域
本申请属于分布式存储技术领域,尤其涉及一种数据恢复方法、装置及计算机设备。
背景技术
随着互联网通信技术的不断发展与计算机信息技术的日渐普及,在传统数据存储(集中存储)的基础上,衍生出了分布式存储技术。分布式存储是一种不同于传统存储技术的新型数据存储方式,分布式存储将不同存储节点如服务器上的空闲磁盘通过网络连接在一起,并对外提供统一的存储接口。
由于具备高性能、多副本一致性、容灾与备份、弹性扩展、在线升级、存储接口标准化等优势,分布式存储技术在当前的大数据时代已有着广泛的应用。分布式存储通过多副本机制来保证数据的安全性,也即,将同一数据存储为多份,各份数据之间互为副本,若因服务器离线、宕机、故障、数据存储异常等原因,而导致某一份或多份(这里的多份少于数据的总存储份数)数据未能正常执行写进程或存储过程中发生数据损坏等现象,则可以通过其他写正常或未损坏的任一份数据对其进行恢复,由此保证了服务器离线、宕机、故障、存储异常等各种情况下数据的安全性。
在进行数据恢复时,数据恢复速率成为当前较为关注的问题,尤其是如果用户的读写操作命中了需要恢复的文件,为了不影响用户的读写操作,更需要能够较快地完成数据恢复,由此,提供一种能够快速进行数据恢复的实现方案于本领域来说十分必要。
发明内容
有鉴于此,本申请的目的在于提供一种数据恢复方法、装置及计算机设备,以实现分布式存储等环境中数据的快速恢复。
为此,本申请公开如下技术方案:
一种数据恢复方法,包括:
确定需要进行数据恢复的第一文件;
确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本;
确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果;
确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式;
基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
上述方法,优选的,所述确定需要进行数据恢复的第一文件,包括:
确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件;
或者,
分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;
其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
上述方法,优选的,所述确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,包括:
获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种;
基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;
所述确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果,包括:
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种;
基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
上述方法,优选的,在所述第二耗时评估参数至少包括所述第二交互次数的情况下,所述获取所述第二交互次数包括:
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需读取的至少一个偏移、长度对;
在所述至少一个偏移、长度对中存在所表征的位置相邻的偏移、长度对的情况下,将所表征的位置相邻的偏移、长度对合并为一个偏移、长度对;
确定偏移、长度对的数量,得到所述第二交互次数;合并后所得的偏移、长度对替代相对应的被合并的偏移、长度对参与所述数量的确定过程;
其中,每执行一次文件数据的写进程,为该文件对应记录一个偏移、长度对,所述偏移用于表示所述写进程所写数据在文件中的初始位置相对于所述文件的数据起始位置的偏移,所述长度为所述写进程所写数据在文件中的结束位置相比于所述初始位置的数据长度。
上述方法,优选的,在所述第一耗时评估参数和/或所述第二耗时评估参数至少包括所述第二文件的数据存储离散度的情况下,所述获取所述第二文件的数据存储离散度包括:
确定对所述第二文件进行数据存储时所占用的各数据页的总页数;
确定所述各数据页中对应的存储地址最接近且非连续的数据页的页数;
基于所述存储地址最接近且非连续的数据页的页数与所述总页数,确定所述第二文件的数据存储离散度。
上述方法,优选的,在所述第一耗时评估参数包括所述第一数据量、所述第一交互次数及所述数据存储离散度的情况下,所述基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果,包括:
对所述第一数据量、所述第一交互次数及所述数据存储离散度分别进行归一化处理,得到所述第一数据量的第一归一化结果、所述第一交互次数的第二归一化结果及所述数据存储离散度的第三归一化结果;
根据所述第一归一化结果、所述第二归一化结果及所述第三归一化结果,确定所述第一耗时评估结果;
在所述第二耗时评估参数包括所述第二数据量、所述第二交互次数及所述数据存储离散度的情况下,所述基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果,包括:
对所述第二数据量、所述第二交互次数及所述数据存储离散度分别进行归一化处理,得到所述第二数据量的第四归一化结果、所述第二交互次数的第五归一化结果及所述数据存储离散度的第六归一化结果;
根据所述第四归一化结果、第五归一化结果及所述第六归一化结果,确定所述第二耗时评估结果。
一种数据恢复装置,包括:
第一确定单元,用于确定需要进行数据恢复的第一文件;
第二确定单元,用于确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本;
第三确定单元,用于确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果;
第四确定单元,用于确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式;
数据恢复单元,用于基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
上述装置,优选的,所述第一确定单元,具体用于:
确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件;
或者,
分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;
其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
上述装置,优选的,所述第三确定单元,具体用于:
获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种;
基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种;
基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
上述装置,优选的,在所述第二耗时评估参数至少包括所述第二交互次数的情况下,所述第三单元获取所述第二交互次数,具体包括:
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需读取的至少一个偏移、长度对;
在所述至少一个偏移、长度对中存在所表征的位置相邻的偏移、长度对的情况下,将所表征的位置相邻的偏移、长度对合并为一个偏移、长度对;
确定偏移、长度对的数量,得到所述第二交互次数;合并后所得的偏移、长度对替代相对应的被合并的偏移、长度对参与所述数量的确定过程;
其中,每执行一次文件数据的写进程,为该文件对应记录一个偏移、长度对,所述偏移用于表示所述写进程所写数据在文件中的初始位置相对于所述文件的数据起始位置的偏移,所述长度为所述写进程所写数据在文件中的结束位置相比于所述初始位置的数据长度。
上述装置,优选的,在所述第一耗时评估参数和/或所述第二耗时评估参数至少包括所述第二文件的数据存储离散度的情况下,所述第三确定单元获取所述第二文件的数据存储离散度,具体包括:
确定对所述第二文件进行数据存储时所占用的各数据页的总页数;
确定所述各数据页中对应的存储地址最接近且非连续的数据页的页数;
基于所述存储地址最接近且非连续的数据页的页数与所述总页数,确定所述第二文件的数据存储离散度。
上述装置,优选的,在所述第一耗时评估参数包括所述第一数据量、所述第一交互次数及所述数据存储离散度的情况下,所述第三确定单元,基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果,具体包括:
对所述第一数据量、所述第一交互次数及所述数据存储离散度分别进行归一化处理,得到所述第一数据量的第一归一化结果、所述第一交互次数的第二归一化结果及所述数据存储离散度的第三归一化结果;
根据所述第一归一化结果、第二归一化结果及所述第三归一化结果,确定所述第一耗时评估结果;
在所述第二耗时评估参数包括所述第二数据量、所述第二交互次数及所述数据存储离散度的情况下,所述第三确定单元基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果,具体包括:
对所述第二数据量、所述第二交互次数及所述数据存储离散度分别进行归一化处理,得到所述第二数据量的第四归一化结果、所述第二交互次数的第五归一化结果及所述数据存储离散度的第六归一化结果;
根据所述第四归一化结果、第五归一化结果及所述第六归一化结果,确定所述第二耗时评估结果。
一种计算机设备,包括:
存储器,用于至少存储一组指令集;
处理器,用于调用并执行所述存储器中的所述指令集,通过执行所述指令集执行所述的方法。
由以上方案可知,本申请提供的数据恢复方法、装置及计算机设备,在确定出需要进行数据恢复的第一文件以及用于对所述第一文件进行数据恢复的第二文件后,进一步确定至少利用所述第二文件基于全量数据恢复方式以及基于增量恢复方式分别对所述第一文件进行恢复所对应的不同耗时评估结果,在此基础上,选取所表征的数据恢复耗时最低的评估结果对应的恢复方式作为目标恢复方式,对所述第一文件进行数据恢复。由于在存在数据恢复需求时,本申请首先基于对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,有效提升了数据恢复速率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本申请实施例一提供的数据恢复方法的一种流程示意图;
图2是本申请实施例一提供的在分布式存储环境中对多份副本文件进行分布式存储的示意图;
图3是本申请实施例二提供的数据恢复方法的另一种流程示意图;
图4是本申请实施例二提供的连续存储方式及离散存储方式下文件的索引节点的示意图;
图5是本申请实施例三提供的数据恢复方法的再一种流程示意图;
图6是本申请实施例三提供的基于全量、增量这两种不同数据恢复方式在不同数据存储离散度下对文件进行数据恢复所需的耗时对比图;
图7是本申请实施例四提供的数据恢复装置的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供了一种数据恢复方法、装置及计算机设备,用于实现分布式存储等环境中数据的快速恢复。以下将通过具体实施例对本申请的数据恢复方法、装置及计算机设备进行详细阐述。
实施例一
参考图1,为本申请提供的一种数据恢复方法实施例一的流程图,所述数据恢复方法可用于对分布式存储环境中的存储节点(在由多个终端设备和/或服务器构成的分布式存储网络中,每个终端设备或服务器作为该分布式存储网络的一个节点)进行数据恢复,或者,还可以对非分布式环境中的终端设备或服务器进行数据恢复,以下,本实施例将主要以分布式存储环境这一典型的应用场景为例对该数据恢复方法进行说明。
如图1所示,本实施例中,所述数据恢复方法包括如下处理步骤:
步骤101、确定需要进行数据恢复的第一文件。
分布式存储通过多副本机制来保证数据的安全性,也即,将同一数据存储为多份,各份数据之间互为副本,目前的分布式存储通常采用三副本机制,即,将同一数据共存储为互为副本的三份文件,且如图2所示,不同的副本文件通常存储于不同的存储节点中,以降低分布式存储网络中同一数据的所有副本文件写数据失败或数据存储异常的概率。分布式存储环境中的存储节点离线(长时间离线或短暂离线)、宕机、故障、数据存储异常等,可能会导致存储节点出现不能正常执行数据写进程或已存储的数据发生损坏等现象,针对该情况,则可基于多副本机制,利用同一数据的正常执行了数据写进程或未发生数据损坏的副本文件对其未正常执行数据写进程或发生了数据损坏的副本文件进行数据恢复。
举例来说,比如,分布式存储提供了在线升级功能,也即,在不停止对外提供服务(如数据读、写服务)的情况下,对各节点的分布式存储功能进行升级,在线升级时,通常会需要对分布式存储节点依次进行升级、重启,而在升级重启某一节点的过程中,其他未被升级重启的节点仍正常提供数据读写及存储服务,在该过程中可能依然会有新的数据需写入(所述“写入”可能是“新写”,即新建文件进行数据写入,也可能是“增量写”,即对已有文件进行数据的修改写、添加写等)到整个分布式存储网络中,这样,对于需写到处于重启状态的存储节点的数据,则无法正常执行数据写进程、无法成功进行数据写操作,这就需要对该进行升级重启的存储节点进行数据恢复,当然,节点设备故障、宕机等状况同样会导致写进程无法执行,相应地,同样会存在该数据恢复需求。
再比如,分布式存储网络中的各节点在存储数据过程中,可能会因设备故障、磁盘损坏等原因导致已存储的数据文件中的数据丢失或损坏,这相应需要对丢失或损坏的数据进行恢复。
由此,本步骤101中所确定出的需要进行数据恢复的第一文件,可以是分布式存储等环境中,因节点升级、故障、宕机等原因而导致未能正常向节点写入数据的文件,或者,还可以是在数据存储过程中,因节点的设备故障、磁盘损坏等原因导致发生了数据丢失、损坏的文件。当然,所述需进行数据恢复的第一文件,还可以是非存储式环境下终端设备或服务器中的多备份数据中某份数据不完整(可以是因写操作异常或数据损坏等导致的不完整)的数据文件,本实施例对此不作限制。
步骤102、确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本。
当确定出具有数据恢复需求的第一文件时,同样需确定出用于对该第一文件进行数据恢复的第二文件,以使得为第一文件的数据恢复提供依据。
其中,所述第二文件可以是与所述第一文件互为副本的多个文件中具有完整数据的任一文件。
在所述分布式环境中,如上文所述,互为副本的各个文件通常存储于分布式网络的不同存储节点中,这样,当某一节点上的第一文件未能正常写数据或数据存储异常导致数据丢失/损坏时,鉴于多副本的分布式存储特点,该第一文件在其他多个存储节点上通常至少存在一个正常、具有完整数据的副本文件,由此,可利用该第一文件的正常、具有完整数据的副本文件即所述第二文件对所述第一文件进行数据恢复。
相类似地,对于非分布式存储环境,则可利用终端设备或服务器中第一文件的具有完整数据的备份文件,对存在数据恢复需求的第一文件进行数据恢复。
需要说明的是,实际应用环境中,并不限于仅依据第一文件的副本文件即所述第二文件对所述第一文件进行数据恢复,还可以利用其它文件或数据作为所述第一文件的数据恢复依据,例如使用某一非副本文件(即不是所述第一文件的副本文件)中的全局变量去恢复所述第一文件中某个参量的值等,具体实施本申请时,可根据实际需求确定用于作为第一文件的数据恢复依据的文件或数据。
步骤103、确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果。
在对文件进行数据恢复时,一般有两种方式:全量数据恢复方式和增量数据恢复方式。其中,全量数据恢复方式,是指将用于进行数据恢复的文件中的全部数据写入待恢复文件中,并覆盖待恢复文件中的原有数据;增量数据恢复方式,是指将用于进行数据恢复的文件相比于所述待恢复文件的增量数据写入所述待恢复文件,并保留待恢复文件的原有数据。
在利用上述两种不同的数据恢复方式对同一文件进行数据恢复时,由于数据恢复原理不同,相应会使得两种方式所对应的数据恢复耗时往往不同,其中,全量数据恢复方式相比于增量数据恢复方式,需从第二文件中读取的数据量通常较大,这会导致从需读取的数据量角度来说,全量数据恢复方式相比于增量数据恢复方式会对应一个更大的耗时,然而,增量数据恢复方式由于需要确定并读取第二文件中相比于第一文件的每次“增量写”操作所对应的增量数据,由此,其相比于全量数据恢复方式,通常会需要与第二文件所在的文件***进行更加复杂的交互,从而从与文件***的交互角度来说,增量数据恢复方式会对应一个更大的耗时。两种方式具体所需的恢复耗时,需视待读取的数据量、与第二文件所在文件***的交互情况等多种影响因素而定,通常情况下,在利用上述两种不同的数据恢复方式对同一文件进行数据恢复时对应所需的数据恢复耗时是不相同的。
在进行数据恢复时,会期望有一个较高的数据恢复速率,尤其是如果用户的读写操作命中了需要恢复的文件,为了不影响用户的读写操作,更需要能够较快地完成数据恢复,为此,本申请提出在需要利用第二文件对第一文件进行数据恢复时,动态从上述两种数据恢复方式中选取一最优的即数据恢复耗时最低的数据恢复方式对所述第一文件进行数据恢复。
由此,在利用第二文件对第一文件进行数据恢复之前,可首先评估基于上述两种数据恢复方式利用第二文件对第一文件进行恢复分别所需的耗时,得到两种数据恢复方式分别对应的耗时评估结果,即所述第一耗时评估结果、第二耗时评估结果,以使得为数据恢复方式的择优选取提供依据。
步骤104、确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式。
在得到至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果后,可从中选取出表征的数据恢复耗时最低的评估结果,并将该表征的数据恢复耗时最低的评估结果对应的数据恢复方式作为用于对第一文件进行数据恢复的目标恢复方式。
步骤105、基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
最终,可基于确定出的数据恢复耗时最低的所述目标恢复方式,利用所述第二文件对所述第一文件进行数据恢复。
这里,需要说明的是,本申请中的数据恢复针对的是未能正常执行“增量写”数据进程而导致数据写操作异常的文件或已存储的文件中发生了数据丢失、损坏的文件,而对于未能正常执行“新写”(即新建文件进行数据写入)数据进程而导致缺失文件的情况,由于该情况必然需要基于全量数据恢复方式对该缺失的文件进行数据恢复,从而,不需要进行全量、增量数据恢复方式的选择、确定,由此,对于该情况本申请不予考虑。
由以上方案可知,本申请实施例提供的数据恢复方法,在确定出需要进行数据恢复的第一文件以及用于对所述第一文件进行数据恢复的第二文件后,进一步确定了至少利用所述第二文件基于全量数据恢复方式以及基于增量恢复方式分别对所述第一文件进行恢复所对应的不同耗时评估结果,在此基础上,选取所表征的数据恢复耗时最低的评估结果对应的恢复方式作为目标恢复方式,对所述第一文件进行数据恢复。由于在存在数据恢复需求时,本申请首先基于对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,有效提升了数据恢复速率。
实施例二
参考图3,为本申请提供的一种数据恢复方法实施例二的流程图,作为一种可能的实施方式,本实施例中,所述数据恢复方法具体可通过如下的处理过程实现:
步骤301、确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件。
在分布式存储环境中,每对一个文件执行写操作,都会在写进程结束、即成功将数据写入文件后,相应调整该文件的版本号,通常情况下,会按规则提升该文件的版本号,如将原有的V1.0这一版本号调整为V2.0等,其中,对于互为副本的多个文件,在不存在任何异常、均正常完成数据写操作的情况下,互为副本的多个文件会对应相同的版本号,而其中若某个(某些)文件因所在的存储节点离线(如升级重启时的离线等)、宕机或故障等原因导致未能正常写数据时,其版本号则会仍然维持原有版本号,而与其互为副本的其他文件则会在正常写数据结束后相应进行版本号的调整。
由此,针对此种情况,可通过比较互为副本的多个文件的版本号是否一致,来确定是否存在需要进行数据恢复的第一文件,其中,在比较结果不一致时,则表示存在需要进行数据恢复的第一文件,并具体可将互为副本的多个文件中最高版本号对应的文件除外的其他文件确定为需要进行数据恢复的第一文件,该需要进行数据恢复的第一文件可能是互为副本的多个文件中的某一个文件或者也可能是其中的多个文件;而在比较结果一致的情况下,则表示所述互为副本的多个文件中不存在需要进行数据恢复的第一文件。
为便于理解,以下举例说明,假设在三副本机制中,互为副本的文件1、文件2、文件3的版本号在某一时间节点均为V3.0,在该时间节点后,假设共对该互为副本的三个文件执行过两次数据写操作,其中,在执行第一次数据写操作时,文件1所在的存储节点如服务器故障,而其他两个文件所在的存储节点无异常正常提供服务,则在该次写操作后,文件1的版本号仍维持V3.0,文件2、文件3的版本号均调整为V4.0,在执行第二次写操作时,文件1所在的存储节点的故障未解除,而文件2所在的存储节点升级离线,文件3所在的服务器节点正常提供服务,则在该次写操作后,文件1的版本号仍维持V3.0,文件2的版本号维持在V4.0,而文件3的版本号则调整为V5.0。
通过对上述三个文件的版本号进行比对,则可确定出,需对其中的文件1(缺失上述两次写操作对应的数据)与文件2(缺失上述两次写操作中最后一次写操作对应的数据)进行数据恢复,从而可将其中的文件1、文件2作为所述待进行数据恢复的第一文件。
步骤302、确定互为副本的多个文件中最高版本号对应的文件为用于对所述第一文件进行数据恢复的第二文件。
相对应地,版本号最高的文件则是互为副本的多个文件中数据最为完整的文件,从而,可将互为副本的多个文件中最高版本号对应的文件作为用于对所述第一文件进行数据恢复的第二文件。
互为副本的多个文件中版本号最高的文件可能为一个或多个,其中,若互为副本的多个文件中版本号最高的文件为多个,则可随机选取其中任一个版本号最高的文件作为所述第二文件,或者,还可以基于一定的选取策略,则优选取出其中的一个作为所述第二文件,示例性地,比如可综合考虑版本号最高的多个文件所在的不同存储节点的负载情况、不同存储节点的网络状况等,选取出其中一最优存储节点上的所述版本号最高的文件作为所述第二文件等。
步骤303、获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种。
在进行数据恢复时,会涉及到对作为数据依据的第二文件的数据读操作以及对待恢复的第一文件的数据写操作,而在数据恢复的整个过程中,发明人发现,对数据恢复速率影响最大的是读取第二文件数据时的数据读性能(具体能够反映在对第二文件的数据读取速率上)。由此,本申请将主要以读取第二文件数据时的数据读性能,来衡量、评估全量数据恢复方式与增量数据恢复方式分别对应所需的数据恢复耗时。
其中,对于读取第二文件数据时的数据读性能,一方面,与所需读取的数据量有关,所需读取的数据量越小,则数据读取耗时越低、速率越高,反之,所需读取的数据量越大,则数据读取耗时越高、速率越低;另一方面,与对第二文件所在文件***的交互次数有关,交互次数越多,则对第二文件所在文件***的交互越复杂,相应地,数据读取耗时越高、速率越低;反之,交互次数越少,则对第二文件所在文件***的交互越简单,相应地,数据读取耗时越低、速率越高。
由此,可根据上述影响第二文件数据读取性能的两个因素,将对第二文件进行数据读取时所需读取的数据量和/或需与第二文件所在文件***进行交互的次数,作为对全量数据恢复方式、增量数据恢复方式进行耗时评估的评估参数。
除此之外,文件中的数据在分布式存储环境中进行存储时,其在磁盘上的存储可能是连续的(也即,文件数据占用磁盘的连续存储空间),也可能在经过多次写操作(修改写、添加写等)之后,变得不再连续、非常离散,发明人发现,对第二文件进行数据读取时的数据读性能,还与第二文件的数据在存储时的连续或离散状况有关,对第二文件的数据读性能,在第二文件处于不同的数据存储连续性场景下时其表现不同。
具体地,在文件***中,一个文件通常对应一个索引节点inode,在将文件数据存储到磁盘后,会将文件数据在磁盘上所对应的数据块block的block号存储至文件的索引节点inode中,后续可以索引节点inode中存储的block号为索引地址对文件数据进行索引,通常一个block块的大小是4K(当然,也可以是其他大小,如8K等),1K=1024字节。一个文件的数据存储是连续的,是指该文件的数据在磁盘上进行存储时占用磁盘的连续存储空间,也即,该文件的索引节点inode中存储的各个block号是连续的;一个文件的数据存储是离散的,是指,该文件的数据在磁盘上进行存储时占用磁盘的非连续存储空间,也即,该文件的索引节点inode中存储的各个block号非连续。
如图4所示,索引节点inode1记录的各个block号即索引地址是连续的,包括多个连续的block号3999,4000,4001…4004等,从而该索引节点inode1对应的文件在磁盘上的存储是连续的;在图4中,索引节点inode2记录的各个block号即索引地址是非连续的,包括多个非连续的block号3999,10001,20001…50001等,则该索引节点inode2对应的文件在磁盘上的存储是非连续的。假设对同一文件分别按inode1对应的各个连续的block号以及按inode2对应的各个非连续的block号进行连续存储及非连续存储,则若需要读取该文件的全部文件数据,对于连续存储的情况,只需对文件***从block=3999开始顺序读取到block=4004即可,而对于非连续存储的情况,则需要对文件***从block=3999开始,然后读到10001、再读到20001,最终读到50001时结束,由于各个block号非连续,这必然会增加对磁盘的寻道时间,相应会影响数据的读性能。
且,在图4中,针对inode1对应的对文件数据进行连续存储的情况,读整个文件的性能会高于多次读增量数据(即对文件的多个写操作所对应的多个增量数据,多个增量数据的读取可通过读取文件的偏移、长度对来实现,关于文件的偏移、长度对会在下文进行介绍)的性能,从而,在该情况下,可以选择全量数据恢复方式作为优选方式,而对于inode2对应的对文件数据进行离散存储的情况,由于文件已经非常离散,读整个文件的性能会低于多次读多个增量数据的性能,从而该情况下,可以选择增量数据恢复方式作为优选方式。
从而,对文件进行数据读取时的数据读性能,还与文件的数据在存储时的连续或离散状况有关,基于该特点,本申请还提出了文件的数据存储离散度这一概念,并将文件的数据存储离散度作为对第二文件的数据读性能的一个影响因素、引入对两种数据恢复方式的恢复耗时评估中。
其中,文件的数据存储离散度,是指文件的数据在磁盘上存储时的离散程度。例如,假设一个文件的数据量大小为SIZE1,其中,有N个数据页(即N个page,每个page最多存储4K数据,1K=1024字节)的数据在存储时是离散的,即N个数据页在磁盘上对应的存储空间或存储地址互不相临,则该文件的数据存储离散度可表示为:N/(SIZE1/4096)。
根据上述对第二文件的数据读性能产生影响的三个影响因素,在实际实施本申请时,可将对第二文件进行数据读取时所需读取的数据量、需与第二文件所在文件***进行交互的次数以及第二文件的数据存储离散度中的一个或多个,作为对全量数据恢复方式、增量数据恢复方式进行耗时评估的评估参数,应用于对这两种数据恢复方式的恢复耗时评估中。
从而,对于全量数据恢复方式,当需评估基于该方式利用所述第二文件对所述第一文件进行数据恢复所需的耗时时,可首先获取该数据恢复方式下需对第二文件进行数据读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数和/或所述第二文件的数据存储离散度等第一耗时评估参数的参数值,以作为对该全量数据恢复方式进行耗时评估的评估依据。
其中,对于所述全量数据恢复方式而言,在基于该方式利用第二文件对第一文件进行数据恢复时,需对第二文件进行数据读取的所述第一数据量必然为第二文件的全部数据所对应的数据量。
在该全量数据恢复方式下,由于可直接一次性从文件的inode中读取出全部的block号,并按序寻道各block号对应的存储地址进而实现第二文件全量数据的读取,因此,对于该全量数据恢复方式,仅需与第二文件所在的文件***交互一次即可完成第二文件的全量数据读取,从而,可确定出所述第一交互次数的取值为1,其中,与文件***的一次交互可理解为对文件***的一次完整读操作,该一次完整读操作包括从inode中获取block号、按block号在磁盘上进行寻道、索引以及从索引位置处读取数据的整个过程。
对于所述第二文件的数据存储离散度,可以通过以下处理确定其取值:确定对所述第二文件进行数据存储时所占用的各数据页的总页数P0;确定所述各数据页中对应的存储地址最接近且非连续的数据页的页数;基于所述存储地址最接近且非连续的数据页的页数与所述总页数P1,利用计算式P1/P0计算所述第二文件的数据存储离散度。
以图4中索引节点inode1及索引节点inode2对应的文件为例,inode1对应的文件根据图4可知其共占用磁盘的6个数据页,且该6个数据页中存储地址最接近且非连续的数据页的页数为0,从而该索引节点inode1对应的文件的数据存储离散度为0;inode2对应的文件根据图4可知其同样占用磁盘的6个数据页,且该6个数据页中存储地址最接近且非连续的数据页的页数为6,从而该索引节点inode2对应的文件的数据存储离散度为1,实际应用场景中,文件的数据存储离散度多为介于0与1之间的一个数值。
步骤304、基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果。
在获得上述的第一耗时评估参数的参数值后,可基于这些第一耗时评估参数的参数值,如上述的第一数据量、第一交互次数和/或第二文件的数据存储离散度等,对至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的恢复耗时进行评估,得到全量数据恢复方式对应的第一耗时评估结果。
由于上述各参数的单位及量级均不同,在实际实施中,若所述第一耗时评估参数包括所述第一数据量、所述第一交互次数及所述数据存储离散度中的一个以上的参数,比如同时包括这三个参数等,则可首先对所包括的各个参数进行归一化处理,以使得将各个参数去单位化并将其量级统一。
以所述第一耗时评估参数同时包括上述三个参数为例,可以但不限于按预先设定的规则将所述第一数据量、所述第一交互次数及所述数据存储离散度分别归一化处理为一个介于0、1之间的数值(或者还可以是其他数值,比如介于0、10之间的数值等),从而,得到所述第一数据量的第一归一化结果、所述第一交互次数的第二归一化结果及所述数据存储离散度的第三归一化结果,其中,对于取值较大的所述第一数据量,可基于一预先设定的基数(如求取该第一数据量与该基数的比值等)将其映射至0~1的一个较大数值,对于取值较小的所述第一数据量,相应可基于该基数按相同方式将其映射至0~1的一个较小数值,其他参数类似。在此基础上,可进一步基于加权计算等方式对所述第一归一化结果、第二归一化结果及所述第三归一化结果进行运算,最终得到所述全量数据恢复方式的第一耗时评估结果值。其中,该第一耗时评估结果值越大,相应表征至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的耗时越大,反之,该第一耗时评估结果值越小,则相应表征至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的耗时越小。
步骤305、获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种。
同理,对于增量数据恢复方式,当需评估基于该方式利用所述第二文件对所述第一文件进行数据恢复所需的耗时时,可首先获取该数据恢复方式下需对第二文件进行数据读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数和/或所述第二文件的数据存储离散度等第二耗时评估参数的参数值,以作为对该增量数据恢复方式进行耗时评估的评估依据。
在分布式等数据存储环境中,每执行一次文件数据的写进程,会为该文件对应记录一个偏移、长度对,同时会将该偏移、长度对与相应的block号进行关联,所述偏移用于表示所述写进程所写数据在文件中的初始位置相对于所述文件的数据起始位置的偏移,所述长度为所述写进程所写数据在文件中的结束位置相比于所述初始位置(即写进程所写数据在文件中的初始位置)的数据长度。
基于该特点,对于所述增量数据恢复方式而言,可通过比较所述第二文件与所述第一文件的偏移、长度对,并累加所述第一文件所不具备的各个偏移对应的数据长度,来得到需利用所述第二文件对所述第一文件进行增量恢复时需读取的第二数据量。
不同的写操作向文件中所写入的数据在文件中的位置(这里并非指存储位置,而是指数据在文件中的数据位置)可能是不连续的,在读取文件数据时,为了避免数据读操作出现读数据紊乱的现象,仅对于在文件中数据位置连续的各个写操作数据(对应所表征的位置相邻的各个偏移、长度对)才能够通过对文件***的一次交互(即一次完整的读操作)获取,而对于在文件中数据位置不连续的多个写操作数据(对应所表征的位置不相邻的各个偏移、长度对)则相应不能够通过对文件***的一次交互获取。
由此,在该增量数据恢复方式下,具体可通过如下处理过程确定所述第二交互次数:获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需读取的至少一个偏移、长度对;在所述至少一个偏移、长度对中存在所表征的位置相邻的偏移、长度对的情况下,将所表征的位置相邻的偏移、长度对合并为一个的偏移、长度对;确定偏移、长度对的数量,得到所述第二交互次数;合并后所得的偏移、长度对替代相对应的被合并的偏移、长度对参与所述数量的确定过程;
对于第二文件的数据存储离散度,无论是全量数据恢复方式还是增量数据恢复方式,其均是固定的,可直接采用上文已计算出的第二文件的数据存储离散度数值。
步骤306、基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
在获得上述的第二耗时评估参数的参数值后,可基于这些第二耗时评估参数的参数值,如上述的第二数据量、第二交互次数和/或第二文件的数据存储离散度等,对至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需的耗时进行评估,得到增量数据恢复方式对应的第二耗时评估结果。
由于上述各个第二耗时评估参数的单位及量级均不同,在实际实施中,若所述第二耗时评估参数包括所述第二数据量、所述第二交互次数及所述数据存储离散度中的一个以上的参数,比如同时包括这三个参数等,则同样可首先对所包括的各个参数进行归一化处理,得到所述第二数据量的第四归一化结果、所述第二交互次数的第五归一化结果及所述数据存储离散度的第六归一化结果,以使得将各个第二耗时评估参数去单位化并将其量级统一。
在此基础上,可进一步根据所述第四归一化结果、第五归一化结果及所述第六归一化结果,确定所述第二耗时评估结果。
其中,对该第二耗时评估参数中各参数值的归一化处理过程以及基于归一化处理结果确定所述第二耗时评估结果的过程,分别与上文提供的对第一耗时评估参数中各参数值的归一化处理过程以及基于归一化处理结果确定所述第一耗时评估结果的过程类似,具体可参阅上文中提供的对第一耗时评估参数的归一化处理过程说明及确定第一耗时评估结果的过程说明,这里不再赘述。
步骤307、确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式。
在得到至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果后,可从中选取出表征的数据恢复耗时最低的评估结果,并将该表征的数据恢复耗时最低的评估结果对应的数据恢复方式作为用于对第一文件进行数据恢复的目标恢复方式。
步骤308、基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
最终,可基于确定出的数据恢复耗时最低的所述目标恢复方式,利用所述第二文件对所述第一文件进行数据恢复。
例如,对于数据量较小、数据存储离散度较小,且相比于第一文件具备多次增量写操作的第二文件来说,基于本申请方案,最终可选取出全量数据恢复方式为目标恢复方式对所述第一文件进行数据恢复;而对于数据量较大、数据存储离散度较大,且相比于第一文件具备较少次增量写操作的第二文件来说,基于本申请方案,最终可选取出增量数据恢复方式为目标恢复方式对所述第一文件进行数据恢复。
由于在存在数据恢复需求时,本实施例通过首先对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,提升了数据恢复效率;且本实施例基于文件版本号确定需进行数据恢复的数据文件,可有效满足分布式等存储环境中因节点离线、宕机、故障等原因而导致的存储节点未能正常执行写数据操作从而存在的数据恢复需求。
实施例三
参考图5,为本申请提供的一种数据恢复方法实施例三的流程图,作为另一种可能的实施方式,本实施例中,所述数据恢复方法具体可通过如下的处理过程实现:
步骤501、分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;
其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
在数据存储过程中,可能会因存储节点的设备故障、磁盘损坏等原因,导致已存储的文件数据产生数据缺失或损坏,对于该情况,无法基于文件版本号的比对来发现需进行数据恢复的文件。
针对该情况,可通过计算各互为副本的多个文件中每个文件的校验值,并将其与执行写操作以形成所述多个文件时保存的文件校验值进行比对,来解决该情况下的数据恢复问题。
其中,在分布式等存储环境中,在执行写操作以形成互为副本的多个文件时会计算并保存所形成的文件的文件校验值,例如,将文件作为一个整体并按相应的算法计算该文件的校验值,或者,将文件按规则分割为多个块,并分别计算各个块的校验值等。
计算文件校验值时所采用的算法可以是但不限于MD5(Message-DigestAlgorithm 5,信息-摘要算法5)等信息摘要算法
由此,针对上述因存储节点设备故障、磁盘损坏等原因而导致的已存储文件产生数据缺失或损坏的情况,可采用与写操作时相同的计算校验值的方法,计算互为副本的各个文件的校验值,并识别所计算出的各校验值与执行写操作以形成这些文件时所保存的文件校验值是否一致,若某文件的计算出的校验值与预先保存的所述文件校验值不一致,则表示该文件发生了数据缺失或数据损坏,从而,可将该文件确定为所述待进行数据恢复的第一文件,反之,若某文件的计算出的校验值与预先保存的所述文件校验值一致,则表示该文件未发生数据缺失或数据损坏,不存在数据恢复需求。
步骤502、将所述互为副本的多个文件中校验值与所述预先保存的文件校验值一致的文件确定为用于对所述第一文件进行数据恢复的第二文件。
相对应地,当互为副本的多个文件中存在需进行数据恢复的第一文件时,可将所述互为副本的多个文件中所计算出的校验值与预先保存的所述文件校验值一致的文件作为所述第二文件,以用于对所述第一文件进行数据恢复。
步骤503、获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种;
步骤504、基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;
步骤505、获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种;
步骤506、基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果;
步骤507、确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式;
步骤508、基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
步骤503-步骤508的处理过程与上一实施例中的步骤303-步骤308相同,由此,关于该步骤503-步骤508,具体可参阅上一实施例中对步骤303-步骤308的实现过程的描述,这里不再赘述。
由于在存在数据恢复需求时,本实施例通过首先对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,提升了数据恢复效率;且本实施例基于文件校验值确定需进行数据恢复的数据文件,可有效满足分布式等存储环境中因存储节点设备故障、磁盘损坏等原因而导致的已存储文件产生数据缺失或损坏这一情况下的数据恢复需求。
基于本申请的数据恢复方法,发明人采用了数据量为8K的随机读写操作来模拟实际用户对大小是4M的文件的读写操作,并具体测试1000个文件,统计在文件所处的存储节点升级重启后,基于全量、增量这两种不同数据恢复方式在不同数据存储离散度下对文件进行数据恢复所对应的耗时,在升级过程中,通常每个文件会产生8个左右8K的写操作,本次测试结果具体是对存储于HDD(Hard Disk Drive,硬盘驱动器)上的文件进行测试所产生的结果。如图6所示,在文件离散度小于6%时,即4M文件的1024个数据页中有少于64个数据页是离散的情况下,全量数据恢复是性能比较好的恢复方式,即全量数据恢复方式对应的数据恢复耗时较低,当集群规模比较大,文件数比较多,或者文件比较大的情况下,这种对比会更加明显,选择全量数据恢复方式,性能优势比较明显。而在离散度大于6%时,即4M文件的1024个数据页中有多于64个数据页是离散的情况下,增量数据恢复方式的优势比较明显,即增量数据恢复方式是性能比较好的恢复方式,对应的数据恢复耗时较低。
实施例四
对应于上述的数据恢复方法,本申请还提供了一种数据恢复装置。参考图7,为本申请提供的一种数据恢复装置实施例四的结构示意图,其中,该装置可用于对分布式存储环境中的存储节点(在由多个终端设备和/或服务器构成的分布式存储网络中,每个终端设备或服务器作为该分布式存储网络的一个节点)进行数据恢复,或者,还可以对非分布式环境中的终端设备或服务器进行数据恢复,以下,本实施例将主要以分布式存储环境这一典型的应用场景为例对该装置进行说明。
如图7所示,本实施例中,所述数据恢复装置包括:
第一确定单元701,用于确定需要进行数据恢复的第一文件。
分布式存储通过多副本机制来保证数据的安全性,也即,将同一数据存储为多份,各份数据之间互为副本,目前的分布式存储通常采用三副本机制,即,将同一数据共存储为互为副本的三份文件,且不同的副本文件通常存储于不同的存储节点中,以降低分布式存储网络中同一数据的所有副本文件写数据失败或数据存储异常的概率。分布式存储环境中的存储节点离线(长时间离线或短暂离线)、宕机、故障、数据存储异常等,可能会导致存储节点出现不能正常执行数据写进程或已存储的数据发生损坏等现象,针对该情况,则可基于多副本机制,利用同一数据的正常执行了数据写进程或未发生数据损坏的副本文件对其未正常执行数据写进程或发生了数据损坏的副本文件进行数据恢复。
举例来说,比如,分布式存储提供了在线升级功能,也即,在不停止对外提供服务(如数据读、写服务)的情况下,对各节点的分布式存储功能进行升级,在线升级时,通常会需要对分布式存储节点依次进行升级、重启,而在升级重启某一节点的过程中,其他未被升级重启的节点仍正常提供数据读写及存储服务,在该过程中可能依然会有新的数据需写入(所述“写入”可能是“新写”,即新建文件进行数据写入,也可能是“增量写”,即对已有文件进行数据的修改写、添加写等)到整个分布式存储网络中,这样,对于需写到处于重启状态的存储节点的数据,则无法正常执行数据写进程、无法成功进行数据写操作,这就需要对该进行升级重启的存储节点进行数据恢复,当然,节点设备故障、宕机等状况同样会导致写进程无法执行,相应地,同样会存在该数据恢复需求。
再比如,分布式存储网络中的各节点在存储数据过程中,可能会因设备故障、磁盘损坏等原因导致已存储的数据文件中的数据丢失或损坏,这相应需要对丢失或损坏的数据进行恢复。
由此,该第一确定单元701所确定出的需要进行数据恢复的第一文件,可以是分布式存储等环境中,因节点升级、故障、宕机等原因而导致未能正常向节点写入数据的文件,或者,还可以是在数据存储过程中,因节点的设备故障、磁盘损坏等原因导致发生了数据丢失、损坏的文件。当然,所述需进行数据恢复的第一文件,还可以是非存储式环境下终端设备或服务器中的多备份数据中某份数据不完整(可以是因写操作异常或数据损坏等导致的不完整)的数据文件,本实施例对此不作限制。
第二确定单元702,用于确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本。
当确定出具有数据恢复需求的第一文件时,同样需确定出用于对该第一文件进行数据恢复的第二文件,以使得为第一文件的数据恢复提供依据。
其中,所述第二文件可以是与所述第一文件互为副本的多个文件中具有完整数据的任一文件。
在所述分布式环境中,如上文所述,互为副本的各个文件通常存储于分布式网络的不同存储节点中,这样,当某一节点上的第一文件未能正常写数据或数据存储异常导致数据丢失/损坏时,鉴于多副本的分布式存储特点,该第一文件在其他多个存储节点上通常至少存在一个正常、具有完整数据的副本文件,由此,可利用该第一文件的正常、具有完整数据的副本文件即所述第二文件对所述第一文件进行数据恢复。
相类似地,对于非分布式存储环境,则可利用终端设备或服务器中第一文件的具有完整数据的备份文件,对存在数据恢复需求的第一文件进行数据恢复。
需要说明的是,实际应用环境中,并不限于仅依据第一文件的副本文件即所述第二文件对所述第一文件进行数据恢复,还可以利用其它文件或数据作为所述第一文件的数据恢复依据,例如使用某一非副本文件(即不是所述第一文件的副本文件)中的全局变量去恢复所述第一文件中某个参量的值等,具体实施本申请时,可根据实际需求确定用于作为第一文件的数据恢复依据的文件或数据。
第三确定单元703,用于确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果。
在对文件进行数据恢复时,一般有两种方式:全量数据恢复方式和增量数据恢复方式。其中,全量数据恢复方式,是指将用于进行数据恢复的文件中的全部数据写入待恢复文件中,并覆盖待恢复文件中的原有数据;增量数据恢复方式,是指将用于进行数据恢复的文件相比于所述待恢复文件的增量数据写入所述待恢复文件,并保留待恢复文件的原有数据。
在利用上述两种不同的数据恢复方式对同一文件进行数据恢复时,由于数据恢复原理不同,相应会使得两种方式所对应的数据恢复耗时往往不同,其中,全量数据恢复方式相比于增量数据恢复方式,需从第二文件中读取的数据量通常较大,这会导致从需读取的数据量角度来说,全量数据恢复方式相比于增量数据恢复方式会对应一个更大的耗时,然而,增量数据恢复方式由于需要确定并读取第二文件中相比于第一文件的每次“增量写”操作所对应的增量数据,由此,其相比于全量数据恢复方式,通常会需要与第二文件所在的文件***进行更加复杂的交互,从而从与文件***的交互角度来说,增量数据恢复方式会对应一个更大的耗时。两种方式具体所需的恢复耗时,需视待读取的数据量、与第二文件所在文件***的交互情况等多种影响因素而定,通常情况下,在利用上述两种不同的数据恢复方式对同一文件进行数据恢复时对应所需的数据恢复耗时是不相同的。
在进行数据恢复时,会期望有一个较高的数据恢复速率,尤其是如果用户的读写操作命中了需要恢复的文件,为了不影响用户的读写操作,更需要能够较快地完成数据恢复,为此,本申请提出在需要利用第二文件对第一文件进行数据恢复时,动态从上述两种数据恢复方式中选取一最优的即数据恢复耗时最低的数据恢复方式对所述第一文件进行数据恢复。
由此,在利用第二文件对第一文件进行数据恢复之前,可首先评估基于上述两种数据恢复方式利用第二文件对第一文件进行恢复分别所需的耗时,得到两种数据恢复方式分别对应的耗时评估结果,即所述第一耗时评估结果、第二耗时评估结果,以使得为数据恢复方式的择优选取提供依据。
第四确定单元704,用于确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式。
在得到至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果后,可从中选取出表征的数据恢复耗时最低的评估结果,并将该表征的数据恢复耗时最低的评估结果对应的数据恢复方式作为用于对第一文件进行数据恢复的目标恢复方式。
数据恢复单元705,用于基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
最终,可基于确定出的数据恢复耗时最低的所述目标恢复方式,利用所述第二文件对所述第一文件进行数据恢复。
这里,需要说明的是,本申请中的数据恢复针对的是未能正常执行“增量写”数据进程而导致数据写操作异常的文件或已存储的文件中发生了数据丢失、损坏的文件,而对于未能正常执行“新写”(即新建文件进行数据写入)数据进程而导致缺失文件的情况,由于该情况必然需要基于全量数据恢复方式对该缺失的文件进行数据恢复,从而,不需要进行全量、增量数据恢复方式的选择、确定,由此,对于该情况本申请不予考虑。
由以上方案可知,本申请实施例提供的数据恢复装置,在确定出需要进行数据恢复的第一文件以及用于对所述第一文件进行数据恢复的第二文件后,进一步确定了至少利用所述第二文件基于全量数据恢复方式以及基于增量恢复方式分别对所述第一文件进行恢复所对应的不同耗时评估结果,在此基础上,选取所表征的数据恢复耗时最低的评估结果对应的恢复方式作为目标恢复方式,对所述第一文件进行数据恢复。由于在存在数据恢复需求时,本申请首先基于对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,有效提升了数据恢复速率。
实施例五
作为一种可能的实施方式,本实施例中,所述数据恢复装置中的第一确定单元701具体用于:确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件。
在分布式存储环境中,每对一个文件执行写操作,都会在写进程结束、即成功将数据写入文件后,相应调整该文件的版本号,通常情况下,会按规则提升该文件的版本号,如将原有的V1.0这一版本号调整为V2.0等,其中,对于互为副本的多个文件,在不存在任何异常、均正常完成数据写操作的情况下,互为副本的多个文件会对应相同的版本号,而其中若某个(某些)文件因所在的存储节点离线(如升级重启时的离线等)、宕机或故障等原因导致未能正常写数据时,其版本号则会仍然维持原有版本号,而与其互为副本的其他文件则会在正常写数据结束后相应进行版本号的调整。
由此,针对此种情况,可通过比较互为副本的多个文件的版本号是否一致,来确定是否存在需要进行数据恢复的第一文件,其中,在比较结果不一致时,则表示存在需要进行数据恢复的第一文件,并具体可将互为副本的多个文件中最高版本号对应的文件除外的其他文件确定为需要进行数据恢复的第一文件,该需要进行数据恢复的第一文件可能是互为副本的多个文件中的某一个文件或者也可能是其中的多个文件;而在比较结果一致的情况下,则表示所述互为副本的多个文件中不存在需要进行数据恢复的第一文件。
为便于理解,以下举例说明,假设在三副本机制中,互为副本的文件1、文件2、文件3的版本号在某一时间节点均为V3.0,在该时间节点后,假设共对该互为副本的三个文件执行过两次数据写操作,其中,在执行第一次数据写操作时,文件1所在的存储节点如服务器故障,而其他两个文件所在的存储节点无异常正常提供服务,则在该次写操作后,文件1的版本号仍维持V3.0,文件2、文件3的版本号均调整为V4.0,在执行第二次写操作时,文件1所在的存储节点的故障未解除,而文件2所在的存储节点升级离线,文件3所在的服务器节点正常提供服务,则在该次写操作后,文件1的版本号仍维持V3.0,文件2的版本号维持在V4.0,而文件3的版本号则调整为V5.0。
通过对上述三个文件的版本号进行比对,则可确定出,需对其中的文件1(缺失上述两次写操作对应的数据)与文件2(缺失上述两次写操作中最后一次写操作对应的数据)进行数据恢复,从而可将其中的文件1、文件2作为所述待进行数据恢复的第一文件。
所述第二确定单元702具体用于:确定互为副本的多个文件中最高版本号对应的文件为用于对所述第一文件进行数据恢复的第二文件。
相对应地,版本号最高的文件则是互为副本的多个文件中数据最为完整的文件,从而,可将互为副本的多个文件中最高版本号对应的文件作为用于对所述第一文件进行数据恢复的第二文件。
互为副本的多个文件中版本号最高的文件可能为一个或多个,其中,若互为副本的多个文件中版本号最高的文件为多个,则可随机选取其中任一个版本号最高的文件作为所述第二文件,或者,还可以基于一定的选取策略,则优选取出其中的一个作为所述第二文件,示例性地,比如可综合考虑版本号最高的多个文件所在的不同存储节点的负载情况、不同存储节点的网络状况等,选取出其中一最优存储节点上的所述版本号最高的文件作为所述第二文件等。
所述第三确定单元703具体用于:获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种;基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种;基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
在进行数据恢复时,会涉及到对作为数据依据的第二文件的数据读操作以及对待恢复的第一文件的数据写操作,而在数据恢复的整个过程中,发明人发现,对数据恢复速率影响最大的是读取第二文件数据时的数据读性能(具体能够反映在对第二文件的数据读取速率上)。由此,本申请将主要以读取第二文件数据时的数据读性能,来衡量、评估全量数据恢复方式与增量数据恢复方式分别对应所需的数据恢复耗时。
其中,对于读取第二文件数据时的数据读性能,一方面,与所需读取的数据量有关,所需读取的数据量越小,则数据读取耗时越低、速率越高,反之,所需读取的数据量越大,则数据读取耗时越高、速率越低;另一方面,与对第二文件所在文件***的交互次数有关,交互次数越多,则对第二文件所在文件***的交互越复杂,相应地,数据读取耗时越高、速率越低;反之,交互次数越少,则对第二文件所在文件***的交互越简单,相应地,数据读取耗时越低、速率越高。
由此,可根据上述影响第二文件数据读取性能的两个因素,将对第二文件进行数据读取时所需读取的数据量和/或需与第二文件所在文件***进行交互的次数,作为对全量数据恢复方式、增量数据恢复方式进行耗时评估的评估参数。
除此之外,文件中的数据在分布式存储环境中进行存储时,其在磁盘上的存储可能是连续的(也即,文件数据占用磁盘的连续存储空间),也可能在经过多次写操作(修改写、添加写等)之后,变得不再连续、非常离散,发明人发现,对第二文件进行数据读取时的数据读性能,还与第二文件的数据在存储时的连续或离散状况有关,对第二文件的数据读性能,在第二文件处于不同的数据存储连续性场景下时其表现不同。
具体地,在文件***中,一个文件通常对应一个索引节点inode,在将文件数据存储到磁盘后,会将文件数据在磁盘上所对应的数据块block的block号存储至文件的索引节点inode中,后续可以索引节点inode中存储的block号为索引地址对文件数据进行索引,通常一个block块的大小是4K(当然,也可以是其他大小,如8K等),1K=1024字节。一个文件的数据存储是连续的,是指该文件的数据在磁盘上进行存储时占用磁盘的连续存储空间,也即,该文件的索引节点inode中存储的各个block号是连续的;一个文件的数据存储是离散的,是指,该文件的数据在磁盘上进行存储时占用磁盘的非连续存储空间,也即,该文件的索引节点inode中存储的各个block号非连续。
如图4所示,索引节点inode1记录的各个block号即索引地址是连续的,包括多个连续的block号3999,4000,4001…4004等,从而该索引节点inode1对应的文件在磁盘上的存储是连续的;在图4中,索引节点inode2记录的各个block号即索引地址是非连续的,包括多个非连续的block号3999,10001,20001…50001等,则该索引节点inode2对应的文件在磁盘上的存储是非连续的。假设对同一文件分别按inode1对应的各个连续的block号以及按inode2对应的各个非连续的block号进行连续存储及非连续存储,则若需要读取该文件的全部文件数据,对于连续存储的情况,只需对文件***从block=3999开始顺序读取到block=4004即可,而对于非连续存储的情况,则需要对文件***从block=3999开始,然后读到10001、再读到20001,最终读到50001时结束,由于各个block号非连续,这必然会增加对磁盘的寻道时间,相应会影响数据的读性能。
且,在图4中,针对inode1对应的对文件数据进行连续存储的情况,读整个文件的性能会高于多次读增量数据(即对文件的多个写操作所对应的多个增量数据,多个增量数据的读取可通过读取文件的偏移、长度对来实现,关于文件的偏移、长度对会在下文进行介绍)的性能,从而,在该情况下,可以选择全量数据恢复方式作为优选方式,而对于inode2对应的对文件数据进行离散存储的情况,由于文件已经非常离散,读整个文件的性能会低于多次读多个增量数据的性能,从而该情况下,可以选择增量数据恢复方式作为优选方式。
从而,对文件进行数据读取时的数据读性能,还与文件的数据在存储时的连续或离散状况有关,基于该特点,本申请还提出了文件的数据存储离散度这一概念,并将文件的数据存储离散度作为对第二文件的数据读性能的一个影响因素、引入对两种数据恢复方式的恢复耗时评估中。
其中,文件的数据存储离散度,是指文件的数据在磁盘上存储时的离散程度。例如,假设一个文件的数据量大小为SIZE1,其中,有N个数据页(即N个page,每个page最多存储4K数据,1K=1024字节)的数据在存储时是离散的,即N个数据页在磁盘上对应的存储空间或存储地址互不相临,则该文件的数据存储离散度可表示为:N/(SIZE1/4096)。
根据上述对第二文件的数据读性能产生影响的三个影响因素,在实际实施本申请时,可将对第二文件进行数据读取时所需读取的数据量、需与第二文件所在文件***进行交互的次数以及第二文件的数据存储离散度中的一个或多个,作为对全量数据恢复方式、增量数据恢复方式进行耗时评估的评估参数,应用于对这两种数据恢复方式的恢复耗时评估中。
从而,对于全量数据恢复方式,当需评估基于该方式利用所述第二文件对所述第一文件进行数据恢复所需的耗时时,可首先获取该数据恢复方式下需对第二文件进行数据读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数和/或所述第二文件的数据存储离散度等第一耗时评估参数的参数值,以作为对该全量数据恢复方式进行耗时评估的评估依据。
其中,对于所述全量数据恢复方式而言,在基于该方式利用第二文件对第一文件进行数据恢复时,需对第二文件进行数据读取的所述第一数据量必然为第二文件的全部数据所对应的数据量。
在该全量数据恢复方式下,由于可直接一次性从文件的inode中读取出全部的block号,并按序寻道各block号对应的存储地址进而实现第二文件全量数据的读取,因此,对于该全量数据恢复方式,仅需与第二文件所在的文件***交互一次即可完成第二文件的全量数据读取,从而,可确定出所述第一交互次数的取值为1,其中,与文件***的一次交互可理解为对文件***的一次完整读操作,该一次完整读操作包括从inode中获取block号、按block号在磁盘上进行寻道、索引以及从索引位置处读取数据的整个过程。
对于所述第二文件的数据存储离散度,可以通过以下处理确定其取值:确定对所述第二文件进行数据存储时所占用的各数据页的总页数P0;确定所述各数据页中对应的存储地址最接近且非连续的数据页的页数;基于所述存储地址最接近且非连续的数据页的页数与所述总页数P1,利用计算式P1/P0计算所述第二文件的数据存储离散度。
以图4中索引节点inode1及索引节点inode2对应的文件为例,inode1对应的文件根据图4可知其共占用磁盘的6个数据页,且该6个数据页中存储地址最接近且非连续的数据页的页数为0,从而该索引节点inode1对应的文件的数据存储离散度为0;inode2对应的文件根据图4可知其同样占用磁盘的6个数据页,且该6个数据页中存储地址最接近且非连续的数据页的页数为6,从而该索引节点inode2对应的文件的数据存储离散度为1,实际应用场景中,文件的数据存储离散度多为介于0与1之间的一个数值。
在获得上述的第一耗时评估参数的参数值后,可基于这些第一耗时评估参数的参数值,如上述的第一数据量、第一交互次数和/或第二文件的数据存储离散度等,对至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的恢复耗时进行评估,得到全量数据恢复方式对应的第一耗时评估结果。
由于上述各参数的单位及量级均不同,在实际实施中,若所述第一耗时评估参数包括所述第一数据量、所述第一交互次数及所述数据存储离散度中的一个以上的参数,比如同时包括这三个参数等,则可首先对所包括的各个参数进行归一化处理,以使得将各个参数去单位化并将其量级统一。
以所述第一耗时评估参数同时包括上述三个参数为例,可以但不限于按预先设定的规则将所述第一数据量、所述第一交互次数及所述数据存储离散度分别归一化处理为一个介于0、1之间的数值(或者还可以是其他数值,比如介于0、10之间的数值等),从而,得到所述第一数据量的第一归一化结果、所述第一交互次数的第二归一化结果及所述数据存储离散度的第三归一化结果,其中,对于取值较大的所述第一数据量,可基于一预先设定的基数(如求取该第一数据量与该基数的比值等)将其映射至0~1的一个较大数值,对于取值较小的所述第一数据量,相应可基于该基数按相同方式将其映射至0~1的一个较小数值,其他参数类似。在此基础上,可进一步基于加权计算等方式对所述第一归一化结果、第二归一化结果及所述第三归一化结果进行运算,最终得到所述全量数据恢复方式的第一耗时评估结果值。其中,该第一耗时评估结果值越大,相应表征至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的耗时越大,反之,该第一耗时评估结果值越小,则相应表征至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所需的耗时越小。
同理,对于增量数据恢复方式,当需评估基于该方式利用所述第二文件对所述第一文件进行数据恢复所需的耗时时,可首先获取该数据恢复方式下需对第二文件进行数据读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数和/或所述第二文件的数据存储离散度等第二耗时评估参数的参数值,以作为对该增量数据恢复方式进行耗时评估的评估依据。
在分布式等数据存储环境中,每执行一次文件数据的写进程,会为该文件对应记录一个偏移、长度对,同时会将该偏移、长度对与相应的block号进行关联,所述偏移用于表示所述写进程所写数据在文件中的初始位置相对于所述文件的数据起始位置的偏移,所述长度为所述写进程所写数据在文件中的结束位置相比于所述初始位置(即写进程所写数据在文件中的初始位置)的数据长度。
基于该特点,对于所述增量数据恢复方式而言,可通过比较所述第二文件与所述第一文件的偏移、长度对,并累加所述第一文件所不具备的各个偏移对应的数据长度,来得到需利用所述第二文件对所述第一文件进行增量恢复时需读取的第二数据量。
不同的写操作向文件中所写入的数据在文件中的位置(这里并非指存储位置,而是指数据在文件中的数据位置)可能是不连续的,在读取文件数据时,为了避免数据读操作出现读数据紊乱的现象,仅对于在文件中数据位置连续的各个写操作数据(对应所表征的位置相邻的各个偏移、长度对)才能够通过对文件***的一次交互(即一次完整的读操作)获取,而对于在文件中数据位置不连续的多个写操作数据(对应所表征的位置不相邻的各个偏移、长度对)则相应不能够通过对文件***的一次交互获取。
由此,在该增量数据恢复方式下,具体可通过如下处理过程确定所述第二交互次数:获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需读取的至少一个偏移、长度对;在所述至少一个偏移、长度对中存在所表征的位置相邻的偏移、长度对的情况下,将所表征的位置相邻的偏移、长度对合并为一个的偏移、长度对;确定偏移、长度对的数量,得到所述第二交互次数;合并后所得的偏移、长度对替代相对应的被合并的偏移、长度对参与所述数量的确定过程;
对于第二文件的数据存储离散度,无论是全量数据恢复方式还是增量数据恢复方式,其均是固定的,可直接采用上文已计算出的第二文件的数据存储离散度数值。
在获得上述的第二耗时评估参数的参数值后,可基于这些第二耗时评估参数的参数值,如上述的第二数据量、第二交互次数和/或第二文件的数据存储离散度等,对至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需的耗时进行评估,得到增量数据恢复方式对应的第二耗时评估结果。
由于上述各个第二耗时评估参数的单位及量级均不同,在实际实施中,若所述第二耗时评估参数包括所述第二数据量、所述第二交互次数及所述数据存储离散度中的一个以上的参数,比如同时包括这三个参数等,则同样可首先对所包括的各个参数进行归一化处理,得到所述第二数据量的第四归一化结果、所述第二交互次数的第五归一化结果及所述数据存储离散度的第六归一化结果,以使得将各个第二耗时评估参数去单位化并将其量级统一。
在此基础上,可进一步根据所述第四归一化结果、第五归一化结果及所述第六归一化结果,确定所述第二耗时评估结果。
其中,对该第二耗时评估参数中各参数值的归一化处理过程以及基于归一化处理结果确定所述第二耗时评估结果的过程,分别与上文提供的对第一耗时评估参数中各参数值的归一化处理过程以及基于归一化处理结果确定所述第一耗时评估结果的过程类似,具体可参阅上文中提供的对第一耗时评估参数的归一化处理过程说明及确定第一耗时评估结果的过程说明,这里不再赘述。
在此基础上,可进一步利用所述第四确定单元704将所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式确定为目标恢复方式,并利用所述数据恢复单元705基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
例如,对于数据量较小、数据存储离散度较小,且相比于第一文件具备多次增量写操作的第二文件来说,基于本申请方案,最终可选取出全量数据恢复方式为目标恢复方式对所述第一文件进行数据恢复;而对于数据量较大、数据存储离散度较大,且相比于第一文件具备较少次增量写操作的第二文件来说,基于本申请方案,最终可选取出增量数据恢复方式为目标恢复方式对所述第一文件进行数据恢复。
由于在存在数据恢复需求时,本实施例通过首先对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,提升了数据恢复效率;且本实施例基于文件版本号确定需进行数据恢复的数据文件,可有效满足分布式等存储环境中因节点离线、宕机、故障等原因而导致的存储节点未能正常执行写数据操作从而存在的数据恢复需求。
实施例六
作为另一种可能的实施方式,本实施例中,所述数据恢复装置中的第一确定单元701具体用于:
分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
在数据存储过程中,可能会因存储节点的设备故障、磁盘损坏等原因,导致已存储的文件数据产生数据缺失或损坏,对于该情况,无法基于文件版本号的比对来发现需进行数据恢复的文件。
针对该情况,可通过计算各互为副本的多个文件中每个文件的校验值,并将其与执行写操作以形成所述多个文件时保存的文件校验值进行比对,来解决该情况下的数据恢复问题。
其中,在分布式等存储环境中,在执行写操作以形成互为副本的多个文件时会计算并保存所形成的文件的文件校验值,例如,将文件作为一个整体并按相应的算法计算该文件的校验值,或者,将文件按规则分割为多个块,并分别计算各个块的校验值等。
计算文件校验值时所采用的算法可以是但不限于MD5(Message-DigestAlgorithm 5,信息-摘要算法5)等信息摘要算法
由此,针对上述因存储节点设备故障、磁盘损坏等原因而导致的已存储文件产生数据缺失或损坏的情况,可采用与写操作时相同的计算校验值的方法,计算互为副本的各个文件的校验值,并识别所计算出的各校验值与执行写操作以形成这些文件时所保存的文件校验值是否一致,若某文件的计算出的校验值与预先保存的所述文件校验值不一致,则表示该文件发生了数据缺失或数据损坏,从而,可将该文件确定为所述待进行数据恢复的第一文件,反之,若某文件的计算出的校验值与预先保存的所述文件校验值一致,则表示该文件未发生数据缺失或数据损坏,不存在数据恢复需求。
所述第二确定单元702具体用于:将所述互为副本的多个文件中校验值与所述预先保存的文件校验值一致的文件确定为用于对所述第一文件进行数据恢复的第二文件。
相对应地,当互为副本的多个文件中存在需进行数据恢复的第一文件时,可将所述互为副本的多个文件中所计算出的校验值与预先保存的所述文件校验值一致的文件作为所述第二文件,以用于对所述第一文件进行数据恢复。
所述第三确定单元703具体用于:获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量、需对所述第二文件所在的文件***进行交互的第一交互次数以及所述第二文件的数据存储离散度中的至少一种;基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量、需对所述第二文件所在的文件***进行交互的第二交互次数以及所述第二文件的数据存储离散度中的至少一种;基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
本实施例中,所述第三确定单元703的功能与上一实施例中所述第三确定单元703的功能相同,具体可参阅上一实施例中对第三确定单元703的功能描述,这里不再赘述。
在利用所述第一确定单元701、第二确定单元702、第三确定单元703进行上述处理的基础上,可进一步利用所述第四确定单元704将所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式确定为目标恢复方式,并利用所述数据恢复单元705基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
由于在存在数据恢复需求时,本实施例通过首先对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,提升了数据恢复效率;且本实施例基于文件校验值确定需进行数据恢复的数据文件,可有效满足分布式等存储环境中因存储节点设备故障、磁盘损坏等原因而导致的已存储文件产生数据缺失或损坏这一情况下的数据恢复需求。
实施例七
本申请还公开了一种计算机设备,该计算机设备可以是分布式存储环境中作为分布式存储网络的存储节点的终端设备(如一体机、笔记本、台式机等计算机终端/智能手机、笔记本等移动终端)或服务器,或者还可以是非分布式存储环境中的终端设备或服务器。
该计算机设备可作为上述实施例一至实施例三中任一实施例所提供的数据恢复方法或实施例四至实施例六中任一实施例所提供的数据恢复装置的执行主体,对上述相应实施例中的数据恢复方法或数据恢复装置加以实施。
该计算机设备,可在确定出需要进行数据恢复的第一文件以及用于对所述第一文件进行数据恢复的第二文件后,进一步确定至少利用所述第二文件基于全量数据恢复方式以及基于增量恢复方式分别对所述第一文件进行恢复所对应的不同耗时评估结果,在此基础上,选取所表征的数据恢复耗时最低的评估结果对应的恢复方式作为目标恢复方式,对所述第一文件进行数据恢复。由于在存在数据恢复需求时,该计算机设备首先基于对全量及增量这两种不同的数据恢复方式进行耗时评估,有针对性地选取了耗时最低的恢复方式进行数据恢复,从而,可实现分布式存储等环境中数据的快速恢复,有效提升了数据恢复速率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
为了描述的方便,描述以上***或装置时以功能分为各种模块或单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后,还需要说明的是,在本文中,诸如第一、第二、第三和第四等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种数据恢复方法,包括:
确定需要进行数据恢复的第一文件;
确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本;
至少根据第一交互次数和第二文件的数据存储离散度中的至少一种,确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及至少根据第二交互次数和第二文件的数据存储离散度中的至少一种,确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果;
其中,所述第一交互次数为全量数据恢复方式下需对第二文件所在的文件***进行交互的次数,所述第二交互次数为增量数据恢复方式下需对第二文件所在的文件***进行交互的次数;所述第二文件的数据存储离散度表示所述第二文件的数据在存储时的离散程度;
确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式;
基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
2.根据权利要求1所述的方法,所述确定需要进行数据恢复的第一文件,包括:
确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件;
或者,
分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;
其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
3.根据权利要求1所述的方法,所述确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,包括:
获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量,以及包括所述第一交互次数和所述第二文件的数据存储离散度中的至少一种;
基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;
所述确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果,包括:
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量,以及包括所述第二交互次数和所述第二文件的数据存储离散度中的至少一种;
基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
4.根据权利要求3所述的方法,其中,在所述第二耗时评估参数至少包括所述第二交互次数的情况下,所述获取所述第二交互次数包括:
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所需读取的至少一个偏移、长度对;
在所述至少一个偏移、长度对中存在所表征的位置相邻的偏移、长度对的情况下,将所表征的位置相邻的偏移、长度对合并为一个偏移、长度对;
确定偏移、长度对的数量,得到所述第二交互次数;合并后所得的偏移、长度对替代相对应的被合并的偏移、长度对参与所述数量的确定过程;
其中,每执行一次文件数据的写进程,为该文件对应记录一个偏移、长度对,所述偏移用于表示所述写进程所写数据在文件中的初始位置相对于所述文件的数据起始位置的偏移,所述长度为所述写进程所写数据在文件中的结束位置相比于所述初始位置的数据长度。
5.根据权利要求3所述的方法,其中,在所述第一耗时评估参数和/或所述第二耗时评估参数至少包括所述第二文件的数据存储离散度的情况下,所述获取所述第二文件的数据存储离散度包括:
确定对所述第二文件进行数据存储时所占用的各数据页的总页数;
确定所述各数据页中对应的存储地址最接近且非连续的数据页的页数;
基于所述存储地址最接近且非连续的数据页的页数与所述总页数,确定所述第二文件的数据存储离散度。
6.根据权利要求3所述的方法,在所述第一耗时评估参数包括所述第一数据量、所述第一交互次数及所述数据存储离散度的情况下,所述基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果,包括:
对所述第一数据量、所述第一交互次数及所述数据存储离散度分别进行归一化处理,得到所述第一数据量的第一归一化结果、所述第一交互次数的第二归一化结果及所述数据存储离散度的第三归一化结果;
根据所述第一归一化结果、所述第二归一化结果及所述第三归一化结果,确定所述第一耗时评估结果;
在所述第二耗时评估参数包括所述第二数据量、所述第二交互次数及所述数据存储离散度的情况下,所述基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果,包括:
对所述第二数据量、所述第二交互次数及所述数据存储离散度分别进行归一化处理,得到所述第二数据量的第四归一化结果、所述第二交互次数的第五归一化结果及所述数据存储离散度的第六归一化结果;
根据所述第四归一化结果、第五归一化结果及所述第六归一化结果,确定所述第二耗时评估结果。
7.一种数据恢复装置,包括:
第一确定单元,用于确定需要进行数据恢复的第一文件;
第二确定单元,用于确定用于对所述第一文件进行数据恢复的第二文件;所述第一文件、第二文件用于互为副本;
第三确定单元,用于至少根据第一交互次数和第二文件的数据存储离散度中的至少一种,确定至少利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复对应的第一耗时评估结果,以及至少根据第二交互次数和第二文件的数据存储离散度中的至少一种,确定至少利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复对应的第二耗时评估结果;
其中,所述第一交互次数为全量数据恢复方式下需对第二文件所在的文件***进行交互的次数,所述第二交互次数为增量数据恢复方式下需对第二文件所在的文件***进行交互的次数;所述第二文件的数据存储离散度表示所述第二文件的数据在存储时的离散程度;
第四确定单元,用于确定目标恢复方式,所述目标恢复方式为所述第一耗时评估结果和所述第二耗时评估结果中表征的数据恢复耗时最低的评估结果对应的恢复方式;
数据恢复单元,用于基于所述目标恢复方式利用所述第二文件对所述第一文件进行数据恢复。
8.根据权利要求7所述的装置,所述第一确定单元,具体用于:
确定互为副本的多个文件中最高版本号对应的文件除外的其他文件为所述第一文件;
或者,
分别确定互为副本的多个文件中每个文件的校验值,并确定所述多个文件中校验值与预先保存的文件校验值不一致的文件为所述第一文件;
其中,所述预先保存的文件校验值为:执行写操作以形成所述多个文件时所保存的文件校验值。
9.根据权利要求7所述的装置,所述第三确定单元,具体用于:
获取利用所述第二文件基于全量数据恢复方式对所述第一文件进行数据恢复所对应的第一耗时评估参数的参数值;所述第一耗时评估参数包括:需读取的第一数据量,以及包括所述第一交互次数和所述第二文件的数据存储离散度中的至少一种;
基于所述第一耗时评估参数的参数值确定所述第一耗时评估结果;
获取利用所述第二文件基于增量数据恢复方式对所述第一文件进行数据恢复所对应的第二耗时评估参数的参数值;所述第二耗时评估参数包括:所需读取的第二数据量,以及包括所述第二交互次数和所述第二文件的数据存储离散度中的至少一种;
基于所述第二耗时评估参数的参数值确定所述第二耗时评估结果。
10.一种计算机设备,包括:
存储器,用于至少存储一组指令集;
处理器,用于调用并执行所述存储器中的所述指令集,通过执行所述指令集执行权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910577985.7A CN110287164B (zh) | 2019-06-28 | 2019-06-28 | 一种数据恢复方法、装置及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910577985.7A CN110287164B (zh) | 2019-06-28 | 2019-06-28 | 一种数据恢复方法、装置及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110287164A CN110287164A (zh) | 2019-09-27 |
CN110287164B true CN110287164B (zh) | 2021-07-16 |
Family
ID=68019797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910577985.7A Active CN110287164B (zh) | 2019-06-28 | 2019-06-28 | 一种数据恢复方法、装置及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110287164B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795284B (zh) * | 2019-10-25 | 2022-03-22 | 浪潮电子信息产业股份有限公司 | 一种数据恢复方法、装置、设备及可读存储介质 |
CN114510379B (zh) * | 2022-04-21 | 2022-11-01 | 山东百盟信息技术有限公司 | 一种分布式阵列视频数据存储装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227379A (zh) * | 2008-01-25 | 2008-07-23 | 中兴通讯股份有限公司 | 一种实现数据同步的***和方法 |
CN104317843A (zh) * | 2014-10-11 | 2015-01-28 | 上海瀚之友信息技术服务有限公司 | 一种数据同步etl*** |
CN106789978A (zh) * | 2016-12-07 | 2017-05-31 | 高新兴科技集团股份有限公司 | 一种数据汇聚***和方法 |
CN107016075A (zh) * | 2017-03-27 | 2017-08-04 | 聚好看科技股份有限公司 | 集群数据同步方法及装置 |
CN107256182A (zh) * | 2017-05-03 | 2017-10-17 | 上海上讯信息技术股份有限公司 | 一种数据库还原的方法及设备 |
CN107870829A (zh) * | 2016-09-24 | 2018-04-03 | 华为技术有限公司 | 一种分布式数据恢复方法、服务器、相关设备及*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103491137A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 数据同步***和数据同步方法 |
CN106951559B (zh) * | 2017-03-31 | 2020-08-25 | 联想(北京)有限公司 | 分布式文件***中数据恢复方法及电子设备 |
CN107506266B (zh) * | 2017-08-30 | 2020-06-23 | 联想(北京)有限公司 | 一种数据恢复方法及*** |
-
2019
- 2019-06-28 CN CN201910577985.7A patent/CN110287164B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227379A (zh) * | 2008-01-25 | 2008-07-23 | 中兴通讯股份有限公司 | 一种实现数据同步的***和方法 |
CN104317843A (zh) * | 2014-10-11 | 2015-01-28 | 上海瀚之友信息技术服务有限公司 | 一种数据同步etl*** |
CN107870829A (zh) * | 2016-09-24 | 2018-04-03 | 华为技术有限公司 | 一种分布式数据恢复方法、服务器、相关设备及*** |
CN106789978A (zh) * | 2016-12-07 | 2017-05-31 | 高新兴科技集团股份有限公司 | 一种数据汇聚***和方法 |
CN107016075A (zh) * | 2017-03-27 | 2017-08-04 | 聚好看科技股份有限公司 | 集群数据同步方法及装置 |
CN107256182A (zh) * | 2017-05-03 | 2017-10-17 | 上海上讯信息技术股份有限公司 | 一种数据库还原的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110287164A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7814149B1 (en) | Client side data deduplication | |
EP2756405B1 (en) | Nonvolatile media dirty region tracking | |
US20150213100A1 (en) | Data synchronization method and system | |
US11093387B1 (en) | Garbage collection based on transmission object models | |
US10481988B2 (en) | System and method for consistency verification of replicated data in a recovery system | |
US9665587B2 (en) | Selective fragmentation repair | |
US10628298B1 (en) | Resumable garbage collection | |
CN107479823B (zh) | 随机读写文件测试中的数据校验方法和装置 | |
CN110727404A (zh) | 一种基于存储端的数据重删方法、设备以及存储介质 | |
CN107506266B (zh) | 一种数据恢复方法及*** | |
JP6805816B2 (ja) | 情報処理装置、情報処理システム、情報処理方法及びプログラム | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN110287164B (zh) | 一种数据恢复方法、装置及计算机设备 | |
CN113885809B (zh) | 数据管理***及方法 | |
CN104866388B (zh) | 数据处理方法及装置 | |
CN114138192A (zh) | 存储节点在线升级方法、装置、***及存储介质 | |
CN113312205B (zh) | 数据校验方法、装置、存储介质和计算机设备 | |
CN108271420B (zh) | 管理文件的方法、文件***和服务器*** | |
CN115576743B (zh) | 操作***恢复方法、装置、计算机设备和存储介质 | |
US11379315B2 (en) | System and method for a backup data verification for a file system based backup | |
US11645333B1 (en) | Garbage collection integrated with physical file verification | |
CN112395256B (zh) | 一种数据读取方法、电子设备及计算机存储介质 | |
CN112131194A (zh) | 一种只读文件***的文件存储控制方法及装置、存储介质 | |
CN110688071A (zh) | 一种减少数据同步量的数据同步方法及*** | |
CN110351386B (zh) | 一种不同副本间的增量同步方法及装置 |
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 |