一种数据处理方法和电子设备与流程

文档序号:16855507发布日期:2019-02-12 23:14阅读:166来源:国知局
一种数据处理方法和电子设备与流程

本发明涉及电子设备领域,更具体的说,是涉及一种数据处理方法和电子设备。



背景技术:

文件系统用来保存用户数据,当文件系统所在的设备发生故障时,比如突然掉电\磁盘故障等,文件系统中会存在某一块数据只有一部分写到了磁盘上,其他部分还没有来的及下盘。这样当系统故障恢复的时候,无法确定目前系统中在磁盘上写入的这块数据是什么样子的,哪部分已经被写入,哪部分可以被读出来,即真正在磁盘上落盘的数据跟要写入的数据不一致。

文件系统在解决数据不一致的问题时,引入文件系统日志,即文件系统的每一个修改操作都会在操作之前记一条日志,当该操作的修改动作完成后,就会把相应的日志删除。这样当系统由于某种原因无法完成文件系统的既定操作时,文件系统会读取日志,回滚未完成的日志所对应的操作(例如,未完成的追加写操作删除写入的内容,删除设置的新的属性等)并删除相关的日志,即每一种需要记录日志的操作都有不同的回滚动作。

如图1所示的现有技术中文件系统修改写流程,应用系统101要修改文件系统102中的某块数据,为了保证在修改数据出错时被修改过的这块数据能回滚到之前的数据,需要执行以下步骤:1、修改(modify),确定要修改的数据,从原文件(originalfile)中确定一个数据块(blocks);2、复制(copy),将该数据块复制到备份文件(backupfile);3、写入日志(writelog),将该写操作写入日志文件(logfile)中的日志(log);4、写(write),将新数据写入文件中,得到新文件(newfile);5、删除(remove),从备份文件中删除该数据块。

该过程中,该将要修改的原数据拷贝出来,存放到其他的位置(如新建的文件中),这样在新数据写失败的时候,可以把刚备份的旧的数据拷贝回来,覆盖写出错的新数据,保证文件的数据回退到覆盖写之前的一致状态。

为了能让文件系统恢复到数据一致状态,需要在修改写的时候拷贝原来的数据块,增加了一次数据读写的操作,文件系统需要把要修改的数据块内容先读出来,创建一个新文件,然后把内容写到新文件中,当新数据下盘后,需要删除之前备份的数据文件。所以,修改写操作的性能会显著下降。



技术实现要素:

有鉴于此,本发明提供了一种数据处理方法,解决了现有技术中修改写操作的性能较低的问题。

为实现上述目的,本发明提供如下技术方案:

一种数据处理方法,包括:

接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;

根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

上述的方法,优选的,所述将修改数据写入所述至少一个第二数据块中之后,还包括:

基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;

基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。

上述的方法,优选的,所述基于所述将修改数据写入所述至少一个第二数据块中未完成,还包括:

删除所述至少一个第二数据中存储的数据;

删除所述预设链表中所述至少一个第一数据块的地址。

上述的方法,优选的,所述获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中,具体包括:

判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;

基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;

基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址。

上述的方法,优选的,基于所述将修改数据写入所述至少一个第二数据块中完成,还包括:

根据所述预设链表中所述至少一个第一数据块的地址,查找到相应的第一数据块;

删除所述第一数据块中存储的数据。

一种电子设备,包括:

本体;

处理器,用于接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

上述的电子设备,优选的,所述处理器,还用于基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;

基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。

上述的电子设备,优选的,基于所述将修改数据写入所述至少一个第二数据块中未完成,所述处理器,还用于:删除所述至少一个第二数据中存储的数据;删除所述预设链表中所述至少一个第一数据块的地址;

基于所述将修改数据写入所述至少一个第二数据块中完成,所述处理器,还用于:根据所述预设链表中所述至少一个第一数据块的地址,查找到相应的第一数据块;删除所述第一数据块中存储的数据。

上述的电子设备,优选的,所述处理器,具体用于:判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址。

一种电子设备,包括:

接收单元,用于接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

获取单元,用于获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;

修改单元,用于根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

经由上述的技术方案可知,与现有技术相比,本发明提供了一种数据处理方法,包括:接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。采用该方法,通过将待修改的第一数据对应的多个数据块的地址存储到预设链表中,而为该第一数据分配新的数据块,并将修改数据写入该新分配的数据块中。这样,直接将修改数据写入新分配的数据块,不需要对原来的数据块进行覆盖,也不需要对修改的数据进行读取以及写到新创建的文件中,提高了修改写的性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1所示的为现有技术中文件系统修改写流程;

图2所示的为现有技术中修改写操作的回滚过程;

图3所示的为本申请提供的一种数据处理方法实施例1的流程图;

图4所示的为本申请提供的一种数据处理方法实施例1中元数据中增加修改写备份字段示意图;

图5所示的为本申请提供的一种数据处理方法实施例2的流程图;

图6所示的为本申请提供的一种数据处理方法实施例3的流程图;

图7所示的为本申请提供的一种数据处理方法在应用场景中修改写的流程示意图;

图8所示的为本申请提供的一种数据处理方法在应用场景中修改写回滚的流程示意图;

图9所示的为本申请提供的一种电子设备实施例1的结构示意图;

图10所示的为本申请提供的一种电子设备实施例1中处理器的具体结构示意图;

图11所示的为本申请提供的一种电子设备实施例1中在应用场景中电子设备的具体结构示意图;

图12所示的为本申请提供的一种电子设备实施例2的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,现有技术中,当将新输入写入文件的blocks中时,如果出现错误,导致数据没有写完整,需要将这块修改的数据退回到原来的版本,把原来的数据块内容拷回到原文件中。如图2所示的为现有技术中修改写操作的回滚过程,该过程均是在该文件系统中执行,包括以下步骤:1、读取日志(readlog),对日志(log)文件(logfile)进行读取,从备份文件(backupfile)中得到数据块(blocks);2、恢复(recover),将得到的数据块恢复至文件中,该文件中包含有多个数据块,得到原文件(originalfile);3、删除(delete),删除备份文件中的数据块。

为实现该过程,需要在进行修改文件系统中时,将该待修改的数据库备份至备份文件中,并在新数据写失败的时候,可以把刚备份的旧的数据拷贝回来,覆盖写出错的新数据,以保证文件的数据回退到覆盖写之前的一致状态,这样使得修改写操作的性能下降。

如图3所示的,为本申请提供的一种数据处理方法实施例1的流程图,该方法应用于一电子设备,该电子设备中具有截屏功能,该方法包括以下步骤:

步骤s301:接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

其中,接收到第一指令,根据该第一指令即可得到目的修改文件系统中的第一数据。

具体的,该第一数据在该系统文件中可以对应一个数据块,也可以对应多个数据块,本申请中该第一数据对应的数据块记为第一数据块,该第一数据可以对应一个第一数据块,也可以对应多个第一数据块。

步骤s302:获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;

其中,根据该待修改的第一数据,确定其对应的第一数据块,进而获取该第一数据块的地址,即可得知该第一数据块的存储位置,然后,将该地址存储到预设链表中。

具体实施中,通过在系统文件的元数据中增加字段bblock来保存修改写时要备份的原数据block(即第一数据块)的地址。

bblock是元数据中的一个位置指针,该指针指向一个链表,这个链表的每一项都保存了对系统文件的一次修改写备份数据的信息,这些信息包括本次修改写的唯一标识号,以及备份的所有block块的地址。

如图4所示的为元数据中增加修改写备份字段示意图,其中,元数据结构包括bblock、indoe(informationnode,索引节、信息节点)以及其他信息,而bblock中包含有多个blockaddress(数据块地址)以及相应的index(标识),本图4中采用3个表示,且增加该备份字段bblock是通过将该数据块地址及其相应的标识添加到链表尾部实现的。

具体实施中,当有覆盖写请求到来时,文件系统会在bblock的链表的尾部先创建一个本次修改写的链表项,然后将要备份的所有数据块从该文件原来的位置摘下来,挂载到新创建的链表项里,即把需要备份的数据块的地址都记录到新建的链表项里。

步骤s303:根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

其中,在该文件系统中为该修改的第一数据重新分配数据块,且该分配的数据块个数与其之前占用的数据块个数相同,即重新分配的第二数据块个数与第一数据占用的第一数据块个数相同。

具体的,将该修改写入的数据写入该第二数据块中,以实现对该文件系统中的第一数据进行修改。

需要说明的是,具体实施中,该确定第一数据块对应的地址并到预设链表中的过程,与为第一数据重新分配第二数据块的过程顺序不做限制,二者可以同时进行,也可以先后执行,且先后顺序不限制。

当然,具体实施中还需将该第一数据对应的数据块进行重新记录。

例如,执行修改写前,该第一数据对应的第一数据块包括数据块1234,执行修改写后,该第一数据对应的第二数据块包括数据块5678。

综上,本实施例提供的一种数据处理方法,包括:接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。采用该方法,通过将待修改的第一数据对应的多个数据块的地址存储到预设链表中,而为该第一数据分配新的数据块,并将修改数据写入该新分配的数据块中。这样,直接将修改数据写入新分配的数据块,不需要对原来的数据块进行覆盖,也不需要对修改的数据进行读取以及写到新创建的文件中,提高了修改写的性能。

如图5所示的,为本申请提供的一种数据处理方法实施例2的流程图,该方法包括以下步骤:

步骤s501:接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

步骤s502:获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;

步骤s503:根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应;

其中,步骤s501-503与实施例1中的步骤s301-303一致,本实施例中不做赘述。

步骤s504:基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;

其中,将修改数据写入该至少一个第二数据块中完成,即修改系统文件中的第一数据完成,无需执行回滚,则将该预设链表中存储的该至少一个第一数据块的地址删除,即删除bblock中关于本次修改写链表中的记录。

其中,还可以包括以下操作:

根据所述预设链表中所述至少一个第一数据块的地址,查找到相应的第一数据块;删除所述第一数据块中存储的数据。

具体实施中,还可修改所述至少一个第一数据块的标识为可被占用,以便后续再次进行修改写操作时,可以将该第一数据块作为新的第二数据块使用,重复利用该第一数据块。

步骤s505:基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。

其中,当系统出现意外掉电、磁盘故障等问题时,会导致将修改数据写入该至少一个第二数据块中未完成(新写的block块出错),即修改系统文件中的第一数据未完成,根据文件系统日志提示,需要执行回滚。

需要将保存在bblock链表中相应的备份块的地址再记录到文件元数据相应的位置就可以,也不需要做数据拷贝。

其中,还可以包括以下操作:

删除所述至少一个第二数据中存储的数据;删除所述预设链表中所述至少一个第一数据块的地址。

回滚完成后,也将该预设链表中存储的该至少一个第一数据块的地址删除,即删除bblock中关于本次修改写链表中的记录。

具体实施中,还可修改所述至少一个第二数据块的标识为可被占用,以便后续再次进行修改写操作时,可以将该第二数据块作为新的第二数据块使用,重复利用该第二数据块。

综上,本实施例提供的一种数据处理方法中,还包括:基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。采用该方法,当修改写数据未完成时,将第一数据对应的数据块地址恢复为该至少一个第一数据块的地址,使得该第一数据回滚为直线修改写操作之前,不需要对原来的数据块进行覆盖,也不需要对修改的数据进行读取以及写到新创建的文件中,提高了修改写的性能。

如图6所示的,为本申请提供的一种数据处理方法实施例3的流程图,该方法包括以下步骤:

步骤s601:接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

其中,步骤s601与实施例1中的步骤s301一致,本实施例中不做赘述。

步骤s602:判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;

其中,在接收到指示修改文件系统中第一数据时,判断该文件系统的元数据中是否有预设的位置指针。

如果该元数据中有预设的位置指针,则可知已经建立了预设链表,根据该位置指针指向即可得到该链表;如果元数据中没有预设的位置指针,则可知未建立预设链表,需要建立一个链表。

步骤s603:基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;

其中,该文件系统的元数据有预设位置指针时,在该位置指针指向的预设链表后添加表项,该表项与该至少一个第一数据块对应,该表项中记录第一数据块的地址。

具体实施中,该表项中可以记录有本次修改写的唯一标识号。

步骤s604:基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;

其中,该文件系统的元数据没有预设位置指针时,则创建一个链表,并将该链表的表头地址添加到该文件系统的元数据中,实现在该元数据中建立位置指针,该位置指针指向该链表。

创建链表中,在链表的表头后添加与该第一数据块对应的表项,该表项中记录第一数据块的地址。

具体实施中,该表项中可以记录有本次修改写的唯一标识号。

步骤s605:根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

其中,步骤s605与实施例1中的步骤s303一致,本实施例中不做赘述。

综上,本实施例提供的一种数据处理方法中,该获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中,包括:判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址。采用该方法,通过判断文件系统的元数据中是否存在位置指针实现确定是否有预设链表,并在有预设链表时,添加第一数据块对应的表项,而在没有位置指针时,创建链表,并在链表中添加第一数据块对应的表项。

如图7-8所示的为本申请提供的一种数据处理方法对应的应用场景示意图。

如图7所示的为应用场景中,修改写的流程示意图,包括:

步骤s701:修改写;

步骤s702:查找需要修改写的数据block;

步骤s703:检测文件元数据是否有备份记录字段;

该备份记录字段可以通过位置指针的形式体现。

如果有执行步骤s704;否则执行步骤s705。

步骤s704:在备份记录链表中增加一项;

步骤s705:在文件的数据中增加备份记录字段;

步骤s706:记录需要备份的数据block地址;

步骤s707:为要修改的新的数据分配新的block放到原文件的相应位置;

步骤s708:写入新的数据;

步骤s709:结束。

如图8所示的为应用场景中,修改写回滚的流程示意图,包括:

步骤s801:修改写回滚;

步骤s802:查询需要回滚的文件block在备份链表中的位置;

步骤s803:将要回滚的block的地址写入到原文件的元数据中;

步骤s804:删除备份链表中的记录项;

步骤s805:结束。

与上述本申请提供的一种数据处理方法实施例相对应的,本申请还提供了应用该数据处理方法的电子设备实施例。

如图9所示的为本申请提供的一种电子设备实施例1的结构示意图,该电子设备包括以下结构:本体901和处理器902。

其中,该处理器902,用于接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

具体实施中,该处理器采用具有数据处理能力的结构,如cpu(centralprocessingunit,中央处理器)等。

优选的,所述处理器,还用于基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;

基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。

优选的,基于所述将修改数据写入所述至少一个第二数据块中未完成,所述处理器,还用于:删除所述至少一个第二数据中存储的数据;删除所述预设链表中所述至少一个第一数据块的地址;

基于所述将修改数据写入所述至少一个第二数据块中完成,所述处理器,还用于:根据所述预设链表中所述至少一个第一数据块的地址,查找到相应的第一数据块;删除所述第一数据块中存储的数据。

优选的,所述处理器,具体用于:判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址。

如图10所示的为本实施例中处理器的具体结构示意图,该处理器具体包括以下结构备份数据块地址模块1001、备份数据块回滚模块1002和备份记录清理模块1003。

