一种双向并发执行的文件级可变长数据分块方法技术

技术编号:4092686 阅读:292 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供的是一种信息系统中双向并发执行的文件级可变长数据分块方法。本发明专利技术的关键在于对文件进行切块的过程中,该方法能够借助多核处理器的并发处理能力,用两个线程分别从文件的首尾出发,利用数据块边界只通过对数据内容进行计算来确定,分别从前往后和从后往前并发地扫描文件,并确定数据块的边界,进而切分数据块,直到由首尾出发的两个线程在文件中部相遇为止,从而显著提高了数据分块的速度。

【技术实现步骤摘要】

本专利技术涉及的是一种信息系统中文件级可变长数据分块方法。
技术介绍
随着信息化系统广泛应用,大型数据中心的数据存储设备的容量由于数据信息呈 指数级增长而快速趋于饱和。同时,由于以自然灾难、人为恶意灾难为代表的各种灾难性 事件频发,企事业单位正面临着业务量激增和信息备份间隔缩短双重压力,管理数据成本 (包括存储成本、空间成本、功耗成本等综合)显著增加,提高数据存储效率已经成为当前 数据备份研究的热点问题。研究同时发现,应用系统中的数据信息的冗余度很高,存在大量重复的文件或数 据块。为此,人们提出了重复数据删除技术,以消除分布在存储系统中的冗余信息,降低信 息存储成本。重复数据删除是一种数据缩减技术,旨在减少存储系统中实际使用的存储容量。 其核心思想是在存储系统中只保留不同内容的数据,当数据中心进行数据添加或更新时, 如果新数据和存储系统中已有数据内容相同,则不直接保存该新数据,而是在新数据位置 上保存指向已有数据块的指针。由于指针占用空间远远低于数据占用空间,因此,采用重复 数据删除技术可以有效地减少数据在实际存储系统中的存储容量。在应用重复数据删除技术进行数据删冗过程中,通常是以数据块作为查找相同数 据的基本单位,即首先将数据切分为若干的数据块,然后将数据块和存储系统中数据块进 行比较,并以此确定可以删除的冗余数据块。显然,数据切分算法的优劣将直接关系到重复 数据删除技术效率。为描述方便,首先给出如下定义1、哈希值,哈希算法哈希算法将任意长度的二进制值映射为固定长度的较小二 进制值,这个小的二进制值称为哈希值。2、滑动窗口 即一个可滑动、覆盖固定大小数据的窗口。每次滑动,便将窗口的覆 盖范围朝指定方向移动一个字节。3、指纹即对数据进行校验所得到的二进制值。4、查重将数据块的哈希值发送到备份服务器端,与已存储数据块的哈希值作比 较,若存在相等的哈希值,则该数据块为重复数据;否则,即为新数据。当前,文件级数据切分方法主要有三种1、文件块方法,即数据块以文件为单位,通过对文件计算哈希值来判断该文件是 否冗余。该方法的优点是算法简单、计算速度快,缺点是数据块粒度较大。2、固定分块方法,即将文件切分成固定长度的数据块,通过计算每块数据块的哈 希值来判断其是否冗余。该方法的优点是数据块粒度较小、处理速度快,缺点是当文件发生 插入或删除变化时冗余处理效率较低。3、可变分块方法,即从文件头开始扫描,计算固定字节大小滑动窗口中数据的指纹,当指纹值满足一定条件时,便认为这是一个数据块的边界,否则将滑动窗口向文件尾滑 动一个字节,继续计算指纹值并进行判断;相邻的两个边界则确定了一个数据块,再计算该 数据块的哈希值来判断其是否冗余。该方法的优点是对于文件发生插入或删除变化时处理 高效,缺点是算法复杂、计算量高、处理速度慢。在上述三种方法中,可变分块方法处理由于效率较高而得到了广泛应用。然而,其 存在处理速度慢的问题。从可变分块方法处理流程来看,其是一种单向的数据切分方法,即 数据切分方法从头扫描文件内容以确定数据块的边界,当获得两个相邻边界时,便得到了 一个数据块;接着,继续扫描文件内容、获取数据块,直到文件尾。为了提高其执行速度,本专利技术提供了一种双向并发执行的数据切分方法,即方法 的执行借助多核处理器的并发处理能力,用两个线程分别从文件的首尾出发,利用数据块 边界只由数据内容所确定,在文件中位置固定的特性,同时扫描文件,确定数据块的边界, 进而切分数据块,直到由首尾出发的两个线程在文件中部相遇为止,从而显著提高了数据 切分的速度。
技术实现思路
本专利技术的目的在于一种信息系统中改进的文件级可变长数据分块方法。该方法能 够根据文件内容,通过从文件两端同时切分的方法快速对文件进行数据分块,从而大大提 高数据分块的速度、改进重复数据删除的效能。本专利技术的目的是这样实现的设待处理的文件集包含了 m个文件(F1, F2, ... , Fffl);方法中使用的两个线程为 (TpT2);两个滑动窗口分别为(Wl、W2),其大小为W;对两个滑动窗口中数据计算得到指纹 值分别记录为参数(I^r2);模数(判断滑动窗口是否确定了数据块边界时所用到的取模 整数)为E ;两个磁盘数据缓存(缓存从磁盘中读取的文件内容,加快处理速度)名分别为 (bufi; buf2),其大小均为N(N >> W),两个滑动指针(用于判断是否已处理完整个文件的 数据)分别为(Sl、S2)。对一个文件F做数据切块时,输入待处理文件集(F1, F2, ... , Fm),及各文件大小 (f1 f2,. . .,fm),滑动窗口大小W,模数E,两个相对独立的缓存Oxif1,buf2)大小均为N,开 启两个线程1\、T2,分别从文件的首尾并发向文件的中间读取数据到各自的缓存中,并利用 滑动窗口以每次一个字节的速度,在数据缓存中往相应方向滑动,并计算滑动窗口中数据 的指纹值。当该指纹值对模数求模为0时,该窗口便确定了是一个数据块的边界。而两个 相邻的数据块边界即确定了 一个数据块。其具体方法步骤为(1)输入待处理的文件集(F1, F2, ... , Fm),各文件大小分别为(fl,f2, . . . , fj ;(2)输入滑动窗口大小W,模数E,两个相对独立的缓存Oxifpbuf2)大小均为N ;(3) Vi E [1,皿],若文件&的大小& <滑动窗口大小W,则直接将其作为一个数据 块,用以查重,并将文件Fi从待处理的文件集中删除,执行步骤11 ;否则,就设置滑动指针S1为0、S2为fi;执行步骤4 ;(4)若文件Fi的大小Iii <缓存的大小N,则线程T1, T2分别将&字节数据读到缓 存Ixifpbuf2中,执行步骤6 ;否则,执行步骤5;(5)线程T1将由文件头部开始的N字节数据读到缓存Uif1,线程T2将以文件尾部 为结尾的N字节数据读到缓存buf2 ;(6)在Uif1的头部设置滑动窗口 W1,在buf2的末尾设置滑动窗口 W2 ;(7)分别计算滑动窗口 Wl、W2所包含数据的指纹值r1、r2,若指纹值rl对模数E求 模为0,则滑动窗口 W1确定了一个数据块的边界,则将前一边界末尾后接的第一个字节到此 边界末尾的数据作为一个数据块;若是指纹值r2对模数E求模为0,则将此边界术尾后接的 第一个字节到前一边界尾部的数据作为一个数据块;(8)若滑动指针S1等于S2,则将文件Fi中部还没有切块数据作为一个数据块,并 将文件Fi从待处理的文件集中删除,执行步骤11 ;否则执行步骤9 ;(9)若此时滑动窗口 W1到达缓存Uif1的尾部,则将尚未切分成块的数据移到缓存 Uif1的头部,然后线程T1从磁盘读取数据至其后,直到将缓存Uif1填满;若滑动窗口 W2到 达缓存buf2的头部,则将尚未切分成块的数据移到缓存buf2的尾部,线程T2从磁盘读取数 据至其前面,直到将缓存buf2填满,执行步骤6 ;(10)滑动窗口 W1向缓存Uif1的尾部滑动1字节,滑动指针S1自增1 ;滑动窗口 W2 向缓存buf2的头部滑动1字节,滑动指针S2自减1 ;执行步骤7 ;(11)如文件集为空,则处理过程结束;否则,执行步骤3。本专利技术的关键在本文档来自技高网
...

