一种Exfat文件系统断电保护及文件检测恢复方法与流程

文档序号:15851349发布日期:2018-11-07 10:00阅读:1038来源:国知局
一种Exfat文件系统断电保护及文件检测恢复方法与流程

本发明涉及计算机技术领域,尤其是在文件系统存储方面,具体而言,本发明涉及一种exfat文件系统断电保护及文件检测恢复方法。

背景技术

在计算机技术领域,涉及到大量的文件存储工作,需要对文件进行写操作,如果文件系统在对文件写操作的过程中遭到意外断电,则会导致文件系统中部分关键数据不完整,致使文件系统损坏,操作系统无法对该文件系统进行正常操作。

现有的文件系统断电保护方法是对数据和日志进行双备份,或采取对硬件进行改造,在意外断电时由后备电源供电的方法。采用数据备份的方法可以达到文件系统断电保护的功能,但是备份数据会占用磁盘空间,导致磁盘利用率降低。采用硬件改造的方法,在一些硬件已固定的环境下就无法实现。



技术实现要素:

针对现有文件系统断电保护方法中存在的不足,本发明提供了一种exfat文件系统断电保护及文件检测恢复方法,可以避免文件系统在写操作过程中意外断电造成文件系统损坏的问题,同时,可以恢复在断电时未操作完的文件。本发明解决了exfat文件系统在写操作过程中遭到意外断电导致文件系统损坏的问题,并可实现未写完的文件数据的快速恢复功能。本发明的技术方案说明如下:

对exfat文件系统进行写操作时,非常重要的一项数据就是文件目录项。文件目录项由三个部分组成,将这三个部分分别称为属性目录项、流扩展目录项、文件名扩展目录项。属性目录项中包含的关键信息有:属性目录项的类型特征值(0x85)、附属目录项数、文件目录项校验和、文件属性、文件创建时间、最后修改时间、最后访问时间。流扩展目录项中包含的关键信息有:流扩展目录项的类型特征值(0xc0)、文件碎片标志、文件名字符数、文件名hash值、文件大小1、文件大小2、起始簇号。文件名扩展目录项中包含的关键信息有:文件名扩展目录项的类型特征值(0xc1)、文件名。

本发明提供的exfat文件系统断电保护方法对文件系统的写操作包括以下步骤:

1.确定要进行操作的文件对应的文件目录项,记录该文件目录项的起始地址。

2.向该文件的数据区中写入一段指定长度的数据。

3.设置操作状态为未完成。

4.修改属性目录项或流扩展目录项或文件名扩展目录项任意一项的类型特征值为其他值。

5.依次更新流扩展目录项中的文件大小1、文件大小2字段的值。

6.更新对应的簇位图文件和fat表项。

7.计算文件目录项的校验和,并将校验和的值更新到属性目录项中的校验和字段中。

8.将步骤4修改的值改回原来正确的值。

9.设置操作状态为完成。

10.重复步骤2~9,直到写文件操作结束。

所述操作状态保存在文件系统的保留区;操作的文件对应的文件目录项的起始地址记录在文件系统的保留区域中。

文件系统意外断电重新上电后,需要对文件系统进行检测,检测步骤包括:

1.读取操作状态的值。

2.如果操作状态为完成,则不需要进行文件恢复。

3.如果操作状态的值为未完成,说明断电时有操作未完成的文件。

4.读取断电时正在操作的文件的文件目录项起始地址,获取文件目录项信息。

5.判断文件目录项信息是否正确。

6.如果此文件目录项信息正确,说明在刚设置操作状态为“未完成”,还未对文件目录项进行修改时断电,只要将操作状态修改为“完成”即可。

7.如果此文件目录项信息不正确,说明此文件目录项对应的文件就是断电时正在操作的文件,需要对此文件进行恢复。

文件恢复包括以下步骤:

1.判断流扩展目录项中文件大小1和文件大小2字段的值是否一致。

2.如果文件大小1和文件大小2字段的值不一致,将文件大小1字段的值复制到文件大小2字段,继续以下步骤;如果文件大小1和文件大小2字段的值一致,则直接继续以下步骤;

3.计算文件目录项的校验和,并将校验和的值更新到属性目录项中的校验和字段中。

4.将被修改的目录项类型的特征值修改为正确的值。

5.将操作状态修改为“完成”。

本发明的有益效果:本发明提供的exfat文件系统断电保护方法,不需要进行过多的数据备份,就可以实现对文件系统断电保护,并可快速对断电前未操作完成的文件进行恢复,即使文件只写入一部分,也能保证已写入的部分可以读取到。

附图说明

图1为本发明文件系统断电保护文件写操作流程图;

图2为本发明意外断电重新上电文件系统检测流程图;

图3为本发明文件恢复流程图。

具体实施方式

下面通过具体实施方式对本发明作进一步的详细说明:

在windows操作系统上,对于exfat文件系统,如果某个文件的文件目录项的属性目录项或流扩展目录项或文件名扩展目录项中的任一项的类型特征值不正确,windows系统就不会将此识别成一个文件,但是仍然可以对该文件系统进行其他操作。如果该文件目录项中的属性目录项、流扩展目录项和文件名扩展目录项的类型特征值都是正确的,而流扩展目录项中文件大小1字段和文件大小2字段的值不一致,或属性目录项的校验和不正确,此时文件系统就被损坏了,windows系统就无法对该文件系统进行其他操作。

因此,本发明提供的一种exfat文件系统断电保护方法,就是利用了上述的原理。当向文件系统进行写文件操作时,首先确定要进行写操作文件的文件目录项。如果是要创建一个新文件,需要先创建文件目录项,在创建文件目录项时,先将文件目录项的属性目录项、流扩展目录项、文件名扩展目录项的任一项的类型特征值修改为其他值。本发明以属性目录项为例,将属性目录项的类型特征值设为0x75,待文件目录项的其他字段都写成功之后,再将属性目录项的类型特征值修改回0x85。具体步骤如下:

1.确定要进行操作的文件对应的文件目录项,将该文件目录项的起始地址记录在文件系统的保留区域中;

2.向该文件中写入一段指定长度的数据;

3.将操作状态设置为未完成,操作状态保存在文件系统的保留区;

4.将属性目录项的类型特征值改为0x75;

5.更新流扩展目录项中的文件大小1、文件大小2字段的值;

6.更新对应的簇位图文件和fat表项;

7.计算文件目录项的校验和,并将校验和的值更新到属性目录项中的校验和字段中;

8.将步骤4中修改的属性目录项的类型特征值修改回原来的值0x85。

9.操作状态设置为完成,操作状态保存在文件系统的保留区。

10.重复2~9步骤,直到文件写操作结束。

文件系统意外断电重新上电后,首先需要检测断电时是否有操作未完成的文件,检测步骤包括:

1.读取操作状态信息,判断操作状态是否为未完成;

2.如果操作状态为完成,则不需要进行文件恢复;

3.如果操作状态为未完成,则读取记录的操作文件目录项的起始地址;

4.根据记录的操作文件目录项的起始地址读取未完成操作文件的文件目录项信息,判断该文件的目录项是否完整;

5.如果此文件目录项信息正确,说明在刚设置操作状态为“未完成”,还未对文件目录项进行修改时断电,只要将操作状态修改为“完成”即可;

6.如果此文件目录项信息不正确,说明此文件目录项对应的文件就是断电时正在操作的文件,需要对此文件进行恢复。

文件恢复步骤为:

1.判断流扩展目录项中文件大小1和文件大小2字段的值是否一致;

2.如果文件大小1和文件大小2字段的值不一致,则将文件大小1字段的值复制到文件大小2字段,继续以下步骤;如果文件大小1和文件大小2字段的值一致,则直接继续以下步骤;

3.计算文件目录项的校验和,计算时属性目录项的类型特征值按0x85进行,然后将校验和的值更新到属性目录项的校验和字段中;

4.将被修改的属性目录项的类型特征值改为正确的值0x85;

5.将操作状态修改为“完成”。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1