CN101820426B - 一种在线备份服务软件中的数据压缩方法 - Google Patents
一种在线备份服务软件中的数据压缩方法 Download PDFInfo
- Publication number
- CN101820426B CN101820426B CN2010101522848A CN201010152284A CN101820426B CN 101820426 B CN101820426 B CN 101820426B CN 2010101522848 A CN2010101522848 A CN 2010101522848A CN 201010152284 A CN201010152284 A CN 201010152284A CN 101820426 B CN101820426 B CN 101820426B
- Authority
- CN
- China
- Prior art keywords
- compression
- backup
- data
- hash value
- data block
- 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
Abstract
本发明公开了一种备份服务软件中的数据压缩方法,属于计算机存储备份服务和计算机数据压缩领域,目的在于提高存储备份服务的效率。在本发明中,提出了在客户端通过两级压缩策略来降低系统负载的方法。上层压缩即为全局压缩,对备份原始文件按照固定大小进行分块,计算每个块的hash值,将此hash值作为数据块的“身份证”,从而保证每个数据块在存储端全局范围内只有一份副本。下层压缩为块级,即通过压缩算法实现数据块内的压缩,进一步地减少了需要通过网络传输的数据量,节省带宽。两级压缩共同作用,不仅提高了备份服务的效率,减少了数据传输量,同时也提高了存储端空间的利用率。
Description
技术领域
本发明属于计算机备份服务技术和计算机数据压缩领域,具体涉及一种在线备份服务软件中的数据压缩方法。
背景技术
随着计算机等信息学科的发展壮大,人们接触到的数字信息也越来越多。数据已然成为一个企业甚至是一个国家宝贵的财富。但是大到自然灾害,小到病毒、电源故障乃至操作员意外操作失误,都会影响系统的正常运行,甚至造成系统的完全瘫痪,造成数据的大量丢失,进而造成不可弥补的损失。在这样的大环境下,数据备份软件应运而生。
当前的数据备份软件多是为资金雄厚的大型企业度身定做的专用系统,对于很多中小企业及个人用户而言,由于资金短缺、技术力量薄弱等原因,不得不任由重要业务数据处于一种不设防的状态。随着Saas(Software-as-a-Service,软件即服务)和Cloud Computing(云计算)的兴起,在线备份服务逐渐发展成为存储应用领域的一个热门方向。在线备份服务通过网络将本地数据备份到SSP(Storage Service Provider)提供的在线存储空间,与传统备份软件相比,具有更简单、更安全、更经济可行等诸多优点,能够很好地解决数据的异地备份及容灾问题。
备份服务中,用户通过制定备份策略将重要的数据及时地进行备份,需要的时候可以直接从服务器端恢复。但是,对于需要处理大量数据信息的备份服务软件来说,大量的数据不仅占用了网络带宽,降低了传输效率,而且过多的冗余数据对服务器造成了巨大的负担,浪费了大量的存储空间。于是,便有了对文件传输模式的研究。
对文件传输进行管理的目的是提高备份服务的效率,减少数据传输量,降低网络带宽占用量,同时提高存储服务器的空间利用率。
发明内容
本发明的目的在于提供一种在线备份服务软件中的数据压缩方法,该方法可以有效地减小传输数据量,提高传输效率,并且可以极大地减小服务器端的数据冗余度,提高服务器的存储效率。
本发明提供的一种在线备份服务软件中的数据压缩方法,其特征在于,该方法包括下述步骤:
第1步客户端接收用户提交的备份请求,在向控制中心认证其合法性之后,通过控制中心得到用于连接存储端的信息;同时在本地生成备份信息文件,用于记录备份文件集中各备份文件的名字以及相应的hash列表项;
第2步客户端按顺序依次取一个原始文件,将文件名添加到备份信息文件中,并按下述过程进行处理,所有原始文件处理完毕后转第3步;
(2.1)将原始文件按照固定大小分块,并顺序将分块后的原始文件数据读入缓冲区中;
(2.2)计算缓冲区中数据块的hash值,并添加此hash值到hash列表项中;存储端判断hash值对应的数据块是否存在,将结果反馈回客户端。如果存在转步骤(2.4),否则进入步骤(2.3);
(2.3)压缩数据块,然后传输压缩后的数据块到存储端;
(2.4)判断待处理的原始文件的全部分块是否处理完毕,如果是,进入第3步,否则转入步骤(2.1);
第3步打开备份信息文件,读取原始文件数据到缓冲区,计算hash值,将hash值传输到控制中心保存;
第4步同时传输此hash值到存储端,存储端判断hash值对应的数据块是否存在,将结果反馈回客户端;如果存在转入第6步,否则进入第5步;
第5步通过网络传输缓冲区数据到存储端;
第6步备份完成,发送完成信号到控制中心和存储端。
本发明方法具有以下技术特点:
(1)本发明提出了在备份服务系统中客户端进行文件传输时进行两级压缩存储的策略。上层全局压缩,下层块级压缩。通过这两层压缩处理,极大程度地提高了存储备份的效率。
(2)本发明方法采用的上层压缩是全局压缩。待备份的原始文件按固定大小分块(不足的也作为一个单独的块),根据数据块的内容生成一个独一无二的hash值,作为数据块的“身份证”,即只有完全相同的数据块的hash值才完全相同,同时也是作为此数据块的“地址”使用,即根据hash值就可以获得对应的数据块。全局压缩利用此hash值来保证数据块在存储端的唯一性,即每个数据块在存储端只存储一份拷贝,从而消除存储端的冗余数据块。每个数据块在传输之前,都会检查存储端是否已经存在该数据块的hash值。对存在的数据块,不进行数据块的传输。对于不存在的数据块,进行下层压缩。
(3)本发明方法采用的下层压缩是块级压缩。块级压缩采用了已有的三种压缩算法,分别是LZ77、LZO和BWT,来对一个数据块进行块内压缩,目的在于消除一个数据块中的冗余数据。在具体实现中,可根据软件所服务的数据特征和机器配置选择合适的压缩算法。
附图说明
图1为本发明涉及的软件架构图。
图2为本发明方法的流程图。
图3为本发明涉及的备份文件集在存储端的组织结构。
图4为本发明两级压缩实例图。
具体实施方式
本发明描述了一种在线存储备份服务软件中客户端进行文件压缩传输及存储的设计和实现方法,并在一种C/S模式的备份服务系统中实现。
备份服务系统包括三个主要的部分:控制中心、存储端和客户端。
控制中心进行用户权限认证,并且建立备份客户端和存储端之间的联系,让客户端可以连接到指定存储端。并在备份或者恢复进行的过程中,实时监测备份或者恢复的进度状态。
存储端的主要作用就是接受从客户端传输过来的数据,并按照一定的格式存放这些数据,起到备份的功效。并能够在客户端发出恢复请求的时候,将数据块组织起来传输回客户端,还原成原始数据。
此三方可以部署在同一台服务器或分别位于不同的服务器上。三方之间的关系如图1所示。
如图2所示,本发明提供的在线备份服务软件中的数据压缩方法包括下述步骤:
(1)客户端接收用户提交的备份请求,在向控制中心认证其合法性之后,通过控制中心得到用于连接存储端的信息。同时在本地生成备份信息文件,用于记录备份文件集中各备份文件的名字以及相应的hash列表项。
客户端和控制中心的认证是双向的,客户端连接上控制中心后,控制中心会向客户端发送一个认证请求。认证成功之后,客户端也会向控制中心发起同样的认证请求,经过这两轮认证之后,控制中心才认可客户端的合法性。
备份信息文件由文件名和hash列表项组成。它记录了所有备份原始文件的文件名以及各文件所有分块的hash列表项。hash列表项的定义如下:
struct HashListItem
{
_int64 offset; //此数据块在文件中的偏移值
unsigned length;//此数据块的长度
CString hash;//此数据块的hash值,hash长度为20Bytes
}; //hash列表项大小为8+4+20=32Bytes
图3所示为备份文件集在存储端的组织结构。图中D10、D11、D12为文件1的三个分块,hash10、hash11、hash12分别为这三个数据块的hash值;同样,D20、D21为文件2的两个分块,hash20、hash21为这两个数据块的hash值。备份信息文件作为存储端的一个数据块,它的hash值被存储在控制中心。这样就可以根据控制中心的备份信息文件的hash值获得备份信息文件,从而得到各个备份原始文件的分块hash值,从而得到原始文件的分块数据。
(2)客户端按顺序依次取一个原始文件,将文件名添加到备份信息文件中,并按下述过程进行处理,所有原始文件处理完毕后转步骤(3)。
(2.1)按照固定的块大小顺序读取原始文件数据到缓冲区中。即将原始文件分块。
(2.2)计算缓冲区中数据块的hash值,并添加此hash值到hash列表项中;存储端判断hash值对应的数据块是否存在,将结果反馈回客户端。如果存在转步骤(2.4),否则进入步骤(2.3)。
在计算数据块的hash值的时候,使用的是安全哈希算法(Secure HashAlgorithm,SHA)。SHA是一种数据加密算法,它对一个长度不超过264二进制位的消息产生160位(20Bytes)的消息摘要输出。
(2.3)采用数据压缩算法压缩数据块,然后传输压缩后的数据块到存储端。
在块内压缩使用的算法有LZ77、LZO和BWT这三种。
J.ziv和A.Lempel于1977年发表题为“顺序数据压缩的一个通用算法(A universal Algorithm for Sequential Datacoopression)”的论文,论文中描述的算法被后人称为LZ77算法。LZ77算法用一种极为巧妙的方式将字典技术应用于通用数据压缩领域。形象地说,即用字典中的页码和行号代替文章中的每个单词。
LZO算法是由以A.Lempel、J.Ziv和B.Oberhumer共同开发,故命名为LZO(Lempel-Ziv-Oberhumer),它基于变长字典式压缩,是一种适合于需要在实时情况下的压缩和解压缩算法,使用较快的速率获得合适的压缩比。
BWT算法于1999年由M.Burrows和D.J.wheeler共同提出,核心思想是对字符串轮转后得到的字符矩阵进行排序和变换,类似的变换算法被称为Burrows-wheeler变换。BWT算法在开放源码的压缩工具bzip中获得了巨大的成功,bzip对于文本文件的压缩效果要远好于使用LZ系列算法的工具软件。
对于配置比较低的系统或者是对压缩效果并不十分要求的应用,可以考虑使用LZO或者是LZ77;对于配置比较高或者是对压缩效果要求也比较高的应用,可以考虑使用BWT算法。
(2.4)判断待处理的原始文件的全部分块是否处理完毕,如果是,进入步骤(2),否则转入步骤(2.1)。
(3)打开备份信息文件,读取原始文件数据到缓冲区,计算hash值,将hash值传输到控制中心保存。
针对备份信息文件的内容,相比每个备份文件的分块hash列表项所占用的空间大小而言,文件名占用的空间是可以忽略不计的。
设步骤(2)中块的大小为4M,而hash列表项大小为32Bytes,那么在备份信息文件大小≤4M的时候,最大支持的单文件备份的大小为:(备份信息文件最大值/hash列表项大小)*分块大小,即
(4M/32B)*4M=512G
也就是说,在当前情况下的备份,所产生的备份信息文件只需要一个数据块就足以装下。
(4)同时传输此hash值到存储端,存储端判断hash值对应的数据块是否存在,将结果反馈回客户端。如果存在转入步骤(6),否则进入步骤(5)。
(5)通过网络传输缓冲区数据到存储端。
(6)备份完成,发送完成信号到控制中心和存储端。
如图3所示,是备份文件集在存储端的组织结构。
总的来说,备份客户端对于每个数据块,在传输之前都会计算出它的hash值并判断该hash值对应的数据块在存储端是否存在,对于存在的数据块,不进行处理,继续处理下一块,对于不存在的数据块块,采用压缩算法进行块级压缩处理。将经过这两步处理后得到的数据块通过网络传输到存储端进行存储。如此便完成了文件的两级压缩存储。
实例:
下面结合一个单文件的备份实例来进行说明。假设现在存储端没有任何数据。将待备份的原始文件以4M为单位划分成块,记作b1,b2,……,bn。对每个数据块bi(1≤i≤n),根据数据块的内容求得它的hash值hi(1≤i≤n),然后判断此hash值对应数据块是否已经存在。由于这些hash值对存储端是“新”的,故这n个块都需要进行块级压缩(压缩后的数据块加阴影以示区别),再将压缩之后的数据块通过广域网(WAN)或局域网(LAN)传输到存储端保存。
接着修改原始文件,假设修改之后除了数据块bn之外,其余的数据块都没有改变。还是对这个原始文件执行备份操作,那么前n-1个数据块是不用再传输的,这样需要通过压缩之后传输的数据块就只有最后一个修改的数据块。在这种情况下全局压缩率为(n-1)/n,再加上块级压缩,总体压缩率是相当客观的。
块级压缩是第二级压缩,在全局压缩(第一级压缩)之后,用来处理全局压缩处理后的数据。块级压缩的处理过程应该在全局压缩之后、数据传输之前进行。
要实现块级压缩,必然要使用压缩算法。通过对数据的压缩,减少数据传输量。本软件选择现有的几种成熟压缩算法进行块级压缩,都可以得到较好的压缩效果。对于压缩算法在此不做赘述。
本发明不仅局限于上述具体实施方式,本领域一般技术人员根据本发明公开的内容,可以采用其它多种具体实施方式实施本发明,因此,凡是采用本发明的设计结构和思路,做一些简单的变化或更改的设计,都落入本发明保护的范围。
Claims (1)
1.一种在线备份服务软件中的数据压缩方法,其特征在于,该方法包括下述步骤:
第1步客户端接收用户提交的备份请求,在向控制中心认证其合法性之后,通过控制中心得到用于连接存储端的信息;同时在本地生成备份信息文件,用于记录备份文件集中各备份文件的名字以及相应的hash列表项;
第2步客户端按顺序依次取一个原始文件,将文件名添加到备份信息文件中,并按下述过程进行处理,所有原始文件处理完毕后转到第3步;
(2.1)将原始文件按照固定大小分块,并顺序将分块后的原始文件数据读入缓冲区中;
(2.2)计算缓冲区中数据块的hash值,并添加此hash值到hash列表项中;存储端判断hash值对应的数据块是否存在,将结果反馈回客户端,如果存在转步骤(2.4),否则进入步骤(2.3);
(2.3)压缩数据块,然后传输压缩后的数据块到存储端;
(2.4)判断待处理的原始文件的全部分块是否处理完毕,如果是,进入第3步,否则转入步骤(2.1);
第3步打开备份信息文件,读取原始文件数据到缓冲区,计算hash值,将hash值传输到控制中心保存;
第4步同时传输此hash值到存储端,存储端判断hash值对应的数据块是否存在,将结果反馈回客户端;如果存在转入第6步,否则进入第5步;
第5步通过网络传输缓冲区数据到存储端;
第6步备份完成,发送完成信号到控制中心和存储端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101522848A CN101820426B (zh) | 2010-04-22 | 2010-04-22 | 一种在线备份服务软件中的数据压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010101522848A CN101820426B (zh) | 2010-04-22 | 2010-04-22 | 一种在线备份服务软件中的数据压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101820426A CN101820426A (zh) | 2010-09-01 |
CN101820426B true CN101820426B (zh) | 2012-05-23 |
Family
ID=42655374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010101522848A Expired - Fee Related CN101820426B (zh) | 2010-04-22 | 2010-04-22 | 一种在线备份服务软件中的数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101820426B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012093216A1 (fr) | 2011-01-07 | 2012-07-12 | Thomson Licensing | Dispositif et procède de stockage en ligne, dispositif et procède d'émission, dispositif et procède de réception |
WO2013136339A1 (en) * | 2012-03-15 | 2013-09-19 | Hewlett-Packard Development Company, L.P. | Regulating replication operation |
CN102708183B (zh) * | 2012-05-09 | 2015-03-25 | 华为技术有限公司 | 数据压缩的方法和装置 |
CN103049561B (zh) * | 2012-12-31 | 2016-01-27 | 华为技术有限公司 | 一种数据压缩方法、存储引擎及存储系统 |
US10496490B2 (en) | 2013-05-16 | 2019-12-03 | Hewlett Packard Enterprise Development Lp | Selecting a store for deduplicated data |
US10592347B2 (en) | 2013-05-16 | 2020-03-17 | Hewlett Packard Enterprise Development Lp | Selecting a store for deduplicated data |
CN105095300A (zh) * | 2014-05-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种数据库备份方法及系统 |
CN105242993A (zh) * | 2015-11-13 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | 数据备份方法及系统 |
CN106294003A (zh) * | 2016-07-26 | 2017-01-04 | 广东欧珀移动通信有限公司 | 数据备份方法、数据备份系统和终端 |
CN106776123B (zh) * | 2016-11-25 | 2019-12-20 | 上海爱数信息技术股份有限公司 | 一种容灾实时数据复制方法及系统、备份客户端 |
CN108242931B (zh) * | 2016-12-23 | 2023-04-28 | 中科星图股份有限公司 | 一种数据压缩提供方法 |
CN107526655A (zh) * | 2017-08-25 | 2017-12-29 | 郑州云海信息技术有限公司 | 一种节约传输链路中带宽和数据量的数据传输方法和系统 |
CN107526657A (zh) * | 2017-09-13 | 2017-12-29 | 沈阳东知科技有限公司 | 一种数据库联机备份方法及系统 |
CN108958983B (zh) * | 2018-08-06 | 2021-03-26 | 深圳市科力锐科技有限公司 | 基于数据差异的还原方法、装置、存储介质及用户设备 |
CN111045856A (zh) * | 2018-10-12 | 2020-04-21 | 伊姆西Ip控股有限责任公司 | 用于管理应用系统的方法、设备和计算机程序产品 |
CN111240893B (zh) * | 2019-12-26 | 2023-07-18 | 曙光信息产业(北京)有限公司 | 一种基于数据流分片技术的备份和还原管理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025702A (zh) * | 2006-02-17 | 2007-08-29 | 深圳奇峰创智科技有限公司 | 利用计算机网络自动备份的方法 |
KR100871392B1 (ko) * | 2007-11-13 | 2008-12-02 | (주)소만사 | 이-디스커버리를 위한 아카이빙 시스템에서의 메시지 관리방법 |
CN101321187A (zh) * | 2007-06-06 | 2008-12-10 | 国际商业机器公司 | 用于备份数据的系统和方法 |
CN101692226A (zh) * | 2009-09-25 | 2010-04-07 | 中国人民解放军国防科学技术大学 | 海量归档流数据存储方法 |
-
2010
- 2010-04-22 CN CN2010101522848A patent/CN101820426B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025702A (zh) * | 2006-02-17 | 2007-08-29 | 深圳奇峰创智科技有限公司 | 利用计算机网络自动备份的方法 |
CN101321187A (zh) * | 2007-06-06 | 2008-12-10 | 国际商业机器公司 | 用于备份数据的系统和方法 |
KR100871392B1 (ko) * | 2007-11-13 | 2008-12-02 | (주)소만사 | 이-디스커버리를 위한 아카이빙 시스템에서의 메시지 관리방법 |
CN101692226A (zh) * | 2009-09-25 | 2010-04-07 | 中国人民解放军国防科学技术大学 | 海量归档流数据存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101820426A (zh) | 2010-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101820426B (zh) | 一种在线备份服务软件中的数据压缩方法 | |
CN102970158B (zh) | 日志存储与处理的方法及日志服务器 | |
CN104123300A (zh) | 数据分布式存储系统及方法 | |
CN100547555C (zh) | 一种基于指纹的数据备份系统 | |
CN106527993B (zh) | 一种分布式系统中的海量文件储存方法及装置 | |
CN103944981A (zh) | 一种基于纠删码技术改进的云存储系统及实现方法 | |
CN103916483A (zh) | 一种针对编码冗余存储系统的自适应数据存储与重构方法 | |
CN110636141B (zh) | 基于云雾协同的多云存储系统及其管理方法 | |
CN107544862A (zh) | 一种基于纠删码的存储数据重构方法和装置、存储节点 | |
WO2012065408A1 (zh) | 容灾数据备份的方法及系统 | |
US20080275847A1 (en) | Scalable minimal perfect hashing | |
CN106776129A (zh) | 一种基于最小存储再生码的多节点数据文件的修复方法 | |
CN104010042A (zh) | 一种云服务的重复数据删除的备份机制 | |
CN107340971A (zh) | 一种数据存储与恢复架构与方法 | |
CN101800761B (zh) | 一种基于网络字典的无损数据压缩方法 | |
CN113391946A (zh) | 一种分布式存储中的纠删码的编解码方法 | |
WO2021012162A1 (zh) | 存储系统数据压缩的方法、装置、设备及可读存储介质 | |
KR20120090320A (ko) | 분산 파일 시스템에서 효율적인 자료 복구 방법 | |
CN110309117A (zh) | 一种高可用区块链存储方法 | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
CN102609454A (zh) | 一种分布式文件系统中的副本管理方法 | |
WO2018119976A1 (zh) | 应用于数据仓库系统的高效优化数据布局方法 | |
CN107612554B (zh) | 数据压缩处理方法 | |
CN106911793B (zh) | I/o优化的分布式存储数据修复方法 | |
Wang | Cloud Data Backup and Recovery Method Based on the DELTA Compression Algorithm |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120523 |