一种文件索引组织及修复的方法及装置

申请号 CN201410510095.1 申请日 2014-09-28 公开(公告)号 CN104239564A 公开(公告)日 2014-12-24
申请人 深圳市锐明视讯技术有限公司; 发明人 黄凯明; 孙继业; 望西淀;
摘要 本 发明 提供了一种文件索引组织及修复的方法及装置,属于数据储存方法领域。在本发明中,首先将存储介质中的所有文件构成一个环状的双向链表,双向链表包括前向链表和后向链表;存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;然后在 访问 文件的过程中,当该文件在索引信息集中的索引与该文件的备份索引不匹配时,则修复双向链表;最后根据修复后的双向链表重建所有文件的索引。本发明通过所述文件索引组织及修复的方法及装置,提高了重建文件索引的效率。
权利要求

1.一种文件索引组织及修复的方法,其特征在于,所述方法包括:
将存储介质中的所有文件构成一个双向链表,所述双向链表包括前向链表和后向链表;
存储所述所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;
访问文件的过程中,若该文件在所述索引信息集中的索引与该文件的备份索引不匹配,则修复所述双向链表;
根据修复后的双向链表重建所述所有文件的索引。
2.根据权利要求1所述的方法,其特征在于,所述将硬盘中的所有文件构成一个双向链表的步骤具体为:
在每个文件中增加一个前向指针和一个后向指针,所述前向指针指向前一个文件的地址以构成前向链表,所述后向指针指向后一个文件的地址以构成后向链表。
3.根据权利要求1所述的方法,其特征在于,所述存储所述所有文件的索引至索引信息集中的步骤具体为:
以一维数组的形式存储所述所有文件的索引至索引信息集中。
4.根据权利要求1所述的休眠控制方法,其特征在于,所述修复所述双向链表的步骤包括以下步骤:
A.设定第一目标文件为第一个文件;
B.判断所述第一目标文件的后向指针是否指向后一个文件,若是,则执行步骤C,若否,则执行步骤E;
C.将所述第一目标文件更新为所述后一个文件,判断更新后的所述第一目标文件是否为所述第一个文件,若是,则执行D,若否,则执行步骤B;
D.根据所述后向链表修复所述前向链表,并终止步骤;
E.将所述第一目标文件作为断点文件;
F.设定第二目标文件为所述第一个文件;
G.若所述第二目标文件的前向指针指向前一个文件,则将所述第二目标文件更新为所述前一个文件;
H.判断更新后的所述第二目标文件是否为所述断点文件,若是,则执行步骤I,若否则执行步骤G;
I.根据所述前向链表中的所述第一个文件至所述断点文件修复所述后向链表中的所述断点文件至所述第一个文件,根据所述后向链表中的所述第一个文件至所述断点文件修复所述前向链表中的所述断点文件至所述第一个文件。
5.根据权利要求4所述的方法,其特征在于,所述根据修复后的双向链表重建所述所有文件的索引的步骤具体为:
遍历所述前向链表或所述后向链表以重建所述所有文件的索引至所述索引信息集中。
6.一种文件索引组织及修复的装置,其特征在于,所述装置包括:
构成模,用于将存储介质中的所有文件构成一个双向链表,所述双向链表包括前向链表和后向链表;
存储备份模块,用于存储所述所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;
修复模块,用于在访问文件的过程中,若该文件在所述索引信息集中的索引与该文件的备份索引不匹配,则修复所述双向链表;
重建模块,用于根据修复后的双向链表重建所述所有文件的索引。
7.根据权利要求6所述的装置,其特征在于,所述构成模块将硬盘中的所有文件构成一个双向链表具体为:
在每个文件中增加一个前向指针和一个后向指针,所述前向指针指向前一个文件的地址以构成前向链表,所述后向指针指向后一个文件的地址以构成后向链表,第一个文件的前一个文件为最后一个文件,所述最后一个文件的后一个文件为所述第一个文件。
8.根据权利要求6所述的装置,其特征在于,所述存储备份模块存储所述所有文件的索引至索引信息集中具体为:
以一维数组的形式存储所述所有文件的索引至索引信息集中。
9.根据权利要求6所述的装置,其特征在于,所述修复模块包括:
第一目标文件设定单元,用于设定第一目标文件为第一个文件;
第一判断单元,用于判断所述第一目标文件的后向指针是否指向后一个文件;
第二判断单元,用于将所述第一目标文件更新为所述后一个文件,判断更新后的所述第一目标文件是否为所述第一个文件;
第一修复单元,用于根据所述后向链表修复所述前向链表;
断点文件设定单元,用于将所述第一目标文件作为断点文件;
第二目标文件设定单元,用于设定第二目标文件为所述第一个文件;
第一设定单元,用于若所述第二目标文件的前向指针指向前一个文件,则将所述第二目标文件更新为所述前一个文件;
第三判断单元,用于判断更新后的所述第二目标文件是否为所述断点文件;
第二修复单元,用于根据所述前向链表中的所述第一个文件至所述断点文件修复所述后向链表中的所述断点文件至所述第一个文件,根据所述后向链表中的所述第一个文件至所述断点文件修复所述前向链表中的所述断点文件至所述第一个文件。
10.根据权利要求6所述的装置,其特征在于,所述重建模块根据修复后的双向链表重建所述所有文件的索引具体为:
遍历所述前向链表或所述后向链表以重建所述所有文件的索引。

说明书全文

一种文件索引组织及修复的方法及装置

技术领域

[0001] 本发明涉及数据储存方法领域,特别涉及一种文件索引组织及修复的方法及装置。

背景技术

[0002] 文件系统基于索引实现文件管理,通过索引定位文件。文件索引的丢失会造成文件系统无法再访问到对应的文件,等同于丢失文件。
[0003] 在文件系统运行过程中,索引数据会被频繁更新,如果环境不稳定,例如车载环境下,抖动、电磁振荡或断电等状况频繁发生,则较易发生索引更新过程中断或数据在传输过程中被污染。在这类环境下,索引的数据完整性很容易受到破坏。
[0004] 索引被破坏一方面会导致已有的文件丢失;另一方面,上层应用读取到异常索引值后,会因为没有对应处理流程而中断运行,如应用于录像监控领域的文件系统,必须能够及时快速地修复受损索引,才能够实现不间断录像和录像不丢失。
[0005] 现有文件系统普通采用目录层次结果的索引组织机制,结构复杂,重建难度大。当出现索引受损,只能借助离线工具,通过全硬盘遍历文件重建索引完成修复,无法实现快速在线自动修复。

发明内容

[0006] 本发明提供了一种文件索引组织及修复的方法及装置,提高了重建文件索引的效率。
[0007] 一方面,本发明提供了一种文件索引组织及修复的方法,所述方法包括:
[0008] 将存储介质中的所有文件构成一个双向链表,所述双向链表包括前向链表和后向链表;
[0009] 存储所述所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;
[0010] 在访问文件的过程中,若该文件在所述索引信息集中的索引与该文件的备份索引不匹配,则修复所述双向链表;
[0011] 根据修复后的双向链表重建所述所有文件的索引。
[0012] 第二方面,本发明提供了一种文件索引组织及修复的装置,所述装置包括:
[0013] 构成模,用于将存储介质中的所有文件构成一个双向链表,所述双向链表包括前向链表和后向链表;
[0014] 存储备份模块,用于存储所述所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;
[0015] 修复模块,用于在访问文件的过程中,若该文件在所述索引信息集中的索引与该文件的备份索引不匹配,则修复所述双向链表;
[0016] 重建模块,用于根据修复后的双向链表重建所述所有文件的索引。
[0017] 在本发明中,由于首先将存储介质中的所有文件构成一个环状的双向链表,双向链表包括前向链表和后向链表;存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;然后在访问文件的过程中,当该文件在索引信息集中的索引与该文件的备份索引不匹配时,则修复双向链表;最后根据修复后的双向链表重建所有文件的索引,因此,提高了重建文件索引的效率。附图说明
[0018] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0019] 图1为本发明实施例一提供的文件索引组织及修复的方法一种流程图
[0020] 图2为本发明实施例二提供的文件索引组织及修复的方法一种流程图;
[0021] 图3为本发明实施例二提供的文件索引组织及修复的方法所涉及的文件构成双向链表的示意图;
[0022] 图4为本发明实施例二提供的文件索引组织及修复的方法所涉及的文件构成后向链表的示意图;
[0023] 图5为本发明实施例二提供的文件索引组织及修复的方法所涉及的文件构成前向链表的示意图;
[0024] 图6为本发明实施例二提供的文件索引组织及修复的方法所涉及的存储所有文件的索引并在每个文件中备份该文件的索引的示意图;
[0025] 图7为本发明实施例三提供的文件索引组织及修复的装置一种结构示意图;
[0026] 图8为本发明实施例三提供的一种文件索引组织及修复的装置修复模块结构示意图。

具体实施方式

[0027] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0028] 实施例一:
[0029] 本发明实施例一提供了一种文件索引组织及修复的方法,参见图1,文件索引组织及修复的方法包括以下步骤:
[0030] 101.将存储介质中的所有文件构成一个双向链表,双向链表包括前向链表和后向链表。
[0031] 102.存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引。
[0032] 103.在访问文件的过程中,若该文件在索引信息集中的索引与该文件的备份索引不匹配,则修复双向链表。
[0033] 104.根据修复后的双向链表重建所有文件的索引。
[0034] 例如,硬盘中共有5个文件,将该5个文件构成一个双向链表,双向链表包括前向链表和后向链表;存储该5个文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;在访问文件2的过程中,若文件2在索引信息集中的索引与文件2的备份索引不匹配,则修复双向链表;根据修复后的双向链表重建该5个文件的索引。
[0035] 本实施例通过首先将存储介质中的所有文件构成一个环状的双向链表,双向链表包括前向链表和后向链表;存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;然后在访问文件的过程中,当该文件在索引信息集中的索引与该文件的备份索引不匹配时,则修复双向链表;最后根据修复后的双向链表重建所有文件的索引,因此,提高了重建文件索引的效率。
[0036] 实施例二:
[0037] 本发明实施例二提供了一种文件索引组织及修复的方法,参见图2,文件索引组织及修复的方法包括以下步骤:
[0038] 201.在每个文件中增加一个前向指针和一个后向指针,前向指针指向前一个文件的地址以构成前向链表,后向指针指向后一个文件的地址以构成后向链表。如图3所示,上述前向链表32和上述后向链表31均为环形;如图4所示,后向链表中第一个文件(文件1)的前一个文件为最后一个文件(文件5),后向链表由文件5指向文件4,文件4指向文件3,文件3指向文件2,文件2指向文件1,文件1再指向文件5以形成一个环形的链表;如图5所示,前向链表中最后一个文件(文件5)的后一个文件为第一个文件(文件1),前向链表由文件1指向文件2,文件2指向文件3,文件3指向文件4,文件4指向文件5,文件5再指向文件1以形成另一个环形的链表。
[0039] 202.以一维数组的形式存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引。
[0040] 203.在访问文件过程中,若该文件在索引信息集中的索引与该文件的备份索引不匹配,则设定第一目标文件为第一个文件。
[0041] 204.判断第一目标文件的后向指针是否指向后一个文件,若是,则执行步骤205,若否,则执行步骤207。
[0042] 205.将第一目标文件更新为后一个文件,判断更新后的第一目标文件是否为第一个文件,若是,则执行206,若否,则执行步骤204。
[0043] 206.根据后向链表修复前向链表,并终止步骤。
[0044] 207.将第一目标文件作为断点文件。
[0045] 208.设定第二目标文件为第一个文件。
[0046] 209.若第二目标文件的前向指针指向前一个文件,则将第二目标文件更新为前一个文件。
[0047] 210.判断更新后的第二目标文件是否为断点文件,若是,则执行步骤211,若否则执行步骤209。
[0048] 211.根据前向链表中的第一个文件至断点文件修复后向链表中的断点文件至第一个文件,根据后向链表中的第一个文件至断点文件修复前向链表中的断点文件至第一个文件。
[0049] 212.遍历前向链表或后向链表以重建所有文件的索引。
[0050] 步骤203至步骤211为修复双向链表,通过先沿着前向链表从第一个文件开始向后遍历以寻找断点文件,再沿着后向链表从第一个文件开始遍历直至找到断点文件,最后根据前向链表中的第一个文件至断点文件修复后向链表中的断点文件至第一个文件,根据后向链表中的第一个文件至断点文件修复前向链表中的断点文件至第一个文件,完成双向链表的修复。
[0051] 例如,硬盘中共有5个文件,在每个文件中增加一个前向指针和一个后向指针,后向指针指向后一个文件的地址以构成后向链表,如图4所示;前向指针指向前一个文件的地址以构成前向链表,如图5所示;以一维数组的形式存储该5个文件的索引至索引信息集中,并在每个文件中备份其所对应的索引,如图6所示;在访问文件(文件2)过程中,若文件2在索引信息集中的索引与文件2的备份索引不匹配,则设定第一目标文件为文件1;判断第一目标文件(文件1)的后向指针是否指向后一个文件(文件2);当判断为是时,将第一目标文件更新为后一个文件(文件2),判断更新后的第一目标文件(文件2)是否为第一个文件(文件1);当判断为否时,判断第一目标文件(文件2)的后向指针是否指向后一个文件(文件3);当判断为否时,将第一目标文件(文件2)作为断点文件;再设定第二目标文件为第一个文件(文件1),若第二目标文件(文件1)的前向指针指向前一个文件(文件5),则将第二目标文件更新为前一个文件(文件5);判断第二目标文件是否为断点文件(文件2),当判断为否时,重复执行若第二目标文件的前向指针指向前一个文件,则将第二目标文件更新为前一个文件步骤,直至当第二目标文件为文件2时不再满足第二目标文件不为断点文件(文件2)的前提条件,并根据前向链表中的第一个文件(文件1)至断点文件(文件2)修复后向链表中断点文件(文件2)至第一个文件(文件1),根据后向链表中的第一个文件(文件1)至断点文件(文件2)修复前向链表中的断点文件(文件2)至第一个文件(文件1);遍历前向链表或后向链表以重建该5个文件的索引。
[0052] 本实施例通过首先将存储介质中的所有文件构成一个环状的双向链表,双向链表包括前向链表和后向链表;存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;然后在访问文件的过程中,当该文件在索引信息集中的索引与该文件的备份索引不匹配时,从第一个文件遍历前向链表,找到断点文件,再从第一个文件遍历后向链表至断点文件处以修复双向链表;最后遍历前向链表或后向链表以重建所有文件的索引,因此,提高了重建文件索引的效率。
[0053] 实施例三:
[0054] 本发明实施例三提供了一种文件索引组织及修复的装置,如图7所示,文件索引组织及修复的装置30包括构成模块310、存储备份模块320、修复模块330和重建模块340。
[0055] 构成模块310,用于将存储介质中的所有文件构成一个双向链表,双向链表包括前向链表和后向链表;
[0056] 存储备份模块320,用于存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;
[0057] 修复模块330,用于在访问文件过程中,若该文件在索引信息集中的索引与该文件的备份索引不匹配,则修复双向链表;
[0058] 重建模块340,用于根据修复后的双向链表重建所有文件的索引。
[0059] 构成模块310将存储介质中的所有文件构成一个双向链表具体为:在每个文件中增加一个前向指针和一个后向指针,前向指针指向前一个文件的地址以构成前向链表,后向指针指向后一个文件的地址以构成后向链表。
[0060] 存储备份模块320存储所有文件的索引至索引信息集中具体为:以一维数组的形式存储所有文件的索引至索引信息集中。
[0061] 重建模块340根据修复后的双向链表重建所有文件的索引具体为:遍历前向链表或后向链表以重建所有文件的索引。
[0062] 其中,如图8所示,修复模块330包括第一目标文件设定单元331、第一判断单元332、第二判断单元333、第一修复单元334、断点文件设定单元335、第二目标文件设定单元
336、第一设定单元337、第三判断单元338和第二修复单元339。
[0063] 第一目标文件设定单元331,用于设定第一目标文件为第一个文件;
[0064] 第一判断单元332,用于判断第一目标文件的后向指针是否指向后一个文件;
[0065] 第二判断单元333,用于将第一目标文件更新为后一个文件,判断更新后的第一目标文件是否为第一个文件;
[0066] 第一修复单元334,用于根据后向链表修复前向链表;
[0067] 断点文件设定单元335,用于将第一目标文件作为断点文件;
[0068] 第二目标文件设定单元336,用于设定第二目标文件为第一个文件;
[0069] 第一设定单元337,用于若第二目标文件的前向指针指向前一个文件,则将第二目标文件更新为前一个文件;
[0070] 第三判断单元338,用于判断更新后的第二目标文件是否为断点文件;
[0071] 第二修复单元339,用于根据前向链表中的第一个文件至断点文件修复后向链表中的断点文件至第一个文件,根据后向链表中的第一个文件至断点文件修复前向链表中的断点文件至第一个文件。
[0072] 本实施例通过首先将存储介质中的所有文件构成一个环状的双向链表,双向链表包括前向链表和后向链表;存储所有文件的索引至索引信息集中,并在每个文件中备份其所对应的索引;然后在访问文件的过程中,当该文件在索引信息集中的索引与该文件的备份索引不匹配时,则修复双向链表;最后根据修复后的双向链表重建所有文件的索引,因此,提高了重建文件索引的效率。
[0073] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0074] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0075] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
QQ群二维码
意见反馈