CN105573862B - 一种恢复文件系统的方法和设备 - Google Patents
一种恢复文件系统的方法和设备 Download PDFInfo
- Publication number
- CN105573862B CN105573862B CN201510922289.7A CN201510922289A CN105573862B CN 105573862 B CN105573862 B CN 105573862B CN 201510922289 A CN201510922289 A CN 201510922289A CN 105573862 B CN105573862 B CN 105573862B
- Authority
- CN
- China
- Prior art keywords
- cluster
- file
- information
- restored
- file system
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及计算机技术领域,特别涉及一种恢复文件系统的方法和设备,用以解决现有技术在存储设备关键信息区记录的信息丢失或者损坏后,将无法读取存储设备中的数据的问题。本发明实施例中获取待恢复文件的目标簇对应的文件系统基本信息;根据文件系统基本信息,确定目标簇对应的快速索引区中n字节位置;根据目标簇对应的文件信息,恢复快速索引区中n字节位置的n字节信息。由于本发明实施例采用快速索引区代替关键信息区,并且快速索引区和普通数据区的均包括文件系统基本信息和文件信息。在快速索引区中的n字节信息损坏或丢失后,能够根据每个簇中记录的文件信息和文件系统基本信息进行恢复,提高了文件系统的安全性。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种恢复文件系统的方法和设备。
背景技术
目前,按照现有的存储设备分区标准,存储设备通常被划分成多个主分区和扩展分区,并通过文件系统用来管理每个分区的存储空间。
现有的文件系统存储空间管理方法为,将每个分区被划分成关键信息区和数据区两部分。数据区被划分为等大小的簇,以簇为单位进行存储空间管理。关键信息区中记录了分区中的文件信息和簇的使用信息,在读取存储设备的文件时,根据关键信息区记录的信息进行读取。
随着存储设备的容量不断增大,存储设备上需要存储大量的数据。在存储设备异常断电,或者存储设备发生坏道等异常现象时,会造成存储设备关键信息区记录的信息丢失或者损坏。由于文件系统在创建或者修改文件时,需要读取关键信息区的数据,在读取文件时也需要依据关键信息区的信息,在存储设备关键信息区记录的信息丢失或者损坏后,存储设备上存储的数据将无法读取,
综上所述,目前,在存储设备关键信息区记录的信息丢失或者损坏后,将无法读取存储设备中的数据。
发明内容
本发明提供一种恢复文件系统的方法和设备,用以解决现有技术在存储设备关键信息区记录的信息丢失或者损坏后,将无法读取存储设备中的数据的问题。
基于上述问题,本发明实施例提供一种恢复文件系统的方法,包括:
获取待恢复文件的目标簇对应的文件系统基本信息;
根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
根据所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息。
由于本发明实施例弱化关键信息区的作用,采用快速索引区代替关键信息区,并且快速索引区和普通数据区的均包括文件系统基本信息和文件信息。针对待恢复文件中的每一个簇,根据簇中记录的文件系统基本信息,能够确定每个簇对应的快速索引区中n字节的位置,并根据簇中记录的文件信息恢复快速索引区中n字节信息,从而在快速索引区中的n字节信息损坏或丢失后,能够根据每个簇中记录的文件信息和文件系统基本信息进行恢复,提高了文件系统的安全性。
可选的,所述恢复快速索引区中n字节位置的n字节信息之后,还包括:
若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回获取待恢复文件的目标簇对应的文件系统基本信息的步骤。
由于本发明实施例的待恢复文件包括一个或多个簇,在恢复待恢复文件对应的快速索引区的n字节信息时,按照从尾簇到首簇的顺序依次恢复,在目标簇对应的快速索引区的n字节信息恢复完成后,将上一簇作为目标簇进行恢复,使得待恢复文件的所有簇对应的快速索引区的n字节信息均被恢复,从而保证快速索引区的n字节信息的完整,提高文件系统的准确性。
可选的,所述目标簇对应的文件信息包括待恢复文件的首簇编号;
所述根据所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息,包括:
若所述文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号;
若所述文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号;
根据所述下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
由于本发明实施例快速索引区的n字节信息包括对应的簇的信息区记录的文件系统的基本信息和文件信息,以及下一簇编号,根据文件系统的基本信息用于确定目标簇对应的快速索引区的n字节位置。本发明实施例定义一个map集合,其中第一字段用于存放待恢复文件的首簇编号,第二个字段用于存放下个簇编号。并根据文件系统对应的map集合第一字段的元素值中是否包括文件的首簇编号,分别确定下一簇编号。本发明实施例提供了不同情况下确定下一簇的编号的方法,从而保证准确地确定下一簇的编号,从而确定并恢复快速索引区n字节位置的n字节信息,有效保证了恢复文件系统的可靠性。
可选的,所述将第一预设值作为下一簇的编号之后,还包括:
将所述待恢复文件的首簇编号作为所述map集合第一字段的一个元素值。
由于本发明实施例map集合中第一字段用于存放文件的首簇编号,在将第一预设值作为下一簇编号时,说明该目标簇为待恢复文件的尾簇,map集合中第一字段的元素值中没有包括待恢复文件的首簇编号,此时,获取该目标簇的文件信息中的首簇编号,并存放于map集合中第一字段,以使在恢复上一簇的快速索引区n字节信息时,根据map集合中第一字段的首簇编号,确定下一簇编号。
可选的,所述根据下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息之后,还包括:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
由于本发明实施例从文件的尾簇开始依次恢复文件的每一个簇,并且map集合中的第二字段的元素值用于存放目标簇的下一簇编号,随着目标簇的变化,目标簇的下一簇编号也随着变化。为了保证map集合中首簇编号对应的第二字段中的元素值始终是目标簇的下一簇编号,在每恢复一个簇对应的快速索引区的n字节信息后,还需要更新map集合中首簇编号对应的第二字段中的元素值,从而提高恢复文件系统的可靠性。
可选的,所述获取目标簇对应的文件系统基本信息之前,还包括:
在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
由于本发明实施例每个簇的文件信息区记录的文件信息和文件系统基本信息,是在创建文件时,与数据区的文件数据一起写入对应簇中的,使得能够根据每个簇的文件信息区记录的文件信息和文件系统基本信息,恢复该簇对应的快速索引区的n字节信息,从而提高恢复文件系统的可靠性。
另一方面,本发明实施例提供的一种恢复文件系统的设备,包括:
获取模块,用于获取待恢复文件的目标簇对应的文件系统基本信息;
确定模块,用于根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
处理模块,用于根据所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息。
可选的,所述处理模块,还用于:
若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回获取待恢复文件的目标簇对应的文件系统基本信息的步骤。
可选的,所述目标簇对应的文件信息包括待恢复文件的首簇编号;
所述处理模块,具体用于:
若所述文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号;若所述文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号;根据所述下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
可选的,所述处理模块,还用于:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
可选的,所述处理模块,还用于:
将所述目标簇的编号作为所述map集合所述首簇编号对应的中第二字段中的元素值。
可选的,所述处理模块,还用于:
在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
附图说明
图1为本发明实施例提供的一种恢复文件系统的方法流程图;
图2为本发明实施例存储介质的结构示意图;
图3为本发明实施例存储介质区域划分的结构示意图;
图4为本发明实施例簇的结构示意图;
图5为本发明实施例提供的一种恢复文件系统方法的整体流程图;
图6为本发明实施例提供的一种创建文件的方法流程图;
图7为本发明实施例提供的一种创建文件方法的整体流程图;
图8为本发明实施例提供的一种读取文件方法的整体流程图;
图9为本发明实施例提供的一种恢复文件系统设备的结构示意图。
具体实施方式
本发明实施例获取待恢复文件的目标簇对应的文件系统基本信息;根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;根据所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息。由于本发明实施例针对待恢复文件中的每一个簇,根据簇中记录的文件系统基本信息,能够确定每个簇对应的快速索引区中n字节的位置,并根据簇中记录的文件信息恢复快速索引区中n字节信息,从而在快速索引区中的n字节信息损坏或丢失后,能够根据每个簇中记录的文件信息和文件系统基本信息进行恢复,提高了文件系统的安全性。
下面结合说明书附图对本申请实施例作进一步详细描述。
如图1所示,本发明实施例一种恢复文件系统的方法包括:
步骤101、获取待恢复文件的目标簇对应的文件系统基本信息;
步骤102、根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
步骤103、根据所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息。
本发明实施例的文件系统中包括一个或多个待恢复文件,其中对于每一个待恢复文件的恢复方法均相同,因此本发明实施例针对一个待恢复文件进行说明。
本发明实施例的文件系统是用户与存储介质之间的接口,用户通过文件系统对存储介质的空间进行组织和分配,明确存储介质的分区信息和存储数据的结构。
本发明实施例的文件系统的基本信息包括但不限于存储介质的分区信息、数据的存储信息。
下面具体介绍本发明实施例中文件系统的基本信息。
如图2所示,本发明实施例将存储介质划分为等大小的block(数据块),其中block的大小可以根据不同的存储介质进行调整,例如,在存储介质为RAID(Redundant Arraysof Independent Disks,磁盘阵列)时,block的大小需要调整为条带倍数。
本发明实施例将存储介质前面部分的block标识为快速索引区,后面部分的block标识为普通数据区,并且普通数据区的block称之为簇,每个簇都有唯一编号。存储介质的空间划分如图3所示,其中,快速索引区的每个block包含多个n字节,并且每个block包含的n字节个数相同;快速索引区的每个n字节对应普通数据区的一个簇,并且按照从前到后的顺序,每个n字节与普通数据区的簇一一对应。
本发明实施例的普通数据区的每个簇又包括信息区和数据区,其中,信息区记录的内容包括:文件系统的基本信息和文件信息。其中文件信息包括但不限于文件创建时间、文件大小、文件属性、文件的首簇编号、该簇中文件数据的有效长度、以及与该簇属于同一文件的上个簇编号。
本发明实施例信息区记录的文件信息中包括与该簇属于同一文件的上个簇编号。如图4所示,本发明实施例普通数据区连续的四个簇,簇编号依次为n、n1、n2、n3,其中,编号为n的簇为文件的首簇,n1簇没有使用。这四个簇均包括信息区和数据区,其中,编号为n的簇的信息区记录的上一簇编号up_clus_no为0,编号为n2的簇的信息区记录的上一簇编号up_clus_no为n,编号为n3的簇的信息区记录的上一簇编号up_clus_no为n2。
需要说明的是,本发明实施例普通数据区的信息区记录的文件信息中不包括下一簇编号,由于若文件信息中需要记录下一簇编号,则在目标簇写满,申请下一簇之后,还需要跳转至目标簇的起始位置,更新下一簇编号。本发明实施例的信息区记录的文件信息中不包括下一簇编号,可以最大限度地减少跳转,特别是对于机械硬盘来说减少跳转,在一定程度上提高性能。
本发明实施例的快速索引区的n字节信息包括文件系统的基本信息和文件信息,其中文件信息包括但不限于:文件创建时间、文件大小、文件属性、文件的首簇、与该n字节对应的簇的上一簇编号和下一簇编号,并且,快速索引区的n字节信息记录的是该n字节对应的普通数据区的簇的信息。
需要说明的是,本发明实施例中列举的文件系统的基本信息、普通数据区的文件信息、以及快速索引区n字节信息的内容,只是对本发明实施例中文件系统的基本信息、普通数据区的文件信息和快速索引区n字节信息的内容的举例说明,本发明实施例欲保护的文件系统的基本信息、普通数据区的文件信息、以及快速索引区n字节信息的内容并不限于上述内容,在此不一一列举。
本发明实施例的快速索引区,用于快速查询文件。由于快速索引区的每个n字节信息包括文件的首簇编号,以及与该n字节对应的簇的上一簇编号和下一簇编号,因此,在读取文件时,根据快速索引区的文件信息,读取普通数据区的文件数据。
在步骤101之后,还需要判断获取的目标簇中记录的文件信息和文件系统基本信息是否有效。具体的,本发明实施例通过CRC(Cyclic Redundancy Check,循环冗余校验码)校验,若CRC校验无效,则该目标簇跳过,不进行恢复。
本发明实施例在恢复文件系统的数据时,针对一个待恢复的文件,从该文件的最后一个簇开始,对该文件的所有簇逐一恢复,直至恢复完该文件的首簇。
在步骤103之后,还需要判断该目标簇是否为待恢复文件的首簇,具体的:
若目标簇是待恢复文件的首簇,则说明该待恢复文件对应的快速索引区的n字节信息已经全部恢复完成。
若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回获取待恢复文件的目标簇对应的文件系统基本信息的步骤。
本发明实施例在确定目标簇不是待恢复文件的首簇时,确定该待恢复文件对应的快速索引区的n字节信息并没有全部恢复,此时,根据目标簇的文件信息,确定目标簇的上一簇编号,将上一簇作为目标簇,执行步骤101的操作。
比如,针对待恢复文件A,在普通数据区为其分配的簇的编号依次为1、2、3、4、5,其中编号为1的簇为其首簇,编号为5的簇为其尾簇。在恢复文件A对应的快速索引区的n字节信息时,从尾簇开始恢复,首先恢复编号为5的簇。获取编号为5的簇的信息区记录的文件系统的基本信息,确定编号为5的簇对应的快速索引区的n字节位置,从而根据编号为5的簇的信息区记录的文件信息恢复编号为5的簇对应的快速索引区的n字节位置的n字节信息。由于编号为5的簇并非文件A的首簇,即文件A的数据尚未全部恢复,此时根据编号为5的簇的信息区记录的文件信息中的上一簇编号,确定上一簇编号为4,并将编号为4的簇作为目标簇,恢复编号为4的簇对应的快速索引区的n字节信息。根据上述方式,依次恢复编号为3的簇对应的快速索引区的n字节信息、编号为2的簇对应的快速索引区的n字节信息,以及编号为1的簇对应的快速索引区的n字节信息。并且在恢复编号为1的簇对应的快速索引区的n字节信息之后,由于编号为1的簇为待恢复文件A的首簇,确定待恢复文件A的所有簇对应的快速索引区的n字节信息全部恢复,即文件A恢复完成。
本发明实施例中,相比于簇的信息区记录的文件信息,快速索引区n字节信息中的文件信息还包括下一簇的编号,因此在恢复目标簇对应的快速索引区n字节信息之前,还应该确定下一簇的编号。由于本发明实施例在恢复待恢复文件快速索引区的n字节信息时,采用从尾簇至首簇一一恢复的顺序,因此在恢复目标簇对应的快速索引区n字节信息时,目标簇的下一簇对应的快速索引区n字节信息已经恢复完成,并且在恢复目标簇的下一簇对应的快速索引区n字节信息时,已知该下一簇自身的编号。为了便于确定目标簇的下一簇编号,在恢复目标簇的下一簇对应的快速索引区n字节信息时,需要将该下一簇自身的编号存储起来。为此,本发明实施例引入map集合,即为该文件系统定义一个对应的map集合。其中,文件系统对应的map集合中第一字段用于存放文件的首簇编号;文件系统对应的map集合中第二字段用于存放目标簇的下一簇编号。
需要说明的是,文件系统对应的map集合中第一字段上可以存放多个文件的首簇编号。在第一字段上存放多个文件的首簇编号时,map集合中第二字段上存放的下一簇编号也为多个,并且,同一文件的首簇编号和下一簇编号一一对应。
下面详细介绍恢复快速索引区中n字节信息的方法。
本发明实施例根据目标簇中记录的文件系统基本信息,确定目标簇对应的快速索引区的n字节位置之后,恢复该位置的n字节信息。
由于本发明实施例中,相比于簇的信息区记录的文件信息,快速索引区n字节信息中的文件信息还包括下一簇的编号,因此在恢复目标簇对应的快速索引区n字节信息之前,还应该确定下一簇的编号。
下面分情况说明确定下一簇的编号的方法。
一、文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号。
本发明实施例中map集合第一字段用于存放文件的首簇编号,并且由于簇编号的唯一性,每一个首簇编号只对应于唯一一个待恢复文件。在恢复待恢复文件之前,map集合第一字段中没有存放该待恢复文件的首簇编号。由于本发明实施例在恢复待恢复文件快速索引区n字节信息时,是从尾簇开始恢复的,在将待恢复文件的尾簇作为目标簇时,map集合第一字段中还没有存放该待恢复文件的首簇编号。因此,在确定文件系统对应的map集合第一字段的元素值中不包括待恢复文件的首簇编号时,能够确定该目标簇为文件的尾簇,此时将第一预设值作为下一簇编号。
例如,针对待恢复文件A,为其分配的簇的编号依次为1、2、3,其中编号为1的簇为文件A的首簇,编号为3的簇为文件A的尾簇,并且此时map集合中第一字段存放的元素值包括4、8。在恢复文件A快速索引区的n字节信息时,首先恢复编号为3的簇对应的快速索引区的n字节信息,将恢复编号为3的簇作为目标簇,从编号为3的簇中记录的文件信息中读取,上一簇编号为2,首簇编号为1;在确定编号为3的簇的下一簇编号时,根据读取的首簇编号为1,判断map集合中第一字段存放的元素值中没有1,此时将第一预设值0作为编号为3的簇的下一簇编号。
由于本发明实施例在恢复目标簇的快速索引区的n字节信息时,已经从目标簇的文件信息中获取到待恢复文件的首簇编号。因此,本发明实施例在将第一预设值作为下一簇的编号之后,将所述待恢复文件的首簇编号作为所述map集合第一字段的一个元素值。
例如,针对待恢复文件A,为其分配的簇的编号依次为1、2、3,其中编号为1的簇为文件A的首簇,编号为3的簇为文件A的尾簇,并且此时map集合中第一字段存放的元素值包括4、8。在恢复文件A快速索引区的n字节信息时,首先恢复编号为3的簇对应的快速索引区的n字节信息,将恢复编号为3的簇作为目标簇,从编号为3的簇中记录的文件信息中读取,上一簇编号为2,首簇编号为1;在确定编号为3的簇的下一簇编号时,根据读取的首簇编号为1,判断map集合中第一字段存放的元素值中没有1,此时将第一预设值0作为编号为3的簇的下一簇编号;然后根据读取的首簇编号为1,将文件A的首簇编号1存放到map集合中第一字段,作为map集合第一字段的一个元素值,此时,map集合中第一字段存放的元素值包括1、4、8。
二、文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号。
本发明实施例中,map集合中的第一字段用于存放文件的首簇编号,map集合中的第一字段用于存放目标簇的下一簇编号,并且同一文件的首簇编号和下一簇编号一一对应,以元素对的形式存储于map集合中。
本发明实施例读取目标簇的文件信息,从文件信息中获得待恢复文件的首簇编号,若确定文件系统对应的map集合中的第一字段的元素值包括该待恢复文件的首簇编号,根据第一字段上的该首簇编号,确定该首簇编号对应的第二字段中的元素值,并将map集合中该首簇编号对应的第二字段中的元素值作为下一簇的编号。
例如,针对待恢复文件B,为其分配的簇的编号依次为4、5、6、7,其中编号为4的簇为文件B的首簇,编号为7的簇为文件B的尾簇。在编号为6的簇作为目标簇时,读取编号为6的簇中记录的文件信息,得到文件B的首簇编号为4,上一簇编号为5;在确定目标簇的下一簇编号时,确定此时的map集合中存放的元素对为<4,7>、<8,9>,由于map集合中第一字段的元素值包括4和8,确定文件B的首簇编号4位于map集合中第一字段中,则将首簇编号4对应的第二字段中的元素值7作为下一簇的编号。
本发明实施例在确定下一簇的编号之后,根据下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
由于本发明实施例目标簇的文件信息相比于其对应的快速索引区n字节位置的n字节信息,目标簇的文件信息不包括下一簇编号,因此在确定下一簇编号之后,根据确定的下一簇编号和目标簇的文件信息,恢复目标簇对应的快速索引区的n字节信息。
本发明实施例针对一个待恢复的文件,采用从文件的尾簇开始依次恢复文件的每一个簇,并且每一个簇的恢复方法均相同。由于map集合中与待恢复文件首簇编号对应的第二字段中的元素值为目标簇的下一簇编号,随着目标簇的变化,目标簇的下一簇编号也随着变化。为了保证map集合中与待恢复文件首簇编号对应的第二字段中的元素值始终是目标簇的下一簇编号,在每恢复一个簇对应的快速索引区的n字节信息后,还需要更新map集合中与待恢复文件首簇编号对应的第二字段中的元素值。
具体的,本发明实施例在根据下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息之后,将目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
比如,文件C在普通数据区占用三个簇,三个簇的编号依次为4、5、6,其中,编号为4的簇为文件C的首簇。在目标簇为编号为5的簇时,首先,读取编号为5的簇的文件信息,获取文件的首簇编号4,以及确定此时map集合为中与首簇编号4对应的第二字段中的元素值为6;然后,确定map集合中的第一字段的元素值为待恢复文件的首簇编号,则将map集合中与首簇编号4对应的第二字段中的元素值6作为下一簇编号;最后还需要将map集合中与首簇编号4对应的第二字段中的元素值更新为目标簇的编号5。
可选的,在待恢复文件的首簇对应的快速索引区n字节信息恢复完成之后,将map集合中第一字段中的待恢复文件的首簇编号,以及该首簇编号对应的第二字段中的元素值删除。
本发明实施例在待恢复文件的首簇对应的快速索引区n字节信息恢复完成之后,即待恢复文件对应的快速索引区的n字节信息均恢复完成。由于map集合主要用于在恢复待恢复文件的过程中,临时存放待恢复文件的首簇编号和下一簇编号,在待恢复文件恢复完成后,可以删除文件恢复过程中保存的数据。
针对本发明实施例提供的恢复文件系统的方法,下面以具体实施例一为例,对恢复文件系统的方法举例说明。
具体实施例一:
针对一个待恢复文件N,待恢复文件N在普通数据区占用三个簇,占用的三个簇的编号依次为:1、2、3,其中文件的首簇编号为1。文件系统对应一个map集合,map集合的第一字段用于存放文件的首簇编号,map集合的第二字段用于存放目标簇的下一簇编号,并且在恢复文件N之前,map集合中第一字段的元素值包括4和8,其中元素值4对应的第二字段中的元素值为5,元素值8对应的第二字段中的元素值为9。其中,文件系统的恢复过程为从尾簇开始恢复,直至首簇恢复完成。
下面具体说明待恢复文件N的恢复步骤。
一、编号为3的簇为目标簇。
1、若通过CRC校验通过,读取目标簇的信息区记录的文件系统基本信息和文件信息,根据目标簇的文件信息确定待恢复文件N的文件首簇编号1和上一簇编号2;
2、设置目标簇的下一簇编号为0,并将文件首簇编号1作为map集合第一字段的一个元素值;
3、根据目标簇的信息区记录的文件系统基本信息,确定目标簇对应的快速索引区的n字节的位置;
4、根据确定的目标簇的上一簇编号2、下一簇编号0、文件首簇编号1以及其他的文件信息、文件系统基本信息,恢复目标簇对应的快速索引区的n字节信息;
5、更新map集合,将目标簇的编号3作为map集合中与首簇编号1对应的第二字段中的元素值。
由于编号为3的簇不是待恢复文件N的首簇,因此在编号为3的簇对应的快速索引区的n字节信息恢复完成后,将编号为3的簇的上一簇,即编号为2的簇作为目标簇,执行恢复操作。
二、编号为2的簇为目标簇。
1、若通过CRC校验通过,读取目标簇的信息区记录的文件系统基本信息和文件信息,根据目标簇的文件信息确定待恢复文件N的文件首簇编号1和上一簇编号1;
2、读取map集合中与首簇编号1对应的第二字段中的元素值3,并将元素值3作为目标簇的下一簇编号;
3、根据目标簇的信息区记录的文件系统基本信息,确定目标簇对应的快速索引区的n字节的位置;
4、根据确定的目标簇的上一簇编号1、下一簇编号3、文件首簇编号1以及其他的文件信息、文件系统基本信息,恢复目标簇对应的快速索引区的n字节信息;
5、更新map集合,将目标簇的编号2作为map集合中与首簇编号1对应的第二字段中的元素值。
由于编号为2的簇不是待恢复文件N的首簇,因此在编号为2的簇对应的快速索引区的n字节信息恢复完成后,将编号为2的簇的上一簇,即编号为1的簇做为目标簇,执行恢复操作。
三、编号为1的簇为目标簇。
1、若通过CRC校验通过,读取目标簇的信息区记录的文件系统基本信息和文件信息,根据目标簇的文件信息确定待恢复文件N的文件首簇编号1和上一簇编号0;
2、读取集合中与首簇编号1对应的第二字段中的元素值2,并将元素值2作为目标簇的下一簇编号;
3、根据目标簇的信息区记录的文件系统基本信息,确定目标簇对应的快速索引区的n字节的位置;
4、根据确定的目标簇的上一簇编号0、下一簇编号2、文件首簇编号1以及其他的文件信息、文件系统基本信息,恢复目标簇对应的快速索引区的n字节信息;
5、删除map集合中第一字段中的元素值1,以及与元素值1对应的第二字段中的元素值2.
由于编号为1的簇是待恢复文件N的首簇,因此在编号为1的簇对应的快速索引区的n字节信息恢复完成后,该待恢复文件N恢复完成。
如图5所示,本发明实施例提供的一种恢复文件系统的方法的整体流程图。
步骤501、获取待恢复文件的目标簇对应的文件系统基本信息和文件信息;
步骤502、通过CRC校验判断目标簇是否有效,若否,执行步骤503,若是,执行步骤504;
步骤503、将下一簇作为目标簇;
步骤504、根据目标簇对应的文件信息,确定文件的首簇编号;
步骤505、判断map集合中第一字段的元素值中是否包括文件的首簇编号,若否,执行步骤506,若是,执行步骤507;
步骤506、将文件的首簇编号作为所述map集合中第一字段的一个元素值,并将第一预设值作为下一簇的编号;
步骤507、将map集合中首簇编号对应的第二字段中的元素值作为下一簇的编号;
步骤508、根据目标簇的对应的文件系统基本信息,确定目标簇对应的快速索引区的n字节位置;
步骤509、根据目标簇的对应的文件系统基本信息和文件信息,以及目标簇的下一簇的编号,恢复目标簇的对应的快速索引区中n字节位置的n字节信息;
步骤510、将该目标簇的编号作为map集合中首簇编号对应的第二字段中的元素值;
步骤511、判断目标簇是否为待恢复文件的首簇,若否,执行步骤512,若是,执行步骤513;
步骤512、将上一簇作为目标簇,并执行步骤501;
步骤513、待恢复文件恢复完成。
本发明实施例在获取待恢复文件的目标簇对应的文件系统基本信息之前,还需要保证目标簇中包括文件系统的基本信息,以及目标簇对应的文件信息。
可选的,在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
本发明实施例每个簇的文件信息区记录的文件信息和文件系统基本信息,是在创建文件时,与数据区的文件数据一起写入对应簇中的。
如图6所示,本发明实施例还提供一种创建文件的方法,包括:
步骤601、针对一个待创建文件,在普通数据区中为所述文件分配一个簇;
步骤602、将所述文件的待写入数据写入所述簇的数据区,同时将所述簇的文件信息和文件系统基本信息写入所述簇的信息区;
步骤603、更新所述簇对应的快速索引区的n字节信息;
步骤604、若所述簇写满并且存在所述待写入数据,则为所述文件分配下一个簇,直至所述文件的数据全部写入普通数据区,则所述文件创建完成,并关闭所述文件。
本发明实施例簇的文件信息包括上一簇编号和首簇编号,若该簇为待创建文件的首簇,则其上一簇编号为0,其首簇编号为自身编号。
本发明实施例在步骤601之后,步骤602之前,还应该判断为待创建文件分配簇是否为文件的首簇,若不是待创建文件的首簇,则需要更新该簇的上一簇对应的快速索引区的n字节信息,其中,主要是更新上一簇对应的快速索引区的n字节信息中的下一簇编号,并且上一簇对应的快速索引区的n字节信息中的下一簇编号即为该簇的编号。
本发明实施例更新所述簇对应的快速索引区的n字节信息包括:文件的首簇和上一簇编号。若该簇为待创建文件的首簇,则该簇的上一簇编号为0,其首簇编号为自身编号。
本发明实施例在关闭创建的文件之前,还需要更新该文件的首簇对应的所述快速索引区的n字节信息,以及更新该文件的最后一个簇对应的所述快速索引区的n字节信息,其中主要是更新该文件的最后一个簇对应的所述快速索引区的n字节信息中的下一簇编号,由于是文件的最后一个簇,因此将快速索引区的n字节信息中的下一簇编号更新为0。
需要说明的是,本发明实施例中存储在同一个簇中的文件数据,为属于同一个文件的数据。
如图7所示,为本发明实施例一种创建文件的方法的整体流程图。
步骤701、在普通数据区中为所述文件分配一个簇;
步骤702、判断所述簇是否有上一簇,若是,执行步骤703,若否,执行步骤704;
步骤703、更新上一簇对应的快速索引区的n字节信息;
步骤704、将所述文件的待写入数据写入所述簇的数据区,同时将所述簇的文件信息和文件系统基本信息写入所述簇的信息区;
步骤705、判断所述簇的空间是否写满,若是,执行步骤701,若否,执行步骤706;
步骤706、继续写入文件数据;
步骤707、判断待创建文件是否写完,若是,执行步骤708,若否,执行步骤705;
步骤708、关闭文件。
相应地,如图8所示,本发明实施例还提供一种读取文件的方法,包括:
步骤801、根据快速索引区的n字节信息,获取文件的首簇编号;
步骤802、读取该簇对应的快速索引区的n字节信息,确定该簇在普通数据区的位置;
步骤803、读取该簇的文件数据;
步骤804、判断该簇是否读完,若是,执行步骤805,若否,执行步骤803;
步骤805、根据该簇对应的快速索引区的n字节信息,获取下一簇编号;
步骤806、判断下一簇编号是否为0,若是,执行步骤808,若否,执行步骤807;
步骤807、将下一簇作为目标簇;
步骤808、关闭文件。
基于同一发明构思,本申请实施例中还提供了一种恢复文件系统的设备,由于该设备解决问题的原理与本申请实施例文件系统的恢复方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,一种恢复文件系统的设备,包括:
获取模块901,用于获取待恢复文件的目标簇对应的文件系统基本信息;
确定模块902,用于根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
处理模块903,用于根据所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息。
可选的,所述处理模块903,还用于:
若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回获取待恢复文件的目标簇对应的文件系统基本信息的步骤。
可选的,所述目标簇对应的文件信息包括待恢复文件的首簇编号;
所述处理模块903,具体用于:
若所述文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号;若所述文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号;根据所述下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
可选的,所述处理模块903,还用于:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
可选的,所述处理模块903,还用于:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
可选的,所述处理模块903,还用于:
在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种恢复文件系统的方法,其特征在于,该方法包括:
获取待恢复文件的目标簇的信息区中记录的文件系统基本信息;
根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
根据所述信息区中记录的所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息;
若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回获取待恢复文件的目标簇对应的文件系统基本信息的步骤;
其中,所述待恢复文件对应的文件系统包括快速索引区和普通数据区;所述快速索引区的每个block包含多个n字节,并且每个block包含的n字节个数相同;所述快速索引区的每个n字节对应所述普通数据区的一个簇,并且按照从前到后的顺序,所述每个n字节与所述普通数据区的簇一一对应;所述普通数据区的每个簇又包括信息区和数据区,其中,所述信息区记录的内容包括:文件系统的基本信息和文件信息;所述文件信息包括文件创建时间、文件大小、文件属性、文件的首簇编号、该簇中文件数据的有效长度、以及与该簇属于同一文件的上个簇编号中的至少一个。
2.如权利要求1所述的方法,其特征在于,所述目标簇对应的文件信息包括待恢复文件的首簇编号;
所述根据所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息,包括:
若所述文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号;
若所述文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号;
根据所述下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
3.如权利要求2所述的方法,其特征在于,所述将第一预设值作为下一簇的编号之后,还包括:
将所述待恢复文件的首簇编号作为所述map集合第一字段的一个元素值。
4.如权利要求2所述的方法,其特征在于,所述根据下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息之后,还包括:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
5.如权利要求2所述的方法,其特征在于,获取目标簇对应的文件系统基本信息之前,还包括:
在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
6.一种恢复文件系统的设备,其特征在于,包括:
获取模块,用于获取待恢复文件的目标簇的信息区中记录的文件系统基本信息;
确定模块,用于根据所述文件系统基本信息,确定所述目标簇对应的快速索引区中n字节位置;
处理模块,用于根据所述信息区中记录的所述目标簇对应的文件信息,恢复所述快速索引区中n字节位置的n字节信息;若所述目标簇不是所述待恢复文件的首簇,则将上一簇作为目标簇,并返回所述获取模块获取待恢复文件的目标簇对应的文件系统基本信息的步骤;
其中,所述待恢复文件对应的文件系统包括快速索引区和普通数据区;所述快速索引区的每个block包含多个n字节,并且每个block包含的n字节个数相同;所述快速索引区的每个n字节对应所述普通数据区的一个簇,并且按照从前到后的顺序,所述每个n字节与所述普通数据区的簇一一对应;所述普通数据区的每个簇又包括信息区和数据区,其中,所述信息区记录的内容包括:文件系统的基本信息和文件信息;所述文件信息包括文件创建时间、文件大小、文件属性、文件的首簇编号、该簇中文件数据的有效长度、以及与该簇属于同一文件的上个簇编号中的至少一个。
7.如权利要求6所述的设备,其特征在于,所述目标簇对应的文件信息包括待恢复文件的首簇编号;
所述处理模块,具体用于:
若所述文件系统对应的map集合第一字段的元素值中包括所述待恢复文件的首簇编号,则将所述map集合中所述首簇编号对应的第二字段中的元素值作为下一簇的编号;若所述文件系统对应的map集合第一字段的元素值中不包括所述待恢复文件的首簇编号,则将第一预设值作为下一簇的编号;根据所述下一簇的编号和所述目标簇对应的文件信息,恢复所述快速索引区n字节位置的n字节信息。
8.如权利要求7所述的设备,其特征在于,所述处理模块,还用于:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
9.如权利要求7所述的设备,其特征在于,所述处理模块,还用于:
将所述目标簇的编号作为所述map集合中所述首簇编号对应的第二字段中的元素值。
10.如权利要求7所述的设备,其特征在于,所述处理模块,还用于:
在存储文件过程中,将每个簇中的文件数据对应的文件信息和文件系统基本信息写入到对应的簇中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510922289.7A CN105573862B (zh) | 2015-12-11 | 2015-12-11 | 一种恢复文件系统的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510922289.7A CN105573862B (zh) | 2015-12-11 | 2015-12-11 | 一种恢复文件系统的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573862A CN105573862A (zh) | 2016-05-11 |
CN105573862B true CN105573862B (zh) | 2021-02-02 |
Family
ID=55884029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510922289.7A Active CN105573862B (zh) | 2015-12-11 | 2015-12-11 | 一种恢复文件系统的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573862B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108009049B (zh) * | 2017-11-28 | 2020-12-01 | 厦门市美亚柏科信息股份有限公司 | Myisam存储引擎删除记录离线恢复方法、存储介质 |
CN109375876A (zh) * | 2018-10-17 | 2019-02-22 | 郑州云海信息技术有限公司 | 基于ssd的raid存储方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751306A (zh) * | 2008-12-12 | 2010-06-23 | 内江市效率源信息安全技术有限责任公司 | 缺陷硬盘的数据恢复设备和恢复方法 |
US20120063602A1 (en) * | 2009-06-15 | 2012-03-15 | Zte Corporation | Method and apparatus for maintaining key information area in file system |
CN102999399A (zh) * | 2012-11-13 | 2013-03-27 | 浙江宇视科技有限公司 | 一种jbod阵列自动恢复存储的方法和装置 |
CN103092849A (zh) * | 2011-10-28 | 2013-05-08 | 浙江大华技术股份有限公司 | 文件系统簇管理方法 |
CN104317833A (zh) * | 2014-10-10 | 2015-01-28 | 深圳市锐明视讯技术有限公司 | 一种恢复系统文件索引的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102136290A (zh) * | 2011-04-21 | 2011-07-27 | 北京联合大学 | 一种嵌入式实时视频文件存储方法 |
US20150149415A1 (en) * | 2013-11-22 | 2015-05-28 | International Business Machines Corporation | Rollback Mechanism for Linear Tape File Systems |
-
2015
- 2015-12-11 CN CN201510922289.7A patent/CN105573862B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751306A (zh) * | 2008-12-12 | 2010-06-23 | 内江市效率源信息安全技术有限责任公司 | 缺陷硬盘的数据恢复设备和恢复方法 |
US20120063602A1 (en) * | 2009-06-15 | 2012-03-15 | Zte Corporation | Method and apparatus for maintaining key information area in file system |
CN103092849A (zh) * | 2011-10-28 | 2013-05-08 | 浙江大华技术股份有限公司 | 文件系统簇管理方法 |
CN102999399A (zh) * | 2012-11-13 | 2013-03-27 | 浙江宇视科技有限公司 | 一种jbod阵列自动恢复存储的方法和装置 |
CN104317833A (zh) * | 2014-10-10 | 2015-01-28 | 深圳市锐明视讯技术有限公司 | 一种恢复系统文件索引的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105573862A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US9372908B2 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
US8782360B2 (en) | Preserving an existing volume map in re-initializing a data storage volume | |
US8843704B2 (en) | Stride based free space management on compressed volumes | |
US20140075240A1 (en) | Storage apparatus, computer product, and storage control method | |
US10572335B2 (en) | Metadata recovery method and apparatus | |
US8539007B2 (en) | Efficient garbage collection in a compressed journal file | |
US10606712B2 (en) | Metadata recovery for de-duplicated data | |
US8903804B2 (en) | Data existence judging device and data existence judging method | |
TW202011202A (zh) | 持久性儲存元件管理 | |
US20160283148A1 (en) | Backup control device, backup control method, and recording medium | |
US9875046B2 (en) | Tape backup and restore in a disk storage environment with intelligent data placement | |
US9170747B2 (en) | Storage device, control device, and control method | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
US11487428B2 (en) | Storage control apparatus and storage control method | |
US8418029B2 (en) | Storage control device and storage control method | |
US9798793B1 (en) | Method for recovering an index on a deduplicated storage system | |
CN107545022B (zh) | 磁盘管理方法及装置 | |
CN112650444A (zh) | 一种数据重构方法、系统、设备以及介质 | |
US11544005B2 (en) | Storage system and processing method | |
CN114442941B (zh) | 一种数据迁移方法、系统、存储介质及设备 | |
CN112463063A (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 |