一种基于重组文件元数据实现快速文件切割和合并的方法技术

技术编号:10489632 阅读:290 留言:0更新日期:2014-10-03 17:44
本发明专利技术公开了一种基于重组文件元数据实现快速文件切割和合并的方法,其实施步骤分为:扩展原有的POSIX文件操作接口,新增文件切割和合并接口;这两个扩展接口通过IOCTL的方式与操作系统内核进行交互;SplitFile接口的工作流程以及MergeFile接口的工作流程。本发明专利技术给需要进行文件切割、合并的应用带来方便;消除了文件切割和合并过程中的拷贝开销,这对分布式文件系统来说非常有效,消除了大量的I/O操作;大幅度提升了文件切割和合并这类应用的性能。

【技术实现步骤摘要】

本专利技术涉及一种文件切割和合并的方法,尤其涉及,属于分布式文件系统和网络存储系统

技术介绍
在传统的分布式文件系统或者本地文件系统中,对于文件的切割和合并都是通过数据拷贝来实现的。现有的一些文件合并切割软件本质上都是通过拷贝数据来实现的,唯一不同的地方就是采用了多线程技术,但是这并没有从本质上解决合并切割效率低下的问题。 比如当用户只需要一个文件中的部分内容时,实际上需要进行以下的文件系统操作: 1、打开源文件; 2、创建一个新文件; 3、读取源文件中需要的内容,写入到新文件中; 4、关闭源文件和新文件; 再例如当用户需要将几个文件合并成一个文件时,需要进行以下的文件系统操作: 1、打开第一个源文件; 2、创建一个新文件; 3、读取第一个源文件中的内容,写入到新文件中; 4、关闭第一个源文件,打开第二个源文件; 5、读取第二个源文件的内容,写入到新文件中; 6、依次打开第N个源文件,读取内容,写入到新文件中; 7、最后关闭新文件; 其实面对上述复杂的操作过程,一方面带来很大的I/O开销(I/O开销是指:输入输出流量百分比),另一方面对整个这种类型的应用产生了巨大开销,从而使得该过程成了这个系统中的瓶颈点。 从文件系统的底层实现看,无论是文件的切割还是合并,只需要重新组织一下新文件的元数据信息,即新文件的数据块分部信息即可,因为真正的数据信息已经存在于存储系统中了,完全可以避免掉大量的I/o开销。为此,我们在分布式文件系统中提出一种新的实现文件切割和合并方法,从而革命性的的提高这类应用的性能。
技术实现思路
为了解决上述技术所存在的不足之处,本专利技术提供了。 为了解决以上技术问题,本专利技术采用的技术方案是:,其实施步骤如下: 1、扩展原有的POSIX文件操作接口,新增文件切割和合并接口 SplitFiIe:char*newFiIeName, char*srcFiIeName, bool changeSrcFile, uint64offset,uint641ength ; 参数说明:newFileName:切割后生成新文件的路径 srcFileName:被切割文件的路径 changeSrcFile:是否修改被切割文件的大小 offset:被切割文件的起始位置 length:被切割文件的切割长度 功能说明:将srcFileName文件从位置offset开始,长度为length的部分切割出来生成一个新的文件newFileName,切割后新生成的文件大小为length ;MergeFile:char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…; 参数说明:newFileName:合并后生成新文件的路径 deleteSubFile:是否删除被合并文件 subFilel:被合并文件 I SubFile2:被合并文件 2 subFile3:被合并文件 3 功能说明:将subFilel、subFile2、subFile3等按照先后顺序合并成新文件newFileName,合并后新文件的大小是这些文件的总和; I1、这两个扩展接口通过1CTL的方式与操作系统内核进行交互; II1、SplitFile接口的工作流程如下: a、应用程序调用SplitFile接口,操作系统打开需要切割的源文件; b、打开成功后,通过1CTL的方式将新文件名newFileName,以及offset、length参数传到操作系统内核文件系统层; C、文件系统层根据参数,生成一个新的空文件,然后根据源文件的数据块映射信息中中需要切割的部分的块映射信息生成新文件的块映射信息,根据参数如果是直接改变源文件的内容,则修改源文件的块映射信息,如果是不改变源文件的内容,则将OSD中的块映射信息引用计数加I ; d、对于引用计数当修改这类引用计数大于I的数据块时采用CopyOnWrite的方式,生成新的OSD数据块; e、修改源文件和新文件属性中的大小,给应用返回成功; IV、MergeFile接口的工作流程如下: a、应用程序调用MergeFile接口,先向文件系统中创建一个NewFileName的空文件; b、创建成功后,通过1CTL的方式,将需要合并的文件参数发送到操作系统内核文件系统层; C、文件系统层根据需要合并的文件信息,依次获取它们的数据块分布信息,将这些分部信息写入到新文件的数据快分布信息中,如果deleteSubFile为TRUE,则删除所有的被合并文件的元数据信息;如果deleteSubFile为FALSE,则修改所有的相关OSD的数据块映射信息,使得引用计数加I ; d、设置新文件的大小,给应用返回成功。 本专利技术的有益效果为: 1、给需要进行文件切割、合并的应用带来方便; 2、消除了文件切割和合并过程中的拷贝开销,这对分布式文件系统来说非常有效,消除了大量的I/o操作; 3、大幅度提升了文件切割和合并这类应用的性能。 【附图说明】 图1为本专利技术的文件切割SplitFile原理框图。 图2为本专利技术的文件合并原理框图。 【具体实施方式】 下面结合附图和【具体实施方式】对本专利技术作进一步详细的说明。 如图1、图2所示,本专利技术提出了一种新的文件切割和合并的实现方法,用来提高分布式文件系统对这类应用支持的效率,已达到不需要拷贝内容的方式实现文件的切割和合并,本方法是基于以下几点来实现的,其实施步骤如下: 1、扩展原有的POSIX文件操作接口,新增文件切割和合并接口SplitFile(char*newFiIeName, char*srcFiIeName, bool changeSrcFile, uint64offset,uint641ength); 参数说明:newFileName:切割后生成新文件的路径 srcFileName:被切割文件的路径 changeSrcFile:是否修改被切割文件的大小 offset:被切割文件的起始位置 length:被切割文件的切割长度 功能说明:将srcFileName文件从位置offset开始,长度为length的部分切割出来生成一个新的文件newFileName,切割后新生成的文件大小为length。MergeFile(char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…); 参数说明:newFileName:合并后生成新文件的路径 deleteSubFile:是否删除被合并文件 subFilel:被合并文件 I subFile2:被合并文件 2 SubFile3:被合并文件 3 功能说明:将subFilel、subFile2、subFile3等按照先后顺序合并成新文件newFileName,合并后新文件的大小是这些文件的总和。 2、这两个扩展接口通过1CTL的方式与操作系统内核进行交互。 3、SplitFi本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201410332471.html" title="一种基于重组文件元数据实现快速文件切割和合并的方法原文来自X技术">基于重组文件元数据实现快速文件切割和合并的方法</a>