具体的,备份数据块地址模块负责修改写文件的时候在文件的元数据中增加备份字段,并且把要修改的block块的地址保存在备份的字段下,block块备份完成后,该模块还要负责对之后的修改已备份block块的操作创建新的block块,新数据的内容要写到新的block中;备份记录清理模块负责在修改写成功和备份数据block回滚后清除备份数据块的相关信息,文件修改数据成功下盘后,系统会发送一个数据提交请求,将修改前备份的数据块删除,删除备份块的命令会发送给备份记录清理模块,备份记录清理模块收到删除请求后,会在备份字段指向的备份数据块链表中查找相应index的数据块项并将其删除,这样本次修改写工作就完成了;如果系统出现故障,文件系统会读取记录的操作日志,根据每条日志记录的操作内容决定如何回滚,对于修改写操作需要把之前备份的数据block块再拷回到原文件相应的位置,备份数据块回滚模块在文件元数据备份字段所指向的数据块链表中查找对应日志需要回滚的数据块,将这些数据块拷贝回文件的数据区,实现本次数据修改的回滚,数据回滚完成后,文件系统会向备份记录清理模块发送删除回滚相关数据block的请求,备份记录清理模块把文件元数据中保留的对应index的记录信息删除。

图11所示的为本实施例中电子设备在应用场景中的具体结构示意图,该电子设备包括修改写判断模块1101、文件系统日志模块1102和处理器1103。

其中,该修改写判断模块用于判断文件系统是否进行修改写,基于该文件系统进行修改写,触发处理器运行;系统出现故障,新内容未成功写入数据块中时,文件系统日志模块读取记录的操作日志,根据每条日志记录的操作内容决定如何回滚。其中,该处理器的功能参考上述图10所示的处理器的具体结构示意图中的处理器的功能,本部分不再赘述。

综上,本实施例提供的电子设备,通过将待修改的第一数据对应的多个数据块的地址存储到预设链表中,而为该第一数据分配新的数据块,并将修改数据写入该新分配的数据块中。这样,直接将修改数据写入新分配的数据块,不需要对原来的数据块进行覆盖,也不需要对修改的数据进行读取以及写到新创建的文件中,提高了修改写的性能。

如图12所示的为本申请提供的一种电子设备实施例2的结构示意图,该电子设备包括以下结构:接收单元1201、获取单元1202和修改单元1203;

其中,该接收单元1201,用于接收第一指令,所述第一指令用于指示修改文件系统中第一数据,所述第一数据对应至少一个第一数据块;

其中,该获取单元1202,用于获取所述至少一个第一数据块的地址,并将所述地址存储到预设链表中;

其中,该修改单元1203,用于根据文件系统中为所述第一数据分配的至少一个第二数据块,将修改数据写入所述至少一个第二数据块中,以实现修改所述第一数据,所述第二数据块与所述第一数据块对应。

优选的,所述电子设备还包括:

处理单元,用于基于所述将修改数据写入所述至少一个第二数据块中完成,删除所述预设链表中所述至少一个第一数据块的地址;基于所述将修改数据写入所述至少一个第二数据块中未完成,根据所述预设链表中的地址,替换第一数据对应的所述至少一个第二数据块的地址。

优选的,基于所述将修改数据写入所述至少一个第二数据块中未完成,处理单元还用于:

删除所述至少一个第二数据中存储的数据;

删除所述预设链表中所述至少一个第一数据块的地址。

优选的,所述获取单元,具体用于:

判断所述文件系统的元数据中是否有预设的位置指针,所述位置指针指向预设链表;

基于所述文件系统的元数据中有预设的位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址;

基于所述文件系统的元数据中没有预设的位置指针,创建链表,将链表的表头地址添加到文件系统的元数据中,实现建立位置指针,在所述预设链表后添加与所述至少一个第一数据块对应的表项,任一所述表项中对应记录一个第一数据块的地址。

优选的,基于所述将修改数据写入所述至少一个第二数据块中完成,,处理单元还用于:

根据所述预设链表中所述至少一个第一数据块的地址,查找到相应的第一数据块;

删除所述第一数据块中存储的数据。

综上,本实施例提供的电子设备,通过将待修改的第一数据对应的多个数据块的地址存储到预设链表中,而为该第一数据分配新的数据块,并将修改数据写入该新分配的数据块中。这样,直接将修改数据写入新分配的数据块,不需要对原来的数据块进行覆盖,也不需要对修改的数据进行读取以及写到新创建的文件中,提高了修改写的性能。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所提供的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所提供的原理和新颖特点相一致的最宽的范围。

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