CN111984467B - 一种基于ocfs2的数据恢复方法、装置、系统及存储介质 - Google Patents
一种基于ocfs2的数据恢复方法、装置、系统及存储介质 Download PDFInfo
- Publication number
- CN111984467B CN111984467B CN202010761235.8A CN202010761235A CN111984467B CN 111984467 B CN111984467 B CN 111984467B CN 202010761235 A CN202010761235 A CN 202010761235A CN 111984467 B CN111984467 B CN 111984467B
- Authority
- CN
- China
- Prior art keywords
- node set
- residual
- node
- elements
- nodes
- 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/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
-
- 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/13—File access structures, e.g. distributed indices
-
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
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)
- Library & Information Science (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于OCFS2的数据恢复方法、装置、系统及存储介质,所述方法包括:搜索磁盘中的残留节点,得到残留节点集合和超级块集合;基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;判断每个所述节点集合分组与所述超级块集合是否匹配;如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复。根据本发明的方法、装置、系统及存储介质,通过扫描磁盘上所有被删除的OCFS2文件系统的数据信息,能够准确且高效地重组并恢复被删除的数据。
Description
技术领域
本发明涉及数据处理技术领域,更具体地涉及数据的恢复。
背景技术
OCFS2文件系统是Oracle公司针对Linux系统开发并发布的下一代集群文件系统,Linux2.6.16版本内核开始引入,主要应用于云服务器的数据存储。随着云技术的发展,OCFS2文件系统的使用越来越广泛,删除数据的恢复技术在计算取证安全领域越来越受到更多的关注,而目前几乎没有对OCFS2文件系统删除数据恢复的技术。也就是说,目前并没有有效的OCFS2文件系统删除数据恢复技术,甚至是还没有OCFS2数据解析工具。通过Linux下OCFS2集群配置,也只能是通过通用文件系统接口访问到OCFS2文件系统的正常数据,而无法对OCFS2删除数据进行恢复,导致无法对OCFS2文件系统删除数据进行深入的取证分析。
因此,现有技术中存在对OCFS2文件系统中删除的数据无法恢复的问题。
发明内容
考虑到上述问题而提出了本发明。本发明提供了一种基于OCFS2的数据恢复方法、装置、系统及计算机存储介质。
根据本发明的第一方面,提供了一种基于OCFS2的数据恢复方法,包括:
搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
判断每个所述节点集合分组与所述超级块集合是否匹配;
如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复。
根据本发明的第二方面,提供了一种基于OCFS2的数据恢复装置,包括:
搜索模块,用于搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
分组模块,用于基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
匹配模块,用于判断每个所述节点集合分组与所述超级块集合是否匹配;
恢复模块,用于如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复。
根据本发明的第三方面,提供了一种基于OCFS2的数据恢复系统,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据第一方面所述方法的步骤。
根据本发明的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时实现根据第一方面所述方法的步骤。
根据本发明实施例的基于OCFS2的数据恢复方法、装置、系统以及存储介质,通过扫描磁盘上所有被删除的OCFS2文件系统的数据信息,能够准确且高效地重组并恢复被删除的数据。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是OCFS2文件系统整体布局的示例性示意图;
图2是DINODE总体结构的示例性示意图;
图3是根据本发明实施例的基于OCFS2的数据恢复方法的示意性流程图;
图4是根据本发明实施例的基于OCFS2的数据恢复方法的示例;
图5是根据本发明实施例的基于与所述节点集合分组相匹配的超级块进行数据恢复的示例;
图6是根据本发明实施例的基于所有所述残留节点进行数据恢复的示例;
图7是根据本发明的实施例的基于OCFS2的数据恢复装置的示意性框图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
OCFS2是指下一代的Oracle集群文件系统,该文件系统将磁盘划分为若干块组进行管理,参见图1,图1示出了OCFS2文件系统整体布局的示例性示意图。如图1所示,OCFS2在管理磁盘空间时同时采用两种管理单元,块单元和簇单元。块单元大小范围从512B到4K,大小必需是512B的2的幂整数倍;簇单元的大小范围是4KB到1MB,大小必需是4KB的2的幂整数倍。OCFS2元数据节点在磁盘中采用DINODE的结构进行管理,所有类型的元数据块都有类似的DINODE结构,不同元数据块有不同的签名信息。这些元数据块最核心的两个元数据块分别为OCFS2_SUPER和OCFS2_INODE结构,如图2所示,图2示出了DINODE总体结构的示例性示意图。目前,还没有有效的OCFS2文件系统删除数据恢复技术,甚至是还没有OCFS2数据解析工具。即使通过Linux下OCFS2集群配置,也只能是通过通用文件系统接口访问到OCFS2文件系统的正常数据,而无法对OCFS2删除数据进行恢复,导致无法对OCFS2文件系统删除数据进行深入的取证分析。
基于上述考虑,本发明实施例提供了一种基于OCFS2的数据恢复方法,并将参照图3描述根据本发明实施例的基于OCFS2的数据恢复方法3。如图3所示,一种基于OCFS2的数据恢复方法3,包括:
步骤S3-1,搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
步骤S3-2,基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
步骤S3-3,判断每个所述节点集合分组与所述超级块集合是否匹配;
步骤S3-4,如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复。
可选地,所述方法还可以包括:
步骤S3-5,如果确定所述节点集合分组与所述超级块集合不匹配,则基于所有所述残留节点进行数据恢复。
其中,OCFS2文件系统格式化或者删除时并不会对磁盘所有区域进行数据填充,文件节点的INODE信息、文件目录等数据仍然存储在磁盘上。因此,可以对磁盘上的所有数据进行扫描,获取所有的INODE信息,然后动态计算块大小、簇大小、卷起始偏移等OCFS2文件系统解析相关参数,即可扫描出所有的文件节点数据,然后再通过对目录项数据进行搜索解析,重构父子关系即可将数据进行恢复。根据本发明实施例的基于OCFS2的数据恢复方法,针对OCFS2的磁盘存储布局进行深入研究,通过扫描磁盘上所有被删除的OCFS2文件系统的数据信息,不需要OCFS2文件系统集群服务,直接对存储介质进行全盘扫描,就可以方便并全面的恢复OCFS2文件数据,填补了OCFS2文件系统删除数据恢复技术的空白,能够准确且高效地重组并恢复被删除的数据。适合广泛应用于任何需要对OCFS2中的数据进行恢复的场合。
根据本发明实施例,所述步骤S3-1中,搜索磁盘中的残留节点,得到残留节点集合和超级块集合,可以包括:
解析当前磁盘文件系统所有文件信息,并获取磁盘残留区的区域范围集合;
针对残留区的每个区域范围进行搜索,得到残留节点集合和超级块集合。
在一些实施例中,磁盘残留区的区域范围集合DU = {D1,D2,D3…,Di1,…Dn},n为正整数,i1为小于n的正整数。其中,DU可以表示文件系统的未分配簇空间。
在一些实施例中,集合DU中的每个元素Di1包括如下至少一种属性:数据块起始偏移startoffset、或数据块结束偏移endoffset。
在一些实施例中,残留节点集合I = {I1,I2,I3…,Ii2,…Im},m为正整数,i2为小于m的正整数。其中,I可以表示从文件系统的未分配簇空间搜索出来的节点(INODE)集合。
在一些实施例中,残留节点集合中的每个元素Ii2包含如下至少一种属性:genaration(文件系统的版本号)、acctime(访问时间)、moditime(修改时间)、chantime(节点修改时间)、filesize(文件大小)、或extents(文件数据区域)等信息。
在一些实施例中,所述超级块集合S = {S1, S2, S3...,Si3,...Sp},p为正整数,i3为小于p的正整数。其中,S可以表示从文件系统未分配簇空间搜索出来的SUPERBLOCK超级块的集合。
在一些实施例中,集合S中每个元素Si3包含如下至少一种属性:blocksize(块大小),clustersize(簇大小)等信息。
根据本发明实施例,所述步骤S3-2中,基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组,包括:
基于版本号对所有所述残留节点集合中的所有元素进行分组,将同一版本号的元素分为一组,得到至少一组所述节点集合分组。
其中,同一版本号的元素代表这些元素属于同一个OCFS的节点信息。
根据本发明实施例,所述步骤S3-3中,判断每个所述节点集合分组与所述超级块集合是否匹配,包括:
对于每个所述节点集合分组的版本号,查找所述超级块集合中是否存在版本号与所述节点集合分组的版本号相同的元素。
根据本发明实施例,所述步骤S3-4中,如果确定所述节点集合分组与所述超级块集合匹配,包括:
当所述超级块集合中存在与所述节点集合分组相同版本号的元素时,则确定所述节点集合分组与所述超级块集合匹配。
根据本发明实施例,所述步骤S3-5中,如果确定所述节点集合分组与所述超级块集合不匹配,包括:
当所述超级块集合中不存在与所述节点集合分组相同版本号的元素时,则确定所述节点集合分组与所述超级块集合不匹配。
在一些实施例中,参见图4,图4示出了根据本发明实施例的基于OCFS2的数据恢复方法的示例。如图4所示,基于OCFS2的数据恢复方法4包括:
步骤S4-1,解析当前磁盘文件系统所有文件信息,并获取磁盘残留区的区域范围集合DU = {D1,D2,D3…,Di1,…Dn};转入步骤4-2;
步骤S4-2,针对DU中的每个Di1= {S1,S2,S3…,Si2,…Sp}中的Si2,读取并搜索得到所有残留节点的残留节点集合I以及超级块(SUPERBLOCK)集合S;转入步骤S4-3;
步骤S4-3,针对残留节点集合I = {I1,I2,I3…,Ii3,…Im}中的所有元素,通过版本号(genaration)进行分组,其中,版本号(genaration)相同表示是同一个OCFS的节点信息;转入步骤S4-4;
步骤S4-4,针对残留节点集合I分组后的任一一组文件节点集合,通过查找对超级块集合S = {S1, S2, S3...,Si2,...Sp}的元素是否包含与步骤S4-3中所述的版本号(genaration)一样的元素;若存在则成功匹配,采用“超级块已知恢复流程”进行恢复;否则,采用“超级块未知恢复流程”进行恢复。
其中,采用“超级块已知恢复流程”进行恢复可以包括基于与所述节点集合分组相匹配的超级块进行数据恢复。
可选地,在所述步骤S3-4中,基于与所述节点集合分组相匹配的超级块进行数据恢复,可以包括:
获取所述相匹配的超级块的属性,并基于所述相匹配的超级块的属性计算得到起始偏移;
基于所述起始偏移解析所述残留节点集合中的每个元素的属性;
获取所述残留节点集合中的每个元素的数据,判断所述残留节点集合中的每个元素是否为文件夹节点;
如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合;
基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名;
根据所述文件节点重新构建目录树,以恢复数据。
在一些实施例中,所述获取所述相匹配的超级块的属性,包括:
获取残留节点集合I = {I1,I2,I3…,Ii3,…Im}对应的超级块的块大小(blocksize)和簇大小(clustersize)。
在一些实施例中,基于所述起始偏移解析所述残留节点集合中的每个元素的属性,包括:
针对残留节点集合I = {I1,I2,I3…,Ii3,…Im}中的每个元素Ii3,解析得到每个元素的如下至少一种属性:解析acctime(访问时间)、moditime(修改时间)、chantime(节点修改时间)、filesize(文件大小)、或extents(文件数据区域)。
在一些实施例中,如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合,包括:
如果残留节点集合I中的元素是文件夹节点,则获取该元素的目录信息集合,其中,所述目录信息集合包括E = {E1, E2, E3......En}。
其中,E = {E1, E2, E3...,Ei4,...Eq},q为正整数,i4为小于q的正整数。其中,E可以表示从文件系统未分配簇空间搜索出来的DIRENTS目录项集合。
在一些实施例中,集合E中每个元素Ei4包含如下至少一种属性:filename(文件名)、filetype(文件类型)、inodeid(所属的INODE号)。
在一些实施例中,基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名,包括:
针对所述目录信息集合的每个元素,获取其对应的文件节点,并解析该文件节点的文件名。
可选地,在所述步骤S3-4中,基于与所述节点集合分组相匹配的超级块进行数据恢复,还可以包括:
如果所述残留节点集合中的元素不是文件夹节点,则根据所述所对应的节点构建目录树,以恢复数据。
其中,对于残留节点集合I中的元素是文件夹节点的情况,该元素的目录信息集合必然包括该文件夹节点下所有的文件节点,那么对该元素的目录信息集合下的每个文件节点进行解析其文件名,即可以重新构建该元素的目录树。以此类推,可以恢复节点集合中所有文件夹节点的数据。对于残留节点集合I中的元素不是文件夹节点的情况,那么说明该元素树文件节点,那么可以获取并保存该文件节点中的块号和文件映射即可;这样,可以对恢复节点集合中所有文件节点的数据。从而实现了在残留节点文件集合对应的超级块已知的情况下的索引重建。
在一些实施例中,参见图5,图5示出了根据本发明实施例的基于与所述节点集合分组相匹配的超级块进行数据恢复的示例。如图5所示,基于与所述节点集合分组相匹配的超级块进行数据恢复,包括:
步骤S5-1,获取残留节点集合I = {I1,I2,I3…Ii3…In}对应的超级块,读取并获取blocksize(块大小)、clustersize(簇大小)、超级块起始位置;跳转步骤S5-2;
步骤S5-2,计算卷起始偏移;跳转步骤S5-3;
步骤S5-3,是否解析完残留节点集合I中的所有元素;若是,则重新调整恢复文件节点的父子关系,跳转步骤S5-9;若否,则跳转步骤S5-4;
步骤S5-4,针对集合I中任一元素Ii3,解析acctime(访问时间)、moditime(修改时间)、chantime(节点修改时间)、filesize(文件大小)、extents(文件数据区域)等信息(直至所有的节点解析完毕);跳转步骤S5-5;
步骤S5-5,读取Ii3节点的数据,判断Ii3节点是否为文件节点,若是;跳转步骤S5-7;否则跳转步骤S5-6;(可替代地,步骤S5-5还可以是:读取Ii3节点的数据,判断Ii3节点是否为文件夹节点,若是;跳转步骤S5-6;否则跳转步骤S5-7)
步骤S5-6,读取Ii3节点的数据(即读取该文件夹节点的文件夹数据),数据内容为文件目录信息集合E = {E1, E2, E3...Ei4...En};针对集合中任一元素Ei4,获取对应文件节点,解析文件名;跳转步骤S5-7;
步骤S5-7,保存BlockNum块号和节点文件映射关系,根据BlockNum块号重新构建目录树;跳转S5-8;
步骤S5-8,获取集合I中下一个元素,跳转步骤S5-3;
步骤S5-9,超级块已知恢复子流程结束。
可选地,在所述步骤S3-5中,基于所有所述残留节点进行数据恢复,可以包括:
获取所述残留节点集合中任意两个元素,并计算所述任意两个元素的块大小,并判断所述块大小是否有效;
如果所述块大小有效,则计算卷起始偏移;
针对所述残留节点集合中的每个元素,解析每个元素的属性;
基于所述残留节点集合的每个元素的属性,计算所述每个元素的簇大小值;
基于每个所述残留节点集合的元素的数据,判断每个所述残留节点集合的元素是否为文件夹节点;
如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合;
基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名;
根据所述文件节点重新构建目录树,以恢复数据。
在一些实施例中,在步骤S3-5中,获取所述残留节点集合中任意两个元素,并计算所述任意两个元素的块大小,可以包括:
获取残留节点集合I = {I1,I2,I3…Ii3…In};
针对残留节点集合I中的任意两个元素Ia,Ib,计算块大小blocksize =(Ia.startoffset - Ib.startoffset) / (Ia. curr_blknum > Ib. curr_blknum)。
其中,Ia.startoffset表示元素Ia的起始偏移,Ib.startoffset表示元素Ib的起始偏移,Ia. curr_blknum表示元素Ia当前的块号,Ib. curr_blknum表示元素Ib当前的块号。
在一些实施例中,在步骤S3-5中,还可以包括:
如果所述块大小无效,则删除两个元素Ia,Ib中的至少一个;
重新获取残留节点集合I中的一个或两个元素,并进行块大小计算,得到新的块大小。
进一步地,在步骤S3-5中,还可以包括:判断新的块大小是否有效;如果新的块大小,有效则计算卷起始偏移。
进一步地,在步骤S3-5中,还可以包括:如果新的块大小无效,则重新获取残留节点集合I中的一个或两个元素,并重复上述步骤,直至新的块大小有效。
在一些实施例中,在步骤S3-5中,计算卷起始偏移,包括:Calc_StartOffset=Qi.startoffset - Calc_BlkSize * Qi.curr_blknum。其中,Calc_StartOffset为卷起始偏移,Qi.startoffset为残留节点集合I中块i的起始偏移,Calc_BlkSize为块大小,Qi.curr_blknum为残留节点集合I中块i的当前块号;块i可以是上述用于计算块大小的块,包括用于计算块大小的两个元素。
在一些实施例中,在步骤S3-5中,针对所述残留节点集合中的每个元素,解析每个元素的属性,包括:
针对所述残留节点集合中的每个元素,解析每个元素的如下至少一种属性:acctime(访问时间)、moditime(修改时间)、chantime(节点修改时间)、filesize(文件大小)、或extents(文件数据区域)。
在一些实施例中,在步骤S3-5中,基于所述残留节点集合的每个元素的属性,计算所述每个元素的簇大小值;
根据所述文件数据区域和文件大小,计算所述每个元素的簇大小值。
在一些实施例中,在步骤S3-5中,如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合,包括:
如果残留节点集合I中的元素是文件夹节点,则获取该元素的目录信息集合,其中,所述目录信息集合包括E = {E1, E2, E3......En}。
其中,E = {E1, E2, E3...,Ei4,...Eq},q为正整数,i4为小于q的正整数。其中,E可以表示从文件系统未分配簇空间搜索出来的DIRENTS目录项集合。
在一些实施例中,集合E中每个元素Ei4包含如下至少一种属性:filename(文件名)、filetype(文件类型)、inodeid(所属的INODE号)。
在一些实施例中,基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名,包括:
针对所述目录信息集合的每个元素,获取其对应的文件节点,并解析该文件节点的文件名。
可选地,在所述步骤S3-5中,基于所有所述残留节点进行数据恢复,还可以包括:
如果所述残留节点集合中的元素不是文件夹节点,则根据所述所对应的节点构建目录树,以恢复数据。
其中,由于残留节点集合I所对应的超级块未知,那么可以基于节点集合中任意两个元素计算块大小,以获取残留节点集合I中的有效块;从而根据有效块的属性计算得到卷起始偏移。同时对残留节点集合I中的元素进行解析后,由其文件数据区域和文件大小计算簇大小值。然后,对于残留节点集合I中的元素是文件夹节点的情况,该元素的目录信息集合必然包括该文件夹节点下所有的文件节点,那么对该元素的目录信息集合下的每个文件节点进行解析其文件名,即可以重新构建该元素的目录树。以此类推,可以恢复节点集合中所有文件夹节点的数据。对于残留节点集合I中的元素不是文件夹节点的情况,那么说明该元素树文件节点,那么可以获取并保存该文件节点中的块号和文件映射即可;这样,可以对恢复节点集合中所有文件节点的数据。从而实现了在残留节点文件集合对应的超级块未知知的情况下的索引重建。
在一些实施例中,参见图6,图6示出了根据本发明实施例的基于所有所述残留节点进行数据恢复的示例。如图6所示,基于所有所述残留节点进行数据恢复,可以包括:
步骤S6-1,获取残留节点集合I = {I1,I2,I3……In};跳转步骤S6-2;
步骤S6-2,可以残留节点集合I中的元素按照块号(blocknumber,或blknum)进行排序;针对任一集合中的两个元素,计算块大小Calc_BlkSize = (I1.startoffset -I2.startoffset) / (I1. curr_blknum > I2. curr_blknum);跳转步骤S6-3;
步骤S6-3,进行块大小有效性判断;若块大小有效,跳转步骤S6-4;否则,跳转步骤S6-5-1;
步骤S6-5-1,删除一个或两个元素,另取一个或两个元素,跳转步骤S6-5-2;
步骤S6-5-2,重新计算新的块大小Calc_BlkSize,跳转步骤S6-5-3;
步骤S6-5-3,按照新的块大小Calc_BlkSize分组,跳转步骤S6-3;
步骤S6-4,计算卷起始偏移Calc_StartOffset= Qi.startoffset - Calc_BlkSize * Qi.curr_blknum;跳转步骤S6-5;
步骤S6-5,基于卷起始偏移得到OCFS2分区的起始位置;跳转步骤S6-6;
步骤S6-6,是否解析完残留节点集合I中的所有元素;若是,则重新调整恢复文件节点的父子关系,跳转步骤S6-13;若否,则跳转步骤S6-7;
步骤S6-7,针对集合I中任一元素Ii3,解析acctime(访问时间)、moditime(修改时间)、chantime(节点修改时间)、filesize(文件大小)、extents(文件数据区域)等信息(直至所有的节点解析完毕);跳转步骤S6-8;
步骤S6-8,通过文件数据区域extents以及文件大小filesize,计算簇大小值;跳转步骤S6-9;
步骤S6-9,读取Ii3节点的数据,判断Ii3节点是否为文件节点,若是;跳转步骤S6-11;否则跳转步骤S6-10;(可替代地,步骤S6-9还可以是:读取Ii3节点的数据,判断Ii3节点是否为文件夹节点,若是;跳转步骤S6-10;否则跳转步骤S6-11)
步骤S6-10,读取Ii3节点的数据(即读取该文件夹节点的文件夹数据),数据内容为文件目录信息集合E = {E1, E2, E3...Ei4...En};针对集合中任一元素Ei4,获取对应文件节点,解析文件名;跳转步骤S6-11;
步骤S6-11,保存BlockNum块号和节点文件映射关系,根据BlockNum块号重新构建目录树;跳转步骤S6-12;
步骤S6-12,获取集合I中下一个元素,跳转步骤S6-6;
步骤S6-13,超级块未知恢复子流程结束。
参见图7,图7示出了根据用于实现本发明的实施例的基于OCFS2的数据恢复装置的示意性框图。如图7所示,所述装置7包括:
搜索模块710,用于搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
分组模块720,用于基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
匹配模块730,用于判断每个所述节点集合分组与所述超级块集合是否匹配;
恢复模块740,用于如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复。
可选地,所述恢复模块740还用于:如果确定所述节点集合分组与所述超级块集合不匹配,则基于所有所述残留节点进行数据恢复。
在此仅对基于OCFS2的数据恢复装置7的主要功能模块进行说明,根据本发明实施例的基于OCFS2的数据恢复装置7用于实现上述根据本发明实施例的基于OCFS2的数据恢复方法,重复的部分在此不再赘述。
根据本发明的另一方面,提供一种基于OCFS2的数据恢复装置系统,包括存储器、以及处理器;
所述存储器存储用于实现根据本发明实施例的基于OCFS2的数据恢复方法中的相应步骤的程序代码;
所述处理器用于运行所述存储器中存储的程序代码,以执行以上根据本发明实施例的基于OCFS2的数据恢复方法的相应步骤。
在一个实施例中,在所述程序代码被所述处理器运行时执行以上根据本发明实施例的前述基于OCFS2的数据恢复方法的相应步骤。
此外,根据本发明的另一方面,还提供了一种计算机可读存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的基于OCFS2的数据恢复方法的相应步骤,并且用于实现根据本发明实施例的基于OCFS2的数据恢复系统。
示例性地,所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的前述基于OCFS2的数据恢复方法。
由此可知,根据本发明实施例的基于OCFS2的数据恢复方法、装置、系统以及存储介质,通过扫描磁盘上所有被删除的OCFS2文件系统的数据信息,能够准确且高效地重组并恢复被删除的数据。
尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的数据模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种基于OCFS2的数据恢复方法,其特征在于,所述方法包括:
搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
判断每个所述节点集合分组与所述超级块集合是否匹配;
如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复;
所述基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组,包括:基于版本号对所有所述残留节点集合中的所有元素进行分组,将同一版本号的元素分为一组,得到至少一组所述节点集合分组;
所述判断每个所述节点集合分组与所述超级块集合是否匹配,包括:对于每个所述节点集合分组的版本号,查找所述超级块集合中是否存在版本号与所述节点集合分组的版本号相同的元素;
如果确定所述节点集合分组与所述超级块集合匹配,包括:当所述超级块集合中存在与所述节点集合分组相同版本号的元素时,则确定所述节点集合分组与所述超级块集合匹配;
所述基于与所述节点集合分组相匹配的超级块进行数据恢复,包括:
获取所述相匹配的超级块的属性,并基于所述相匹配的超级块的属性计算得到起始偏移;
基于所述起始偏移解析所述残留节点集合中的每个元素的属性;
获取所述残留节点集合中的每个元素的数据,判断所述残留节点集合中的每个元素是否为文件夹节点;
如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合;
基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名;
根据所述文件节点重新构建目录树,以恢复数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
如果确定所述节点集合分组与所述超级块集合不匹配,则基于所有所述残留节点进行数据恢复;
所述基于所有所述残留节点进行数据恢复,包括:
获取所述残留节点集合中任意两个元素,并计算所述任意两个元素的块大小,并判断所述块大小是否有效;
如果所述块大小有效,则计算卷起始偏移;
针对所述残留节点集合中的每个元素,解析每个元素的属性;
基于所述残留节点集合的每个元素的属性,计算所述每个元素的簇大小值;
基于每个所述残留节点集合的元素的数据,判断每个所述残留节点集合的元素是否为文件夹节点;
如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合;
基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名;
根据所述文件节点重新构建目录树,以恢复数据。
3.如权利要求1所述的方法,其特征在于,所述搜索磁盘中的残留节点,得到残留节点集合和超级块集合,包括:
解析当前磁盘文件系统所有文件信息,并获取磁盘残留区的区域范围集合;
针对残留区的每个区域范围进行搜索,得到残留节点集合和超级块集合。
4.如权利要求1所述的方法,其特征在于,所述基于与所述节点集合分组相匹配的超级块进行数据恢复,还包括:
如果所述残留节点集合中的元素不是文件夹节点,则根据节点构建目录树,以恢复数据。
5.如权利要求2所述的方法,其特征在于,所述基于所有所述残留节点进行数据恢复,还包括:
如果所述残留节点集合中的元素不是文件夹节点,则根据节点构建目录树,以恢复数据。
6.一种基于OCFS2的数据恢复装置,其特征在于,所述装置包括:
搜索模块,用于搜索磁盘中的残留节点,得到残留节点集合和超级块集合;
分组模块,用于基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组;
匹配模块,用于判断每个所述节点集合分组与所述超级块集合是否匹配;
恢复模块,用于如果确定所述节点集合分组与所述超级块集合匹配,则基于与所述节点集合分组相匹配的超级块进行数据恢复;
所述基于预设属性对所述残留节点集合中的所有元素进行分组,得到节点集合分组,包括:基于版本号对所有所述残留节点集合中的所有元素进行分组,将同一版本号的元素分为一组,得到至少一组所述节点集合分组;
所述判断每个所述节点集合分组与所述超级块集合是否匹配,包括:对于每个所述节点集合分组的版本号,查找所述超级块集合中是否存在版本号与所述节点集合分组的版本号相同的元素;
如果确定所述节点集合分组与所述超级块集合匹配,包括:当所述超级块集合中存在与所述节点集合分组相同版本号的元素时,则确定所述节点集合分组与所述超级块集合匹配;
所述基于与所述节点集合分组相匹配的超级块进行数据恢复,包括:
获取所述相匹配的超级块的属性,并基于所述相匹配的超级块的属性计算得到起始偏移;
基于所述起始偏移解析所述残留节点集合中的每个元素的属性;
获取所述残留节点集合中的每个元素的数据,判断所述残留节点集合中的每个元素是否为文件夹节点;
如果所述残留节点集合中的元素是文件夹节点,则获取所述元素的目录信息集合;
基于所述目录信息集合中的元素,获取对应的文件节点以及解析文件名;
根据所述文件节点重新构建目录树,以恢复数据。
7.一种基于OCFS2的数据恢复系统,其特征在于,包括存储器、处理器及存储在所述存储器上且在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1-5中任一项所述方法的步骤。
8.一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机执行时实现权利要求1-5中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761235.8A CN111984467B (zh) | 2020-07-31 | 2020-07-31 | 一种基于ocfs2的数据恢复方法、装置、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010761235.8A CN111984467B (zh) | 2020-07-31 | 2020-07-31 | 一种基于ocfs2的数据恢复方法、装置、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984467A CN111984467A (zh) | 2020-11-24 |
CN111984467B true CN111984467B (zh) | 2022-08-02 |
Family
ID=73444995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010761235.8A Active CN111984467B (zh) | 2020-07-31 | 2020-07-31 | 一种基于ocfs2的数据恢复方法、装置、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984467B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106021031A (zh) * | 2016-05-30 | 2016-10-12 | 厦门市美亚柏科信息股份有限公司 | 一种btrfs文件系统的删除数据恢复方法和装置 |
CN106155845A (zh) * | 2016-08-02 | 2016-11-23 | 四川效率源信息安全技术股份有限公司 | 一种基于xfs文件系统数据的重组恢复方法 |
KR101731606B1 (ko) * | 2016-01-12 | 2017-04-28 | (주) 글루시스 | 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법 |
CN107451014A (zh) * | 2017-08-01 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种数据恢复方法及装置 |
CN107545022A (zh) * | 2017-05-11 | 2018-01-05 | 新华三云计算技术有限公司 | 磁盘管理方法及装置 |
CN110232004A (zh) * | 2019-06-13 | 2019-09-13 | 深圳麦风科技有限公司 | 一种apfs文件系统数据恢复方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100550288B1 (ko) * | 2003-12-02 | 2006-02-08 | 주식회사 하우리 | Ext2파일 시스템의 데이터 복구방법과 그 프로그램을기록한 기록매체 |
-
2020
- 2020-07-31 CN CN202010761235.8A patent/CN111984467B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101731606B1 (ko) * | 2016-01-12 | 2017-04-28 | (주) 글루시스 | 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법 |
CN106021031A (zh) * | 2016-05-30 | 2016-10-12 | 厦门市美亚柏科信息股份有限公司 | 一种btrfs文件系统的删除数据恢复方法和装置 |
CN106155845A (zh) * | 2016-08-02 | 2016-11-23 | 四川效率源信息安全技术股份有限公司 | 一种基于xfs文件系统数据的重组恢复方法 |
CN107545022A (zh) * | 2017-05-11 | 2018-01-05 | 新华三云计算技术有限公司 | 磁盘管理方法及装置 |
CN107451014A (zh) * | 2017-08-01 | 2017-12-08 | 郑州云海信息技术有限公司 | 一种数据恢复方法及装置 |
CN110232004A (zh) * | 2019-06-13 | 2019-09-13 | 深圳麦风科技有限公司 | 一种apfs文件系统数据恢复方法 |
Non-Patent Citations (1)
Title |
---|
对象文件系统中元数据管理技术研究;娄成龙;《硕士论文》;20060727;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111984467A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7170701B2 (ja) | 高速コピー可能データベースを効率的に実装するための方法及び機器 | |
CN107423426B (zh) | 一种区块链块数据的数据归档方法及电子设备 | |
US10108543B1 (en) | Efficient physical garbage collection using a perfect hash vector | |
US10515052B2 (en) | File system that supports both case sensitive and case insensitive directory lookup | |
Quinlan et al. | Venti: A new approach to archival data storage | |
US6912645B2 (en) | Method and apparatus for archival data storage | |
Navlakha et al. | Graph summarization with bounded error | |
US7389314B2 (en) | Database backup, refresh and cloning system and method | |
US6701317B1 (en) | Web page connectivity server construction | |
US7478113B1 (en) | Boundaries | |
CN106980699B (zh) | 一种数据处理平台和系统 | |
US20160063021A1 (en) | Metadata Index Search in a File System | |
US11663236B2 (en) | Search and analytics for storage systems | |
CN111045857B (zh) | 数据备份和恢复的方法、电子设备和计算机可读存储介质 | |
US20110022566A1 (en) | File system | |
US20080154978A1 (en) | Systems and methods of directory entry encodings | |
WO2005069783A2 (en) | Methods and apparatus for searching backup data based on content and attributes | |
CN110058969B (zh) | 一种数据恢复方法及装置 | |
Litwin et al. | Algebraic signatures for scalable distributed data structures | |
CN110727663A (zh) | 数据清洗方法、装置、设备及介质 | |
CN111046041A (zh) | 数据处理方法和装置、存储介质及处理器 | |
US7949630B1 (en) | Storage of data addresses with hashes in backup systems | |
CN111104377A (zh) | 文件管理的方法、电子设备和计算机可读存储介质 | |
CN111984467B (zh) | 一种基于ocfs2的数据恢复方法、装置、系统及存储介质 | |
CN111309677A (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 |