CN115145884A - 一种数据压缩方法及装置 - Google Patents
一种数据压缩方法及装置 Download PDFInfo
- Publication number
- CN115145884A CN115145884A CN202110343632.8A CN202110343632A CN115145884A CN 115145884 A CN115145884 A CN 115145884A CN 202110343632 A CN202110343632 A CN 202110343632A CN 115145884 A CN115145884 A CN 115145884A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- similar
- compressed
- compression
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 91
- 238000013144 data compression Methods 0.000 title claims abstract description 35
- 238000007906 compression Methods 0.000 claims abstract description 197
- 230000006835 compression Effects 0.000 claims abstract description 193
- 238000003860 storage Methods 0.000 claims abstract description 113
- 238000012545 processing Methods 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 61
- 238000010586 diagram Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 230000009467 reduction Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3077—Sorting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据压缩方法和装置,所述方法包括:提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;基于各个数据块集合包含的多个数据块之间的相似程度,提供一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;对所述一个压缩组所包含的多个相似数据块进行压缩。本申请实施例提供的数据压缩方法和装置提高了数据压缩效率,节省了存储空间。
Description
技术领域
本申请涉及存储领域,具体涉及一种数据压缩方法及装置。
背景技术
伴随大数据,云计算,人工智能技术飞速发展,对数据的需求越来越大,因此,数据缩减技术成为存储系统中的关键技术。目前用于缩减数据的相似数据删除技术主要包括以下过程:提取待压缩数据块的相似指纹(Similar Fingerprint,Sfp),基于相似指纹确定与待压缩数据块相似的参考数据块,基于参考数据块对待压缩数据块进行相似数据删除(delta压缩)。数据块的相似指纹是通过例如rabin hash算法从数据块中提取的数据特征,两个数据块的相似指纹相同,说明这两个数据块为相似数据块。虽然可以通过相似指纹找到与待压缩数据块相似的参考数据块,但是相似指纹却不能区分待压缩数据块与参考数据块之间相似程度,从而压缩效率比较低。
发明内容
本申请实施例旨在提供一种更有效的数据压缩和解压缩方案,在具有相同相似指纹特征的多个数据块中确定相似程度较高的多个数据块进行组合压缩,提高了数据压缩的数据缩减率,节省了数据存储空间。
为实现上述目的,本申请第一方面提供一种数据压缩方法,包括:提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;基于各个数据块集合包含的多个数据块之间的相似程度生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;对所述一个压缩组所包含的多个相似数据块进行压缩。
通过基于具有相同相似指纹的多个数据块之间的相似程度生成一个或多个压缩组,并且压缩组中的数据块之间满足一定的相似条件,从而当对压缩组中的数据块进行压缩时,可提供较高的数据压缩效率。
在本申请第一方面一种可能的实现方式中,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件包括:至少有两个相似数据块的所述N个数据特征有M个数据特征完全相同,M小于或等于N,所述压缩组中的所述多个相似数据块之间有关联关系。
在相似条件为压缩组中至少有两个相似数据块的N个数据特征有M个数据特征相同的情况下,压缩组中的至少两个相似数据块之间的相似程度大于或等于由M的最小值确定的相似程度,从而当对压缩组中的数据块进行压缩时,可提供较高的数据压缩效率。
在本申请第一方面一种可能的实现方式中,所述相似条件还包括:M大于一定阈值。
通过在相似条件中包括M大于一定阈值,压缩组中的至少两个相似数据块之间的相似程度大于或等于由该阈值确定的相似程度,从而当对压缩组中的数据块进行压缩时,可提供较高的数据压缩效率。
在本申请第一方面一种可能的实现方式中,所述压缩组中的多个相似数据块形成一个逻辑链,所述关联关系为所述逻辑链上的两个相邻的相似数据块具有P个相同的数据特征,P大于等于M并且小于等于N。
通过使得压缩组中包括形成逻辑链的多个数据块,由于逻辑链上每两个相邻的数据块之间的相似程度大于或等于一定程度(即由P的最小值确定的相似程度),从而当对压缩组中的数据块进行压缩时,可提供较高的数据压缩效率。
在本申请第一方面一种可能的实现方式中,所述多个相似数据块的数量为X个,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件为根据所述N个数据特征从所述一个或多个数据块集合中选择相似程度最高的X个数据块,所述X是大于或等于2的整数。
在压缩组中包括的数据块的数量为预定数量的情况中,通过使得相似条件为从所述一个或多个数据块集合中选择相似程度最高的X个数据块,使得压缩组中包括相似程度尽可能高的X个数据块,从而当对压缩组中的数据块进行压缩时,可提供较高的数据压缩效率。
在本申请第一方面一种可能的实现方式中,所述方法还包括:计算待压缩数据块的相似指纹;将所述待压缩数据块记录至与所述待压缩数据块具有相同的相似指纹的数据块对应的第一数据块集合中,所述第一数据块集合为所述一个或多个数据块集合中的一个;从所述第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块;确定包括所述目标数据块的第一压缩组,将所述待压缩数据块加入所述第一压缩组。
其中,在待压缩数据块具有多个相似指纹的情况中,则将该待压缩数据块记录在多个第一数据块集合中,并且从多个第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块以用于对该待压缩数据块进行分组。
在本申请第一方面一种可能的实现方式中,所述对所述一个压缩组所包含的多个相似数据块进行压缩包括:将所述多个相似数据块合并为合并数据块;对所述合并数据块进行压缩得到压缩数据。
在本申请第一方面一种可能的实现方式中,所述方法还包括,生成所述压缩数据的元数据,所述元数据包括所述多个相似数据块在所述合并数据块中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
在本申请第一方面一种可能的实现方式中,所述对所述一个压缩组所包含的多个相似数据块进行压缩包括:从所述多个相似数据块中选择参考数据块;根据所述参考数据块对所述多个相似数据块中的其他相似数据块进行差量压缩得到压缩数据。
在本申请第一方面一种可能的实现方式中,所述方法还包括,生成所述压缩数据的元数据,所述元数据中包括在进行差量压缩时的参考数据块信息、及各个相似数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
本申请第二方面提供一种数据压缩装置,包括:提供单元,用于提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;生成单元,用于基于各个数据块集合包含的多个数据块之间的相似程度生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;压缩单元,用于对所述一个压缩组所包含的多个相似数据块进行压缩。
在本申请第二方面一种可能的实现方式中,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件包括:至少有两个相似数据块的所述N个数据特征有M个数据特征完全相同,M小于或等于N,所述压缩组中的所述多个相似数据块之间有关联关系。
在本申请第二方面一种可能的实现方式中,所述相似条件还包括:M大于一定阈值。
在本申请第二方面一种可能的实现方式中,所述压缩组中的多个相似数据块形成一个逻辑链,所述关联关系为所述逻辑链上的两个相邻的相似数据块具有P个相同的数据特征,P大于等于M并且小于等于N。
在本申请第二方面一种可能的实现方式中,所述多个相似数据块的数量为X个,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件为根据所述N个数据特征从所述一个或多个数据块集合中选择相似程度最高的X个数据块,所述X是大于或等于2的整数。
在本申请第二方面一种可能的实现方式中,所述装置还包括:计算单元,用于计算待压缩数据块的相似指纹;记录单元,用于将所述待压缩数据块记录至与所述待压缩数据块具有相同的相似指纹的数据块对应的第一数据块集合中,所述第一数据块集合为所述一个或多个数据块集合中的一个;确定单元,用于从所述第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块;及确定包括所述目标数据块的第一压缩组;加入单元,用于将所述待压缩数据块加入所述第一压缩组。
在本申请第二方面一种可能的实现方式中,所述压缩单元具体用于:将所述多个相似数据块合并为合并数据块;
对所述合并数据块进行压缩得到压缩数据。
在本申请第二方面一种可能的实现方式中,所述压缩单元还具体用于,生成所述压缩数据的元数据,所述元数据包括所述多个相似数据块在所述合并数据块中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
在本申请第二方面一种可能的实现方式中,所述压缩单元具体用于:从所述多个相似数据块中选择参考数据块;根据所述参考数据块对所述多个相似数据块中的其他相似数据块进行差量压缩得到压缩数据。
在本申请第二方面一种可能的实现方式中,所述压缩单元还具体用于,生成所述压缩数据的元数据,所述元数据中包括在进行差量压缩时的参考数据块信息、及各个相似数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
本申请第三方面提供一种数据解压缩方法,包括:获取压缩数据及其元数据,所述压缩数据对应的原始数据由多个数据块合并得到,所述多个数据块之间的相似程度满足一定的相似条件,所述元数据包括各个所述数据块在所述原始数据中的位置信息;基于所述元数据对所述压缩数据解压缩。
本申请第四方面提供一种数据解压缩方法,包括:获取压缩数据及其元数据,所述压缩数据对应的原始数据包括多个数据块,所述多个数据块之间的相似程度满足一定的相似条件,所述元数据包括各个所述数据块在进行差量压缩时的参考数据块信息、及各个数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述参考数据块为所述多个数据块中的一个;基于所述元数据对所述压缩数据解压缩。
本申请第五方面提供一种存储设备,其特征在于,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现本申请第一方面、第三方面和第四方面中至少一方面所述的方法。
本申请第六方面提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机或处理器中执行时,令所述计算机或处理器执行本申请第一方面、第三方面和第四方面中至少一方面所述的方法。
本申请第七方面提供一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机或处理器中运行时,使得所述计算机或处理器执行本申请第一方面、第三方面和第四方面中至少一方面所述的方法。
附图说明
通过结合附图描述本申请实施例,可以使得本申请实施例更加清楚:
图1A为本申请实施例所应用的盘控分离结构的集中式存储系统的架构图;
图1B为本申请实施例所应用的盘控一体结构的集中式存储系统的架构图;
图1C为本申请实施例所应用的分布式存储系统的架构图;
图2为本申请实施例提供的具有相同相似指纹的待压缩数据块的集合的信息示意图;
图3为本申请实施例提供的压缩数据的方法流程图;
图4为本申请实施例提供的压缩组的信息中包括的内容示意图;
图5为本申请实施例提供的对待压缩数据块进行实时分组的过程示意图;
图6为本申请实施例提供的对压缩组中多个数据块进行压缩的过程示意图;
图7为本申请实施例提供的压缩数据的元数据的示意图;
图8为本申请实施例提供的另一种对压缩组中的多个相似数据块进行压缩的过程示意图;
图9为本申请实施例提供的对数据块进行差量压缩的过程示意图;
图10为本申请实施例提供的压缩数据的元数据的示意图;
图11为本申请实施例提供的又一种对压缩组中的多个数据块进行压缩的过程示意图;
图12为本申请实施例提供的压缩数据的元数据的示意图;
图13为本申请实施例提供的向存储系统写入数据的方法流程图;
图14为本申请实施例提供的从存储系统读取数据的方法流程图;
图15为本申请实施例提供的一种数据压缩装置的架构图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
存储系统包括集中式存储系统和分布式存储系统。所述集中式存储系统是指由一台或多台主设备组成中心节点,数据集中存储于这个中心节点中,并且整个系统的所有数据处理业务都集中部署在这个中心节点上。所述分布式存储系统是指将数据分散存储在多台独立的存储节点上的系统。用户可通过应用程序来向存储节点存取数据。运行这些应用程序的计算机被称为“应用服务器”。应用服务器可以是物理机,也可以是虚拟机。物理应用服务器包括但不限于桌面电脑、服务器、笔记本电脑以及移动设备。应用服务器可通过光纤交换机访问存储节点以存取数据。然而,交换机只是一个可选设备,应用服务器也可以直接通过网络与存储节点通信。
图1A为本申请实施例所应用的盘控分离结构的集中式存储系统120的架构图。该存储系统120与多个主机200连接,所述多个主机200例如为应用服务器,其都与存储系统120连接,以向存储系统120存取数据。图1A所示的集中式存储系统的特点是具有统一的入口,从主机200来的数据都要经过这个入口,这个入口例如为存储系统120中的引擎121。
如图1A所示,引擎121中有一个或多个控制器,图1A以引擎包含两个控制器为例予以说明。控制器0与控制器1之间具有镜像通道,那么当控制器0将一份数据写入其内存124后,可以通过所述镜像通道将所述数据的副本发送给控制器1,控制器1将所述副本存储在自己本地的内存124中。由此,控制器0和控制器1互为备份,当控制器0发生故障时,控制器1可以接管控制器0的业务,当控制器1发生故障时,控制器0可以接管控制器1的业务,从而避免硬件故障导致整个存储系统120的不可用。当引擎121中部署有4个控制器时,任意两个控制器之间都具有镜像通道,因此任意两个控制器互为备份。
引擎121还包含前端接口125和后端接口126,其中前端接口125用于与应用服务器通信,从而为应用服务器提供存储服务。而后端接口126用于与硬盘134通信,以扩充存储系统的容量。通过后端接口126,引擎121可以连接更多的硬盘134,从而形成一个非常大的存储资源池。
在硬件上,如图1A所示,控制器0至少包括处理器123、内存124。处理器123是一个中央处理器(central processing unit,CPU),用于处理来自存储系统外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储系统内部生成的请求。示例性的,处理器123通过前端端口接收服务器发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存124中。当内存124中的数据总量达到一定阈值时,处理器123通过后端端口126将内存124中存储的数据发送给硬盘134进行持久化存储。
内存124是指与处理器123直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作系统或其他正在运行中的程序的临时数据存储器。内存124包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(Read OnlyMemory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(Dynamic Random AccessMemory,DRAM),或者存储级存储器(Storage Class Memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但运算速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(Static Random Access Memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(Programmable Read Only Memory,PROM)、可抹除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)等。另外,内存124还可以是双列直插式存储器模块或双线存储器模块(Dual In-line MemoryModule,简称DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(Solid State Disk,SSD)。实际应用中,控制器0中可配置多个内存124,以及不同类型的内存124。本实施例不对内存124的数量和类型进行限定。此外,可对内存124进行配置使其具有保电功能。保电功能是指系统发生掉电又重新上电时,内存124中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
内存124中存储有软件程序,处理器123运行内存124中的软件程序可实现对硬盘的管理。例如将硬盘抽象化为存储资源池,然后划分为LUN提供给服务器使用等。这里的LUN其实就是在服务器上看到的硬盘。当然,一些集中式存储系统本身也是文件服务器,可以为服务器提供共享文件服务。
控制器1(以及其他图1A中未示出的控制器)的硬件组件和软件结构与控制器0类似,这里不再赘述。
在图1A所示的盘控分离的存储式系统中,引擎121可以不具有硬盘槽位,硬盘134需要放置在硬盘阵列130中,后端接口126与硬盘阵列130通信。后端接口126以适配卡的形态存在于引擎121中,一个引擎121上可以同时使用两个或两个以上后端接口126来连接多个硬盘阵列。或者,适配卡也可以集成在主板上,此时适配卡可通过PCIE总线与处理器123通信。
需要说明的是,图1A中只示出了一个引擎121,然而在实际应用中,存储系统中可包含两个或两个以上引擎121,多个引擎121之间做冗余或者负载均衡。
硬盘阵列130包括控制单元131和若干个硬盘134。控制单元131可具有多种形态。一种情况下,硬盘阵列130属于智能盘框,如图1A所示,控制单元131包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘134的数据,或者从硬盘134读取出来将要发送给控制器的数据。另一种情况下,控制单元131是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-networkprocessing units,NPU)等处理芯片。通常情况下,控制单元131的数量可以是一个,也可以是两个或两个以上。当硬盘阵列130包含至少两个控制单元131时,硬盘134与控制单元131之间具有归属关系,每个控制单元只能访问归属于它的硬盘,因此这往往涉及到在控制单元131之间转发读/写数据请求,导致数据访问的路径较长。另外,如果存储空间不足,在硬盘阵列130中增加新的硬盘134时需要重新绑定硬盘134与控制单元131之间的归属关系,操作复杂,导致存储空间的扩展性较差。因此在另一种实施方式中,控制单元131的功能可以卸载到网卡104上。换言之,在该种实施方式中,硬盘阵列130内部不具有控制单元131,而是由网卡104来完成数据读写、地址转换以及其他计算功能。此时,网卡104是一个智能网卡。它可以包含CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘134的数据,或者从硬盘134读取出来将要发送给控制器的数据。也可以是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。硬盘阵列130中的网卡104和硬盘134之间没有归属关系,网卡104可访问该硬盘阵列130中任意一个硬盘134,因此在存储空间不足时扩展硬盘会较为便捷。
按照引擎121与硬盘阵列130之间通信协议的类型,硬盘阵列130可能是SAS硬盘阵列,也可能是NVMe硬盘阵列以及其他类型的硬盘阵列。SAS硬盘阵列,采用SAS3.0协议,每个框支持25块SAS硬盘。引擎121通过板载SAS接口或者SAS接口模块与硬盘阵列130连接。NVMe硬盘阵列,更像一个完整的计算机系统,NVMe硬盘插在NVMe硬盘阵列内。NVMe硬盘阵列再通过RDMA端口与引擎121连接。
可以理解,图1A中虽然示出了具有盘控分离结构的集中式存储系统,但并不用于限制本申请实施例的应用范围,例如,本申请实施例还可以应用于图1B所示的盘控一体结构的集中式存储系统。在盘控一体结构的集中式存储系统中,与盘控分离结构不同在于,引擎121具有硬盘槽位,硬盘134可直接部署在引擎121中,后端接口126属于可选配置,当系统的存储空间不足时,可通过后端接口126连接更多的硬盘或硬盘阵列。
本申请实施例还可以应用于图1C所示的分布式的存储系统。所述分布式的存储系统包括存储节点集群。其中,存储节点集群包括一个或多个存储节点20(图1C中示出了三个存储节点20a、20b及20C,但不限于三个存储节点),各个存储节点20之间可以互联。每个存储节点20与多个主机200连接。每个主机200连接多个存储节点20,并且与多个存储节点20交互,以将数据分布存储在多个存储节点中20,从而实现数据的可靠存储。每个存储节点20至少包括处理器201、内存202、及硬盘203。其中,处理器201、内存202级硬盘203与图1A中的处理器123、内存124及硬盘134的结构及功能相同,具体请参看图1A中的相关描述,在此不再赘述。
为了节省存储系统120的存储空间,存储系统120在将数据存储至硬盘134时,会对数据进行缩减处理,用于进行数据缩减的相关技术包括数据压缩、重复数据删除(重删)和相似数据删除(差量压缩/相似压缩/delta压缩)等实现方式。其中,数据压缩技术通过对数据重新编码来降低冗余度,重复数据删除技术通过删除重复的文件或数据块,从而实现数据缩减的目的。相对于重删技术要求数据块必须完全相同才能实现冗余数据消除的限制条件,相似数据删除技术对于非完全重复,但具有一定相似程度的数据块之间具有缩减效果。例如,数据块1与数据块2由于部分内容不同,无法进行重删,但数据块之间的相似程度较高,从而可对数据块1和数据块2进行相似压缩。具体是,在一种相关技术中,假设数据块1为待压缩数据块,首先提取数据块1的相似指纹,基于该相似指纹在数据库中搜索具有相同相似指纹的数据块,在找到第一个与数据块1具有相同相似指纹的数据块2后,即将数据块2作为数据块1的参考数据块,并基于数据块2对数据块1进行差量压缩,删除数据块1中与数据块2中相同的数据,并将删除数据指向数据块2中与删除数据相同的数据,只需存储数据块1相对于数据块2不同的数据,即差量数据,从而缩减数据块1的占用的存储空间。然而,在该相似压缩技术中,在两个数据块具有相同相似指纹的情况中,只能确定该两个数据块之间相似,却无法区分两个数据块的相似程度,所以所找到的参考数据块可能为与待压缩数据的相似程度比较低的数据块,而不是与待压缩数据相似程度更高的数据块,从而降低压缩效率。
本申请实施例提供了一种对相似数据块进行压缩的方案。在该方案中,首先基于数据块的相似指纹确定具有相同相似指纹的多个数据块,再从具有相同相似指纹的多个数据块中将相似程度高的多个数据块分到一组进行数据压缩,从而增加数据的压缩效率。
在图1A及1B所示的集中式存储系统中,本申请实施例提供的数据压缩方案主要由引擎121的控制器0或者控制器1执行,在图1C所示的分布式存储系统中,本申请实施例提供的数据压缩方案主要由存储节点20中的处理器执行。为方便描述,以下以图1A中的控制器0执行所述数据压缩方案为例进行说明。如图2所示,在控制器0的内存124中存储有多个具有相同相似指纹的待压缩数据块集合的信息。图2中示意示出了分别具有相似指纹Sfp1~Sfp10的待压缩数据块的集合的信息,例如,在与相似指纹Sfp1对应的待压缩数据块集合中的每个数据块都具有相似指纹Sfp1,与相似指纹的Sfp1对应的集合的信息中例如记录了该集合中包括的各个数据块的信息(例如数据块的元数据)。
控制器0的CPU123在获取待压缩的数据块(例如数据块Bk1)之后,可计算数据块Bk1的相似指纹及相似特征,并基于数据块Bk1的相似指纹将数据块Bk1归类到与其相似指纹对应的数据块集合中。CPU123可通过已知的多种计算方式计算数据块的相似指纹,例如,CPU123可通过如下公式(1)计算数据块Bk1的相似指纹Featurei:
在公式(1)中,使用具有预定长度(例如16字节)的滑动窗口截取数据块Bk1中多个预定位置的内容Wj并计算对应的多个Rabin哈希,再选择随机素数mi和ai对各个Rabin哈希值进行映射得到多个映射值,并以多个映射值中的最大值作为该随机素数对(mi和ai)对应的相似指纹Featurei,其中,不同的i与采用的不同的随机素数对相对应,不同的j与通过滑动窗口截取的不同的内容相对应。通过选择不同的随机素数(mi和ai)对,可针对同一数据块产生多个相似指纹Featurei。
在另一种实施方式中,为了提高相似指纹的准确性,可以如下面的公式(2)所示,将通过公式(1)计算获取的多个Featurei合并为SuperFeature作为数据块Bk1的相似指纹:
SuperFeature=Rabin(Feature1,Feature2) (2),
其中,公式(2)中示意示出当获取数据块Bk1的Feature1和Feature2之后,通过Rabin哈希函数将Feature1和Feature2合并为数据块Bk1的相似指纹,可以理解,本申请实施例不限于此,而是可以合并数据块的更多的Featurei以生成数据块的相似指纹。
假设CPU123通过公式(1)或公式(2)计算出数据块Bk1的相似指纹为Spf1,Spf2和Spf10,CPU123可基于数据块Bk1的相似指纹将数据块Bk1归类到与其相似指纹对应的集合中。例如,CPU123在计算出数据块Bk1的相似指纹Sfp1之后,CPU123可在内存中存储的与相似指纹对应的集合的信息中确定是否包括与Sfp1对应的集合的信息。在确定存在与Sfp1对应的集合的信息的情况中,CPU123将数据块Bk1的信息(例如标识或元数据)加入到该与Sfp1对应的集合的信息中。CPU123在计算出数据块Bk1的相似指纹Spf2之后,CPU123可同样地确定内存124中的所述集合信息中是否包括与Sfp2对应的集合的信息,假设确定不存在与Sfp2对应的集合的信息,则CPU123可在内存中创建与Sfp2对应的集合的信息,并将数据块Bk1的信息加入该新创建的集合的信息中。从而如图2中所示,CPU123可通过上述过程将数据块Bk1的信息记录到与Spf1、Sfp2和Sfp10分别对应的三个数据块集合的信息中。
在CPU123计算出待压缩数据块的相似指纹后,还可以继续计算待压缩数据块的数据特征,所述多个数据特征为数据块的多个维度的特征(或特征值)。在一种实施方式中,可将数据块中从预定位置开始的连续的或以预定位数隔开的每n位对应的值视为向量的一个元素,从而可将数据块转换为实数空间中的一个点或者向量空间中的一个向量,然后通过对该向量进行到该向量空间的多个一维子空间的投影,可获取该向量的多个投影值作为该数据块的多个维度的特征值。在另一种实施方式中,可获取数据块中的从预定位置开始的预定长度的数据的特征(例如指纹)作为数据块的一个特征值,如此从数据块的多个位置进行抽样,从而可获取数据块的多个特征值,其中,各个数据的指纹用于识别数据是否相互等同。在另一种实施方式中,可以以滑动窗口在数据块中滑动,并在多个预定位置获取滑动窗口中的值(即滑动窗口值),之后,统计从数据块获取的不同滑动窗口值的直方图分布,选择直方图中出现次数最多的多个滑动窗口值作为数据块的多个数据特征。本申请实施例提供的获取数据块的数据特征的方式不限于特定方式,只要所获取的数据特征能够有效区分数据块的相似程度即可。
其中,在将数据块加入数据块集合时,CPU123会在数据块集合中记录每个数据块的元数据,例如,在具有Sfp1的多个数据块的集合中,可将数据块Bk1的元数据中记录为至少包括该数据块的标识(例如“Bk1”)、该数据块的相似指纹(Sfp1)、该数据块的逻辑地址(Logical Block Address,LBA)及数据特征。
CPU123在如上述将获取的各个待压缩的数据块归类到与各个相似指纹对应的集合中之后,在一种实施方式中,CPU123可以在空闲的时候或者每隔预定时段将与多个相似指纹对应的多个集合中的多个相似程度满足一定条件的数据块聚合为压缩组,以对压缩组中的数据块进行压缩,并在压缩之后将压缩数据存入硬盘134中。在另一种实施方式中,CPU123可以在将每个数据块归类到与相似指纹对应的集合中之后,基于每个数据块所属的集合,将该数据块聚合到压缩组中,并对该压缩组中的数据进行压缩。下文将详细描述本申请实施例提供的对与相似指纹对应的集合中的数据块进行压缩的方案。这样,可以将相似程度高的数据放入同一个压缩组,并对压缩组中的数据块整体进行差量压缩,可以大大提高数据的压缩效率。下面将结合图3说明通过所述集合对数据进行压缩的过程。
图3为本申请实施例提供的压缩数据的方法流程图。该方法可由图1A的存储系统120执行,具体地,可由存储系统120中的控制器0或控制器1的CPU123执行。CPU123可以在空闲的时候或者每隔预定时段执行图3所示方法,或者CPU123可在将新获取的待压缩数据块基于其相似指纹归类到如图2所示的集合之后执行图3所示方法。
如图3所示,首先,在步骤S301,获取内存124中的一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块。
如上文所述,CPU123在每获取一个待压缩的数据块之后,都会将该数据块分类到与该数据块的相似指纹对应的集合中。从而,CPU123可基于内存123中存储的与各个相似指纹对应的集合的信息获取具有相同相似指纹的数据块的集合。在一种实施方式中,CPU123在空闲时或者每隔预定时段,可基于内存124中存储的各个集合的信息,获取与相似指纹Sfp1~Sfp10分别对应的10个集合。
在步骤S302,基于各个数据块集合包含的多个数据块之间的相似程度,生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,多个相似数据块之间的相似程度满足一定的相似条件。
对于一个数据块集合中包含的多个数据块,CPU123可通过任意已知的相似程度确定方法来确定每两个数据块之间的相似程度,从而可以基于一个或多个数据块集合中各个数据块集合包含的多个数据块之间的相似程度对该一个或多个数据块集合中包含的数据块进行分组,得到一个或多个压缩组。
在一种实施方式中,CPU123可基于各个数据块的多个数据特征确定每两个数据块之间的相似程度。如果两个数据块之间的相同的数据特征的数目越多,则可确定这两个数据块的相似程度越高。
CPU123在获取上述一个或多个数据块集合之后,可从上述一个或多个数据块集合的信息中获取一个或多个数据块集合中各个数据块的元数据,基于各个数据块的元数据中包括的各个数据块的多个数据特征确定一个数据块集合中的每两个数据块之间的相似程度。
在本申请实施例中,每个数据块具有相同数目的数据特征例如12个,CPU123在确定数据块之间的相似程度时,会首先查找具有12个相同数据特征的两个数据块,然后查找具有11个数据特征的两个数据块,直至查找到拥有一个相同数据特征的两个数据块。在查找的过程中,将具有较多相同数据特征的数据块形成压缩组。
例如,如图2所示,对于Sfp1对应的集合,CPU123可分别确定如下各个数据块对中两个数据块之间的相似程度:Bk1-Bk7、Bk1-Bk15、Bk1-Bk24、…、Bk7-Bk15、Bk7-Bk24、…、Bk15-Bk24、…。具体是,在确定数据块Bk1与数据块Bk7之间的相似程度时,假设每个数据块都具有12个数据特征F1~F12,如果数据块Bk1的12个数据特征F1BK1~F12BK1与数据块Bk7的12个数据特征F1BK7~F12BK7全部相同,则可确定数据块Bk1与数据块Bk7的相似程度为12。在确定数据块Bk1与数据块Bk15之间的相似程度时,如果数据块Bk1的元数据中的11个数据特征与数据块Bk15的元数据中的11个数据特征相等,则可确定数据块Bk1与数据块Bk15的相似程度为11。
在对上述一个或多个集合中的每个集合确定该集合中每两个数据块之间的相似程度之后,CPU123可以基于该相似程度对多个集合中包含的数据块进行分组。为了增大数据压缩的缩减率,需要将尽可能高的相似程度的数据块分到一个压缩组中,同时,为了读取数据时解压缩数据的便利性,需要将压缩组中包括的数据块的数目控制为预定数目(下文中表示为数值m)。
在一种实施方式中,CPU123从内存124中获取Sfp1~Sfp10分别对应的10个数据块集合,之后,CPU123基于每个集合中的数据块间的相似程度对该10个集合中包括的多个数据块进行分组。
具体是,CPU123首先在各个集合中查找具有相同的12个数据特征的数据块对,并将具有相同的12个数据特征的数据块对分到相同的压缩组中。例如,参考图2,首先在与Spf1对应的集合中确定具有相同的12个数据特征的数据块Bk1和Bk7。CPU123然后确定是否已经存在包括数据块Bk1和/或数据块Bk7的压缩组,CPU123可通过查找内存124中存储的压缩组信息,确定是否存在上述压缩组。假设上述确定的结果为否,则CPU123将数据块Bk1和数据块Bk7组合为压缩组(下文标记为压缩组G1),具体是,CPU123创建包括数据块Bk1和数据块Bk7的压缩组G1的信息,并将该信息存储到内存124中,在该压缩组信息中可包括数据块Bk1的信息(例如标识或元数据)和数据块Bk7的信息,并可以将数据块Bk1的信息与数据块Bk7的信息关联地存储。图4为压缩组G1的信息中包括的内容示意图。在图4的以“(1)”标注的椭圆形中,可对数据块Bk1的信息与数据块Bk7的信息进行关联,以指示数据块Bk1与数据块Bk7之间具有一定的相似程度。
之后,CPU123在上述10个集合中查找下一个具有相同的12个数据特征的数据块对,例如基于Sfp2对应的集合查找出具有相同的12个数据特征的数据块Bk7和数据块Bk9。与上文类似地,CPU123在确定已经存在包括数据块Bk7的压缩组G1之后,确定压缩组G1中包括的数据块个数小于m个(例如可将m设置为8)且不包括数据块Bk9,则将数据块Bk9加入压缩组G1,并且在压缩组G1的信息中将数据块Bk7的信息与数据块Bk9的信息相关联。参考图4中以“(2)”标注的圆形,在将数据块Bk9加入压缩组G1中之后,由于数据块Bk1和数据块Bk9都与数据块Bk7具有等于12的相似程度,因此,在压缩组G1的信息中,可标注从数据块Bk1的信息指向数据块Bk7的信息的关联关系(如箭头所示)和从数据块Bk9的信息指向数据块Bk7的信息的关联关系(如箭头所示),以指示以数据块Bk7作为该压缩组中多个数据块的头块,数据块Bk7与数据块Bk1之间的相似程度满足一定程度,数据块Bk7与数据块Bk9之间的相似程度满足一定程度,数据块Bk7在压缩组中是与数据块Bk1最相似的数据块、也是与数据块Bk9最相似的数据块,在进行数据压缩时,可以以数据块Bk7作为参考数据块进行对数据块Bk1和数据块Bk9的压缩。
CPU123在将数据块Bk9加入压缩组G1中之后,相对于上述10个集合,查找是否还有其他的具有相同的12个数据特征的数据块对,假设该确定的结果为否,即,CPU123对10个集合中的具有相同的12个数据特征的数据块对查找结束,则CPU123开始基于上述10个集合Sfp1~Sfp10查找具有相同的11个数据特征的数据块对。假设,如图2所示,确定数据块Bk1与数据块Bk15具有相同的11个数据特征,则CPU123确定是否存在包括数据块Bk1和/或数据块Bk15的标识的组。基于图4中(2)所示的压缩组G1的信息,可得出该确定的结果为是,从而CPU123在确定压缩组G1中包括的数据块数目小于m个且压缩组G1中不包括数据块Bk15之后,将数据块Bk15加入压缩组G1中。如图4中以“(3)”标注的圆形所示,在将数据块Bk15加入压缩组G1中之后,由于已经确定数据块Bk7为头块,从而在压缩组G1的信息中,可标注从数据块Bk15的信息指向数据块Bk1的信息的关联关系(如箭头所示),以指示数据块Bk1与数据块Bk15之间的相似程度满足一定程度,并且数据块Bk1是压缩组中与数据块Bk15最相似的数据块。
CPU123对10个集合中的具有相同的11个数据特征的数据块对查找结束之后,又可以开始基于上述10个集合Sfp1~Sfp10查找具有相同的10个数据特征的数据块对以进行分组。如此可对集合Sfp1~Sfp10共进行12轮遍历,从而按照各个集合中的数据块之间的相似程度的从高到低的顺序对集合Sfp1~Sfp10中的数据块进行分组。即,优先将具有相同的12个数据特征的数据块对聚合到一个或多个压缩组中,在将上述10个集合中具有相同的12个数据特征的数据块对都分组到压缩组中之后,在各个压缩组中的数据块个数未达到预定个数的情况下,再将具有相同的11个数据特征的数据块对聚合到一个或多个压缩组中,这样保证了最后提供的一个或多个压缩组中的数据块之间具有尽可能高的相似程度,从而在对压缩组中的数据块进行数据压缩时,可提高数据缩减率。
从图4(3)所示的压缩组G1的信息可以看出,压缩组G1中包括的多个数据块之间的关联关系组成了关联关系树,该树的根节点为数据块Bk7,数据块Bk7包括子节点数据块Bk1和数据块Bk9,数据块Bk1具有子节点数据块Bk15。所述关联关系树中包括至少一个逻辑链,该逻辑链并不是数据块之间真实的连接,而只是体现了数据块之间的关联关系。其中,在逻辑链上的两个相邻数据块之间的相似程度达到一定程度,具体是,在逻辑链上的两个相邻数据块具有P个相同的数据特征,P例如可以为1~12中的任一个值。
可以理解,上述生成压缩组的方式仅仅是示意性的,而不用于限制本实施例的范围。在一种实施方式中,为了加快聚合速度,可以首先将具有相同的12-10个数据特征的数据块聚合到压缩组中,然后再将具有相同的9-7个数据特征的数据块聚合到压缩组中等等。
在另一种实施方式中,可对每个压缩组设定相似程度的阈值,例如,对于具有最高相似程度的压缩组,可设定仅将具有相同的至少5个数据特征的数据块聚合到压缩组中,在该实施方式中,如果在一个集合中查找到具有相同的4个数据特征的两个数据块对Bk9和Bk36,由于数据块Bk9与数据块Bk36之间的相似程度没有达到阈值(即5),因此不将数据块Bk36加入压缩组G1中。
以上所描述的生成压缩组的方式为对待压缩的数据块不实时形成压缩组,而是首先将待压缩数据块记录至数据块集合中,等存储系统定期或者在空闲时再形成压缩组,以对待压缩的数据块进行压缩。在本申请实施例中,还提供了另外一种待压缩数据块实时进行压缩的方式,具体如图5所示,图5为本申请实施例提供的对待压缩数据块进行实时分组的过程示意图。CPU123在获取数据块Bk1并且根据数据块Bk1的相似指纹将数据块Bk1归类到与相似指纹Sf1、Sp2和Sfp10对应的三个集合之后,获取三个集合所包括的所有的数据块。之后,CPU123可从该三个集合的所有数据块中找出与所述待压缩数据块具有最多相似特征的数据块(例如数据块Bk7),在确定数据块Bk7未分到其他压缩组的情况中,可以将数据块Bk1与数据块Bk7组合为一个压缩组,在确定数据块Bk7已经分到其他压缩组中的情况中,可将数据块Bk1加入到数据块Bk7所属的压缩组中。
需要说明的是,除了上述两种基于数据特征的数据块聚合方法以外,基于其他相似程度确定方式的数据块聚合方法也包括在本申请实施例的范围内。例如,在一种实施方式中,可通过比较两个数据块的编辑距离确定两个数据块的相似程度,编辑距离表示从一个字符串(对应一个数据块)演变到另一个字符串的最少操作,如果编辑距离越短,那么两个数据块的差异性就越小,相似程度就越高,因此可以用来作为衡量数据块相似程度的方法。在另一种实施方式中,可通过比较数据块的相似性哈希值的汉明距离确定两个数据块的相似程度,相似性哈希值能够以一定概率保存数据块本身的相似性,如果数据块本身的相似性越高,那么相似性哈希值相同的概率就越大,当计算出相似性哈希后,可以比较两个相似性哈希值的汉明距离,距离越短说明数据块的相似性越高,因此也可以用来作为衡量数据块相似程度的方法。在另一种实施方式中,可通过压缩相似数据块的缩减收益确定两个数据块的相似程度,两个数据块共同压缩能够缩减更多数据,说明两者的冗余性越高,也就是相似程度越高。另外,本申请实施例还可以通过聚类算法对数据块进行聚类,从而聚合相似程度较高的多个数据块。
在如上文所述生成一个或多个压缩组中之后,如图3所示,可执行步骤S303,对一个压缩组所包含的多个相似数据块进行压缩。所述压缩组例如为图6中标注“(3)”的圆形中所示的压缩组。通过上文所述的提供压缩组的方法所提供的压缩组中包括相似程度尽可能高的多个数据块,并且最终获取的一个或多个压缩组包括了如图2所示的10个集合中相似程度最高的多个数据块,从而,通过对压缩组中包括的多个数据块进行压缩,可以去除较多的冗余数据,提高数据缩减率。
图6为本申请实施例提供的对压缩组G1中多个数据块进行压缩的过程示意图。如图6所示,可获取上述获取的压缩组G1中的4个数据块Bk7、Bk1、Bk9和Bk15的数据内容,将其拼接在一起形成合并数据块,并对合并数据块整体进行压缩,从而获取压缩数据。其中,在拼接该4个数据块时,可将该4个数据块中按照LBA的大小顺序进行排列,也可以按照各个数据块与其最相似数据块的相似程度的高低排列,也可以按照各个数据块的相似指纹的大小排列,在此不限制。例如,在图6中,将头块Bk7排在首位,数据块Bk1与数据块Bk7的相似程度根据其数据特征可表示为12,数据块Bk9与数据块Bk7的相似程度可表示为12,数据块Bk15与数据块Bk1的相似程度可表示为11,因此,按照各个数据块与其最相似数据块的相似程度的高低,将数据块Bk1和数据块Bk9排列在数据块Bk7之后,将数据块Bk15排列在数据块Bk9之后。在上述将数据块聚合到压缩组G1的过程中,可以实时的对每加入一个数据块都读取当前组G1中所有数据块的数据进行图6所述的压缩过程,也可以设定当组G1中数据块个数满足条件,比如大于4个才读取数据块的数据进行压缩,以减少压缩次数和读取数据次数。
在通过图6所示过程生成压缩数据之后,还生成该压缩数据的元数据。图7示出压缩数据的元数据的示意图。如图7中所示,元数据中包括与数据块Bk7、Bk1、Bk9和Bk15分别对应的压缩信息,例如,在数据块Bk7的压缩信息中包括Offset1和Length1,其中Offset1为数据块Bk7在原始数据中起始偏移地址,Length1为数据块Bk7在原始数据中的长度。可以理解,图7中所示的元数据仅仅是示意性地,其也可能具有其它形式,例如,在压缩组G1中的各个数据块都具有预定大小(例如8KB)的情况中,在元数据中可仅包括数据块Bk7、Bk1、Bk9和Bk15的排列顺序。CPU123在生成如图7所示的压缩数据及其元数据之后,将压缩数据及其元数据存入硬盘134中,该元数据用于对压缩数据解压缩。
图8为本申请实施例提供的另一种对压缩组G1中的多个相似数据块进行压缩的过程示意图。如图8所示,对压缩组G1中的数据块的压缩过程可分为两个阶段,在第一阶段,根据压缩组G1中各个数据块的树状相似关系,对于该树状关系中的任一子节点数据块,以该子节点的父节点数据块作为参考数据块对该子节点进行差量压缩,从而对压缩组中除头块Bk7之外的各个数据块进行差量压缩。具体是,以数据块Bk7为参考数据块分别对数据块Bk1和数据块Bk9进行差量压缩,以数据块Bk1为参考数据块对数据块Bk15进行差量压缩。图9示出对数据块Bk1和数据块Bk15分别进行差量压缩的过程示意图。如图9所示,假设数据块Bk7中包括数据1-3,数据块Bk1中包括数据2-4,数据块Bk15中包括数据3-5。在参考数据块Bk7对数据块Bk1进行差量压缩之后,删除数据块Bk1中的数据2和数据3,并在数据2和数据3的位置分别通过指针指向数据块Bk7中的数据2和数据3,在参考数据块Bk1对数据块Bk15进行差量压缩之后,删除数据块Bk15中的数据3和数据4,并在数据3位置通过指针指向数据块Bk1中的数据3(也即通过数据块Bk1中的指针指向数据块Bk7中的数据3)、在数据4的位置通过指针指向数据块Bk1中的数据4。也就是说,在对数据块Bk1和数据块Bk15分别进行差量压缩之后,数据块Bk1只剩下数据4作为数据块Bk1相对于数据块Bk7的差量数据,数据块Bk15中只剩下数据5作为数据块Bk15相对于数据块Bk1的差量数据。
如图8所示,假设压缩组G1中初始包括的各个数据块分别具有8KB的大小,在进行上述差量压缩之后,数据块Bk1例如被压缩为2KB的数据块Bk1′(即数据块Bk1相对于数据块Bk7的差量数据),数据块Bk9例如被压缩为3KB的数据块Bk9′(即数据块Bk9相对于数据块Bk7的差量数据),数据块Bk15例如被压缩为5KB的数据块Bk15′(即数据块Bk15相对于数据块Bk1的差量数据)。
在第二阶段,可将数据块Bk7、数据块Bk1′、数据块Bk9′和数据块Bk15′合并拼接成合并数据块,然后再对该合并数据块进行整体压缩,获得压缩数据。其中,上述第二阶段的压缩是可选的步骤,如果没有第二阶段的对合并数据块的压缩,通过第一阶段的压缩也可以获得较大的压缩效率。其中,在上述将数据块聚合到压缩组G1的过程中,可以在每加入一个数据块时都实时地进行差量压缩,也可以设定当压缩组G1中数据块个数满足条件,比如大于4个才进行开始进行差量压缩,以减少压缩次数和读取数据次数。
在通过图8所示过程生成压缩数据之后,还生成该压缩数据的元数据。图10示出压缩数据的元数据的示意图。如图10中所示,元数据中包括与数据块Bk7、Bk1、Bk9和Bk15分别对应的压缩信息,例如,在数据块Bk7的压缩信息中包括Offset1和Length1,其中Offset1为数据块Bk7在图8中的合并数据块中的起始偏移地址,Length1为数据块Bk7在合并数据块中的长度;在数据块Bk1的压缩信息中包括Offset2、Length2和Bk7,其中Offset2为数据块Bk1′在图8中的合并数据块中的起始偏移地址,Length1为数据块Bk1′在合并数据块中的长度,该压缩信息中的“Bk7”表示Bk1的参考数据块为数据块Bk7,即Bk1′为数据块Bk1相对于数据块Bk7的差量数据。
图11为本申请实施例提供的又一种对压缩组G1中的多个数据块进行压缩的过程示意图。如图11所示,对于压缩组G1中的除头块之外的各个数据块进行差量压缩,从而获取压缩数据。在图11所示的过程中可以使用多参考的差量压缩方式,即,根据压缩组G1中各个数据块的树状相似关系,可将数据块所在的节点到根节点的全部其他数据块都作为参考数据块对该数据块进行压缩。具体是,例如在对数据块Bk15进行差量压缩时,将数据块Bk7和数据块Bk1都作为数据块Bk15的参考数据块,由于数据块Bk1与数据块Bk7有高相似程度,数据块Bk1与数据块Bk15具有高相似程度,数据块Bk7必然与数据块Bk15也具有较高的相似程度,从而,通过以数据块Bk7和数据块Bk1都作为数据块Bk15的参考数据块进行数据块Bk15的压缩,使得实际的压缩效果优于仅以数据块Bk1作为参考数据块的效果,提高了数据缩减率。
在通过多参考差量压缩生成压缩组G1的压缩数据之后,可生成如图12所示的压缩数据的元数据,与图10所示的元数据不同在于,在数据块Bk15的压缩信息中,在最后一行中包括“Bk7 Bk1”,表示以数据块Bk7和数据块Bk1作为数据块Bk15的参考数据块。
图13为本申请实施例提供的向存储系统写入数据的方法流程图。该方法例如由图1A或图1B中的存储系统120中的控制器0执行,或者可以由图1C中的任一存储节点20的处理器执行。为方便描述,以下主要以图1A中的控制器0执行图13所示方法为例进行说明。
如图13所示,首先,在步骤S1301,接收数据写请求。
主机200在希望向存储系统120写入数据时,可向存储系统120发送数据写请求,该数据写请求中包括待写数据,从而存储系统120可从主机200接收该数据写请求。
在步骤1302,存储系统120在接收到数据写请求之后,CPU123将该写请求的待写数据分割为预定大小的至少一个数据块(其中例如包括数据块Bk1)。
在步骤S1303,CPU123获取待压缩数据块的指纹、相似指纹和多个数据特征。
所述指纹用于确定是否存在与数据块相同的其它数据块,如果两个数据块的指纹相同,则可确定这两个数据块为相同的数据块。所述相似指纹和数据特征如上文所述,在此不再赘述。
在步骤S1304,CPU123确定存储系统中是否已存储与待压缩数据块重复的数据块。
CPU123可在内存或持久性介质中记录已存储到内存124或硬盘134中的数据块的指纹及该指纹对应的数据块的信息,CPU123在计算数据块Bk1的指纹之后,可基于记录的指纹信息,确定所记录的指纹信息中是否包括该指纹,如果包括,则说明存储系统中已经存储了与数据块Bk1相同的数据块,从而CPU123可使得在磁盘134中不存储数据块Bk1中包括的内容,而是通过指针将数据块Bk1指向该指纹信息对应的数据块,也就是说,在磁盘134中对于相同指纹的数据块只需要存储一次原始数据。
如果确定所记录的指纹信息中不包括数据块Bk1的指纹,则表示存储系统中未存储与数据块Bk1重复的数据块,从而,CPU123在内存或持久性介质中记录数据块Bk1的指纹及该指纹对应的数据块Bk1的信息,并执行步骤S1305,将待压缩数据块Bk1分类到与其相似指纹对应的集合中。该步骤可参考上文的描述,在此不再赘述。
之后,CPU123可执行步骤S1306,基于待压缩的数据块Bk1与其所分类的集合中的其他数据块的相似程度,将数据块Bk1分组到压缩组中。如上文参考图3的描述,如果数据块Bk1与其所分类的集合中的其他数据块具有相同的至少M个数据特征,则可以将数据块Bk1分组到压缩组中,并可以执行后续的步骤S1307,其中,M小于等于数据块的全部数据特征的个数,例如12,且大于等于预定的阈值,该阈值可以最小设置为1。如果数据块Bk1不能满足上述条件,则对数据块Bk1进行单独压缩。
在步骤S1307,CPU123对压缩组中的多个数据块进行压缩,得到压缩数据并写入压缩数据。
该步骤的压缩过程可以参考上文对图3中步骤S303的描述,在此不再赘述。
在得到压缩组对应的压缩数据之后,CPU123可将压缩数据暂存在内存124中,并在内存空间124中的数据总量达到一定阈值时,CPU123将内存124中存储的压缩数据发送给控制单元131,以持久化存储到硬盘134中,或者CPU123可在获取压缩数据之后立即将该压缩数据写入到硬盘134中。在图1B所示的存储系统中,CPU123在得到压缩数据之后,可直接将该压缩数据写入到硬盘134中。
在图1C所示的分布式存储系统中,主机200在需要对存储系统写入数据时,根据数据与存储节点的对应关系,将数据写请求发送给相应的存储节点(例如存储节点20a),从而存储节点20a可执行图13所示的方法,并在得到压缩数据之后将压缩数据写入本地或者其他存储节点的硬盘中。
图14为本申请实施例提供的从存储系统读取数据的方法流程图,所述方法例如由图1A或图1B中的存储系统120的控制器0执行,或者可由图1C中的任一存储节点20的处理器执行。为方便描述,以下主要以图1A中的控制器0执行图14所示方法为例进行说明。
参考图14,在步骤S1401,接收数据读请求。
存储系统120可从主机200接收数据读请求,该数据读请求中例如包括待读取数据的地址。其中,如果该读取数据可对应于一个或多个待读取数据块,从而该待读取数据的地址可以对应于所述一个或多个待读取数据块所对应的压缩数据的存储地址。
在步骤S1402,CPU123从磁盘134读取待读取数据块对应的压缩数据及其元数据。
当存储系统120从主机200接收到对例如数据块Bk15的读请求之后,CPU123可将该读请求发送给控制单元131,从而控制单元131根据该读请求中的读取地址,从硬盘134中读取与数据块Bk15对应的压缩数据及其元数据,并将其发送给CPU123。在图1B所示的存储系统120中,CPU123可根据接收的读请求,直接从硬盘134读取数据。
在步骤S1403,CPU123基于元数据对压缩数据解压缩,得到待读取数据块。
在一种实施方式中,所述元数据为图7所示的元数据,CPU123在获取压缩数据及其元数据之后,首先对压缩数据解压缩,获取图6中的合并数据块,并根据元数据中记录的数据块Bk15的Offset4和Length4,从合并数据块中得到待读取的数据块Bk15。
在另一种实施方式中,所述元数据为如图10所示的元数据。CPU123在获取压缩数据及其元数据之后,首先对压缩数据解压缩,获取图8中的合并数据块,根据元数据从合并数据块中首先获取Offest1、Length1的数据Bk7和Offest2、Length2的数据Bk1′,以数据块Bk7作为参考数据块,以数据Bk1′作为差量数据恢复出数据块Bk1,然后从合并数据块中获取Offest4、Length4的数据Bk15′,以数据块Bk1作为参考数据块,以数据Bk15′作为差量数据恢复出数据块Bk15。
在又一种实施方式中,所述元数据为如图12所示的元数据。CPU123在获取压缩数据及其元数据之后,首先从压缩数据中获取Offest1、Length1的数据Bk7和Offest2、Length2的数据Bk1′,以数据块Bk7作为参考数据块,以数据Bk1′作为差量数据恢复出数据块Bk1,然后从合并数据块中获取Offest4、Length4的数据Bk15′,以数据块Bk7和Bk1作为参考数据块,以数据Bk15′作为差量数据恢复出数据块Bk15。
在步骤S1404,在得到待读取的数据块Bk15之后,存储系统120通过CPU123向主机200返回待读取的数据块Bk15。
在图1C所示的分布式存储系统中,主机200可根据数据与存储节点的对应关系将数据读请求发送给存储待读取数据的存储节点(例如存储节点20a),从而存储节点20a中的处理器可执行图14所示的方法,并在得到待读数据之后将待读数据返回给主机200。
图15为本申请实施例提供的一种数据压缩装置的架构图,所述数据压缩装置用于执行图3所示方法,所述数据压缩装置包括:
提供单元151,用于执行图3所示数据压缩方法中的步骤S301,提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;
分组单元152,用于执行图3所示数据压缩方法中的步骤S302,基于各个数据块集合包含的多个数据块之间的相似程度生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;
压缩单元153,用于执行图3所示数据压缩方法中的步骤S303,对所述一个压缩组所包含的多个相似数据块进行压缩。
在一种可能的实现方式中,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件包括:至少有两个相似数据块的所述N个数据特征有M个数据特征完全相同,M小于或等于N,所述压缩组中的所述多个相似数据块之间有关联关系。
在一种可能的实现方式中,所述相似条件还包括:M大于一定阈值。
在一种可能的实现方式中,所述压缩组中的多个相似数据块形成一个逻辑链,所述关联关系为所述逻辑链上的两个相邻的相似数据块具有P个相同的数据特征,P大于等于M并且小于等于N。
在一种可能的实现方式中,所述多个相似数据块的数量为X个,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件为根据所述N个数据特征从所述一个或多个数据块集合中选择相似程度最高的X个数据块,所述X是大于或等于2的整数。
在一种可能的实现方式中,所述数据压缩装置还包括:计算单元,用于计算待压缩数据块的相似指纹;记录单元,用于将所述待压缩数据块记录至与所述待压缩数据块具有相同的相似指纹的数据块对应的第一数据块集合中,所述第一数据块集合为所述一个或多个数据块集合中的一个;确定单元,用于从所述第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块;及确定包括所述目标数据块的第一压缩组;加入单元,用于将所述待压缩数据块加入所述第一压缩组。
在一种可能的实现方式中,所述压缩单元153具体用于:将所述多个相似数据块合并为合并数据块;对所述合并数据块进行压缩得到压缩数据。
在一种可能的实现方式中,所述压缩单元153还具体用于,生成所述压缩数据的元数据,所述元数据包括所述多个相似数据块在所述合并数据块中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
在一种可能的实现方式中,所述压缩单元153具体用于:从所述多个相似数据块中选择参考数据块;根据所述参考数据块对所述多个相似数据块中的其他相似数据块进行差量压缩得到压缩数据。
在一种可能的实现方式中,所述压缩单元153还具体用于,生成所述压缩数据的元数据,所述元数据中包括在进行差量压缩时的参考数据块信息、及各个相似数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
本申请实施例还提供一种存储设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现如图3、图14和图15所示的方法。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机或处理器中执行时,令所述计算机或处理器执行如图3、图14和图15所示的方法。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机或处理器中运行时,使得所述计算机或处理器执行如图3、图14和图15所示的方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域的技术人员可以清楚地了解到,本申请提供的各实施例的描述可以相互参照,为描述的方便和简洁,例如关于本申请实施例提供的各装置、设备的功能以及执行的步骤可以参照本申请方法实施例的相关描述,各方法实施例之间、各装置实施例之间也可以互相参照。
本领域技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的全部或部分步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储系统。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的范围内,可以通过其他的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
另外,所描述装置和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电子、机械或其它的形式。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (23)
1.一种数据压缩方法,其特征在于,包括:
提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;
基于各个数据块集合包含的多个数据块之间的相似程度生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;
对所述一个压缩组所包含的多个相似数据块进行压缩。
2.根据权利要求1所述的方法,其特征在于,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件包括:至少有两个相似数据块的所述N个数据特征有M个数据特征完全相同,M小于或等于N,所述压缩组中的所述多个相似数据块之间有关联关系。
3.根据权利要求2所述的方法,其特征在于,所述相似条件还包括:M大于一定阈值。
4.根据权利要求2所述的方法,其特征在于,所述压缩组中的多个相似数据块形成一个逻辑链,所述关联关系为所述逻辑链上的两个相邻的相似数据块具有P个相同的数据特征,P大于或等于M、并且小于或等于N。
5.根据权利要求1所述的方法,其特征在于,所述多个相似数据块的数量为X个,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件为根据所述N个数据特征从所述一个或多个数据块集合中选择相似程度最高的X个数据块,所述X是大于或等于2的整数。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
计算待压缩数据块的相似指纹;
将所述待压缩数据块记录至与所述待压缩数据块具有相同的相似指纹的数据块对应的第一数据块集合中,所述第一数据块集合为所述一个或多个数据块集合中的一个;
从所述第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块;
确定包括所述目标数据块的第一压缩组,将所述待压缩数据块加入所述第一压缩组。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述对所述一个压缩组所包含的多个相似数据块进行压缩包括:
将所述多个相似数据块合并为合并数据块;
对所述合并数据块进行压缩得到压缩数据。
8.根据权利要求7所述的方法,其特征在于,还包括,生成所述压缩数据的元数据,所述元数据包括所述多个相似数据块在所述合并数据块中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
9.根据权利要求1-6任一项所述的方法,其特征在于,所述对所述一个压缩组所包含的多个相似数据块进行压缩包括:
从所述多个相似数据块中选择参考数据块;
根据所述参考数据块对所述多个相似数据块中的其他相似数据块进行差量压缩得到压缩数据。
10.根据权利要求9所述的方法,其特征在于,还包括,生成所述压缩数据的元数据,所述元数据中包括在进行差量压缩时的参考数据块信息、及各个相似数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
11.一种数据压缩装置,其特征在于,包括:
提供单元,用于提供一个或多个数据块集合,每个数据块集合包含多个具有相同的相似指纹的数据块;
分组单元,用于基于各个数据块集合包含的多个数据块之间的相似程度生成一个或多个压缩组,一个压缩组包括多个相似数据块,所述多个相似数据块是一个或多个数据块集合所包含的数据块的子集,并且所述多个相似数据块之间的相似程度满足一定的相似条件;
压缩单元,用于对所述一个压缩组所包含的多个相似数据块进行压缩。
12.根据权利要求11所述的装置,其特征在于,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件包括:至少有两个相似数据块的所述N个数据特征有M个数据特征完全相同,M小于或等于N,所述压缩组中的所述多个相似数据块之间有关联关系。
13.根据权利要求12所述的装置,其特征在于,所述相似条件还包括:M大于一定阈值。
14.根据权利要求12所述的装置,其特征在于,所述压缩组中的多个相似数据块形成一个逻辑链,所述关联关系为所述逻辑链上的两个相邻的相似数据块具有P个相同的数据特征,P大于或等于M、并且小于或等于N。
15.根据权利要求11所述的装置,其特征在于,所述多个相似数据块的数量为X个,每个相似数据块具有N个数据特征,所述N个数据特征用于从N个维度描述一个数据块;所述相似条件为根据所述N个数据特征从所述一个或多个数据块集合中选择相似程度最高的X个数据块,所述X是大于或等于2的整数。
16.根据权利要求11-15任意一项所述的装置,其特征在于,所述装置还包括:
计算单元,用于计算待压缩数据块的相似指纹;
记录单元,用于将所述待压缩数据块记录至与所述待压缩数据块具有相同的相似指纹的数据块对应的第一数据块集合中,所述第一数据块集合为所述一个或多个数据块集合中的一个;
确定单元,用于从所述第一数据块集合中确定与所述待压缩数据块具有最多相同数据特征的目标数据块;及确定包括所述目标数据块的第一压缩组;
加入单元,用于将所述待压缩数据块加入所述第一压缩组。
17.根据权利要求11-16任一项所述的装置,其特征在于,所述压缩单元具体用于:
将所述多个相似数据块合并为合并数据块;
对所述合并数据块进行压缩得到压缩数据。
18.根据权利要求17所述的装置,其特征在于,所述压缩单元还具体用于,生成所述压缩数据的元数据,所述元数据包括所述多个相似数据块在所述合并数据块中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
19.根据权利要求11-16任一项所述的装置,其特征在于,所述压缩单元具体用于:
从所述多个相似数据块中选择参考数据块;
根据所述参考数据块对所述多个相似数据块中的其他相似数据块进行差量压缩得到压缩数据。
20.根据权利要求19所述的装置,其特征在于,所述压缩单元还具体用于,生成所述压缩数据的元数据,所述元数据中包括在进行差量压缩时的参考数据块信息、及各个相似数据块在进行差量压缩之后得到的数据在所述压缩数据中的位置信息,所述元数据用于对所述压缩数据进行解压缩。
21.一种存储设备,其特征在于,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现权利要求1-10任意一项所述的方法。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机或处理器中执行时,令所述计算机或处理器执行权利要求1-10中任一项的所述的方法。
23.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机或处理器中运行时,使得所述计算机或处理器执行如权利要求1-10任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343632.8A CN115145884A (zh) | 2021-03-30 | 2021-03-30 | 一种数据压缩方法及装置 |
PCT/CN2022/080171 WO2022206334A1 (zh) | 2021-03-30 | 2022-03-10 | 一种数据压缩方法及装置 |
EP22778518.5A EP4290391A4 (en) | 2021-03-30 | 2022-03-10 | DATA COMPRESSION METHOD AND APPARATUS |
US18/475,849 US20240020005A1 (en) | 2021-03-30 | 2023-09-27 | Data Compression Method and Apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110343632.8A CN115145884A (zh) | 2021-03-30 | 2021-03-30 | 一种数据压缩方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115145884A true CN115145884A (zh) | 2022-10-04 |
Family
ID=83404164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110343632.8A Pending CN115145884A (zh) | 2021-03-30 | 2021-03-30 | 一种数据压缩方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240020005A1 (zh) |
EP (1) | EP4290391A4 (zh) |
CN (1) | CN115145884A (zh) |
WO (1) | WO2022206334A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10498356B2 (en) * | 2011-09-13 | 2019-12-03 | Exagrid Systems, Inc. | Systems and methods for version chain clustering |
CN102831222B (zh) * | 2012-08-24 | 2014-12-31 | 华中科技大学 | 一种基于重复数据删除的差量压缩方法 |
CN105204781B (zh) * | 2015-09-28 | 2019-04-12 | 华为技术有限公司 | 压缩方法、装置和设备 |
CN109716658B (zh) * | 2016-12-15 | 2021-08-20 | 华为技术有限公司 | 一种基于相似性的重复数据删除方法和系统 |
CN107391306B (zh) * | 2017-07-27 | 2019-12-10 | 国家电网公司 | 一种异构数据库备份文件恢复方法 |
CN107682016B (zh) * | 2017-09-26 | 2021-09-17 | 深信服科技股份有限公司 | 一种数据压缩方法、数据解压方法及相关系统 |
CN112099725A (zh) * | 2019-06-17 | 2020-12-18 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN112544038B (zh) * | 2019-07-22 | 2024-07-05 | 华为技术有限公司 | 存储系统数据压缩的方法、装置、设备及可读存储介质 |
-
2021
- 2021-03-30 CN CN202110343632.8A patent/CN115145884A/zh active Pending
-
2022
- 2022-03-10 EP EP22778518.5A patent/EP4290391A4/en active Pending
- 2022-03-10 WO PCT/CN2022/080171 patent/WO2022206334A1/zh active Application Filing
-
2023
- 2023-09-27 US US18/475,849 patent/US20240020005A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240020005A1 (en) | 2024-01-18 |
EP4290391A1 (en) | 2023-12-13 |
EP4290391A4 (en) | 2024-07-31 |
WO2022206334A1 (zh) | 2022-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303797B1 (en) | Clustering files in deduplication systems | |
US8949208B1 (en) | System and method for bulk data movement between storage tiers | |
US8943032B1 (en) | System and method for data migration using hybrid modes | |
US9715434B1 (en) | System and method for estimating storage space needed to store data migrated from a source storage to a target storage | |
US8712963B1 (en) | Method and apparatus for content-aware resizing of data chunks for replication | |
US8639669B1 (en) | Method and apparatus for determining optimal chunk sizes of a deduplicated storage system | |
US10353867B1 (en) | Method and system for verifying files for garbage collection | |
US10838923B1 (en) | Poor deduplication identification | |
US10437682B1 (en) | Efficient resource utilization for cross-site deduplication | |
WO2017096532A1 (zh) | 一种数据保存方法和装置 | |
US9690501B1 (en) | Method and system for determining data profiles using block-based methodology | |
US10459648B1 (en) | Change rate estimation | |
JP2016511478A (ja) | データ重複排除における、類似性探索に基づくダイジェスト検索 | |
CN110908589A (zh) | 数据文件的处理方法、装置、系统和存储介质 | |
US11663166B2 (en) | Post-processing global deduplication algorithm for scaled-out deduplication file system | |
US11232043B2 (en) | Mapping virtual block addresses to portions of a logical address space that point to the virtual block addresses | |
US11593312B2 (en) | File layer to block layer communication for selective data reduction | |
US10223377B1 (en) | Efficiently seeding small files with certain localities | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
WO2021082928A1 (zh) | 数据缩减的方法、装置、计算设备和存储介质 | |
KR20220049329A (ko) | 스토리지 컨트롤러, 스토리지 장치, 및 스토리지 장치의 동작 방법 | |
WO2023050856A1 (zh) | 数据处理方法及存储系统 | |
WO2022237245A1 (zh) | 一种数据处理方法及装置 | |
WO2022206334A1 (zh) | 一种数据压缩方法及装置 | |
CN115438039A (zh) | 存储系统的数据索引结构的调整方法和装置 |
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 |