【技术保护点】
一种信息系统中双向并发执行的文件级可变长数据分块方法,其特征在于:设待处理的文件集包含了m个文件(F↓[1],F↓[2],...,F↓[m]);方法中使用的两个线程为(T↓[1]、T↓[2]);两个滑动窗口分别为(w↓[1]、w↓[2]),其大小为W;对两个滑动窗口中数据计算得到指纹值分别记录为参数(r↓[1]、r↓[2]);模数(判断滑动窗口是否确定了数据块边界时所用到的取模整数)为E;两个磁盘数据缓存(缓存从磁盘中读取的文件内容,加快处理速度)名分别为(buf↓[1],buf↓[2]),其大小均为N(N>>W),两个滑动指针(用于判断是否已处理完整个文件的数据)分别为(s↓[1]、s↓[2]);对一个文件F做数据切块时,输入待处理文件集(F↓[1],F↓[2],...,F↓[m]),及各文件大小(f↓[1],f↓[2],...,f↓[m]),滑动窗口大小W,模数E,两个相对独立的缓存(buf↓[1],buf↓[2])大小均为N,开启两个线程T↓[1]、T↓[2],分别从文件的首尾并发向文件的中间读取数据到各自的缓存中,并利用滑动窗口以每次一字节的速度,在数据缓存中往相应方向滑动,并计算滑动窗口中数据的指纹值。当该指纹值对模数求模为0时,该窗口便确定了是一个数据块的边界。而两个相邻的数据块边界即确定了一个数据块。...

