一种在线数据压缩在存储中的集成方法及系统与流程

文档序号:12728763阅读:410来源:国知局
一种在线数据压缩在存储中的集成方法及系统与流程

本发明涉及数据存储领域,尤其涉及一种在线数据压缩在存储中的集成方法及系统。



背景技术:

当今社会数据量暴增,这个对整个IT的结构造成了严重的冲击,尤其是磁盘容量的需求越来越大,这无疑增加了企业的成本。为了降低数据的存储量,通常采用将数据压缩后进行储存,而传统的压缩一般是非实时压缩,传统压缩首先是将数据存储到后端磁盘,然后在存储系统空闲的时候,从后端磁盘将数据读取出来进行压缩,压缩完毕后将压缩的IO存储到磁盘,这样数据压缩无法预估数据的压缩率,需要再次从磁盘读取出来进行压缩,压缩数据是非实时生效的。



技术实现要素:

为了克服上述现有技术中的不足,本发明提供一种在线数据压缩在存储中的集成方法,方法包括:

将IO数据写入上层缓存中;

压缩模块根据预设的压缩量将上层缓存中多个IO数据进行组合压缩,形成组合压缩IO数据块;

压缩模块针对组合压缩IO数据块中的每个IO数据对应生成一元数据,元数据用于记录压缩前后的每个IO数据处于磁盘中的位置;

压缩模块将组合压缩IO数据块以及与该组合压缩IO数据块内部IO数据相对应的元数据下发给下层缓存;

下层缓存保存组合压缩IO数据块和元数据;

下层缓存将保存的组合压缩IO数据块和元数据保存到后端磁盘。

优选地,主机接口层接收读IO数据请求,并在上层缓存中读取IO数据;

若在上层缓存中读取到所述IO数据,则将IO数据返回给主机接口层。

优选地,若在上层缓存中未读取到所述IO数据,则将IO数据读请求发送至压缩模块,在压缩模块中读取IO数据;

若在压缩模块中读取到所述IO数据,则将IO数据返回给上层缓存,继而返回至主机接口层。

优选地,若在压缩模块中未读取到所述IO数据,则将IO数据读请求发送至下层缓存,在下层缓存读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

若在下层缓存中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;

将IO数据返回给上层缓存,继而返回至主机接口层。

优选地,若在下层缓存中未读取到所述IO数据,则在后端磁盘读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

若在后端磁盘中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;

将IO数据返回给上层缓存,继而返回至主机接口层。

优选地,预设的压缩量的获取方式包括:

在上层缓存随机抽取N个IO数据块,N为非零的自然数,对抽取的IO数据块进行组合压缩,组合压缩后计算出N个IO数据块的平均MD5值,将该值作为预设的压缩量。

一种在线数据压缩在存储中的集成系统,包括:上层缓存模块,压缩模块,下层缓存模块,后端磁盘;

上层缓存模块用于供IO数据写入;

压缩模块用于根据预设的压缩量将上层缓存模块中多个IO数据进行组合压缩,形成组合压缩IO数据块;压缩模块针对组合压缩IO数据块中的每个IO数据对应生成一元数据,元数据用于记录压缩前后的每个IO数据处于磁盘中的位置;压缩模块将组合压缩IO数据块以及与该组合压缩IO数据块内部IO数据相对应的元数据下发给下层缓存模块;

下层缓存模块用于保存组合压缩IO数据块和元数据,并将保存的组合压缩IO数据块和元数据保存到后端磁盘。

优选地,还包括:上层缓存IO数据处理模块,压缩模块IO数据处理模块,下层缓存IO数据处理模块;

上层缓存IO数据处理模块用于根据主机接口层接收读IO数据请求,上层缓存IO数据处理模块在上层缓存模块中读取IO数据,若在上层缓存中读取到所述IO数据,则将IO数据返回给主机接口层;