【技术保护点】
一种基于重组文件元数据实现快速文件切割和合并的方法,其特征在于:其实施步骤如下:I、扩展原有的POSIX文件操作接口,新增文件切割和合并接口SplitFile:char*newFileName,char*srcFileName,bool changeSrcFile,uint64offset,uint64length;参数说明:newFileName:切割后生成新文件的路径         srcFileName:被切割文件的路径         changeSrcFile:是否修改被切割文件的大小         offset:被切割文件的起始位置         length:被切割文件的切割长度功能说明:将srcFileName文件从位置offset开始,长度为length的部分切割出来生成一个新的文件newFileName,切割后新生成的文件大小为length;MergeFile:char*newFileName,bool deleteSubFile,char*subFilel,char*subFile2,char*subFile3,…;参数说明:newFileName:合并后生成新文件的路径          deleteSubFile:是否删除被合并文件          subFile1:被合并文件1          subFile2:被合并文件2          subFile3:被合并文件3功能说明:将subFile1、subFile2、subFile3等按照先后顺序合并成新文件newFileName,合并后新文件的大小是这些文件的总和;II、这两个扩展接口通过IOCTL的方式与操作系统内核进行交互;III、SplitFile接口的工作流程如下:a、应用程序调用SplitFile接口,操作系统打开需要切割的源文件;b、打开成功后,通过IOCTL的方式将新文件名newFileName,以及offset、length参数传到操作系统内核文件系统层;c、文件系统层根据参数,生成一个新的空文件,然后根据源文件的数据块映射信息中中需要切割的部分的块映射信息生成新文件的块映射信息,根据参数如果是直接改变源文件的内容,则修改源文件的块映射信息,如果是不改变源文件的内容,则将OSD中的块映射信息引用计数加1;d、对于引用计数当修改这类引用计数大于1的数据块时采用CopyOnWrite的方式,生成新的OSD数据块;e、修改源文件和新文件属性中的大小,给应用返回成功;IV、MergeFile接口的工作流程如下:a、应用程序调用MergeFile接口,先向文件系统中创建一个NewFileName的空文件;b、创建成功后,通过IOCTL的方式,将需要合并的文件参数发送到操作系统内核文件系统层;c、文件系统层根据需要合并的文件信息,依次获取它们的数据块分布信息,将这些分部信息写入到新文件的数据快分布信息中,如果deleteSubFile为TRUE,则删除所有的被合并文件的元数据信息;如果deleteSubFile为FALSE,则修改所有的相关OSD的数据块映射信息,使得引用计数加1;d、设置新文件的大小,给应用返回成功。...

【技术特征摘要】
1.一种基于重组文件元数据实现快速文件切割和合并的方法,其特征在于:其实施步骤如下: 1、扩展原有的POSix文件操作接口,新增文件切割和合并接口SplitFile:char*newFiIeName, char*srcFiIeName, bool changeSrcFiIe, uint64offset,uint641ength ; 参数说明:newFileName:切割后生成新文件的路径 srcFi IeName:被切割文件的路径 changeSrcFile:是否修改被切割文件的大小 offset:被切割文件的起始位置 length:被切割文件的切割长度 功能说明:将srcFileName文件从位置offset开始,长度为length的部分切割出来生成一个新的文件newFileName,切割后新生成的文件大小为length ;MergeFile:char*newFiIeName, bool deleteSubFile, char*subFilel, char*subFile2,char*subFile3,…; 参数说明:newFileName:合并后生成新文件的路径 deleteSubFile:是否删除被合并文件 subFilel:被合并文件I subFi Ie2:被合并文件2 subFi Ie3:被合并文件3 功能说明:将subFilel、subFile2、subFile3等按照先后顺序合并成新文件newFileName,合并后 新文件的大小是这些文件的总和; I1、这两个扩...

【专利技术属性】
技术研发人员:丁亚军
申请(专利权)人:北京龙存科技有限责任公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1