CN111367863A - 一种文件的部分修改方法及系统 - Google Patents
一种文件的部分修改方法及系统 Download PDFInfo
- Publication number
- CN111367863A CN111367863A CN201811593088.7A CN201811593088A CN111367863A CN 111367863 A CN111367863 A CN 111367863A CN 201811593088 A CN201811593088 A CN 201811593088A CN 111367863 A CN111367863 A CN 111367863A
- Authority
- CN
- China
- Prior art keywords
- content data
- stripe
- target
- file
- alternative
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 230000004048 modification Effects 0.000 claims abstract description 41
- 238000012986 modification Methods 0.000 claims abstract description 41
- 238000002715 modification method Methods 0.000 abstract description 5
- 238000007726 management method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 4
- 239000000126 substance Substances 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 101100366082 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SNF7 gene Proteins 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种文件的部分修改方法,其特征在于,包括:获取与目标文件的第一部分内容数据对应的第一内容数据,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。上述的修改方法,只需要在文件系统中就可以完成,并且对目标文件的大小没有要求。
Description
技术领域
本发明涉及文件处理技术领域,尤其涉及一种文件的部分修改方法及系统。
背景技术
在分布式文件系统中,当需要对系统中的目标文件进行修改时,首先应用在本地存储系统中将目标文件进行存储,存储完毕后,将目标文件部分进行修改,修改完毕后,上传到分布式存储系统中,上述的文件修改过程,首先在本地存储系统中进行处理,处理好后再上传到分布式存储系统,需要使用两种文件系统修改目标文件。
当目标文件非常的大时,若本地存储系统无法存储这个非常大文件,那么就会存在文件无法修改的情况,而且先在本地存储系统中存储目标文件,然后修改,最后上传文件到分布式存储系统中,这样处理浪费了系统资源,增加了应用的存储管理成本,也增加了存储系统的管理开销。
发明内容
有鉴于此,本发明提供了一种文件的部分修改方法及系统,用以解决当目标文件非常的大时,若本地存储系统无法存储这个非常大文件,那么就会存在文件无法修改的情况,而且先在本地存储系统中存储目标文件,然后修改,最后上传文件到分布式存储系统中,这样处理浪费了系统资源,增加了应用的存储管理成本,也增加了存储系统的管理开销的问题。具体方案如下:
一种文件的部分修改方法,包括:
当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
上述的方法,可选的,当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,包括:
判断所述目标文件是否存在于目标文件系统中;
若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
若是,获取与所述第一部分内容数据对应的第一内容数据。
上述的方法,可选的,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,包括:
获取第一偏移位置;
依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
将所述第一目标条带中的全部文件内容数据复制到备选条带中;
依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据。
上述的方法,可选的,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,包括:
获取所述目标备选条带中指针位置;
判断所述指针位置是否指向了所述目标备选条带中各个内部数据块中最后一个内部数据块的末尾;
若是,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中。
上述的方法,可选的,还包括:
若否,判断在所述目标文件中是否存与第二部分内容对应的第二偏移位置;
若是,依据所述第二偏移位置确定与所述第二偏移位置对应的第二目标条带;
若所述第二目标条带与所述第一目标条带不同,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中。
上述的方法,可选的,还包括:对所述第一目标条带、第二目标条带、备选条带和目标备选条带的状态进行标识。
上述的方法,可选的,将所述第一目标条带替换为所述目标备选条带,还包括:
当所述第一目标条带的当前状态保持预设的时长后,更新所述第一目标条带的状态。
一种文件的部分修改系统,包括:
获取模块,用于当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
备份替换模块,用于将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
编码模块,用于在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
替换修改模块,用于当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
上述的系统,可选的,所述获取模块包括:
第一判断单元,用于判断所述目标文件是否存在于目标文件系统中;
第二判断单元,用于若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
第一获取单元,用于若是,获取与所述第一部分内容数据对应的第一内容数据。
上述的系统,可选的,所述备份替换模块包括:
第二获取单元,用于获取第一偏移位置;
确定单元,用于依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
备份单元,用于将所述第一目标条带中的全部文件内容数据复制到备选条带中;
替换单元,用于依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据。
与现有技术相比,本发明包括以下优点:
本发明公开了一种文件的部分修改方法,其特征在于,包括:获取与目标文件的第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。上述的修改方法,只需要在文件系统中就可以完成,并且对目标文件的大小没有要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种文件的部分修改方法流程图;
图2为本发明实施例公开的一种文件的部分修改方法又一流程图;
图3为本发明实施例公开的一种文件的部分修改方法又一流程图;
图4为本发明实施例公开的一种文件的部分修改方法又一流程图;
图5为本发明实施例公开的一种文件的部分修改系统结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明公开了一种文件的部分修改方法,所述修改方法应用在文件系统中文件中内容的部分修改过程中,所述修改方法的执行文件系统中的处理器或者控制器,其中,本发明实施例中以分布式文件系统的文件替换过程为例进行说明,所述分布式文件系统可以包括:信息管理模块、数据接入模块、磁盘管理模块和用户模块,其中,
所述信息管理模块用来管理文件、磁盘(所有的磁盘都在这里进行统一管理)、以及磁盘的条带信息。
所述数据接入模块用来管理用户的输入和输出,以及和信息管理服务器的交互控制。
所述磁盘管理模块是管理所有磁盘的服务器,所述磁盘是实际的物理设备。
所述信息管理模块中存储文件的路径、文件ID、条带ID序列和位置ID。文件大小、替换条带ID和替换索引。
本发明提出基于分布式文件系统的实现的文件的部分修改方法。其中,所述信息管理模块包括:磁盘信息表、条带信息表和文件信息表。
其中,
所述磁盘信息表包括:磁盘ID和连接地址。
每一个磁盘在磁盘信息表中存在唯一的id,磁盘信息表中存储了分布式存储系统中所有服务器上所有的磁盘的集合。
所述条带信息表包括:条带ID、磁盘ID序列、逻辑块号序列、使用标记和等待时间。
所述条带信息表是将多个磁盘中每一个磁盘中获取一个数据块,将每一个磁盘上的这个数据块唯一的组合成一个数据块组,就是一个条带。每一个条带都有一个唯一的id,就是条带id。可以通过条带的id确定有哪些磁盘的哪些逻辑数据块进行的组合,也可以确定有该条带中的连接地址等信息。
磁盘ID序列:DID0、DID1、……、DIDn
逻辑块号序列:lbid0、lbid1、……、lbidn
等待时间:表示前面设置某种标识转换为下一个标识需要的等待的时间。若为0表示已经立即改变了,否则按照设置的时间进行改变。
其中:磁盘ID序列个数和逻辑块号序列个数完全相同,且序列索引是一一对应的。比如DID0和lbid0对应,DID1和lbid1对应。就是说lbidx是和DIDx对应的,lbidx是DIDx磁盘中逻辑块号对应。
一个条带包含了多个数据块,优选的,本发明实施例中,按照8+4的方式进行描述,即8个原始数据块以及4个编码数据块,在计算的时候,原始数据是按照8个数据块来进行计算的,4个编码数据块是在存储过程中,防止数据丢失而使用的编码备份制,用于数据恢复使用。本发明实施例中,每一个数据块规定为4M。那么条带中原始数据大小=数据块个数×数据块大小。即一个条带的原始数据大小=8×4=32M。
所述文件信息表包括:文件名、文件ID、条带ID序列、文件大小、替换条带ID集合、替换索引和条带标识。
文件信息表包括带路径的文件名,如:/home/liyin/filename;所述带路径的文件名对应的文件ID,这个文件ID在文件信息表中是唯一的文件标识,在文件删除之前,这个路径以及对应的文件ID是不变的。条带ID序列是用来表示文件需要存储到多个条带中,且这些条带在这个表中是按照索引顺序排列的,即索引为0是条带信息表中的一个条带ID,索引为1是条带信息表中的另外一个条带ID等。文件大小表示这个文件的实际大小。替换条带ID集合表示条带信息表中的条带ID集合,用来替换条带ID序列中的其中一个条带ID;替换索引表示条带ID序列中指定的索引位置,用来指示条带ID序列中的某一个索引的条带需要被替换,且替换成替换条带ID集合中指示的条带ID列表中的其中一个条带ID。
由于我们的系统是编码制的,在文件已经存储好后,条带ID序列中的条带序列都是编码后的条带序列。而在替换ID集合中的条带是备份制的,在分布式存储系统中,只有备份制的数据修改是安全的,备份制修改完毕后,统一转换成编码制后才能被认为是数据安全的,否则认为所有修改的数据是非安全的。所以在替换条带ID集合中,使用的是备份制的和编码制相同的条带信息,优选的,选用3个条带来存储用户的修改数据。条带标识用来表示这个条带当前的操作动作,有初始状态,正在使用状态,成功状态,失败状态。
其中,所述修改方法的执行流程如图1所示,包括步骤:
S101、当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
本发明实施例中,所述目标文件存储在所述目标文件系统中,优选的,所述目标文件系统为分布式文件系统,其中,所述目标文件有多个条带组成,对所述目标文件中的第一部分内容数据进行修改时,所述第一部分内容数据至少存储在一个条带中,优选的,在修改过程中,不会增大文件的内容,只需要所述目标文件内容基础上进行内容覆盖,就是说,以前文件有64M,修改后的文件大小也是64M。在文件修改的部分,不能在文件内容中插入扩展内容,也不能删除文件中多余的文本(如需要在文件中插入扩展内容,会导致整个文件在存储中移动,这个在所有的存储系统中都无法实现;若删除磁盘中多余的文件内容,后续的文本会向前移动,所有的存储系统中也无法实现。),只能是在现有的文件上修改对应字节的内容。但是有一种情况除外,在文件尾部写入扩展内容是认为有效的,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据可以存储在所述目标文件系统中。
S102、将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
本发明实施例中,确定包含所述第一部分内容数据的第一目标条带,其中,所述第一目标条带中包含至少一个条带,优选的,本发明实施例中,选取三个条带作为备选条带,将所述第一目标条带中的全部文件内容数据复制到所述备选条带中,并将所述备选条带中包含的第一部分内容数据替换为所述第一内容数据,其中,所述第一部分内容数据的大小与所述第一内容数据相同。
S103、在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
本发明实施例中,由于各个备选条带中的内容相同,因此,任意任选一个备选条带作为所述目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,优选的,所述目标条带为8个原始数据块以及4个编码数据块,将所述第二内容数据写入所述目标备选条带的4个编码数据块中。
S104、当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
本发明实施例中,写入完成可以为用户关闭所述目标文件或者修改完成,将所述第一目标条带替换为所述目标备选条带,替换过程中完成的是条带ID的替换,完成所述目标文件中第一部分内容数据的修改。
其中,当所述目标备选条带的条带ID替换了替换索引指示的第一目标条带的条带ID后。同时将所述第一目标条带的条带ID获取出来。在条带信息表中,将所述第一目标条带的条带ID的使用标识标记为即将恢复初始状态,并设置等待时间为10分钟过期时间,这里的10分钟是一个相对值,不限定为10分钟。等待10分钟后,信息管理模块自动将该条带设置为初始状态0。
设置时间的原因是:若使用所述目标备选条带的条带ID替换了所述第一目标条带的条带ID时,可能存在读用户正在读取所述第一目标条带中的原始数据。所述目标文件系统中是允许的,同一时间,只要没有被替换之前,用户是可以读取所述第一目标条带的原始数据的。
对于替换列表中的ID集合也会被清理掉,同时替换索引设置为初始值,条带标识设置为初始值。其中,3条备选条带存储在替换条带ID序列中,当将其中的一个备选条带作为目标备选条带以后,所述替换条带ID序列中还存在两个备选条带,在清理之前需要获取出来,将使用标识设置为初始状态,进行了标志清除。
本发明公开了一种文件的部分修改方法,其特征在于,包括:获取与目标文件的第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。上述的修改方法,只需要在文件系统中就可以完成,并且对目标文件的大小没有要求。
本发明实施例中,当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据的方法流程如图2所示,包括步骤:
S201、判断所述目标文件是否存在于目标文件系统中;
本发明实施例中,用户向数据接入模块请求对所述目标文件的第一部分内容的修改请求时,带有的参数为:带路径的文件名、第一偏移位置,第一内容数据,第一内容数据大小,当数据接入模块接收到上述4个参数时,首先通过带路径的文件名向信息管理模块查询目标文件。信息管理模块查询这个带路径的文件是否存在,若不存在,返回失败;否则将文件信息表中的所述第一部分内容的文件ID和文件大小返回给数据接入模块。
S202、若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
本发明实施例中,数据接入模块得到所述第一部分内容的文件ID和文件大小。通过所述第一偏移位置确定述第一内容数据与所述第一部分内容数据的大小是否相同,即所述第一偏移位置等于所述第一部分内容数据的大小认为合法,否则返回失败。
S203、若是,获取与所述第一部分内容数据对应的第一内容数据。
本发明实施例中,在所述目标文件系统中获取与所述第一部分内容数据对应的第一内容数据。
S204、若否,不可以进行修改。
本发明实施例中,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据的方法流程如图3所示,包括步骤:
S301、获取第一偏移位置;
本发明实施例中,获取所述修改请求中阿包含的所述第一偏移位置。
S302、依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
本发明实施例中,将所述第一偏移位置÷条带原始数据存储大小(数据块个数×数据块大小)取商的整数部分作为所述第一目标条带的条带索引,那么余数部分就是所述第一部分内容数据在所述第一目标条带中的内部偏移位置。其中,内部偏移位置÷数据块大小,取整数表示需要在条带的第几个数据块中开始写数据。优选的,所述第一目标条带中包含8个数据块,那么据块索引为0—7。通过所述内部偏移位置÷数据块大小取余数部分表示这数据块的开始写数据的位置。
举例说明:假设用户传入一个69M的偏移位置,每一个条带32M、每一个数据块4M。
通过计算,条带索引=69M÷32M=2……5M。
其中,2表示这个文件的索引为2的条带,5M表示这个条带的5M内部偏移位置。
再通过5M÷4M=1……1M。
其中,1表示这个条带的索引为1的数据块,1M表示索引为1的数据块的偏移位置为1M的位置。
S303、将所述第一目标条带中的全部文件内容数据复制到备选条带中;
本发明实施例中,通过所述第一目标条带的条带索引向信息管理模块中获取所述目标文件对应的条带ID序列中的所述目标条带索引对应的目标条带ID,再从条带信息表中获取3个使用标记为0的条带ID集合标记被备选条带。将上述4个条带的ID获取这4个条带ID对应磁盘ID序列中对应的磁盘的链接地址,以及这4个磁盘对应的逻辑块号序列。即:
旧条带:条带ID、磁盘链接序列、逻辑块号序列。
新条带:条带ID、磁盘链接序列、逻辑块号序列
将这3个备选条带的使用标记为正在使用状态。
返回给数据接入模块。
数据接入模块链接所述第一目标条带对应的磁盘序列;读取该磁盘序列对应逻辑块号序列对应的磁盘上对应的原始数据,将原始数据读取出来后;数据接入模块链接新的3个条带对应的磁盘序列,将读取到的原始数据按照顺序写入到3个新的条带对应的逻辑块号所在的磁盘位置上。即如表1所示:
表1
通过上面的方式将对应的第一目标条带的数据备份到3个备选条带对应的逻辑块上。
S304、依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据;
本发明实施例中,依据所述内部偏移位置将所述备选条带中的第一部分内容数据替换为所述第一内容数据。假设需要写9M内容,首先在内部数据块索引为1的数据块中的偏移位置为1M之后写入3M数据;还剩余6M数据;在内部数据块索引为2的数据块中写入4M数据,还剩余2M数据;在内部数据块索引为3的数据块中的偏移位置为0开始写2M数据内容。这里有3个条带,需要同时写3个备选条带的对应索引的3个数据块。
本发明实施例中,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中的方法流程如图4所示,包括步骤:
S401、获取所述目标备选条带中指针位置;
本发明实施例中,指针指向对应的条带中下一个写入内容数据的内部数据块,若该内部数据块为该条带中的最后一个的末尾,则指针指向该内部数据块,所述目标备选条带中指针位置。
S402、判断所述指针位置是否指向了所述目标备选条带中各个内部数据块中最后一个内部数据块的末尾;
本发明实施例中,获取所述指针位置对应的内部数据块,判断该内部数据块是否为所述目标备选条带中各个内部数据块中最后一个内部数据块的末尾,其中,可以依据编号或者其它的优选标识进行判断。
S403、若是,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
本发明实施例中,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,优选的,所述目标条带为8个原始数据块以及4个编码数据块,将所述第二内容数据写入所述目标备选条带的4个编码数据块中。
S404若否,判断在所述目标文件中是否存与第二部分内容对应的第二偏移位置。
本发明实施例中,若是,依据所述第二偏移位置确定与所述第二偏移位置对应的第二目标条带;判断所述第一目标条带与所述第二目标条带是否相同,若不同,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,若相同,判断所述目标条带中的指针是否指向了所述目标备选条带中各个内部数据块中最后一个内部数据块的末尾,执行S402-S405所述的判断。其中,可以为,用户继续前一个写的数据位置之后继续写新的数据、用户在所述目标备选条带中该数据块的新的位置开始写文件内容或者用户在该文件的其他偏移位置写文件内容,新的偏移位置已经不再所述目标备选条带上了。
本发明实施例中,还包括:若不存在第二偏移位置,说明用户可能已经关闭所述目标文件,不再需要进行修改了。
本发明实施例中,基于上述的一中稳健的部分修改方法,本发明实施例中,还提供了一种文件的部分修改系统,所述部分修改系统的结构框图如图5所示,包括:
获取模块501、备份替换模块502、编码模块503和替换修改模块504。
其中,
所述获取模块501,用于当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
所述备份替换模块502,用于将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
所述编码模块503,用于在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
所述替换修改模块504,用于当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
本发明公开了一种文件的部分修改系统,其特征在于,包括:获取与目标文件的第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。上述的修改系统,只需要在文件系统中就可以完成,并且对目标文件的大小没有要求。
本发明实施例中,所述获取模块501包括:
第一判断单元505,第二判断单元506和第一获取单元507。
其中,
所述第一判断单元505,用于判断所述目标文件是否存在于目标文件系统中;
所述第二判断单元506,用于若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
所述第一获取单元507,用于若是,获取与所述第一部分内容数据对应的第一内容数据。
本发明实施例中,所述备份替换模块502包括:
第二获取单元508、确定单元509、备份单元510和替换单元511。
其中,
所述第二获取单元508,用于获取第一偏移位置;
所述确定单元509,用于依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
所述备份单元510,用于将所述第一目标条带中的全部文件内容数据复制到备选条带中;
所述替换单元511,用于依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据;
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种文件的部分修改方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种文件的部分修改方法,其特征在于,包括:
当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
2.根据权利要求1所述的方法,其特征在于,当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,包括:
判断所述目标文件是否存在于目标文件系统中;
若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
若是,获取与所述第一部分内容数据对应的第一内容数据。
3.根据权利要求1所述的方法,其特征在于,将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,包括:
获取第一偏移位置;
依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
将所述第一目标条带中的全部文件内容数据复制到备选条带中;
依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据。
4.根据权利要求1所述的方法,其特征在于,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中,包括:
获取所述目标备选条带中指针位置;
判断所述指针位置是否指向了所述目标备选条带中各个内部数据块中最后一个内部数据块的末尾;
若是,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中。
5.根据权利要求4所述的方法,其特征在于,还包括:
若否,判断在所述目标文件中是否存与第二部分内容对应的第二偏移位置;
若是,依据所述第二偏移位置确定与所述第二偏移位置对应的第二目标条带;
若所述第二目标条带与所述第一目标条带不同,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中。
6.根据权利要求1-5任意一项所述的方法,其特征在于,还包括:对所述第一目标条带、第二目标条带、备选条带和目标备选条带的状态进行标识。
7.根据权利要求1所述的方法,其特征在于,将所述第一目标条带替换为所述目标备选条带,还包括:
当所述第一目标条带的当前状态保持预设的时长后,更新所述第一目标条带的状态。
8.一种文件的部分修改系统,其特征在于,包括:
获取模块,用于当接收到对目标文件中第一部分内容数据的修改请求时,获取与所述第一部分内容数据对应的第一内容数据,其中,所述第一内容数据为对所述第一部分内容数据修改后的内容数据;
备份替换模块,用于将包含所述第一部分内容数据的第一目标条带中的全部文件内容数据复制到备选条带中,将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据,其中,所述备选条带至少为一个;
编码模块,用于在所述备选条带中选取目标备选条带,当满足预设的编码条件时,对所述目标备选条带中的文件内容数据进行编码,得到第二内容数据,将所述第二内容数据写入所述目标备选条带的编码数据块中;
替换修改模块,用于当写入完成时,将所述第一目标条带替换为所述目标备选条带,完成所述目标文件中第一部分内容数据的修改。
9.根据权利要求8所述的系统,其特征在于,所述获取模块包括:
第一判断单元,用于判断所述目标文件是否存在于目标文件系统中;
第二判断单元,用于若是,判断所述第一内容数据与所述第一部分内容数据的大小是否相同;
第一获取单元,用于若是,获取与所述第一部分内容数据对应的第一内容数据。
10.根据权利要求8所述的系统,其特征在于,所述备份替换模块包括:
第二获取单元,用于获取第一偏移位置;
确定单元,用于依据所述第一偏移位置,确定所述第一部分内容数据所属的第一目标条带和所述第一部分内容数据在所述第一目标条带中的内部偏移位置;
备份单元,用于将所述第一目标条带中的全部文件内容数据复制到备选条带中;
替换单元,用于依据所述内部偏移位置将所述备选条带中的所述第一部分内容数据替换为所述第一内容数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811593088.7A CN111367863A (zh) | 2018-12-25 | 2018-12-25 | 一种文件的部分修改方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811593088.7A CN111367863A (zh) | 2018-12-25 | 2018-12-25 | 一种文件的部分修改方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111367863A true CN111367863A (zh) | 2020-07-03 |
Family
ID=71209792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811593088.7A Pending CN111367863A (zh) | 2018-12-25 | 2018-12-25 | 一种文件的部分修改方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367863A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080250213A1 (en) * | 2007-04-06 | 2008-10-09 | Holt John M | Computer Architecture And Method Of Operation for Multi-Computer Distributed Processing Having Redundant Array Of Independent Systems With Replicated Memory And Code Striping |
CN102549554A (zh) * | 2009-09-29 | 2012-07-04 | 美光科技公司 | 基于条带的存储器操作 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN105242879A (zh) * | 2015-09-30 | 2016-01-13 | 华为技术有限公司 | 一种数据存储方法以及协议服务器 |
CN105791837A (zh) * | 2014-12-24 | 2016-07-20 | 北京数码视讯科技股份有限公司 | 一种视频数据编码方法、解码方法、转码方法及设备 |
CN108628541A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种文件存储的方法、装置及存储系统 |
CN109063103A (zh) * | 2018-07-27 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式非易失文件系统 |
-
2018
- 2018-12-25 CN CN201811593088.7A patent/CN111367863A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080250213A1 (en) * | 2007-04-06 | 2008-10-09 | Holt John M | Computer Architecture And Method Of Operation for Multi-Computer Distributed Processing Having Redundant Array Of Independent Systems With Replicated Memory And Code Striping |
CN102549554A (zh) * | 2009-09-29 | 2012-07-04 | 美光科技公司 | 基于条带的存储器操作 |
CN103558998A (zh) * | 2013-11-07 | 2014-02-05 | 华为技术有限公司 | 一种数据操作的方法和设备 |
CN105791837A (zh) * | 2014-12-24 | 2016-07-20 | 北京数码视讯科技股份有限公司 | 一种视频数据编码方法、解码方法、转码方法及设备 |
CN105242879A (zh) * | 2015-09-30 | 2016-01-13 | 华为技术有限公司 | 一种数据存储方法以及协议服务器 |
CN108628541A (zh) * | 2017-03-22 | 2018-10-09 | 华为技术有限公司 | 一种文件存储的方法、装置及存储系统 |
CN109063103A (zh) * | 2018-07-27 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式非易失文件系统 |
Non-Patent Citations (1)
Title |
---|
瞿天善: "Ceph存储系统纠删码覆盖写的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 10, 15 October 2016 (2016-10-15), pages 137 - 20 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10248336B1 (en) | Efficient deletion of shared snapshots | |
US11537659B2 (en) | Method for reading and writing data and distributed storage system | |
US20190205209A1 (en) | Layering a distributed storage system into storage groups and virtual chunk spaces for efficient data recovery | |
JP5320678B2 (ja) | データ分散格納システム及びデータ分散方法、それに用いる装置並びにそのプログラム | |
US8060468B2 (en) | Storage system and data recovery method | |
CN102177505B (zh) | 用于优化闪速拷贝级联中的映射表的清理的方法和系统 | |
US8819362B1 (en) | Managing replication and reservations | |
CN110321301B (zh) | 一种数据处理的方法及装置 | |
EP3042289A1 (en) | Replication of snapshots and clones | |
CN110018989B (zh) | 一种快照比对的方法和装置 | |
TW201131351A (en) | System and method for optimizing redundancy restoration in distributed data layout environments | |
TW201029393A (en) | Atomic multiple modification of data in a distributed storage system | |
CN107111627B (zh) | 在线文件系统检查 | |
CN108829342B (zh) | 一种日志存储方法、系统及存储装置 | |
US8316196B1 (en) | Systems, methods and computer readable media for improving synchronization performance after partially completed writes | |
US20230259278A1 (en) | Removable media based object store | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
WO2017087015A1 (en) | Count of metadata operations | |
CN115617264A (zh) | 分布式存储方法及装置 | |
CN111143116A (zh) | 一种磁盘坏块处理的方法及装置 | |
CN105550230B (zh) | 分布式存储系统节点故障的侦测方法和装置 | |
US11397530B2 (en) | Techniques for prolonging lifespan of storage drives | |
CN111459399A (zh) | 一种数据写入方法、数据读取方法及装置 | |
CN111367863A (zh) | 一种文件的部分修改方法及系统 | |
CN109325005A (zh) | 一种数据处理方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |