CN111444138B - 一种文件局部修改方法及系统 - Google Patents
一种文件局部修改方法及系统 Download PDFInfo
- Publication number
- CN111444138B CN111444138B CN201910040127.9A CN201910040127A CN111444138B CN 111444138 B CN111444138 B CN 111444138B CN 201910040127 A CN201910040127 A CN 201910040127A CN 111444138 B CN111444138 B CN 111444138B
- Authority
- CN
- China
- Prior art keywords
- file
- stripe
- new
- strip
- index
- 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
- 238000002715 modification method Methods 0.000 title claims abstract description 9
- 230000004048 modification Effects 0.000 claims abstract description 46
- 238000012986 modification Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 25
- 230000010076 replication Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 101100366082 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SNF7 gene Proteins 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Abstract
本发明公开了一种文件局部修改方法及系统,基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,获取一个新条带并将新条带的状态标记为正在使用状态,将原条带的内容复制到新条带中,同时将新条带存储到文件的预设位置,并将替换索引设置为原条带在条带ID序列中的序号,在新条带与待修改文件局部在条带ID序列中的位置对应的内部偏移位置写入目标文本内容,当目标文本内容填写完成后,将写入的目标文本内容的新条带替换条带ID序列中对应的原条带,完成文件局部修改。本发明实现了文件局部修改功能,当文件局部修改更新后,无需改变任何条件,就可从修改后的文件中服务所需的文件内容,大大提高了文件操作的方便性。
Description
技术领域
本发明涉及计算机技术领域,更具体的说,涉及一种文件局部修改方法及系统。
背景技术
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。
在一些分布式文件系统的文件应用中,当文件存储完毕后,还需对文件的局部,主要为文件的前面部分进行修改。比如,在分布式文件系统中,正在录制一个节目,该节目在录制过程中会被转成MP4格式进行存储,由于不知道节目何时录制完毕,以及所录制节目的文件的大小,因此,在节目录制过程中,对文件的头部信息进行了预留。当节目录制完毕后,再将头部信息进行进行更新。基于此,需要分布式文件系统支持文件的局部修改功能。
但是,由于很多互联网业务只需要存储服务,并不需要用户在存储过程中,返回到文件的某一局部位置来修改局部信息,因此,文件的局部修改功能在很多互联网业务中是不需要的,从而使得市场上很多分布式文件系统都不支持文件的局部修改功能。
发明内容
有鉴于此,本发明公开一种文件局部修改方法及系统,以实现文件局部修改功能,且不会导致不同应用在文件读写上增加额外的耦合性,当文件局部修改更新后,无需改变任何条件,就可以从修改后的文件中服务所需的文件内容,大大提高文件操作的方便性。
一种文件局部修改方法,包括:
基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
获取一个新条带,并将所述新条带的状态标记为正在使用状态;
将原条带的内容复制到所述新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号;
基于所述位置,在所述新条带对应的内部偏移位置写入目标文本内容;
将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入所述目标文本内容的新条带标记为已使用状态。
可选的,所述基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,具体包括:
接收用户发送的文件局部替换请求,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小;
查询所述带路径的文件名在预设的文件信息表中是否存在;
如果是,则输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
判断所述文件偏移位置是否在所述被替换文件大小的范围内;
如果是,则基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
可选的,所述文件信息表包括:带路径的文件名、文件ID、条带ID序列、文件大小、替换条带ID、替换索引和条带标志。
可选的,所述则基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置,具体包括:
用所述文件偏移位置除以所述条带数据大小,得到的整数为所述条带索引,得到的余数为所述条带内部偏移位置。
可选的,所述获取一个新条带,并将所述新条带的状态标记为正在使用状态,具体包括:
当所述条带索引和预存索引不一致,且所述条带索引不为初始值时,获取一个所述新条带,并将所述新条带的状态标记为正在使用状态。
可选的,所述将原条带的内容复制到所述新条带中,具体包括:
在所述原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在所述磁盘上对应的逻辑块ID的数据内容,将所述数据内容复制到新条带ID对应的条带中。
一种文件局部修改系统,包括:
确定单元,用于基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
获取单元,用于获取一个新条带,并将所述新条带的状态标记为正在使用状态;
复制单元,用于将原条带的内容复制到所述新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号;
内容写入单元,用于基于所述位置,在所述新条带对应的内部偏移位置写入目标文本内容;
替换单元,用于将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入所述目标文本内容的新条带标记为已使用状态。
可选的,所述确定单元具体包括:
接收子单元,用于接收用户发送的文件局部替换请求,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小;
查询子单元,用于查询所述带路径的文件名在预设的文件信息表中是否存在;
输出子单元,用于在所述查询子单元查询到所述带路径的文件名在预设的所述文件信息表中存在时,输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
判断子单元,用于判断所述文件偏移位置是否在所述被替换文件大小的范围内;
求取子单元,用于在所述判断子单元判断为是的情况下,基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
可选的,所述获取单元具体用于:
当所述条带索引和预存索引不一致,且所述条带索引不为初始值时,获取一个所述新条带,并将所述新条带的状态标记为正在使用状态。
可选的,所述复制单元,具体用于:
在所述原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在所述磁盘上对应的逻辑块ID的数据内容,将所述数据内容复制到新条带ID对应的条带中。
从上述的技术方案可知,本发明公开了一种文件局部修改方法及系统,基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,获取一个新条带,并将新条带的状态标记为正在使用状态,将原条带的内容复制到新条带中,同时将新条带存储到文件的预设位置,并将替换索引设置为原条带在条带ID序列中的序号,在新条带与待修改文件局部在条带ID序列中的位置对应的内部偏移位置写入目标文本内容,当目标文本内容填写完成后,将写入的目标文本内容的新条带替换条带ID序列中对应的原条带,并将原条带标记为初始状态,将写入目标文本内容的新条带标记为已使用状态,从而完成了文件局部修改。本发明实现了文件局部修改功能,且不会导致不同应用在文件读写上增加额外的耦合性,当文件局部修改更新后,无需改变任何条件,就可以从修改后的文件中服务所需的文件内容,大大提高了文件操作的方便性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
图1为本发明实施例公开的一种文件局部修改方法流程图;
图2为本发明实施例公开的一种基于文件偏移位置确定待修改文件局部在条带ID序列中的位置的方法流程图;
图3为本发明实施例公开的一种文件局部修改系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种文件局部修改方法及系统,基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,获取一个新条带,并将新条带的状态标记为正在使用状态,将原条带的内容复制到新条带中,同时将新条带存储到文件的预设位置,并将替换索引设置为原条带在条带ID序列中的序号,在新条带与待修改文件局部在条带ID序列中的位置对应的内部偏移位置写入目标文本内容,当目标文本内容填写完成后,将写入的目标文本内容的新条带替换条带ID序列中对应的原条带,并将原条带标记为初始状态,将写入所述目标文本内容的新条带标记为已使用状态,从而完成了文件局部修改。本发明实现了文件局部修改功能,且不会导致不同应用在文件读写上增加额外的耦合性,当文件局部修改更新后,无需改变任何条件,就可以从修改后的文件中服务所需的文件内容,大大提高了文件操作的方便性。
参见图1,本发明一实施例公开的一种文件局部修改方法流程图,该方法包括步骤:
步骤S101、基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
具体的,参见图2,本发明一实施例公开的一种基于文件偏移位置确定待修改文件局部在条带ID序列中的位置的方法流程图,包括步骤:
步骤S201、接收用户发送的文件局部替换请求;
其中,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小。
步骤S202、查询所述带路径的文件名在预设的文件信息表中是否存在,如果是,则执行步骤S203;
需要说明的是,当带路径的文件名在文件信息表中不存在时,则停止修改流程。
本申请中的文件信息表包括:带路径的文件名、文件ID、条带ID序列、文件大小、替换条带ID、替换索引和条带标志。
具体的,带路径的文件名,如:/home/liyin/filename;
每个带路径的文件名对应一个文件ID,每个文件ID在文件信息表中都是唯一的文件标识,在文件删除之前,文件的路径以及对应的文件ID是不变的。
条带ID序列是用来表示文件需要存储到多个条带中,且这些条带在这个表中式按照索引顺序排列的,即索引为0是条带信息表中的一个条带ID,索引为1是条带信息表中的另外一个条带ID等。
文件大小表示文件的实际大小。
替换条带ID表示条带信息表中的一个条带ID,用来替换条带ID序列中的其中一个条带ID。
替换索引表示条带ID序列中指定的索引位置,用来指示条带ID序列中的某一个索引的条带需要被替换,且替换成替换条带ID指示的条带ID。
条带标志是用来确定替换索引ID的使用状态。初始状态为0。
步骤S203、输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
在实际应用中,可以在分布式文件系统中设置一个数据接入模块,该数据接入模块用于管理用户的输入和输出,以及磁盘、信息管理服务器的交互控制。
在本实施例中,可以将带路径的文件名在文件信息表中对应的文件ID和文件大小输出至数据接入模块。
步骤S204、判断所述文件偏移位置是否在所述被替换文件大小的范围内,如果是,则执行步骤S205;
通过判断文件偏移位置是否在被替换文件大小的范围内,来确定文件偏移位置是否合法,并在确定文件偏移位置在被替换文件大小的范围内时,确定文件偏移位置合法;反之,文件偏移位置不在被替换文件大小的范围内时,停止修改流程。
步骤S205、基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
具体的,文件偏移位置÷条带数据大小=条带索引……条带内部偏移位置。
其中,条带索引表示在文件信息表中的条带ID序列中的条带索引。
条带内部偏移位置表示在这个条带索引中的数据块内部的偏移位置,在上述除法公式中指的是余数。
通过条带索引,向信息管理模块获取文件在条带ID序列中的指定索引的条带ID以及新分配的条带ID。
需要说明的是,在实际应用中,可以在分布式文件系统中设置一个信息管理模块,信息管理模块包括:磁盘信息表、磁盘条带信息表和文件信息表。
其中:
(1)磁盘信息表包括:磁盘ID和连接地址,每一个磁盘在磁盘信息表中存在唯一的ID。磁盘信息表中存储了分布式文件系统中所有服务器上所有的磁盘的集合。
(2)磁盘条带信息表包括:条带ID、磁盘ID序列、逻辑块号序列、使用标记和等待时间;
磁盘条带信息表是在多个磁盘的每一个磁盘中获取一个数据块,将每一个磁盘上的数据块,唯一组合成一个数据块组,得到一个条带。每一个条带都有一个唯一的ID,该ID也即条带ID。可以通过条带ID确定有哪些磁盘的哪些逻辑数据块进行的组合,也可以确定条带中的连接地址等信息。
磁盘ID序列:DID0、DID1、……、DIDn
逻辑块号序列:lbid0、lbid1、……、lbidn
其中:磁盘ID序列个数和逻辑块号序列个数完全相同,且序列索引是一一对应的。比如DID0和lbid0对应,DID1和lbid1对应。就是说lbidx是和DIDx对红的,lbidx是DIDx磁盘中逻辑块号对应。
一个条带包含了多个数据块,这几个条带之间的数据是相同的,假设这个条带是一个原始数据块和2个副本数据块组成。且每一个数据块的大小是4M。那么这个数据块的大小是4M。在一个条带中,条带数据大小也是4M。
等待时间是用来设置前面的使用标志的转换等待时间。若这个值是0,表示用户立即设置了该标志,若不是0,需要等待一定的时间,如10分钟才转换使用标志的状态为另外一个状态。
(3)文件信息表包括:带路径的文件名、文件ID、条带ID序列、文件大小、替换条带ID、替换索引和条带标志。
其中,文件信息表中包含的各个内容的具体含义,可参见上述对应部分,此处不再赘述。
步骤S102、获取一个新条带,并将所述新条带的状态标记为正在使用状态;
具体的,在图2所示实施例中获取到条带索引后,将条带索引和预存索引进行一致性判断,并确定条带索引是否不为初始值,当条带索引和预存索引不一致,且条带索引不为初始值时,获取一个新条带,并将新条带的状态标记为正在使用状态。
需要说明的是,若条带索引和预存索引一致,表明上次使用的条带在本次继续使用,此时,将条带状态修改为正在使用状态,并将用户的文本内容写入到该条带对应的数据块中。
反之,当条带索引与预存索引不一致,且条带索引不为初始值时,获取一个新条带。
其中,在条带信息表中获取一个使用标志位为0的条带,将该条带的状态标记为正在使用状态,使用标志位为0的条带也即新条带。
步骤S103、将原条带的内容复制到新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号;
需要说明的是,在将原条带的内容复制到所述新条带中之前,需要用新条带替换原条带,具体为:
用新条带ID替换条带索引指示的条带ID序列中对应索引的原条带ID,将原条带ID在条带信息表中的使用标志设置为即将删除标志;将等待时间设置为预设时间,比如10分钟;将新条带ID设置为0,替换索引设置为初始值,条带状态设置为初始值。
在将原条带的内容复制到新条带中时,具体为:在原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在磁盘上对应的逻辑块ID的数据内容;将该数据内容复制到新条带ID对应的条带中。若新条带有3个磁盘数据块,则从原条带中读取的M数据内容写入到新条带的3个磁盘对应的数据块中。
步骤S104、基于待修改文件局部在条带ID序列中的位置,在所述新条带对应的内部偏移位置写入目标文本内容;
其中,在将目标文本内容,从原条带备份到新条带后,将新条带的数据备份状态发送给信息管理模块,在信息管理模块中,将新条带ID写入到文件对应的替换条带ID中,替换索引为:待替换的原条带ID的索引;将新条带状态标记为正在使用状态;将新条带ID在条带信息表中标记为已经使用状态。
需要说明的是,一个条带包含多个数据块,该条带与每个数据库的存储大小相同,比如一个条带包含的每个数据块的存储大小为4M,那么,该条带的存储大小也为4M,。在目标文本内容写入到新条带对应的数据块中,方法为:
在步骤S205计算得到条带内部偏移位置后,假设用户给定的偏移地址为14M,一个条带包括的每个数据块的大小为4M,通过14M÷4M=3……2M,其中,14M为用户的偏移地址,4M为一个条带的存储大小,3为文件的条带ID序列中的第3个索引对应的条带ID,2M为从第3个索引对应的条带内部偏移地址为2M的位置开始写入目标文本内容,写入的目标文本内容的最大大小为:数据库大小-内部偏移地址。
假设用户需要写1M数据内容,那么从2M开始,写入1M内容,完全能够写入到条带对应的数据块中。由于条带包含有3个磁盘,那么需要将数据写到3个磁盘对应逻辑块的对应内部偏移位置,其中,每个数据块的偏移位置均是2M位置,在每个数据库中写入的数据大小为1M。
假设用户修改的内容已经写满新条带,则在信息管理模块中,将已经写满的新条带更改为完成状态。将文件信息表中文件的新条带ID替换条带索引指向条带ID序列中索引位置的原条带ID,原条带ID被替换后,将原条带ID标记为即将删除状态,并设置等待时间为一个预设等待时间,比如10分钟,在预设等待时间后,将原条带ID设置为初始化状态0,并文件对一个的条带ID设置为0,条带索引设置为初始值。条带状态恢复为初始值。
若当前用户的数据已经全部写入完毕,直接返回用户成功写入状态,若还存在数据没有写入到分布式存储系统中,将偏移地址设置为:偏移地址+已经写入到分布式存储系统中的数据字节数,并继续返回步骤,通过偏移位置÷条带数据大小计算条带索引,继续基于计算出的条带索引写入未写入的数据。
举例说明,假设第一次用户设置的偏移地址为14M,写入的文本数据为4M,通过14M÷4M=3……2M。在第3个索引对应的新条带中的2M位置开始写入了2M数据内容,当该新条带写满后,新偏移地址为14M+2M等于16M,还剩2M没有写入到分布式存储系统中,在这种情况下,需要继续下一轮的数据写入,直至写完所有的数据。
步骤S105、将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入目标文本内容的新条带标记为已使用状态。
其中,当目标文本内容填写完成后,也即当目标文本内容修改完成后,若存在替换条带ID不为空,则在步骤S105之后,还可以包括:
1、用户确认文件修改完毕。
2、在接收到用户发送的文件具备替换请求后,向信息管理模块发出请求,指示文件更新完毕。
3、信息管理模块针对文件替换索引进行判断,若替换索引无效,则停止文件具备修改流程;若替换索引有效,则通过替换索引在条带ID序列中定位原条带ID,将替换条带ID的条带ID替换原条带ID。将条带信息表中原条带ID的使用状态修改为即将删除状态,将超时时间设置为预设时间段,比如10分钟。将文件信息表中的替换ID设置为0,将替换索引设置为初始状态,将条带状态恢复成初始状态。
4、信息管理模块向数据接入模块和用户模块返回文件局部修改成功。
需要特别说明的是,正常情况下,用户先读取文件中条带ID序列中的第0个条带中的内容,再依次读取第1个条带中的内容,第2个条带中的内容等等。
当采用了本发明中的文件局部修改方法后,就产生了新的数据读取流程,具体如下:
为方便描述,本发明在分布式系统中设置了四个模块,分别为:信息管理模块、数据接入模块、磁盘管理模块和用户模块。
其中,信息管理模块用于管理文件、磁盘信息表以及磁盘条带信息,具体可参见上述对信息管理模块的说明。
数据接入模块用于管理用户的输入和输出,以及与磁盘、信息管理服务器的交互控制。
磁盘管理模块用于管理所有的磁盘服务器,此处的磁盘实际指的是物理设备磁盘驱动器。
数据读取流程如下:
1、用户请求模块请求读取待修改文件;
2、数据接入模块计算待修改文件的偏移量,通过文件带偏移量÷条带数据大小得出条带序列中的条带索引。
3、通过条带索引,向信息管理模块获取待修改文件对应的条带索引对应的条带ID,以及该条带ID对应的磁盘链接地址序列和逻辑快序列。若在对应的条带索引所对应的条带ID没有替换或在替换前,得到原条带ID以及原条带ID对应的磁盘链接地址序列、逻辑快号序列;若在对应的条带索引所对应的条带ID已经替换称新条带ID,则获取新条带ID以及新条带ID对应的磁盘链接地址序列和逻辑块序列。将已经获取到的条带ID的相关信息返回给数据接入模块。
4、数据接入模块根据条带对应的磁盘链接地址序列和逻辑块号序列,随机选择一个能够正常链接的磁盘进行数据读取,并将读取的数据返回给用户模块。
综上可知,本发明公开的文件局部修改方法,基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,获取一个新条带,并将新条带的状态标记为正在使用状态,将原条带的内容复制到新条带中,同时将新条带存储到文件的预设位置,并将替换索引设置为原条带在条带ID序列中的序号,在新条带与待修改文件局部在条带ID序列中的位置对应的内部偏移位置写入目标文本内容,当目标文本内容填写完成后,将写入的目标文本内容的新条带替换条带ID序列中对应的原条带,并将原条带标记为初始状态,将写入目标文本内容的新条带标记为已使用状态,从而完成了文件局部修改。本发明实现了文件局部修改功能,且不会导致不同应用在文件读写上增加额外的耦合性,当文件局部修改更新后,无需改变任何条件,就可以从修改后的文件中服务所需的文件内容,大大提高了文件操作的方便性。
需要特别说明的是,一般情况,只需要在文件内部进行修改,不会增大文件的内容,也即,只需在现有文件内容的基础上进行内容覆盖即可。比如,文件修改前的存储大小为64M,文件修改后的存储大小也为64M。在文件修改部分,不能在文件中插入扩展内容,也不能删除文件中多余的文件,如需要在文件中插入扩展内容,会导致整个文件在存储中移动,这个所有存储系统中都无法实现;若删除文件中多余的文件内容,后续的文本会向前移动,所有的存储系统中也无法实现。因此,只能在现有文件上修改对应字节的内容。但是,有一种情况除外,在文件尾部写入扩展内容被认为是有效的。
与上述方法实施例相对应,本发明还公开了一种文件局部修改系统。
参见图3,本发明一实施例公开的一种文件局部修改系统的结构示意图,该系统包括:
确定单元301,用于基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
其中,确定单元具体包括:
接收子单元,用于接收用户发送的文件局部替换请求,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小;
查询子单元,用于查询所述带路径的文件名在预设的文件信息表中是否存在;
输出子单元,用于在所述查询子单元查询到所述带路径的文件名在预设的所述文件信息表中存在时,输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
判断子单元,用于判断所述文件偏移位置是否在所述被替换文件大小的范围内;
求取子单元,用于在所述判断子单元判断为是的情况下,基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
获取单元302,用于获取一个新条带,并将所述新条带的状态标记为正在使用状态;
其中,获取单元302具体用于:
当所述条带索引和预存索引不一致,且所述条带索引不为初始值时,获取一个所述新条带,并将所述新条带的状态标记为正在使用状态。
复制单元303,用于将原条带的内容复制到所述新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号;
其中,复制单元303具体用于:
在所述原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在所述磁盘上对应的逻辑块ID的数据内容,将所述数据内容复制到新条带ID对应的条带中。
内容写入单元304,用于基于所述位置,在所述新条带对应的内部偏移位置写入目标文本内容;
替换单元305,用于将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入目标文本内容的新条带标记为已使用状态。
需要特别说明的是,系统实施例中,各组成部分的具体工作原理,请参见方法实施例对应部分,此处不再赘述。
综上可知,本发明公开的文件局部修改系统,基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,获取一个新条带,并将新条带的状态标记为正在使用状态,将原条带的内容复制到新条带中,同时将新条带存储到文件的预设位置,并将替换索引设置为原条带在条带ID序列中的序号,在新条带与待修改文件局部在条带ID序列中的位置对应的内部偏移位置写入目标文本内容,当目标文本内容填写完成后,将写入的目标文本内容的新条带替换条带ID序列中对应的原条带,并将原条带标记为初始状态,将写入目标文本内容的新条带标记为已使用状态,从而完成了文件局部修改。本发明实现了文件局部修改功能,且不会导致不同应用在文件读写上增加额外的耦合性,当文件局部修改更新后,无需改变任何条件,就可以从修改后的文件中服务所需的文件内容,大大提高了文件操作的方便性。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种文件局部修改方法,其特征在于,包括:
基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
获取一个新条带,并将所述新条带的状态标记为正在使用状态;
将原条带的内容复制到所述新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号,其中,所述替换索引存在于预设的文件信息表中,表示所述条带ID序列中指定的索引位置;
基于所述位置,在所述新条带对应的内部偏移位置写入目标文本内容;
将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入所述目标文本内容的新条带标记为已使用状态。
2.根据权利要求1所述的文件局部修改方法,其特征在于,所述基于文件偏移位置确定待修改文件局部在条带ID序列中的位置,具体包括:
接收用户发送的文件局部替换请求,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小;
查询所述带路径的文件名在所述文件信息表中是否存在;
如果是,则输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
判断所述文件偏移位置是否在所述被替换文件大小的范围内;
如果是,则基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
3.根据权利要求2所述的文件局部修改方法,其特征在于,所述文件信息表包括:带路径的文件名、文件ID、条带ID序列、文件大小、替换条带ID、替换索引和条带标志。
4.根据权利要求2所述的文件局部修改方法,其特征在于,所述则基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置,具体包括:
用所述文件偏移位置除以所述条带数据大小,得到的整数为所述条带索引,得到的余数为所述条带内部偏移位置。
5.根据权利要求2所述的文件局部修改方法,其特征在于,所述获取一个新条带,并将所述新条带的状态标记为正在使用状态,具体包括:
当所述条带索引和预存索引不一致,且所述条带索引不为初始值时,获取一个所述新条带,并将所述新条带的状态标记为正在使用状态。
6.根据权利要求1所述的文件局部修改方法,其特征在于,所述将原条带的内容复制到所述新条带中,具体包括:
在所述原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在所述磁盘上对应的逻辑块ID的数据内容,将所述数据内容复制到新条带ID对应的条带中。
7.一种文件局部修改系统,其特征在于,包括:
确定单元,用于基于文件偏移位置确定待修改文件局部在条带ID序列中的位置;
获取单元,用于获取一个新条带,并将所述新条带的状态标记为正在使用状态;
复制单元,用于将原条带的内容复制到所述新条带中,同时将所述新条带存储到文件的预设位置,并将替换索引设置为所述原条带在所述条带ID序列中的序号,其中,所述替换索引存在于预设的文件信息表中,表示所述条带ID序列中指定的索引位置;
内容写入单元,用于基于所述位置,在所述新条带对应的内部偏移位置写入目标文本内容;
替换单元,用于将所述目标文本内容填写完成后,将写入所述目标文本内容的新条带替换所述条带ID序列中对应的所述原条带,并将所述原条带标记为初始状态,将写入所述目标文本内容的新条带标记为已使用状态。
8.根据权利要求7所述的文件局部修改系统,其特征在于,所述确定单元具体包括:
接收子单元,用于接收用户发送的文件局部替换请求,所述文件局部替换请求中包括:带路径的文件名、文件偏移位置、被替换文件内容和被替换文件大小;
查询子单元,用于查询所述带路径的文件名在所述文件信息表中是否存在;
输出子单元,用于在所述查询子单元查询到所述带路径的文件名在预设的所述文件信息表中存在时,输出所述带路径的文件名在所述文件信息表中对应的文件ID和文件大小;
判断子单元,用于判断所述文件偏移位置是否在所述被替换文件大小的范围内;
求取子单元,用于在所述判断子单元判断为是的情况下,基于所述文件偏移位置和条带数据大小,得到条带索引和条带内部偏移位置。
9.根据权利要求8所述的文件局部修改系统,其特征在于,所述获取单元具体用于:
当所述条带索引和预存索引不一致,且所述条带索引不为初始值时,获取一个所述新条带,并将所述新条带的状态标记为正在使用状态。
10.根据权利要求7所述的文件局部修改系统,其特征在于,所述复制单元,具体用于:
在所述原条带中获取一个磁盘地址进行链接,在链接成功后,读取磁盘上原条带ID在所述磁盘上对应的逻辑块ID的数据内容,将所述数据内容复制到新条带ID对应的条带中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040127.9A CN111444138B (zh) | 2019-01-16 | 2019-01-16 | 一种文件局部修改方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040127.9A CN111444138B (zh) | 2019-01-16 | 2019-01-16 | 一种文件局部修改方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444138A CN111444138A (zh) | 2020-07-24 |
CN111444138B true CN111444138B (zh) | 2024-03-15 |
Family
ID=71626628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910040127.9A Active CN111444138B (zh) | 2019-01-16 | 2019-01-16 | 一种文件局部修改方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444138B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104092780A (zh) * | 2014-07-29 | 2014-10-08 | 中国联合网络通信集团有限公司 | 基于文件分块的文件修改方法、单文件同步方法及装置 |
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对系统中数据的存储方法和相关装置 |
CN107430546A (zh) * | 2015-06-26 | 2017-12-01 | 华为技术有限公司 | 一种文件更新方法及存储设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070644A1 (en) * | 2014-09-10 | 2016-03-10 | Netapp, Inc. | Offset range operation striping to improve concurrency of execution and reduce contention among resources |
KR102423880B1 (ko) * | 2015-10-06 | 2022-07-21 | 삼성전자주식회사 | 인코더의 작동방법과 상기 인코더를 포함하는 시스템 온 칩의 작동 방법 |
EP3185561A1 (en) * | 2015-12-23 | 2017-06-28 | THOMSON Licensing | Methods and devices for encoding and decoding frames with a high dynamic range, and corresponding signal and computer program |
US10235241B2 (en) * | 2017-03-15 | 2019-03-19 | International Business Machines Corporation | Method for partial updating data content in a distributed storage network |
-
2019
- 2019-01-16 CN CN201910040127.9A patent/CN111444138B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104142958A (zh) * | 2013-05-10 | 2014-11-12 | 华为技术有限公司 | 一种键值对系统中数据的存储方法和相关装置 |
CN104092780A (zh) * | 2014-07-29 | 2014-10-08 | 中国联合网络通信集团有限公司 | 基于文件分块的文件修改方法、单文件同步方法及装置 |
CN107430546A (zh) * | 2015-06-26 | 2017-12-01 | 华为技术有限公司 | 一种文件更新方法及存储设备 |
Non-Patent Citations (2)
Title |
---|
Kafka:a distributed messaging system for log processing;Jay Kreps等;《Proceedings of the NetDB》;20110112;1-7 * |
基于AVS2编码端的码流分析仪设计;李赛;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170615;I136-163 * |
Also Published As
Publication number | Publication date |
---|---|
CN111444138A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11799959B2 (en) | Data processing method, apparatus, and system | |
CN110321301B (zh) | 一种数据处理的方法及装置 | |
US8819362B1 (en) | Managing replication and reservations | |
JP5081631B2 (ja) | データの削除を管理するための方法および装置 | |
CN101807418B (zh) | 驱动装置 | |
KR101767710B1 (ko) | 폐기가능 파일들의 카드-기반 관리 | |
US20060206535A1 (en) | File access method in storage-device system, and programs for the file access | |
CN105612518A (zh) | 用于自主存储器搜索的方法及系统 | |
JP2012089094A5 (zh) | ||
WO2021249201A1 (zh) | 一种基于叠瓦式磁记录盘的监控数据存储方法及装置 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
JP2002149454A (ja) | 論理ディスク上でのトランザクション・サポート | |
CN113722275A (zh) | 对象存储空间管理方法、装置、服务器及存储介质 | |
CN111143285A (zh) | 一种小文件存储文件系统以及小文件处理方法 | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
CN111142780A (zh) | 一种大文件存储文件系统以及大文件处理方法 | |
CN115617264A (zh) | 分布式存储方法及装置 | |
CN111444138B (zh) | 一种文件局部修改方法及系统 | |
CN111143116A (zh) | 一种磁盘坏块处理的方法及装置 | |
KR20190061549A (ko) | 파일 시스템 및 상기 파일 시스템을 이용한 파일 저장 방법 | |
CN114327942A (zh) | 一种共享内存管理方法和缓存服务组件 | |
CN110263012B (zh) | 一种磁盘缓存方法及系统 | |
CN114356232B (zh) | 数据读写方法和装置 | |
CN111435342A (zh) | 海报的更新方法、更新系统以及管理系统 | |
KR100465095B1 (ko) | 이중화 시스템에서 동적 스키마 변경을 위한 데이터 변환시스템 및 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |