一种闪存文件的数据恢复方法和装置的制造方法

文档序号:9727216阅读:447来源:国知局
一种闪存文件的数据恢复方法和装置的制造方法
【技术领域】
[0001]本发明涉及存储技术领域,尤其涉及一种闪存文件的数据恢复方法和装置。
【背景技术】
[0002]闪存(Flash)结合了只读存储器(Read Only Memory,ROM)和随机存储器(RamdomAccess Memory, RAM)的长处,不仅具备电子可擦除可编程(EEPR0M)的性能,还具有非易失性随机访问存储器(Non-Volatile Random Access Memory, NVRAM)的优势一可以快速读取数据,使数据不会因为断电而丢失。在过去的20年里,嵌入式系统一直使用R0M/EPR0M作为它们的存储设备,然而,近年来Flash全面代替了 R0M/EPR0M在嵌入式系统中的地位,用作存储系统启动前引导程序(Bootloader)、操作系统和程序代码;或者,直接当硬盘如固体硬盘(SSD)使用。通常,Flash上存储有很多重要数据,一旦损坏或丢失都将造成严重后果。
[0003]存储技术发展多年,针对传统的机械硬盘即采用磁性介质的硬盘已有较为成熟的文件数据恢复技术,但目前还没有针对Flash具体可行的数据恢复方案。当前,许多闪存都采用第 2 版闪存日志型文件系统(Journalling Flash File System Vers1n 2, JFFS2)将各种信息以文件的形式进行管理和存储。在JFFS2中,对于删除或者修改文件的指令,JFFS2并不实际删除或修改原有的文件数据,而是通过写入新的文件数据节点来实现,这就为针对闪存文件的数据恢复提供了可能。

【发明内容】

[0004]为解决现有存在的技术问题,本发明实施例期望提供一种闪存文件的数据恢复方法和装置,能够针对基于JFFS2的闪存进行文件的数据恢复。
[0005]本发明实施例的技术方案是这样实现的:
[0006]本发明实施例提供一种闪存文件的数据恢复方法,该方法包括:
[0007]扫描闪存存储区域,为文件数据节点创建对应的数据节点描述符,为文件创建对应的内核描述符,所述文件数据节点包括已被标记为无效节点的数据节点,所述文件包括已被标记为删除文件的文件;
[0008]根据数据节点描述符,为文件建立对应的临时红黑树,所述临时红黑树中包含文件的已被标记为无效节点在内的全部数据节点所对应的数据节点描述符;
[0009]根据文件对应的内核描述符和临时红黑树,确定文件的最大版本号;
[0010]当文件的最大版本号为N时,遍历所述文件对应的临时红黑树,建立所述文件的N个版本所对应的N个文件红黑树;其中,N为正整数。
[0011]上述方案中,在对文件数据节点创建对应的数据节点描述符之前,所述方法还包括:
[0012]对文件数据节点进行循环冗余校验。
[0013]上述方案中,,所述遍历所述文件对应的临时红黑树,建立所述文件的N个版本所对应的N个文件红黑树为:
[0014]按照版本号的降序或升序,建立所述文件的Ν个文件红黑树。
[0015]上述方案中,当为所述文件建立版本号η对应的文件红黑树时,所述方法包括:
[0016]遍历所述临时红黑树;
[0017]将所述临时红黑树中所有版本号小于或等于η的节点加入版本号η对应的文件红黑树中;
[0018]其中,1彡η彡Ν,η为正整数。
[0019]上述方案中,当已建立文件的不同版本对应的文件红黑树时,所述方法还包括:
[0020]建立不同的结构体,以描述不同的文件版本,所述结构体中包括文件的版本号和指向所述版本号对应的文件红黑树的根节点指针。
[0021]本发明实施例还提供一种闪存文件的数据恢复装置,该装置包括:扫描模块、临时红黑树建立模块、版本号确定模块和文件红黑树建立模块;其中,
[0022]扫描模块,用于扫描闪存存储区域,为文件数据节点创建对应的数据节点描述符,为文件创建对应的内核描述符,所述文件数据节点包括已被标记为无效节点的数据节点,所述文件包括已被标记为删除文件的文件;
[0023]临时红黑树建立模块,用于根据数据节点描述符,为文件建立对应的临时红黑树,所述临时红黑树中包含文件的已被标记为无效节点在内的全部数据节点所对应的数据节点描述符;
[0024]版本号确定模块,用于根据文件对应的内核描述符和临时红黑树,确定文件的最大版本号;
[0025]文件红黑树建立模块,用于当文件的最大版本号为Ν时,遍历所述文件对应的临时红黑树,建立所述文件的Ν个版本所对应的Ν个文件红黑树;其中,Ν为正整数。
[0026]上述方案中,所述扫描模块包括:
[0027]校验单元,用于在对文件数据节点创建对应的数据节点描述符之前,对文件数据节点进行循环冗余校验。
[0028]上述方案中,所述文件红黑树建立模块包括:
[0029]排序单元,用于按照版本号的降序或升序,建立所述文件的Ν个文件红黑树。
[0030]上述方案中,所述文件红黑树建立模块包括:
[0031]遍历单元,用于遍历所述临时红黑树;
[0032]文件红黑树建立单元,用于将所述临时红黑树中所有版本号小于或等于η的节点加入版本号η对应的文件红黑树中;
[0033]其中,1彡η彡Ν,η为正整数。
[0034]上述方案中,所述装置还包括:
[0035]结构体建立模块,用于当已建立文件的不同版本对应的文件红黑树时,建立不同的结构体,以描述不同的文件版本,所述结构体中包括文件的版本号和指向所述版本号对应的文件红黑树的根节点指针。
[0036]本发明实施例所提供的闪存文件的数据恢复方法和装置,针对基于JFFS2的闪存,利用JFFS2中的内存描述符和红黑树机制,通过为文件建立所有版本号对应的文件红黑树,在脏块回收破坏数据前,能恢复全部删除数据或者历史数据;即使有部分数据被破坏未通过校验,其余通过校验的部分删除数据或者历史数据也可以被恢复。
【附图说明】
[0037]图1为本发明实施例提供的闪存文件数据恢复方法的实现流程示意图;
[0038]图2为本发明实施例提供的闪存文件数据恢复装置的组成结构示意图。
【具体实施方式】
[0039]为了更清楚地说明本发明实施例和技术方案,下面将结合附图及实施例对本发明的技术方案进行更详细的说明,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基本发明的实施例,本领域普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040]在本发明实施例中,闪存采用JFFS2管理所存储的信息。JFFS2是一个日志结构(log-structured)的文件系统,包含数据和原数据(meta-data)的节点在闪存上顺序的存储。JFFS2之所以选择日志结构的存储方式,是因为闪存的擦写块的擦写次数有限,因此,对闪存的更新应该是out-of-place的更新方式,即对文件数据的更新不在原存储区域,而是开辟新的存储区域存储更新后的数据,并以版本号来标识,以实现擦写块的磨损平衡(wearleveling)。
[0041 ] 操作系统内核扫描闪存时,将为闪存中每个文件建立多个描述符,用以表述文件,其中最关键的是索引节点。索引节点可涵盖多种文件系统,只描述所有文件系统共有的普通信息。为了更具体的表述文件,索引节点中包含有一个指针(u域),指向具体文件系统的用以描述文件的结构体,对于JFFS2,u域指向结构体jffs2_inode_info。在现有的JFFS2中,一个文件对应一个结构体jffs2_in
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1