CN101515276B - 一种文件数据写操作的方法、文件数据恢复方法及系统 - Google Patents

一种文件数据写操作的方法、文件数据恢复方法及系统 Download PDF

Info

Publication number
CN101515276B
CN101515276B CN 200810247310 CN200810247310A CN101515276B CN 101515276 B CN101515276 B CN 101515276B CN 200810247310 CN200810247310 CN 200810247310 CN 200810247310 A CN200810247310 A CN 200810247310A CN 101515276 B CN101515276 B CN 101515276B
Authority
CN
China
Prior art keywords
data
write operation
fat table
state
memory write
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.)
Expired - Fee Related
Application number
CN 200810247310
Other languages
English (en)
Other versions
CN101515276A (zh
Inventor
徐中华
石玉平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Watchdata Co ltd
Original Assignee
Beijing WatchData System Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing WatchData System Co Ltd filed Critical Beijing WatchData System Co Ltd
Priority to CN 200810247310 priority Critical patent/CN101515276B/zh
Publication of CN101515276A publication Critical patent/CN101515276A/zh
Application granted granted Critical
Publication of CN101515276B publication Critical patent/CN101515276B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种文件数据写操作的方法、文件数据恢复方法及系统,以解决现有技术中FAT文件系统中的数据在掉电时丢失所导致的无法恢复数据的问题。该方法包括:对接收到的存储器写操作请求中包含的文件执行写操作,将待写扇区的数据进行备份;存储器写操作成功完成后,若该次存储器写操作修改了FAT表,则将FAT表进行备份之后,将该次存储器写操作的FAT表写状态设置为完成状态;若该次存储器写操作修改了数据区,则将该次存储器写操作的数据写状态设置为完成状态;以及,将该次存储器写操作的写状态设置为完成状态。采用本发明技术方案,可在恢复供电后,正确恢复出在对存储器写操作之前的FAT文件系统中的数据。

Description

一种文件数据写操作的方法、文件数据恢复方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种文件数据写操作的方法、文件数据恢复方法及系统。 
背景技术
Flash存储器是非易失存储器,可以对存储器单元块进行擦写和再编程。任何Flash器件的写入操作只能在空或已擦除的扇区内进行,因此在进行写操作之前必须先将待写入的扇区的数据擦除,再在该待写入的扇区中写入数据。 
文件系统在整个系统中位于设备驱动程序和上层应用程序之间,负责管理文件的建立、删除、读写、修改、复制和存取控制等,并管理存放文件的各种资源。为上层应用程序提供统一的存储接口,为上层提供透明的服务。FAT(FileAllocation Table,文件分配表)文件系统是广泛使用的一种文件系统。FAT文件系统将磁盘空间中的扇区按一定数目划分为簇,一个簇通常包含2n个扇区,一个扇区内存通常为512字节。如图1所示,一个典型的FAT文件系统由4个逻辑分区组成:引导区、FAT表区、目录区、文件数据区。其中,引导区中的第一个扇区是BPR,即基本输入输出参数块,其上记录每个扇区的字节数(通常为512)、每簇包含的扇区数、FAT表的数目、目录项数、总扇区数、FAT表占用的扇区数等文件系统的总体信息,引导区的其它扇区一般保留;FAT表区存放FAT表1和FAT表2,FAT表是在系统中用于磁盘数据(文件)索引与定位的一种链式表,表中记录各文件数据所在的簇号;目录区中存放FAT文件系统中文件的首簇号;数据区中存放各文件数据。 
FAT文件系统存储文件的原理是:在FAT表1中为系统中的每个文件创建一条索引链,链上包含的元素包括该文件数据所在的簇号以及该簇所链接的下一个簇的簇号以及文件的结束标志(如FF)。操作系统读取或写入文件数据时,首先通过查找目录区获得文件的首簇号,根据首簇号定位出该簇的物理地址区域,并在该区域读取或写入数据;再通过查询FAT表1中该文件的索引链获得下一簇的簇号,并在相应的簇内读取或写入数据,依此类推,直到获取到索引链中的文件结束标志时,结束读取或写入操作,从而对整个文件进行读取或写入数据的操作。 
现有的FAT文件系统存在以下缺陷: 
若在对系统中的文件进行写操作过程中发生掉电,则在掉电之前写入的数据将丢失,且由于在写之前已经将原始数据擦除,因此不能用原始数据恢复。而在一些应用中,如电子钱包消费、大存储量的智能卡应用等对数据写操作的可靠性要求较高,因此,目前非常迫切需要一种能够实现对FAT文件系统进行掉电保护的措施。 
发明内容
本发明实施例提供一种文件数据写操作的方法、文件数据恢复方法及系统,以解决现有FAT文件系统中的数据在掉电时丢失所导致的无法恢复数据的问题。 
一种文件数据写操作的方法,应用于FAT文件系统,包括: 
接收存储器写操作请求; 
将所述存储器写操作的写状态设置为进行状态;以及, 
若所述存储器写操作需要修改数据区,则将所述存储器写操作的数据写状态设置为进行状态;若所述存储器写操作需要修改FAT表,则将所述存储器写操作的FAT表的写状态设置为FAT表1写操作进行状态; 
执行所述存储器写操作请求中包含的文件写操作,其中,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份; 
存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份之后,将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态。 
一种文件数据写操作的恢复方法,应用于FAT文件系统,包括: 
判断待恢复的存储器写操作的执行状态是否为完成状态; 
当判断为否且所述存储器写操作的数据写状态也不是完成状态时,用所述存储器写操作过程中备份的文件数据进行文件数据恢复; 
当判断为否且所述存储器写操作的FAT表写状态也不是完成状态时,对FAT表数据进行恢复。 
一种文件数据写操作的保护系统,包括: 
写操作执行单元,用于根据接收到的存储器写操作请求,执行所述请求中包含的文件写操作,其中,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份;以及,在存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份; 
状态设置单元,用于在完成所述存储器写操作后,若所述存储器写操作修改了FAT表,则将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态; 
数据恢复单元,用于在进行数据恢复时,当待恢复的存储器写操作的写状态不是完成状态且数据写状态也不是完成状态时,用该存储器写操作过程中备份的文件数据进行文件数据恢复;当待恢复的存储器写操作的写状态不是完成状态且FAT表写状态也不是完成状态时,对FAT表数据进行恢复。 
本发明实施例提供的上述实施例中,在接收到存储器写操作请求时,执行所述存储器写操作请求中包含的文件写操作,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份;存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份,并将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态。采用本发明技术方案,一方面,由于所述存储器写操作涉及到的擦除待写扇区中的数据进行备份,因此可以保证在存储器写操作过程中如 发生掉电时原始数据不丢失;另一方面,针对存储器写操作过程中的不同的写状态分别设置对应的标志,因而在后续的数据恢复中,可以准确的将存储器中的数据恢复到对存储器写操作之前的数据状态。从而解决现有FAT文件系统中的数据在掉电时丢失所导致的无法恢复数据的问题。 
附图说明
图1为现有技术中FAT文件系统的结构图; 
图2为本发明实施例FAT文件系统中文件数据备份流程图; 
图3为本发明实施例FAT文件系统中文件数据恢复流程图; 
图4为本发明实施例FAT文件系统中文件数据保护系统的结构图。 
具体实施方式
本发明实施例提供一种FAT文件系统中文件数据写操作的方法、文件数据恢复方法及系统,下面结合说明书附图对本发明实施例进行详细的描述。 
在FAT文件系统中,对一次存储器写操作称为一次写交易,一次写交易可包括对系统中的多个文件进行写操作,对一个文件进行写操作称为该次写交易的一次写操作。当FAT文件系统接收到写交易请求时,可为该次写交易分配一定数量的扇区作为该次写交易的备份区,用于对该次写交易需要写入数据的扇区(以下称为待写扇区)的数据内容进行备份。 
由于FAT文件系统写交易具有如下特点:一次写交易过程中如果发生异常(如掉电)导致该次写交易未成功完成,则需要将数据恢复到该次写交易之前的状态;一次写交易过程中可能仅修改数据区(如在仅擦除原数据扇区后写入新数据,而文件的索引链中的簇号和结束标志不变),或者既修改FAT表又修改数据区,在对写交易过程进行数据恢复时,需要根据以上各种情况区别对待。这样,就需要记录写交易的执行状态,以及FAT表写状态或/和数据写状态,从而保证能够正确对写交易进行数据恢复。写交易的执行状态可通过相应的标 志表示,标志值至少包括2个值,其中一个值表示写交易的执行状态(即存储器写操作的写状态)为完成状态,另一个值可表示写交易的执行状态为进行状态;FAT表写状态和数据写状态也可通过相应的标志表示,也需要至少包括2个标志值,其中一个值表示相应数据的写操作正在进行,另一个值表示相应数据的写操作已经完成。 
本发明实施例中,表示写交易的执行状态的标志值包括0和任意非0值(如55AA),其中,0表示写交易完成,55AA表示写交易正在进行;表示数据写状态的标志值包括DATA_WRITING和DATA_NONE,其中,DATA_WRITING表示当前正在对文件数据区中的待写扇区或/和目录区进行写操作,DATA_NONE表示当前已经完成对文件数据区中的待写扇区或/和目录区的写操作;同理,表示FAT表写状态的标志值包括FAT_WRITING和FAT_NONE,其中,FAT_WRITING表示正在写FAT表,FAT_NONE表示FAT表已写完。 
本发明实施例中,需要为写交易指定备份数据的存储区,称为数据备份单元。数据备份单元可设置在FAT文件系统引导区中的保留区域或其他指定的区域。上述的各种状态标志可存储在数据备份单元中或其他指定位置。数据备份单元中包括多个扇区,这些扇区按功能划分可以分为信息扇区、备份信息扇区、备份数据扇区1、备份数据扇区2……备份数据扇区n(n的取值可以根据实际情形予以设置,如根据该次写交易最多涉及到的待写扇区数目来设置)等。该数据备份单元的结构可如表1所示: 
表1 
  信息扇区   备份信息扇区  备份数据扇区1 …… 备份数据扇区n
其中,信息扇区:用于存储写交易执行状态标志、数据写状态标志、FAT表写状态标志等。 
备份数据扇区1、…、备份数据扇区n:用于存储该次写交易涉及到的数据区中的待写扇区以及写交易涉及到的相应文件在目录区中首簇号所在的扇 区的数据内容。 
备份信息扇区:用于在对信息扇区进行写操作之前的数据进行备份,以避免在对信息扇区进行写操作时发生掉电时信息扇区中的原始数据丢失。该扇区为可选扇区。 
信息扇区与备份信息扇区存放的数据结构可如表2所示: 
表2 
  写交易  执行状态标志   数据写状态标志   FAT表  写状态标志   备份扇区  数量   备份扇区数组   crc校验
  16bit(55AA)   16bit   16bit   16bit   32n bit   16bit
其中,备份扇区数量:用于指示表1中备份数据扇区1、…备份数据扇区n中的哪些备份数据扇区已经用于数据备份。(该备份扇区数量的取值大于等于0小于等于n) 
备份扇区数组:该数组中包含有n个元素(每个元素的长度为32bit),每个元素与备份区的备份数据扇区相对应,并且该元素的内容为与其对应的备份数据扇区相应的待写扇区的扇区号(即该备份扇区数组记录了待写扇区与其数据备份所在的备份数据扇区的对应关系)。 
CRC校验:可选,用于计算从备份标志到备份扇区数组的CRC值,可以使用如CRC16的计算方法。 
本发明实施例中,可将FAT表1备份到FAT表2中,此时,需要用FAT表写状态标志指示FAT表1与FAT表2的写状态。例如:当FAT表写状态标志为FAT1_WRITING时,则表明当前在对FAT表1进行写操作;当FAT表写状态标志取值为FAT2_WRITING时,则表明已经完成对FAT表1的写操作,当前在对FAT表2进行写操作,即,将FAT表1中的数据备份到FAT表2;当FAT表写状态标志取值为FAT_NONE时,则表明当前已经完成对FAT表1与FAT表2的写操作,即,完成对FAT表1的写操作以及将FAT表1的数据备份到FAT表2中。 
根据FAT系统写交易的实现原理以及利用上述各种状态标志,本发明实施例中FAT文件系统的文件数据备份流程可如图2所示,数据恢复流程可如图3所示。 
参见图2,为本发明实施例中FAT文件系统中文件数据备份流程图,当FAT文件系统接收到写交易的请求后,该流程包括以下步骤: 
步骤200、接收写交易请求。 
步骤201、判断该次写交易是否需要修改FAT表1中的文件索引链,若是,执行步骤202,否则,执行步骤203。 
该步骤中,当写交易的请求消息中包含有对某一个或多个文件删除或增加数据并引起该文件的索引链发生变化,如:增加或减少索引链上的簇号,则判断该次写交易需要修改FAT表1中的索引链。 
步骤202、将FAT表写状态标志取值为FAT1_WRITING。进一步的还可以将写交易执行状态标志取值为一个非0值,如16进制的55AA,或者可预先将55AA作为写交易执行状态标志的默认值。 
步骤203、将数据写状态标志设置为DATA_WRITING。 
步骤204、判断该次写交易当前进行的写操作是否需要修改FAT表1中的与该次写操作相应文件的索引链,若是,则执行步骤205;否则执行步骤206。 
步骤205、对FAT表1中的与该次写操作对应的文件索引链进行修改。 
步骤206、确定出该次写操作所涉及到的所有待写扇区,在待写扇区进行写操作。在擦除待写扇区中的数据之前,将这些待写扇区中的数据备份到数据备份单元。写操作完成之后执行步骤207。 
该步骤中,可以在数据备份单元中建立映射表或数组以建立备份数据所在的备份数据扇区与该备份数据的源数据所在的扇区号的对应关系。 
该步骤中,当写操作对文件删除或增加数据并引起该文件的首簇号发生变化时,则还可进一步修改目录区中相应文件的首簇号,同理,可在擦除原首簇号之前先将其备份到数据备份单元。 
步骤207、判断该次写交易是否完成,若是,则执行步骤208;否则返回步骤204,进行该次写交易的下一次写操作。 
步骤208、将数据写状态标志值从DATA_WRITING改为DATA_NONE。 
步骤209、判断本次写交易是否修改了FAT表,若是,则执行步骤210;否则执行步骤211。 
步骤210、将FAT表写状态标志值从FAT1_WRITING改为FAT2_WRITING,将FAT表1中的数据内容写入FAT表2中,写完FAT表2后,将FAT表写状态标志值从FAT2_WRITING改为FAT_NONE。 
步骤211、将写交易执行状态标志设置为0。 
参见图3,为本发明实施例中FAT文件系统中文件数据备份流程图,FAT文件系统在上电后,该流程包括以下步骤: 
步骤301、判断掉电前进行的写交易所对应的数据备份单元中的信息扇区中的CRC校验是否正确,若是,则执行步骤302,否则执行步骤304。 
该步骤中,若信息扇区中的CRC校验正确,则表明已经完成对信息扇区的写操作,掉电不是发生在对信息扇区进行写操作的过程中。 
步骤302、判断该信息扇区的内容与备份信息扇区的内容是否相同,若是,则执行步骤307,否则执行步骤303。 
该步骤,若信息扇区的内容与备份信息扇区的内容相同,则表明掉电不是发生在对备份信息扇区进行写操作的过程中,否则,是发生在上述过程中。 
步骤303、将信息扇区中的数据写入备份信息扇区中。 
步骤304、判断备份信息扇区中的CRC校验是否正确,若是,则执行步骤306,否则,执行步骤305。 
该步骤中,在信息扇区中的CRC校验不正确的情况下,若备份信息扇区中的CRC校验正确,则表明掉电发生在对信息扇区进行写操作的过程中。 
步骤305、表明该信息扇区的内容恢复失败,结束本流程。 
步骤306、将备份信息扇区的数据写入至信息扇区中。 
步骤307、判断信息扇区中写交易备份标志值是否为55AA,若是,则执行步骤308,否则,执行步骤315。 
该步骤中,写交易执行状态标志为55AA时,则表明掉电是发生在对FAT文件系统的写交易过程中,因而需要进行数据恢复;否则表明掉电不是发生在对FAT文件系统进行写交易的过程中,因而无需进行数据恢复。 
步骤308、判断信息扇区中FAT表写状态标志是否为FAT_NONE,若是,则执行步骤313,否则执行步骤309。 
该步骤中,FAT表写状态标志为FAT_NONE时,则表明掉电是发生时已经对FAT表完成了写操作,因而无需对FAT表数据进行恢复;否则,表明掉电时,还没有完成对FAT表的写操作,因而需要恢复FAT表数据。 
步骤309、判断FAT表写状态标志是否为FAT1_WRITING,若是,则执行步骤311,否则,执行步骤310。 
当FAT表写状态标志为FAT1_WRITING时,则表明掉电发生在对FAT表1进行写操作的过程中;FAT表写状态标志为FAT2_WRITING,则表明掉电发生在对FAT表2进行写操作的过程中。 
步骤310、将FAT表1中的数据覆盖FAT表2中的数据。 
步骤311、将FAT表2中的数据覆盖FAT表1中的数据。 
步骤312、在完成对FAT表1或FAT表2的写操作后,将信息扇区中的FAT表写状态标志设置为FAT_NONE。 
步骤313、判断信息扇区中数据写状态标志是否为DATA_NONE,若是,则执行步骤315,否则,执行步骤314。 
在该步骤中,若数据写状态标志为DATA_NONE,则表明掉电发生在完成对数据区中待写扇区和目录区写操作之后,因而无需进行文件数据恢复;否则表明掉电发生在对待写扇区或目录区进行写操作的过程中,因而需要进行文件数据恢复。 
步骤314、将数据备份单元中的备份数据扇区中的数据内容分别写入至与 其对应的数据区中待写扇区中,从而将文件数据恢复至未成功完成的写交易之前的状态,并将该信息扇区中的数据写状态标志改为DATA_NONE。 
步骤315、将信息扇区中写交易执行状态标志设置为0。该流程结束。 
上述图3所示流程中,对信息扇区进行CRC校验以及根据校验结果进行相应处理的操作(步骤301~306)为可选操作。 
为了更加清楚和详细地描述本发明实施例的实现过程,下面结合实际应用提供一个具体的实例对上述流程作进一步的描述。 
下述实例为一次写交易中包括两次写操作(分别对文件1与文件2进行写操作),接收到的写交易请求消息如下: 
(1)写文件1:写交易请求消息中包含有修改FAT表1中文件1的索引链所在的扇区A、FAT表2中该文件1的索引链所在的扇区B、目录区中文件1的首簇号所在的扇区C以及文件数据区中该次写操作所涉及到的待写扇区D,E的信息。 
(2)写文件2:写交易请求消息中包含有修改FAT表1中文件2的索引链所在的扇区a、FAT表2中该文件2的索引链所在的扇区b、目录区中文件2的首簇号所在的扇区c以及文件数据区中该次写操作所涉及到的待写扇区d的信息。 
根据接收到的写交易的请求消息,对上述写交易进行如下步骤: 
步骤1、在该次写交易对应的数据备份单元中的信息扇区中设置FAT表写状态标志与数据写状态标志,此时信息扇区内容如下: 
  写交易执行  状态标志   数据写状态标志   FAT表写状态标  志   备份扇区数   备份扇区数组  crc校验
  55AA   DATA_WRITING   FAT1_WRITING   0   0  crc
步骤2、将FAT的数据区中的待写扇区C、D、E的数据内容在备份区的备份数据扇区中进行备份,如在备份区的备份数据扇区1、2、3中分别存储待写扇区C、D、E的数据内容,此时信息扇区内容如下: 
  写交易执行  状态标志   数据写交易标志   FAT表写状态标  志   备份扇区数量   备份扇区数组  crc校验
  55AA   DATA_WRITING   FAT1_WRITING   3   C、D、E  crc
此时,对FAT表1中该文件1索引链所在的扇区A进行写操作,并且对数据区中的待写扇区C、D、E中进行写操作。 
步骤3、将文件数据区中的待写扇区c、d的数据内容在备份区中进行备份,如在备份区中的备份数据扇区4,5中分别存储数据区中待写扇区c,d的数据内容,此时信息扇区内容如下: 
  写交易执行  状态标志   数据写状态标志   FAT表写状态标  志   备份扇区数量   备份扇区数组  crc校验
  55AA   DATA_WRITING   FAT1_WRITING   5   C、D、E、c、d  crc
此时,对FAT表1中文件2的索引链所在的扇区a进行写操作,并且对数据区中的待写扇区c、d进行写操作。 
步骤4、在完成对数据区中的待写扇区C、D、E、c、d的写操作之后,将数据写状态标志进行修改,将FAT表写状态标志进行修改此时修改后的信息扇区内容如下: 
  写交易执行  状态标志   数据写状态标志  FAT表写状态标 志   备份扇区数量   备份扇区数组  crc校验
  55AA   DATA_NONE  FAT2_WRITING   5   C、D、E、c、d  crc
步骤5、将FAT表1表文件1的索引链所在的扇区A的数据内容写入至FAT表2中文件1的索引链所在的扇区B中,并且还将FAT表1表文件2的索引链所在的扇区a的数据内容写入至FAT表2中文件2的索引链所在的扇区b中,并修改FAT表写状态标志与写交易执行状态标志以及信息扇区中的其它信息,修改后的信息扇区内容如下: 
  写交易执行状  态标志   数据写状态标志  FAT表写状态标志   备份扇区数   备份扇区数组  crc校验
  0000   DATA_NONE  FAT_NONE   0   0  crc
这样,即表明该次写交易已成功,可退出该次写交易,继续进行下一次的写交易。 
基于上述流程相同的构思,本发明实施例还提供一种FAT文件系统中文件数据保护系统,该系统如图4所示。 
参见图4,为本发明实施例FAT文件系统中文件数据保护系统的结构图,该系统包括写操作执行单元41、状态设置单元42以及数据恢复单元43,其中: 
写操作执行单元41,用于根据接收到的存储器写操作请求,执行该请求中包含的文件写操作,其中,在擦除待写扇区中的数据之前,先将待写扇区的数据进行备份;以及,在存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份; 
状态设置单元42,用于在完成所述存储器写操作后,若所述存储器写操作修改了FAT表,则将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态; 
数据恢复单元43,用于在进行数据恢复时,当待恢复的存储器写操作的写状态不是完成状态且数据写状态也不是完成状态时,用该存储器写操作过程中备份的文件数据进行文件数据恢复;当待恢复的存储器写操作的写状态不是完成状态且FAT表写状态也不是完成状态时,对FAT表数据进行恢复。 
上述的写操作执行单元41在进行数据备份过程中,为存储器写操作指定数据备份单元,该数据备份单元中包括备份数据的存储单元和该备份数据的源数据所在扇区号,以及两者的对应关系。这样,数据恢复单元43在进行数据恢复时,可根据存储器写操作过程中备份的文件数据存储的数据备份单元与被备份的源数据所在扇区号的对应关系,用数据备份单元中的数据覆盖源数据所在扇区中的数据。 
上述状态设置单元42在执行存储器写操作之前,可进一步将所述存储器写操作的写状态设置为进行状态;以及,若所述存储器写操作需要修改数据区, 则将所述存储器写操作的数据写状态设置为进行状态;若所述存储器写操作需要修改FAT表,则将该次储器写操作的FAT表的写状态设置为进行状态;状态设置单元42在恢复所述存储器写操作后,可将所述存储器写操作的写状态修改为完成状态;以及,若所述存储器写操作修改了数据区,则将数据写状态修改为完成状态,若所述存储器写操作修改了FAT表,则将FAT表写状态修改为完成状态。 
本发明实施例中,状态设置单元42在对FAT表进行备份时,将FAT表写状态修改为FAT表2写操作进行状态,将FAT表1中的数据写入到FAT表2,并在写入成功后,将FAT表写状态修改为完成状态;当数据恢复单元43对FAT表数据进行恢复时,若FAT表写状态为FAT表1写操作进行状态,则用FAT表2的数据覆盖FAT表1的数据;若FAT表写状态为FAT表2写操作进行状态,则用FAT表1的数据覆盖FAT表2的数据。 
综上所述,本发明实施例中,在接收到存储器请求后,执行所述存储器写操作请求中包含的文件写操作,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份,存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份,并将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态。采用本发明技术方案,一方面,由于所述存储器写操作涉及到的擦除待写扇区中的数据进行备份,因此可以保证在存储器写操作过程中如发生掉电时原始数据不丢失;另一方面,针对存储器写操作过程中的不同的写状态分别建立对应的标志,因而在后续的数据恢复中,可以准确的将存储器中的数据恢复到对存储器写操作之前的数据状态。从而解决现有FAT文件系统中的数据在掉电时丢失所导致的无法恢复数据的问题。 
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。 

Claims (11)

1.一种文件数据写操作的方法,应用于FAT文件系统,其特征在于,包括:
接收存储器写操作请求;
将所述存储器写操作的写状态设置为进行状态;以及,
若所述存储器写操作需要修改数据区,则将所述存储器写操作的数据写状态设置为进行状态;若所述存储器写操作需要修改FAT表,则将所述存储器写操作的FAT表的写状态设置为FAT表1写操作进行状态;
执行所述存储器写操作请求中包含的文件写操作,其中,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份;
存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份之后,将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态。
2.如权利要求1所述的方法,其特征在于,将FAT表进行备份,包括:
将FAT表写状态修改为FAT表2写操作进行状态,将FAT表1中的数据写入到FAT表2。
3.如权利要求1所述的方法,其特征在于,接收存储器写操作请求后,还包括:为所述存储器写操作指定数据备份单元,所述数据备份单元中包括备份数据的存储单元和该备份数据的源数据所在扇区号,以及两者的对应关系。
4.一种对权利要求1所述的文件数据写操作进行恢复的方法,应用于FAT文件系统,其特征在于,包括:
判断待恢复的存储器写操作的执行状态是否为完成状态;
当判断为否且所述存储器写操作的数据写状态也不是完成状态时,用所述存储器写操作过程中备份的文件数据进行文件数据恢复;
当判断为否且所述存储器写操作的FAT表写状态也不是完成状态时,对FAT表数据进行恢复。
5.如权利要求4所述的方法,其特征在于,在执行所述存储器写操作请求中包含的文件写操作之前,还包括若所述存储器写操作需要修改FAT表,则将所述存储器写操作的FAT表的写状态设置为FAT表1写操作进行状态;
存储器写操作成功完成后,还包括若所述存储器写操作修改了FAT表,则对FAT表进行备份,并将FAT表写状态修改为FAT表2写操作进行状态;
对FAT表数据进行恢复,包括:
若所述FAT表写状态为FAT表1写操作进行状态,则用FAT表2的数据覆盖FAT表1的数据;
若所述FAT表写状态为FAT表2写操作进行状态,则用FAT表1的数据覆盖FAT表2的数据。
6.如权利要求4所述的方法,其特征在于,用所述存储器写操作过程中备份的文件数据进行文件数据恢复,具体为:根据存储所述存储器写操作过程中备份的文件数据的存储单元与被备份的源数据所在扇区号的对应关系,用所述存储单元中的数据覆盖所述源数据所在扇区中的数据。
7.如权利要求4所述的方法,其特征在于,当完成文件数据的恢复后,还包括:将所述存储器写操作的数据写状态修改为完成状态,将所述存储器写操作的写状态修改为完成状态;
当完成FAT表数据的恢复后,还包括:将所述存储器写操作的FAT表写状态修改为完成状态,将所述存储器写操作的写状态修改为完成状态。
8.一种文件数据写操作保护系统,其特征在于,包括:
写操作执行单元,用于根据接收到的存储器写操作请求,执行所述请求中包含的文件写操作,其中,在擦除待写扇区中的数据之前,先将所述待写扇区的数据进行备份;以及,在存储器写操作成功完成后,若所述存储器写操作修改了FAT表,则将FAT表进行备份;
状态设置单元,用于在完成所述存储器写操作后,若所述存储器写操作修改了FAT表,则将所述存储器写操作的FAT表写状态设置为完成状态;若所述存储器写操作修改了数据区,则将所述存储器写操作的数据写状态设置为完成状态;以及,将所述存储器写操作的写状态设置为完成状态;
数据恢复单元,用于在进行数据恢复时,当待恢复的存储器写操作的写状态不是完成状态且数据写状态也不是完成状态时,用该存储器写操作过程中备份的文件数据进行文件数据恢复;当待恢复的存储器写操作的写状态不是完成状态且FAT表写状态也不是完成状态时,对FAT表数据进行恢复。
9.如权利要求8所述的系统,其特征在于,写操作执行单元进一步用于,为所述存储器写操作指定数据备份单元,所述数据备份单元中包括备份数据的存储单元和该备份数据的源数据所在扇区号,以及存储所述存储器写操作过程中备份的文件数据的存储单元与被备份的源数据所在扇区号的对应关系;
所述数据恢复单元进一步用于,根据存储所述存储器写操作过程中备份的文件数据的存储单元与被备份的源数据所在扇区号的对应关系,用所述存储单元中的数据覆盖所述源数据所在扇区中的数据。
10.如权利要求8所述的系统,其特征在于,所述状态设置单元进一步用于,在执行所述存储器写操作之前,将所述存储器写操作的写状态设置为进行状态;以及,若所述存储器写操作需要修改数据区,则将所述存储器写操作的数据写状态设置为进行状态;若所述存储器写操作需要修改FAT表,则将该存储器写操作的FAT表的写状态设置为FAT表1写操作进行状态;以及,
在恢复所述存储器写操作后,将所述存储器写操作的写状态修改为完成状态;以及,若所述存储器写操作修改了数据区,则将数据写状态修改为完成状态,若所述存储器写操作修改了FAT表,则将FAT表写状态修改为完成状态。
11.如权利要求10所述的系统,其特征在于,所述状态设置单元进一步用于,在对FAT表进行备份时,将FAT表写状态修改为FAT表2写操作进行状态,将FAT表1中的数据写入到FAT表2,并在写入成功后,将FAT表写状态修改为完成状态;
所述数据恢复单元对FAT表数据进行恢复时,若所述FAT表写状态为FAT表1写操作进行状态,则用FAT表2的数据覆盖FAT表1的数据;若所述FAT表写状态为FAT表2写操作进行状态,则用FAT表1的数据覆盖FAT表2的数据。
CN 200810247310 2008-12-29 2008-12-29 一种文件数据写操作的方法、文件数据恢复方法及系统 Expired - Fee Related CN101515276B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200810247310 CN101515276B (zh) 2008-12-29 2008-12-29 一种文件数据写操作的方法、文件数据恢复方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200810247310 CN101515276B (zh) 2008-12-29 2008-12-29 一种文件数据写操作的方法、文件数据恢复方法及系统

Publications (2)

Publication Number Publication Date
CN101515276A CN101515276A (zh) 2009-08-26
CN101515276B true CN101515276B (zh) 2012-07-04

Family

ID=41039733

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200810247310 Expired - Fee Related CN101515276B (zh) 2008-12-29 2008-12-29 一种文件数据写操作的方法、文件数据恢复方法及系统

Country Status (1)

Country Link
CN (1) CN101515276B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102207907B (zh) * 2010-03-30 2013-12-25 联想(北京)有限公司 数据操作的方法、装置及计算机
CN101853275A (zh) * 2010-05-05 2010-10-06 北京中星微电子有限公司 一种fat文件系统的数据管理方法和系统
CN102073558B (zh) * 2010-12-30 2012-11-28 东方口岸科技有限公司 实现智能卡中文件安全完整的方法
CN102254048B (zh) * 2011-08-24 2012-10-03 深圳市万兴软件有限公司 数据恢复方法和系统
CN103188661A (zh) * 2011-12-28 2013-07-03 希姆通信息技术(上海)有限公司 恢复通信终端内部文件系统的方法及通信终端
CN102883207B (zh) * 2012-09-13 2016-11-23 深圳创维数字技术有限公司 一种数据处理的方法及数字电视终端
CN105760244B (zh) * 2016-02-02 2018-07-03 厦门市美亚柏科信息股份有限公司 一种基于假设验证的exFAT格式化恢复方法和装置
CN105760473A (zh) * 2016-02-11 2016-07-13 陈蔡峰 一种exFAT文件格式化后恢复方法和装置
TWI650660B (zh) * 2017-09-21 2019-02-11 和碩聯合科技股份有限公司 交易式檔案存取方法與電子裝置
CN107992763B (zh) * 2017-11-06 2020-01-21 北京东土科技股份有限公司 一种文件系统的掉电保护方法及装置
CN108228097A (zh) * 2017-12-25 2018-06-29 中国航空工业集团公司洛阳电光设备研究所 一种基于fat32文件系统的掉电保护方法
CN108763371B (zh) * 2018-05-17 2021-06-18 上海威固信息技术股份有限公司 一种Exfat文件系统断电保护及文件检测恢复方法
CN111221750B (zh) * 2018-11-27 2023-08-22 建兴储存科技(广州)有限公司 固态储存装置的数据处理方法
CN110286859B (zh) * 2019-06-28 2020-04-14 中国海洋大学 基于fat文件系统的数据存储方法及装置
CN113538754B (zh) * 2021-06-08 2023-04-07 福建新大陆通信科技股份有限公司 一种ctid智能门锁授权数据管理方法及系统
CN114936387B (zh) * 2022-07-25 2022-11-29 深圳市明源云科技有限公司 文本文件读取方法、写入方法、电子设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1400531A (zh) * 2001-08-03 2003-03-05 华为技术有限公司 快速存储器文件的处理方法
US6594743B1 (en) * 1999-05-15 2003-07-15 Inventec Corporation Disk-Cloning method and system for cloning computer data from source disk to target disk
CN1936853A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594743B1 (en) * 1999-05-15 2003-07-15 Inventec Corporation Disk-Cloning method and system for cloning computer data from source disk to target disk
CN1400531A (zh) * 2001-08-03 2003-03-05 华为技术有限公司 快速存储器文件的处理方法
CN1936853A (zh) * 2005-09-22 2007-03-28 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法

Also Published As

Publication number Publication date
CN101515276A (zh) 2009-08-26

Similar Documents

Publication Publication Date Title
CN101515276B (zh) 一种文件数据写操作的方法、文件数据恢复方法及系统
CN103577121B (zh) 一种基于Nand Flash的高可靠线性文件存取方法
US8156165B2 (en) Transaction-safe FAT files system
CN100449549C (zh) 嵌入式系统中NAND Flash存储器上建立文件系统的方法
CN101425041B (zh) 在nand flash存储器上建立fat文件系统的优化方法
CN109783017B (zh) 一种存储设备坏块的处理方法、装置及存储设备
CN102866956B (zh) 基于固态存储介质的数据实时跟踪存储系统及方法
CN100498796C (zh) 逻辑日志生成方法、数据库备份/恢复方法与系统
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
CN101526927B (zh) Flash文件系统的数据处理方法及数据处理装置
US6636941B1 (en) Enhanced stable disk storage
CN107239526B (zh) 文件系统实现方法、碎片整理方法、操作位置定位方法
US20060224818A1 (en) Method for fast access to flash-memory media
CN106844583B (zh) 一种在NOR Flash上建立FAT文件系统的优化方法
CN101923448A (zh) 一种nand闪存的转换层读写方法
CN103996412A (zh) 一种用于智能卡非易失性存储器的掉电保护方法
CN101556555B (zh) 用于闪存的区块管理方法、其控制器与储存系统
CN105718217A (zh) 一种精简配置存储池数据一致性维护的方法及装置
CN101482837B (zh) 闪存文件系统纠错方法和装置
CN103544110A (zh) 一种基于固态盘的块级连续数据保护方法
CN109669889B (zh) 一种轻量型Nor Flash闪存控制方法和装置
CN102053796A (zh) 闪存储存系统、闪存控制器与数据处理方法
CN104978148A (zh) 数据写入方法及装置、数据读取方法及装置
CN101876927A (zh) 实现fat32文件系统的断电保护方法和装置
US8966161B2 (en) Memory storage device and restoring method thereof

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee after: BEIJING WATCHDATA Co.,Ltd.

Address before: 100015 Beijing city Chaoyang District Dongzhimen West eight Street No. 2 room Wanhong Yan Dong Business Garden

Patentee before: BEIJING WATCH DATA SYSTEM Co.,Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120704

Termination date: 20211229

CF01 Termination of patent right due to non-payment of annual fee