压缩模块IO数据处理模块用于若在上层缓存模块中未读取到所述IO数据,上层缓存IO数据处理模块将IO数据读请求发送至压缩模块,压缩模块IO数据处理模块在压缩模块中读取IO数据;若在压缩模块中读取到所述IO数据,则将IO数据返回给上层缓存,继而返回至主机接口层;

下层缓存IO数据处理模块用于若在压缩模块中未读取到所述IO数据,则将IO数据读请求发送至下层缓存模块,下层缓存IO数据处理模块在下层缓存模块读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

若在下层缓存模块中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;将IO数据返回给上层缓存模块,继而返回至主机接口层。

优选地,还包括:后端磁盘数据处理模块;

后端磁盘数据处理模块用于若在下层缓存模块中未读取到所述IO数据,则在后端磁盘读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;若在后端磁盘中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;将IO数据返回给上层缓存模块,继而返回至主机接口层。

优选地,还包括:预设的压缩量设置模块;

预设的压缩量设置模块用于在上层缓存模块随机抽取N个IO数据块,N为非零的自然数,对抽取的IO数据块进行组合压缩,组合压缩后计算出N个IO数据块的平均MD5值,将该值作为预设的压缩量。

从以上技术方案可以看出,本发明具有以下优点:

在线数据压缩在存储中的集成方法涉及了压缩模块,存储从前端接收IO数据进行压缩,压缩后下发到缓存,然后由缓存刷写到后端磁盘。与传统的压缩相比,在线数据压缩可以预估数据的压缩率,因为IO数据在下发磁盘之前已经完成压缩;在线压缩还节约了磁盘空间,不需要再次从磁盘读取出来进行压缩;压缩数据是实时生效的,并且对IO数据的性能不产生影响。

附图说明

为了更清楚地说明本发明的技术方案,下面将对描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为在线数据压缩在存储中的集成方法的整体流程图;

图2为IO数据的读取方式流程图;

图3为IO数据的另一读取方式流程图;

图4为IO数据的另一读取方式流程图;

图5为在线数据压缩在存储中的集成系统整体示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将运用具体的实施例及附图,对本发明保护的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本专利中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利保护的范围。

本实施例提供一种在线数据压缩在存储中的集成方法,如图1所示,方法包括:

S1:将IO数据写入上层缓存中;

S2:压缩模块根据预设的压缩量将上层缓存中多个IO数据进行组合压缩,形成组合压缩IO数据块;

S3:压缩模块针对组合压缩IO数据块中的每个IO数据对应生成一元数据,元数据用于记录压缩前后的每个IO数据处于磁盘中的位置;

S4:压缩模块将组合压缩IO数据块以及与该组合压缩IO数据块内部IO数据相对应的元数据下发给下层缓存;

S5:下层缓存保存组合压缩IO数据块和元数据;

S6:下层缓存将保存的组合压缩IO数据块和元数据保存到后端磁盘。

数据经过压缩后才会下发到后端磁盘,这样利用较少的磁盘空间存储较大的数据,提高磁盘的空间利用率和整个存储系统的性能,将压缩功能集成到传统存储中。本实施例中采用实时压缩方法,数据在存储到后端磁盘之前已经完成了对数据的压缩,而且在线实时压缩不会影响IO数据的性能。

在压缩过程中虽然压缩本身耗掉了一部分资源并且增加了延迟,但是在IO写磁盘过程时节约了时间,整体实测结果表明压缩性能并没有下降。

其中,预设的压缩量的获取方式包括:在上层缓存随机抽取N个IO数据块,N为非零的自然数,对抽取的IO数据块进行组合压缩,组合压缩后计算出N个IO数据块的平均MD5值,将该值作为预设的压缩量。

例如:在上层缓存随机抽取三个IO数据块进行压缩,每个IO数据块压缩后均为4K,压缩完毕后计算出这三个IO数据块的平均MD5值,将该值作为预设的压缩量。

压缩模块根据预设的压缩量将上层缓存中多个IO数据进行组合压缩,当压缩值跟预设的压缩量相等时,此大小为组合压缩IO数据块的大小。

本实施例中,如图2所示, IO数据的读取方式为:

S11:主机接口层接收读IO数据请求,并在上层缓存中读取IO数据;

S12:若在上层缓存中读取到所述IO数据,则将IO数据返回给主机接口层。

本实施例中,如图3所示, IO数据的读取方式为:

S21:主机接口层接收读IO数据请求,并在上层缓存中读取IO数据;

S22:若在上层缓存中未读取到所述IO数据,则将IO数据读请求发送至压缩模块,在压缩模块中读取IO数据;

S23:若在压缩模块中读取到所述IO数据,则将IO数据返回给上层缓存,继而返回至主机接口层。

本实施例中,如图4所示, IO数据的读取方式为:

S31:主机接口层接收读IO数据请求,并在上层缓存中读取IO数据;

S32:若在上层缓存中未读取到所述IO数据,则将IO数据读请求发送至压缩模块,在压缩模块中读取IO数据;

S33:若在压缩模块中未读取到所述IO数据,则将IO数据读请求发送至下层缓存,在下层缓存读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

S34:若在下层缓存中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;

S35:将IO数据返回给上层缓存,继而返回至主机接口层。

进一步的,若在下层缓存中未读取到所述IO数据,则在后端磁盘读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

若在后端磁盘中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;

将IO数据返回给上层缓存,继而返回至主机接口层。

本发明还提供一种在线数据压缩在存储中的集成系统,如图5所示,包括:上层缓存模块1,压缩模块2,下层缓存模块3,后端磁盘4;

上层缓存模块1用于供IO数据写入;

压缩模块2用于根据预设的压缩量将上层缓存模块1中多个IO数据进行组合压缩,形成组合压缩IO数据块;压缩模块2针对组合压缩IO数据块中的每个IO数据对应生成一元数据,元数据用于记录压缩前后的每个IO数据处于磁盘中的位置;压缩模块2将组合压缩IO数据块以及与该组合压缩IO数据块内部IO数据相对应的元数据下发给下层缓存模块3;下层缓存模块3用于保存组合压缩IO数据块和元数据,并将保存的组合压缩IO数据块和元数据保存到后端磁盘4。

本实施例中,还包括:上层缓存IO数据处理模块,压缩模块IO数据处理模块,下层缓存IO数据处理模块;

上层缓存IO数据处理模块用于根据主机接口层接收读IO数据请求,上层缓存IO数据处理模块在上层缓存模块中读取IO数据,若在上层缓存中读取到所述IO数据,则将IO数据返回给主机接口层;

压缩模块IO数据处理模块用于若在上层缓存模块中未读取到所述IO数据,上层缓存IO数据处理模块将IO数据读请求发送至压缩模块,压缩模块IO数据处理模块在压缩模块中读取IO数据;若在压缩模块中读取到所述IO数据,则将IO数据返回给上层缓存,继而返回至主机接口层;

下层缓存IO数据处理模块用于若在压缩模块中未读取到所述IO数据,则将IO数据读请求发送至下层缓存模块,下层缓存IO数据处理模块在下层缓存模块读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;

若在下层缓存模块中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;将IO数据返回给上层缓存模块,继而返回至主机接口层。

集成系统还包括:后端磁盘数据处理模块;后端磁盘数据处理模块用于若在下层缓存模块中未读取到所述IO数据,则在后端磁盘读取所述IO数据的元数据,根据元数据信息查找到对应的组合压缩IO数据块内的IO数据;若在后端磁盘中读取到所述IO数据,则将IO数据所在的组合压缩IO数据块返回至压缩模块,压缩模块对所述组合压缩IO数据块进行解压,恢复IO数据;将IO数据返回给上层缓存模块,继而返回至主机接口层。

集成系统还包括:预设的压缩量设置模块;预设的压缩量设置模块用于在上层缓存模块随机抽取N个IO数据块,N为非零的自然数,对抽取的IO数据块进行组合压缩,组合压缩后计算出N个IO数据块的平均MD5值,将该值作为预设的压缩量。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参考即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1