CN101968796B - 一种双向并发执行的文件级可变长数据分块方法 - Google Patents
一种双向并发执行的文件级可变长数据分块方法 Download PDFInfo
- Publication number
- CN101968796B CN101968796B CN2010102762336A CN201010276233A CN101968796B CN 101968796 B CN101968796 B CN 101968796B CN 2010102762336 A CN2010102762336 A CN 2010102762336A CN 201010276233 A CN201010276233 A CN 201010276233A CN 101968796 B CN101968796 B CN 101968796B
- Authority
- CN
- China
- Prior art keywords
- data
- file
- buf
- buffer memory
- moving window
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供的是一种信息系统中双向并发执行的文件级可变长数据分块方法。本发明的关键在于对文件进行切块的过程中,该方法能够借助多核处理器的并发处理能力,用两个线程分别从文件的首尾出发,利用数据块边界只通过对数据内容进行计算来确定,分别从前往后和从后往前并发地扫描文件,并确定数据块的边界,进而切分数据块,直到由首尾出发的两个线程在文件中部相遇为止,从而显著提高了数据分块的速度。
Description
(一)技术领域
本发明涉及的是一种信息系统中文件级可变长数据分块方法。
(二)背景技术
随着信息化系统广泛应用,大型数据中心的数据存储设备的容量由于数据信息呈指数级增长而快速趋于饱和。同时,由于以自然灾难、人为恶意灾难为代表的各种灾难性事件频发,企事业单位正面临着业务量激增和信息备份间隔缩短双重压力,管理数据成本(包括存储成本、空间成本、功耗成本等综合)显著增加,提高数据存储效率已经成为当前数据备份研究的热点问题。
研究同时发现,应用系统中的数据信息的冗余度很高,存在大量重复的文件或数据块。为此,人们提出了重复数据删除技术,以消除分布在存储系统中的冗余信息,降低信息存储成本。
重复数据删除是一种数据缩减技术,旨在减少存储系统中实际使用的存储容量。其核心思想是在存储系统中只保留不同内容的数据,当数据中心进行数据添加或更新时,如果新数据和存储系统中已有数据内容相同,则不直接保存该新数据,而是在新数据位置上保存指向已有数据块的指针。由于指针占用空间远远低于数据占用空间,因此,采用重复数据删除技术可以有效地减少数据在实际存储系统中的存储容量。
在应用重复数据删除技术进行数据删冗过程中,通常是以数据块作为查找相同数据的基本单位,即首先将数据切分为若干的数据块,然后将数据块和存储系统中数据块进行比较,并以此确定可以删除的冗余数据块。显然,数据切分算法的优劣将直接关系到重复数据删除技术效率。
为描述方便,首先给出如下定义:
1、哈希值,哈希算法:哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。
2、滑动窗口:即一个可滑动、覆盖固定大小数据的窗口。每次滑动,便将窗口的覆盖范围朝指定方向移动一个字节。
3、指纹:即对数据进行校验所得到的二进制值。
4、查重:将数据块的哈希值发送到备份服务器端,与已存储数据块的哈希值作比较,若存在相等的哈希值,则该数据块为重复数据;否则,即为新数据。
当前,文件级数据切分方法主要有三种:
1、文件块方法,即数据块以文件为单位,通过对文件计算哈希值来判断该文件是否冗余。该方法的优点是算法简单、计算速度快,缺点是数据块粒度较大。
2、固定分块方法,即将文件切分成固定长度的数据块,通过计算每块数据块的哈希值来判断其是否冗余。该方法的优点是数据块粒度较小、处理速度快,缺点是当文件发生插入或删除变化时冗余处理效率较低。
3、可变分块方法,即从文件头开始扫描,计算固定字节大小滑动窗口中数据的指纹,当指纹值满足一定条件时,便认为这是一个数据块的边界,否则将滑动窗口向文件尾滑动一个字节,继续计算指纹值并进行判断;相邻的两个边界则确定了一个数据块,再计算该数据块的哈希值来判断其是否冗余。该方法的优点是对于文件发生插入或删除变化时处理高效,缺点是算法复杂、计算量高、处理速度慢。
在上述三种方法中,可变分块方法处理由于效率较高而得到了广泛应用。然而,其存在处理速度慢的问题。从可变分块方法处理流程来看,其是一种单向的数据切分方法,即数据切分方法从头扫描文件内容以确定数据块的边界,当获得两个相邻边界时,便得到了一个数据块;接着,继续扫描文件内容、获取数据块,直到文件尾。
为了提高其执行速度,本发明提供了一种双向并发执行的数据切分方法,即方法的执行借助多核处理器的并发处理能力,用两个线程分别从文件的首尾出发,利用数据块边界只由数据内容所确定,在文件中位置固定的特性,同时扫描文件,确定数据块的边界,进而切分数据块,直到由首尾出发的两个线程在文件中部相遇为止,从而显著提高了数据切分的速度。
(三)发明内容
本发明的目的在于一种信息系统中改进的文件级可变长数据分块方法。该方法能够根据文件内容,通过从文件两端同时切分的方法快速对文件进行数据分块,从而大大提高数据分块的速度、改进重复数据删除的效能。
本发明的目的是这样实现的:
设待处理的文件集包含了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时,该窗口便确定了是一个数据块的边界。而两个相邻的数据块边界即确定了一个数据块。
其具体方法步骤为:
(1)输入待处理的文件集(F1,F2,...,Fm),各文件大小分别为(f1,f2,...,fm);
(2)输入滑动窗口大小W,模数E,两个相对独立的缓存(buf1,buf2)大小均为N;
否则,就设置滑动指针s1为0、s2为fi,执行步骤4;
(4)若文件Fi的大小ni<缓存的大小N,则线程T1,T2分别将fi字节数据读到缓存buf1、buf2中,执行步骤6;
否则,执行步骤5;
(5)线程T1将由文件头部开始的N字节数据读到缓存buf1,线程T2将以文件尾部为结尾的N字节数据读到缓存buf2;
(6)在buf1的头部设置滑动窗口w1,在buf2的末尾设置滑动窗口w2;
(7)分别计算滑动窗口w1、w2所包含数据的指纹值r1、r2,若指纹值r1对模数E求模为0,则滑动窗口w1确定了一个数据块的边界,则将前一边界末尾后接的第一个字节到此边界末尾的数据作为一个数据块;若是指纹值r2对模数E求模为0,则将此边界术尾后接的第一个字节到前一边界尾部的数据作为一个数据块;
(8)若滑动指针s1等于s2,则将文件Fi中部还没有切块数据作为一个数据块,并将文件Fi从待处理的文件集中删除,执行步骤11;否则执行步骤9;
(9)若此时滑动窗口w1到达缓存buf1的尾部,则将尚未切分成块的数据移到缓存buf1的头部,然后线程T1从磁盘读取数据至其后,直到将缓存buf1填满;若滑动窗口w2到达缓存buf2的头部,则将尚未切分成块的数据移到缓存buf2的尾部,线程T2从磁盘读取数据至其前面,直到将缓存buf2填满,执行步骤6;
(10)滑动窗口w1向缓存buf1的尾部滑动1字节,滑动指针s1自增1;滑动窗口w2向缓存buf2的头部滑动1字节,滑动指针s2自减1;执行步骤7;
(11)如文件集为空,则处理过程结束;否则,执行步骤3。
本发明的关键在于如何根据文件内容,从文件的两端同时进行数据切块。为此,使用了两个线程,分别从文件的两端并发做分块操作,从而大大提高了数据分块的速度、改进了重复数据删除的效能。
其主要创新点如下:
1、根据文件内容,通过两个线程分别从文件的头部和尾部并发进行数据切块,从而大大提高了数据分块的速度、改进了重复数据删除的效能。
2、将文件块方法与可变分块方法相结合,对于较小的文件,采用文件块方法,将整个文件作为数据块;而对于较大的文件,则用两个线程分别从文件的头部和尾部并发进行数据切块,从而提高数据分块的速度。
(四)附图说明
图1、可变分块方法示意图
图2、双向并发执行的文件级可变长数据分块方法示意图
(五)具体实施方式
下面结合附图举例对本发明做更详细地描述:
本发明所述算法的特征在于:
设待处理的文件集包含了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时,该窗口便确定了是一个数据块的边界。而两个相邻的数据块边界即确定了一个数据块。
其具体方法步骤为:
(1)输入待处理的文件集(F1,F2,...,Fm),各文件大小分别为(f1,f2,...,fm);
(2)输入滑动窗口大小W,模数E,两个相对独立的缓存(buf1,buf2)大小均为N;
(4)若文件Fi的大小ni<缓存的大小N,则线程T1,T2分别将fi字节数据读到缓存buf1、buf2中,执行步骤6;
否则,执行步骤5;
(5)线程T1将由文件头部开始的N字节数据读到缓存buf1,线程T2将以文件尾部为结尾的N字节数据读到缓存buf2;
(6)在buf1的头部设置滑动窗口w1,在buf2的末尾设置滑动窗口w2;
(7)分别计算滑动窗口w1、w2所包含数据的指纹值r1、r2,若指纹值r1对模数E求模为0,则滑动窗口w1确定了一个数据块的边界,则将前一边界末尾后接的第一个字节到此边界末尾的数据作为一个数据块;若是指纹值r2对模数E求模为0,则将此边界末尾后接的第一个字节到前一边界尾部的数据作为一个数据块;
(8)若滑动指针s1等于s2,则将文件Fi中部还没有切块数据作为一个数据块,并将文件Fi从待处理的文件集中删除,执行步骤11;否则执行步骤9;
(9)若此时滑动窗口w1到达缓存buf1的尾部,则将尚未切分成块的数据移到缓存buf1的头部,然后线程T1从磁盘读取数据至其后,直到将缓存buf1填满;若滑动窗口w2到达缓存buf2的头部,则将尚未切分成块的数据移到缓存buf2的尾部,线程T2从磁盘读取数据至其前面,直到将缓存buf2填满,执行步骤6;
(10)滑动窗口w1向缓存buf1的尾部滑动1字节,滑动指针s1自增1;滑动窗口w2向缓存buf2的头部滑动1字节,滑动指针s2自减1;执行步骤7;
(11)如文件集为空,则处理过程结束;否则,执行步骤3。
其具体实施模式是这样的:
整个算法具体实施模式可分为一小一大两个循环,小的循环是根据文件内容,通过两个线程分别从文件的头部和尾部并发进行数据切块,大的循环是对文件集中的所有文件使用小循环进行处理。
小循环
用两个线程,分别从文件的首尾并发向文件的中间读取数据到各自的缓存中,并利用滑动窗口以每次一个字节的速度,在数据缓存中往相应方向滑动,并计算滑动窗口中数据的指纹值。当该指纹值与期望块大小构成某种条件时,该窗口便确定了是一个数据块的边界。而两个相邻的数据块边界即确定了一个数据块。若两个滑动窗口在文件的中部相遇了,就将此时未切分成块的数据作为一个数据块,并跳出该循环。
大循环
当对一个文件的分块结束后,将其从带切块文件集中删除,则文件集是否为空,若仍有未分块的文件,则对该文件使用上述小循环做分块处理;否则,处理过程结束。
Claims (1)
1.一种信息系统中双向并发执行的文件级可变长数据分块方法,其特征在于:设待处理的文件集包含了m个文件,分别表示为F1、F2、...、Fm;方法中使用的两个线程,分别表示为T1、T2;两个滑动窗口,其大小都为W,分别表示为w1、w2;两个滑动窗口中数据计算得到的指纹值,即对数据进行校验所得到的二进制值,分别记录为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时,该窗口便确定了是一个数据块的边界;而两个相邻的数据块边界即确定了一个数据块;
具体方法步骤为:
(1)输入待处理的文件集F1、F2、...、Fm,各文件大小分别为f1、f2、...、fm;
(2)输入滑动窗口大小W,模数E,两个相对独立的缓存buf1、buf2大小均为N;
否则,就设置滑动指针s1为0、s2为fi,执行步骤(4);
(4)若文件Fi的大小ni<缓存的大小N,则线程T1,T2分别将fi字节数据读到缓存buf1、buf2中,执行步骤(6);
否则,执行步骤(5);
(5)线程T1将由文件头部开始的N字节数据读到缓存buf1,;线程T2将以文件尾部为结尾的N字节数据读到缓存buf2;
(6)在buf1的头部设置滑动窗口w1,在buf2的末尾设置滑动窗口w2;
(7)分别计算滑动窗口w1、w2所包含数据的指纹值r1、r2,若指纹值r1对模数E求模为0,则整个滑动窗口w1所包含的数据确定了一个数据块的边界,并将前一边界末尾后接的第一 个字节到此边界末尾的数据作为一个数据块;若是指纹值r2对模数E求模为0,则整个滑动窗口w2所包含的数据确定了一个数据块的边界,并将此边界末尾后接的第一个字节到前一边界尾部的数据作为一个数据块;
(8)若滑动指针s1等于s2,则将文件Fi中部还没有切块数据作为一个数据块,并将文件Fi从待处理的文件集中删除,执行步骤(10);
否则执行步骤(9);
(9)若此时滑动窗口w1到达缓存buf1的尾部,则将尚未切分成块的数据移到缓存buf1的头部,然后线程T1从磁盘读取数据至其后,直到将缓存buf1填满;若滑动窗口w2到达缓存buf2的头部,则将尚未切分成块的数据移到缓存buf2的尾部,线程T2从磁盘读取数据至其前面,直到将缓存buf2填满,执行步骤(6);否则,滑动窗口w1向缓存buf1的尾部滑动1字节,滑动指针s1自增1;滑动窗口w2向缓存buf2的头部滑动1字节,滑动指针s2自减1;执行步骤(7);
(10)如文件集为空,则处理过程结束;否则,执行步骤(3)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102762336A CN101968796B (zh) | 2010-09-09 | 2010-09-09 | 一种双向并发执行的文件级可变长数据分块方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010102762336A CN101968796B (zh) | 2010-09-09 | 2010-09-09 | 一种双向并发执行的文件级可变长数据分块方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101968796A CN101968796A (zh) | 2011-02-09 |
CN101968796B true CN101968796B (zh) | 2012-04-18 |
Family
ID=43547953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010102762336A Expired - Fee Related CN101968796B (zh) | 2010-09-09 | 2010-09-09 | 一种双向并发执行的文件级可变长数据分块方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101968796B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682086B (zh) * | 2012-04-23 | 2014-11-05 | 华为技术有限公司 | 数据分块方法及设备 |
CN103514210B (zh) * | 2012-06-28 | 2017-06-27 | 华为技术有限公司 | 小文件处理方法及装置 |
CN104348571B (zh) * | 2013-07-23 | 2018-02-06 | 华为技术有限公司 | 数据分块方法及装置 |
CN104426915B (zh) * | 2013-08-19 | 2017-12-01 | 中国电信股份有限公司 | 实现在线音乐分段下载的方法、服务器和系统 |
CN103944969A (zh) * | 2014-03-31 | 2014-07-23 | 中国电子科技集团公司第三十研究所 | 一种窄带网络安全传输优化方法及装置 |
CN106156049A (zh) * | 2015-03-27 | 2016-11-23 | 天脉聚源(北京)科技有限公司 | 一种数据读取的方法和系统 |
CN106406762A (zh) * | 2016-09-19 | 2017-02-15 | 郑州云海信息技术有限公司 | 一种重复数据删除方法及装置 |
CN107632789A (zh) * | 2017-09-29 | 2018-01-26 | 郑州云海信息技术有限公司 | 基于分布式存储的重删方法、系统及数据重复检测方法 |
CN112765108B (zh) * | 2020-11-19 | 2024-05-07 | 统信软件技术有限公司 | 一种文档加载方法、计算设备及可读存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2002655A1 (de) * | 2006-03-29 | 2008-12-17 | Nokia Siemens Networks Gmbh & Co. Kg | Verfahren und vorrichtung zum erstellen eines datenblocks für einen skalierbaren datenstrom |
CN101645888B (zh) * | 2009-06-02 | 2012-11-21 | 中国科学院声学研究所 | 一种基于访问频度变长逻辑分段的数据分发方法 |
-
2010
- 2010-09-09 CN CN2010102762336A patent/CN101968796B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101968796A (zh) | 2011-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101968796B (zh) | 一种双向并发执行的文件级可变长数据分块方法 | |
CN103177111B (zh) | 重复数据删除系统及其删除方法 | |
US9753937B2 (en) | File aware block level deduplication | |
EP3376393B1 (en) | Data storage method and apparatus | |
US10191934B2 (en) | De-duplication system and method thereof | |
CN101453489B (zh) | 一种网络附加存储装置及其数据备份和数据恢复方法 | |
US8578112B2 (en) | Data management system and data management method | |
CN103116615B (zh) | 一种基于版本矢量的数据索引方法及服务器 | |
CN110647497A (zh) | 一种基于hdfs的高性能文件存储与管理系统 | |
CN102456059A (zh) | 重复数据删除的处理系统 | |
CN108415671B (zh) | 一种面向绿色云计算的重复数据删除方法及系统 | |
CN107885619A (zh) | 一种数据精简去重和镜像异地备份保护的方法及系统 | |
CN102722583A (zh) | 重复数据删除硬件加速装置和方法 | |
CN106611035A (zh) | 一种云存储中重复数据删除的检索算法 | |
CN105487942A (zh) | 一种基于重复数据删除的备份与远程复制方法 | |
KR102147633B1 (ko) | 가변 길이 코딩된 파일을 디코딩하는 방법 및 장치 | |
CN109063192A (zh) | 一种高性能海量文件存储系统工作方法 | |
WO2021012162A1 (zh) | 存储系统数据压缩的方法、装置、设备及可读存储介质 | |
CN105493080B (zh) | 基于上下文感知的重复数据删除的方法和装置 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
CN101968724B (zh) | 针对嵌入式arm处理器对sd卡数据存储和删除方法 | |
CN111061428B (zh) | 一种数据压缩的方法及装置 | |
EP2856359B1 (en) | Systems and methods for storing data and eliminating redundancy | |
CN107977168B (zh) | 一种基于云存储的数据分散存储系统 | |
EP4321981A1 (en) | Data processing method and apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120418 Termination date: 20130909 |