【技术特征摘要】
一种信息系统中双向并发执行的文件级可变长数据分块方法,其特征在于设待处理的文件集包含了m个文件(F1,F2,...,Fm);方法中使用的两个线程为(T1、T2);两个滑动窗口分别为(w1、w2),其大小为W;对两个滑动窗口中数据计算得到指纹值分别记录为参数(r1、r2);模数(判断滑动窗口是否确定了数据块边界时所用到的取模整数)为E;两个磁盘数据缓存(缓存从磁盘中读取的文件内容,加快处理速度)名分别为(buf1,buf2),其大小均为N(N>>W),两个滑动指针(用于判断是否已处理完整个文件的数据)分别为(s1、s2);对一个文件F做数据切块时,输入待处理文件集(F1,F2,...,Fm),及各文件大小(f1,f2,...,fm),滑动窗口大小W,模数E,两个相对独立的缓存(buf1,buf2)大小均为N,开启两个线程T1、T2,分别从文件的首尾并发向文件的中间读取数据到各自的缓存中,并利用滑动窗口以每次一字节的速度,在数据缓存中往相应方向滑动,并计算滑动窗口中数据的指纹值。当该指纹值对模数求模为0时,该窗口便确定了是一个数据块的边界。而两个相邻的数据块边界即确定了一个数据块。2.权利要求1所述的信息系统中双向并发执行的文件级可变长数据分块方法,其具体 方法步骤为(1)输入待处理的文件集(F1,F2, ...,Fm),各文件大小分别为(f1; f2,. . .,fffl);(2)输入滑动窗口大小W,模数E,两个相对独立的缓存Oxifpbuf2)大小均为N;(3)Vi e [l,m],若文件Fi的大小& <滑动窗口大小W,则直接将其作为一个数据块,用 以查重,并将文件Fi从待处理...

【专利技术属性】
技术研发人员:姚文斌叶鹏迪刘建毅王枞伍淳华肖达
申请(专利权)人:北京邮电大学
类型:发明
国别省市:11[中国|北京]

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

1