CN110377226A - 基于存储引擎bluestore的压缩方法、装置及存储介质 - Google Patents
基于存储引擎bluestore的压缩方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110377226A CN110377226A CN201910496836.8A CN201910496836A CN110377226A CN 110377226 A CN110377226 A CN 110377226A CN 201910496836 A CN201910496836 A CN 201910496836A CN 110377226 A CN110377226 A CN 110377226A
- Authority
- CN
- China
- Prior art keywords
- data
- fritter
- write
- bulk
- writes
- 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.)
- Granted
Links
Classifications
-
- 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
- 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/061—Improving I/O performance
-
- 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/0614—Improving the reliability of storage systems
-
- 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/0643—Management of files
-
- 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]
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明属于云存储的技术领域,提供一种基于存储引擎bluestore的压缩方法、装置及存储介质,其中的方法包括以下步骤:S110、将IO数据分为大块写数据和小块写数据;其中,所述大块写数据与最小分配单位对齐,所述小块写数据与最小分配单位不对齐;S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;S130、对大块写数据进行压缩。利用本发明,系统的压缩率不会因为写覆盖以后降低,为存储系统提供稳定的压缩率。
Description
技术领域
本发明涉及云存储领域,更为具体地,涉及一种基于存储引擎bluestore的压缩方法、装置及计算机可读存储介质。
背景技术
随着社会的进步和技术的发展,在云存储技术领域,分布式文件系统的应用越来越广泛。分布式文件系统(ceph)在jewel版本引入新的存储引擎bluestore,并为其提供了压缩功能。
其中,存储引擎bluestore根据数据是否按min_alloc_size(即最小分配单位)对齐,将IO(输入/输出Input/Output),分为大块写(do_write_big)和小块写(do_write_small);对齐的大块写lextent是min_alloc_size的整数倍,压缩时将整块压缩然后下盘,能有较高的压缩率;如果是覆盖写,写入以后将原来对应的整个lextent回收。但是在覆盖写特别是小块覆盖写以后,压缩率降低非常厉害,多次小块覆盖写以后的压缩率几乎降到了5%以下,这是由存储引擎bluestore的设计缺陷引起的。
导致压缩率降低的原因如下:1、针对未对齐的小块写,在覆盖写的时候生成新的blob通过wal下盘,然后被覆盖的部分通过gc回收,而未覆盖的blob无法被压缩;2、另外在回收的时候,将原来的lextent拆分成3个部分(未覆盖的头、尾部分和被覆盖的中间部分,称为pouch_hole),这样打洞以后lextent拆分形成的小于设定的min_alloc_size的部分将无法被压缩;以至于在多次覆盖写以后,原来压缩的数据都将变为非压缩状态;3、存储引擎bluestore以min_alloc_size为最小物理块申请单位,导致压缩后即使需要的物理空间小于min_alloc_size,也会使用min_alloc_size大小的物理空间;4、在申请物理空间时,压缩状态下blob中存在未使用块没法复用的问题。
所以,亟需一种不影响或者尽量降低影响原有压缩性能的情况下提高分布式文件系统的存储引擎bluestore的压缩率的方法。
发明内容
鉴于上述问题,本发明的目的是提供一种基于存储引擎bluestore的压缩方法、装置及计算机可读存储介质,用保证存储系统的压缩率稳定。
根据本发明的一个方面,提供了一种基于存储引擎bluestore的压缩方法,包括以下步骤:S110、将IO数据分为大块写数据和小块写数据;其中,所述大块写数据与最小分配单位对齐,所述小块写数据与最小分配单位不对齐;S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;S130、对大块写数据进行压缩。
在步骤S110之前,所述的压缩方法还包括:将所述最小分配单位设置为一个物理块block_size=4k。所述预设长度值根据数据源块的大小和所需的压缩率进行设定。
进一步的,优选的方法,所述步骤S120包括:S210、读出小块写数据以及所述小块写数据所在的lextent数据;S220、将所述小块写数据与所述小块写数据所在的lextent数据做归并操作;S230、对归并操作后的数据,进行补零操作形成大块写数据。若步骤S220中的小块写数据命中了两个lextent数据,则执行如下步骤:S310、读出小块写数据以及所述小块写数据所在的两个lextent数据;S320、将所述小块写数据与所述小块写数据所在的两个lextent数据做归并操作;S330、对归并操作后的数据,进行补零操作形成大块写数据。
一种电子装置,包括:存储器、处理器以及存储在存储器中并可在处理器上运行的基于存储引擎bluestore的压缩程序,所述压缩程序被所述处理器执行时实现如下步骤:
S110、将IO数据分为大块写数据和小块写数据;其中,所述大块写数据与最小分配单位对齐,所述小块写数据与最小分配单位不对齐;S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;S130、对大块写数据进行压缩。在步骤S110之前,压缩程序被所述处理器执行时实现的步骤还包括:将所述最小分配单位设置为一个物理块block_size=4k。所述预设长度值根据数据源块的大小和所需的压缩率进行设定。
进一步的,优选的装置为,所述步骤S120包括:S210、读出小块写数据以及所述小块写数据所在的lextent数据;S220、将所述小块写数据与所述小块写数据所在的lextent数据做归并操作;S230、对归并操作后的数据,进行补零操作形成大块写数据。
一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序包括用于基于存储引擎bluestore的压缩程序,所述计算机程序被处理器执行时实现上述的基于存储引擎bluestore的压缩方法中的步骤。
利用上述根据本发明的基于存储引擎bluestore的压缩方法、装置和存储介质,有益效果如下:
1、通过将lextent和blob的大小设定为相同值并且将最小分配单位设置为一个物理块block_size=4k,以使blob中所有物理块为已使用状态,省去了查找可复用blob的步骤,按需分配物理空间,从而可以节约计算资源;
2、将小块写数据补零对齐成大块写,然后进行压缩下盘,减少写wal下盘的步骤,节省CPU资源,提高写效率;
3、通过将最小分配单位设置为一个物理块block_size=4k,以使blob中所有物理块为已使用状态,省去了查找可复用blob的步骤,优化数据处理逻辑,使代码逻辑更简洁易读易维护;
4、系统的压缩率不会因为写覆盖以后降低,为存储系统提供稳定的压缩率。
为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
附图说明
图1示出了根据本发明实施例的基于存储引擎bluestore的压缩方法的流程图;以及
图2示出了根据本发明实施例的针对小块写数据未覆盖部分的压缩流程;
图3示出了根据本发明实施例的电子装置的逻辑结构示意图。
在所有附图中相同的标号指示相似或相应的特征或功能。
具体实施方式
在下面的描述中,出于说明的目的,为了提供对一个或多个实施例的全面理解,阐述了许多具体细节。然而,很明显,也可以在没有这些具体细节的情况下实现这些实施例。在其它例子中,为了便于描述一个或多个实施例,公知的结构和设备以方框图的形式示出。
本发明通过将lextent和blob大小设定为相同值,将申请物理块单位设定为以block size=4k为最小粒度,以及对小块覆盖写进行归并补零对齐,然后进行压缩下盘。本发明通过上述方案能够解决两个问题:其一,实现所有IO均可进行压缩;其二,lextent与blob在非共享状态下为一对一的关系,以实现所有的IO进来后都可以压缩,也就是说,使得一个blob中所有物理块均为已使用状态。
以下将结合附图对本发明的具体实施例进行详细描述。
实施例1
图1示出了根据本发明的基于存储引擎bluestore的压缩方法的流程。
如图1所示,本发明提供的基于存储引擎bluestore的压缩方法,可以包括如下步骤S110-S130:
S110、将IO数据分为大块写数据和小块写数据。其中,大块写数据将与最小分配单位对齐的IO数据定义为大块写数据;小块写数据将没有与最小分配单位对齐的IO数据定义为小块写数据。
ceph后端支持多种存储引擎,以插件式的方式来进行管理使用;本发明涉及的是存储引擎bluestore;在bluestore里,已经没有传统的文件系统,而是自己管理裸盘,因此需要有元数据来管理对象,对应的就是Onode(onode是bluestore中的元数据形式,由于bluestore直接写裸盘,因此需要onode来管理对象),Onode是常驻内存的数据结构,持久化的时候会以kv的形式存到rocksdb(RocksDB是一个嵌入式键值存储器,其中键和值是任意的字节流)里。在onode里又分为lextent(表示逻辑的数据块),用一个map来记录;一个onode里会存在多个lextent,lextent通过blob(binary large object,二进制大对象,是一个可以存储二进制文件的容器)的id对应到blob(bluestore_blob_t),blob里通过pextent(pextent里就是offset和length来定位物理盘的位置区域)对应到实际物理盘上的区域。一个onode里的多个lextent可能在同一个blob里,而一个blob也可能对应到多个pextent。
到达bluestore的I/O的offset和length都是对象内(onode)的,offset是相对于这个对象起始位置的偏移,在_do_write里首先就会根据最小分配单位min_alloc_size进行判断,从而将I/O分为对齐和非对齐的。因此,在本发明中,存储引擎bluestore根据数据是否按min_alloc_size对齐,将IO分为大块写数据和小块写数据,其中,大块写数据对应到do_write_big,为与最小分配单位对齐的IO数据;小块写数据对应到do_write_small,为没有与最小分配单位对齐的IO数据。
S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;
现有技术中存在压缩率丢失问题,以ssd(Solid State Disk)固态硬盘为例,物理块大小(block_size)是4k,一次至少申请4个物理块。比如,min_alloc_size=16k,有一个20k对齐的大IO,压缩后剩余4k,实际物理占用却还是16k,大大降低了压缩率。也就是说,如果压缩前的数据源大于min_alloc_size,则是可以压缩的,但压缩后最小的物理分配单元是min_alloc_size,所以尽管是压缩了,但占用空间还是min_alloc_size那么大;照理说压缩率等于80%,相当于压缩率只有20%。
为了解决上述压缩率丢失问题,根据大块写数据和小块写数据的大小生成lextent和blob,将生成的lextent和blob的大小设定为同一预设长度值,该预设长度值大于最小分配单位。
其中,改进后min_alloc_size=block_size=4k。lextent和blob的大小是压缩前源数据分块的大小,所以必须大于min_alloc_size,这样才有压缩的意义。
进一步的,上述预设长度值根据数据源块的大小和所需的压缩率进行设定。
一般情况下,数据源块(需要压缩的数据块的统称)的大小越大,重复数据越多,压缩率越高,但rmw(read-merge-write)覆盖写的代价越大,因为需要读更大的块再合并再压缩写,存在读写放大的问题,影响性能。所以需要根据数据源块的情况和应用场景设定一个相对合理的值。
在mysql的数据库场景,经测试,16k的源块压缩后大多数情况下只有4-8k,压缩率和性能可以得到相对平衡。如果是在大块读写的场景,可以将源块设置得更大一些以提高压缩率,以解决写入块小于min_alloc_size时无法进行压缩的问题。
S130、对大块写数据进行压缩。
也就是说,对小块写数据执行rmw(read-merge-write)覆盖写,读出当前写IO所对应的blob,与当前的IO做归并操作,然后前后补0对齐转换成大块写,对整个blob压缩下盘。
需要说明的是,覆盖写的时候,先读出被覆盖数据所在extent的整块数据,然后与本次要覆盖的数据做合并,合并完以后再将整个extent重新写入。也就是说,为了能够尽可能提高压缩率,需要先把不对齐的部分读出来,拼成一个对齐的buffer(缓冲区buffer是暂时存放输入输出数据的一段内存),然后新生成lextent。
为了实现所有的IO均可被压缩,所有的物理块均为已使用状态,本发明中,将最小分配单位设置为一个物理块,即最小分配单位为block_size=4k。
示例性说明如下:现有技术中是按照最小分配单位min_alloc_size为最小分配单元,比如16k(即4个物理块)为一个分配单元,也就是说每次申请物理空间,最小申请4个物理块;即使一次写入只有4k,也申请16k,没用完的部分在blob中进行标记,下次写IO进来以后再去查找有没有blob中还有未使用的空间,如果有,就复用这个blob。这样做的目的是减少物理空间分配的频率,但增加了逻辑复杂性,而且上面的blob复用逻辑只对没有启用压缩的情况适用,在原有设计中,对压缩的情况是不能复用blob的,这样多申请的物理空间得不到利用。而本发明中,将最小粒度设为4k,则每次申请物理空间,最小申请为1个物理块,从而使所有物理块均为已使用状态,无需再考虑未使用块无法复用的问题,保障了所申请的物理空间的利用率。
也就是说,在打完快照后,一个blob就会被源卷和快照卷的extent同时引用,也即blob跟lextent是一对多的关系。而使得lextent与blob在非共享状态(没有打快照)下就是一对一的关系,解决了压缩状态下blob中未使用块无法复用的问题,实现了按需分配物理空间,从而节省了CPU计算资源。
综上所述,本发明通过以最小分配单位为标准将IO数据分类,并对小于最小分配单位的小块写数据进行归并和补零处理,使其变成可压缩的大块写数据;进一步,为了使blob中所有物理块为已使用状态,将最小分配单位设置为一个物理块,即最小分配单位为block_size=4k;实现了按需分配物理空间,省去了查找可复用blob的步骤,从而可以节约计算资源;实现了优化数据处理逻辑,使代码逻辑更简洁易读易维护;并且使得系统的压缩率不会因为写覆盖以后降低,为存储系统提供稳定的压缩率。
图2示出了根据本发明实施例的针对小块写未覆盖部分的压缩方法的流程。
如图2所示,针对小块写未覆盖部分的压缩可以包括如下步骤S210-S230:
S210、读出小块写数据以及小块写数据所在的lextent数据;示例性的说明如下,一次覆盖写的offset是20k,length是5k,就是要写20k-25k这段位置的数据,其命中的已有lextent是16k-32k。
S220、将小块写数据与小块写数据所在的lextent数据做归并操作;示例性的说明如下,读出整个16k-32k的lextent的数据;将未被修改的数据头部分(16k-20k)的数据放入buffer;将新写入的数据(20k-25k,这部分是被覆盖的数据)追加到上面的buffer;将未修改的数据末尾部分(25k-32k)的数据追加到上面的buffer。
S230、对归并操作后的数据,进行补零操作形成大块写数据。示例性的说明如下,将上述buffer进行补零操作,将整个buffer数据对齐到min_alloc_size的整数倍。最后,将整个buffer数据压缩后再写入磁盘。
也就是说,对小块覆盖写执行rmw(read-merge-write),读出当前写IO所对应的blob,与当前的IO做归并操作,然后对于没补齐的修改数据进行补零操作,将其对齐到min_alloc_size的整数倍,然后对整个blob压缩。
另,如果一次写入命中了两个extent,则需要读出对两个extent做rmw,如:逻辑数据按16k分块,本次写入位置是25k-20k,则命中了0-16k和16k-32k这两个extent,所以需要将两个extent读出来做合并然后再压缩下盘。
也就是说,覆盖写的时候,先读出被覆盖数据所在extent的整块数据,然后与本次要覆盖的数据做合并,合并完以后再将整个extent重新写入。对于补零对齐形成大块写数据后,不会再写wal,从而节省了CPU计算资源。
实施例2
与上述基于存储引擎bluestore的压缩方法相对应,本发明还提供一种基于存储引擎bluestore的压缩系统,包括如下图所示的结构:
基于存储引擎bluestore的压缩系统包括IO数据分类单元、小块写归并补零单元和数据源块设定单元;其中,IO数据分类单元用于利用存储引擎bluestore将IO数据分为大块写数据和小块写数据;小块写归并补零单元,用于对小块写数据,进行归并补零形成大块写数据;
数据源块设定单元,用于将lextent和blob的大小设定为同一预设长度值,并最小分配单位设置为一个物理块block_size=4k,此预设长度值大于min_alloc_size。
IO数据分类单元、小块写归并补零单元、数据源块设定单元执行上述基于存储引擎bluestore的压缩方法中的步骤,在此不再赘述。总之,本发明设置了IO数据分类单元、小块写归并补零单元和数据源块设定单元,通过小块写数据归并补零形成大块写数据,并将lextent和blob的大小设定为同一预设长度值,以及将最小分配单位设置为一个物理块block_size=4k,实现了按需分配物理空间,省去了查找可复用blob的步骤,从而可以节约计算资源;实现了优化数据处理逻辑,使代码逻辑更简洁易读易维护;并且使得系统的压缩率不会因为写覆盖以后降低,为存储系统提供稳定的压缩率。
实施例3
图3示出了根据本发明实施例的基于存储引擎bluestore的压缩方法的电子装置的逻辑结构。
如图3所示,该实施例的电子装置30包括处理器31、存储器32以及存储在存储器32中并可在处理器31上运行的计算机程序33。处理器31执行计算机程序33时实现实施例1中基于存储引擎bluestore的压缩方法的各个步骤,例如图1所示的步骤S110至S130。或者,处理器31执行基于存储引擎bluestore的压缩方法时实现上述各装置实施例中各模块/单元的功能,如IO数据分类单元、小块写归并补零单元、数据源块设定单元的功能。
示例性的,
计算机程序33可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器32中,并由处理器31执行,以完成本发明。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序33在电子装置30中的执行过程。例如,计算机程序33可以被分割成IO数据分类单元、小块写归并补零单元、数据源块设定单元,其功能作用在上述实施例中有详细描述,在此不一一赘述。
电子装置30可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。电子装置30可包括,但不仅限于,处理器31、存储器32。本领域技术人员可以理解,图3仅仅是电子装置30的示例,并不构成对电子装置30的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如电子装置还可以包括输入输出设备、网络接入设备、总线等。
所称处理器31可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器32可以是电子装置30的内部存储单元,例如电子装置30的硬盘或内存。存储器32也可以是电子装置30的外部存储设备,例如电子装置30上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器32还可以既包括电子装置30的内部存储单元也包括外部存储设备。存储器32用于存储计算机程序以及电子设备所需的其他程序和数据。存储器32还可以用于暂时地存储已经输出或者将要输出的数据。
在一个具体实施例中,提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现实施例1中基于存储引擎bluestore的压缩方法,步骤如下:
将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;在步骤S110之前,该压缩方法还包括:将最小分配单位设置为一个物理块block_size=4k。预设长度值根据数据源块的大小和所需的压缩率进行设定。
或者,该计算机程序被处理器执行时实现基于存储引擎bluestore的压缩系统中IO数据分类单元、小块写归并补零单元、数据源块设定单元的功能,为避免重复,这里不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置、方法及计算机可读存储介质,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
如上参照图1-图3以示例的方式描述根据本发明的基于存储引擎bluestore的压缩方法、装置和存储介质。但是,本领域技术人员应当理解,对于上述本发明所提出的基于存储引擎bluestore的压缩方法、电子装置及存储介质,还可以在不脱离本发明内容的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
Claims (10)
1.一种基于存储引擎bluestore的压缩方法,其特征在于,包括以下步骤:
S110、将IO数据分为大块写数据和小块写数据;其中,所述大块写数据与最小分配单位对齐,所述小块写数据与最小分配单位不对齐;
S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;
S130、对大块写数据进行压缩。
2.如权利要求1所述的基于存储引擎bluestore的压缩方法,其特征在于,在步骤S110之前,所述的压缩方法还包括:
将所述最小分配单位设置为一个物理块block_size=4k。
3.如权利要求1所述的基于存储引擎bluestore的压缩方法,其特征在于,所述步骤S120包括:
S210、读出小块写数据以及所述小块写数据所在的lextent数据;
S220、将所述小块写数据与所述小块写数据所在的lextent数据做归并操作;
S230、对归并操作后的数据,进行补零操作形成大块写数据。
4.如权利要求3所述的基于存储引擎bluestore的压缩方法,其特征在于,若步骤S220中的所述小块写数据命中了两个lextent数据,则执行如下步骤:
S310、读出小块写数据以及所述小块写数据所在的两个lextent数据;
S320、将所述小块写数据与所述小块写数据所在的两个lextent数据做归并操作;
S330、对归并操作后的数据,进行补零操作形成大块写数据。
5.如权利要求1所述的基于存储引擎bluestore的压缩方法,其特征在于,
所述预设长度值根据数据源块的大小和所需的压缩率进行设定。
6.一种电子装置,其特征在于包括:存储器、处理器以及存储在存储器中并可在处理器上运行的基于存储引擎bluestore的压缩程序,所述压缩程序被所述处理器执行时实现如下步骤:
S110、将IO数据分为大块写数据和小块写数据;其中,所述大块写数据与最小分配单位对齐,所述小块写数据与最小分配单位不对齐;S120、将分类后的IO数据根据数据块的大小生成lextent和blob;为了实现大块写数据均为已使用状态,将所述大块写数据的lextent和blob的大小设定为同一预设长度值,其中,所述预设长度值大于所述最小分配单位;为了实现小块写数据均可被压缩,将所述小块写数据进行归并和补零形成大块写数据;S130、对大块写数据进行压缩。
7.如权利要求6所述的电子装置,其特征在于,在步骤S110之前,所述的压缩程序被所述处理器执行时,还包括以下步骤:
将最小分配单位设置为一个物理块block_size=4k。
8.如权利要求6所述的电子装置,其特征在于,所述步骤S120包括:
S210、读出小块写数据以及所述小块写数据所在的lextent数据;
S220、将所述小块写数据与所述小块写数据所在的lextent数据做归并操作;
S230、对归并操作后的数据,进行补零操作形成大块写数据。
9.如权利要求6所述的电子装置,其特征在于,所述预设长度值根据数据源块的大小和所需的压缩率进行设定。
10.一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,所述计算机程序包括用于基于存储引擎bluestore的压缩的程序,所述计算机程序被处理器执行时实现权利要求1~5中任一项所述的基于存储引擎bluestore的压缩方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910496836.8A CN110377226B (zh) | 2019-06-10 | 2019-06-10 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
PCT/CN2019/117897 WO2020248493A1 (zh) | 2019-06-10 | 2019-11-13 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910496836.8A CN110377226B (zh) | 2019-06-10 | 2019-06-10 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110377226A true CN110377226A (zh) | 2019-10-25 |
CN110377226B CN110377226B (zh) | 2022-02-25 |
Family
ID=68249936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910496836.8A Active CN110377226B (zh) | 2019-06-10 | 2019-06-10 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110377226B (zh) |
WO (1) | WO2020248493A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020248493A1 (zh) * | 2019-06-10 | 2020-12-17 | 平安科技(深圳)有限公司 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
CN112631951A (zh) * | 2020-12-22 | 2021-04-09 | 新华三大数据技术有限公司 | 存储空间的分配方法及装置 |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
CN114090536A (zh) * | 2022-01-19 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的日志文件存储方法、装置及介质 |
US20220308798A1 (en) * | 2020-09-09 | 2022-09-29 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113126919B (zh) * | 2021-04-02 | 2023-01-06 | 山东英信计算机技术有限公司 | 一种RocksDB性能提升方法、系统及存储介质 |
CN113703667A (zh) * | 2021-07-14 | 2021-11-26 | 深圳市有为信息技术发展有限公司 | 实时存储数据的文件系统处理方法、装置、车载终端及商用车 |
CN113835623B (zh) * | 2021-08-30 | 2023-12-29 | 济南浪潮数据技术有限公司 | 基于异构存储引擎的集群服务扩容方法、装置及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259167A1 (en) * | 2003-11-07 | 2006-11-16 | Expway | Method for compressing and decompressing structured documents |
US20080307191A1 (en) * | 2007-06-07 | 2008-12-11 | International Business Machines Corporation | Method, system and computer program product for managing the storage of data |
US20180107420A1 (en) * | 2016-10-18 | 2018-04-19 | International Business Machines Corporation | Identifying matching tape volumes for data deduplication in a tape library |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN108427538A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 全闪存阵列的存储数据压缩方法、装置、及可读存储介质 |
CN109800184A (zh) * | 2018-12-12 | 2019-05-24 | 平安科技(深圳)有限公司 | 针对小块输入的缓存方法、系统、装置及可存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984527B (zh) * | 2014-04-01 | 2017-12-15 | 杭州电子科技大学 | 优化稀疏矩阵向量乘提升不可压缩管流模拟效率的方法 |
CN109614036B (zh) * | 2018-11-16 | 2022-05-10 | 新华三技术有限公司成都分公司 | 存储空间的部署方法及装置 |
CN110377226B (zh) * | 2019-06-10 | 2022-02-25 | 平安科技(深圳)有限公司 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
-
2019
- 2019-06-10 CN CN201910496836.8A patent/CN110377226B/zh active Active
- 2019-11-13 WO PCT/CN2019/117897 patent/WO2020248493A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259167A1 (en) * | 2003-11-07 | 2006-11-16 | Expway | Method for compressing and decompressing structured documents |
US20080307191A1 (en) * | 2007-06-07 | 2008-12-11 | International Business Machines Corporation | Method, system and computer program product for managing the storage of data |
US20180107420A1 (en) * | 2016-10-18 | 2018-04-19 | International Business Machines Corporation | Identifying matching tape volumes for data deduplication in a tape library |
CN107967124A (zh) * | 2017-12-14 | 2018-04-27 | 南京云创大数据科技股份有限公司 | 一种分布式持久性内存存储系统及方法 |
CN108427538A (zh) * | 2018-03-15 | 2018-08-21 | 深信服科技股份有限公司 | 全闪存阵列的存储数据压缩方法、装置、及可读存储介质 |
CN109800184A (zh) * | 2018-12-12 | 2019-05-24 | 平安科技(深圳)有限公司 | 针对小块输入的缓存方法、系统、装置及可存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020248493A1 (zh) * | 2019-06-10 | 2020-12-17 | 平安科技(深圳)有限公司 | 基于存储引擎bluestore的压缩方法、装置及存储介质 |
US20220308798A1 (en) * | 2020-09-09 | 2022-09-29 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
US11579812B2 (en) * | 2020-09-09 | 2023-02-14 | Western Digital Technologies, Inc. | Local data compaction for integrated memory assembly |
CN112631951A (zh) * | 2020-12-22 | 2021-04-09 | 新华三大数据技术有限公司 | 存储空间的分配方法及装置 |
CN113590051A (zh) * | 2021-09-29 | 2021-11-02 | 阿里云计算有限公司 | 数据存储和读取方法、装置、电子设备及介质 |
CN114090536A (zh) * | 2022-01-19 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种基于分布式存储的日志文件存储方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110377226B (zh) | 2022-02-25 |
WO2020248493A1 (zh) | 2020-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377226A (zh) | 基于存储引擎bluestore的压缩方法、装置及存储介质 | |
CN104008064B (zh) | 用于多级存储器压缩的方法和系统 | |
CN107229420B (zh) | 数据存储方法、读取方法、删除方法和数据操作系统 | |
CN109308280A (zh) | 数据处理方法和相关设备 | |
CN105096367B (zh) | 优化Canvas绘制性能的方法及装置 | |
CN108268344A (zh) | 一种数据处理方法和装置 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
CN110008192A (zh) | 一种数据文件压缩方法、装置、设备及可读存储介质 | |
CN107947799A (zh) | 一种数据压缩方法及装置 | |
Wang et al. | Exalt: Empowering Researchers to Evaluate {Large-Scale} Storage Systems | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN105589908A (zh) | 用于事务集合的关联规则计算方法 | |
CN105302915B (zh) | 基于内存计算的高性能数据处理系统 | |
CN106776795A (zh) | 基于Hbase数据库的数据写入方法及装置 | |
CN113468175B (zh) | 数据压缩方法、装置、电子设备及存储介质 | |
CN109408191A (zh) | 页面更新方法、装置、设备及存储介质 | |
CN112256472B (zh) | 分布式数据调取方法、装置、电子设备及存储介质 | |
CN103210590B (zh) | 压缩方法及设备 | |
CN115934999A (zh) | 一种基于块文件的视频流数据存储方法、装置及介质 | |
CN111625502B (zh) | 数据读取方法及装置、存储介质、电子装置 | |
CN104571940A (zh) | 储存装置及其相关系统 | |
CN111427857B (zh) | 一种基于分区参照技术的fpga配置文件压缩解压方法 | |
CN104268023B (zh) | 一种msvl程序内存管理方法 | |
CN111221787A (zh) | 一种文件处理方法及装置 | |
CN105760784A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |