一种用于异常日志转储的LZO压缩方法及系统技术方案

技术编号:19009197 阅读:33 留言:0更新日期:2018-09-22 09:03
本发明专利技术提供一种用于异常日志转储的LZO压缩方法及系统,所述方法包括以下步骤:S101、接收内核异常信息反馈;S102、调用封装的LZO数据压缩函数接口,将异常信息进行压缩;S103、将压缩后的异常信息数据转储到存储介质;S104、当异常信息服务层需要获取异常日志时,调用封装的LZO数据解压缩函数接口,对异常信息数据进行解压缩;S105、将解压缩后的异常信息反馈给异常信息服务层。通过针对异常日志转储而将原生LZO数据压缩接口进行重新封装,将原本复杂的接口算法封装至四个函数接口中,由于封装了原生LZO接口算法本身的复杂操作,使用者不必关心LZO算法本身,没有学习成本,不需要清楚知道压缩算法的技术细节,使用步骤简洁,且利于维护。

LZO compression method and system for abnormal log dump

The invention provides a LZO compression method and system for exceptional log dump, the method comprises the following steps: S101, receiving kernel exceptional information feedback; S102, calling encapsulated LZO data compression function interface to compress abnormal information; S103, dumping compressed abnormal information data to storage medium; When the anomaly information service layer needs to obtain the anomaly log, it calls the encapsulated LZO data decompression function interface to decompress the anomaly information data; S105, feeds back the anomaly information after decompression to the anomaly information service layer. By re-encapsulating the native LZO data compression interface for exceptional log dump, the original complex interface algorithm is encapsulated into four functional interfaces. Because of encapsulating the complex operation of the native LZO interface algorithm itself, the user does not need to care about the LZO algorithm itself, has no learning cost, and does not need to know the compression algorithm clearly. The technical details of the law are simple and easy to maintain.

【技术实现步骤摘要】
一种用于异常日志转储的LZO压缩方法及系统
本专利技术涉及文件压缩
,特别是一种用于异常日志转储的LZO压缩方法及系统。
技术介绍
Linux下目前存在多种压缩算法库,针对不同的应用场景,不同的算法有各自不同的特点。当需要在项目中引入一种解压缩算法需求时,需要从解压缩速度、压缩率以及是否需要占用额外内存等多个方面来进行选择最合适的算法。目前,较新的Linux内核已经移植了多种解压缩算法库,从内核使用情况来看,842没有解压接口,lz4只有zram模块用到,xz用于解压.xz文件,而ZLIB和LZO更常规些。ZLIB是一个开源的算法库,很多软件均采用此种压缩算法,可以作为一种标准、通用的算法库。该算法支持无损压缩,对于线程也是安全的,提供了友好的解压缩函数接口,并且也提供了GZIP文件的函数读写接口,使用上简单易行,没有多余的复杂操作。另外,该算法库还考虑了处理器和内存资源的适配控制操作,在计算性能有限或者内存资源受限的情况下,可以给解压缩操作配置不同的参数,降低其对处理器或者内存的占用。且ZLIB压缩率非常高,达到13.4%的压缩率,压缩速度为21MB/s,解压缩速度为118MB/s,适用于绝大多数的应用场景。LZO是一种实时数据压缩库(areal-timedatacompressionlibrary),此种算法库更加重视数据的压缩速度,更加适用于需要快速完成压缩操作的场景。LZO同样遵循GUN的GPL使用许可。LZO也是一种无损压缩算法,压缩率也比较理想,最高可达到20.5%的压缩率,压缩速度为135MB/s,解压缩速度为410MB/s。但在压缩率和压缩速度间,存在一个制约关系,使用更高的压缩率,也就意味着势必降低压缩速度。另外,解压缩速度不受压缩率的影响,保持不变。在异常日志转储的应用场景中,要求在系统出现异常报错甚至宕机时,能以最快的速度将异常日志转储出去,同时又要考虑BMC等外部存储介质可能存在的存储空间有限的情况,因此需要对异常日志做先压缩后转储的操作。异常日志的读取操作没有对速度的要求,因此解压缩速度这一因素不在考虑的范围内。针对异常日志转储这一应用场景的需求,LZO压缩算法具有比其他算法更高的压缩速度,同时压缩率比较理想,符合应用场景的需求。鉴于LZO算法本身特点,如果直接使用现有的函数接口,不仅需要在原有代码逻辑中进行额外内存申请以及相关的逻辑判断,而且还要考虑线程安全性问题,大大降低了原有代码的可读性,不利于代码的长期维护,易用性差。
技术实现思路
本专利技术的目的是提供一种用于异常日志转储的LZO压缩方法及系统,旨在解决当前LZO算法在异常日志转储应用场景中易用性差以及降低使用者原有代码逻辑性的问题,为内核异常日志转储提供友好易用的函数接口,易用性高且不降低使用者原有代码逻辑。为达到上述技术目的,本专利技术提供了一种用于异常日志转储的LZO压缩方法,包括以下步骤:S101、接收内核异常信息反馈;S102、调用封装的LZO数据压缩函数接口,将异常信息进行压缩;S103、将压缩后的异常信息数据转储到存储介质;S104、当异常信息服务层需要获取异常日志时,调用封装的LZO数据解压缩函数接口,对异常信息数据进行解压缩;S105、将解压缩后的异常信息反馈给异常信息服务层。优选地,在所述调用封装的LZO数据压缩函数接口之前以及调用封装的LZO数据解压缩函数接口之前均需调用内存资源申请函数,所述内存资源申请函数执行的操作内容具体为:申请8K的额外内存,并且压缩数据或解压缩数据时也需要申请一块数据内存用于存放中转数据。优选地,在所述调用封装的LZO数据压缩函数接口之后以及调用封装的LZO数据解压缩函数接口之后均需调用内存资源释放函数。优选地,所述封装的LZO数据压缩函数执行的操作内容具体为:通过一个互斥锁对压缩过程加以线程保护,然后调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据压缩处理,压缩后的数据保存在内存资源申请函数申请获得的数据内存中,并保存压缩后数据的长度,随后对数据长度进行判断,即压缩后的数据大小是否大于调用方预留的用于保存压缩后数据的大小,如果是则作异常处理,否则直接将得到的压缩数据拷贝到数据内存中,并返回压缩数据大小。优选地,所述调用封装的LZO数据解压缩函数执行的操作内容具体为:通过一个互斥锁对解压缩过程加以线程保护,调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据解压缩处理,并对函数返回的解压后数据大小进行判断,只有在解压后数据大小等于原始数据大小时,解压缩数据才会成功。本专利技术还提供了一种用于异常日志转储的LZO压缩系统,包括:异常信息监测模块,用于接收内核异常信息反馈;异常信息压缩模块,用于调用封装的LZO数据压缩函数接口,将异常信息进行压缩;异常信息存储模块,用于将压缩后的异常信息数据转储到存储介质;异常信息解压缩模块,用于当异常信息服务层需要获取异常日志时,调用封装的LZO数据解压缩函数接口,对异常信息数据进行解压缩;异常信息反馈模块,用于将解压缩后的异常信息反馈给异常信息服务层。优选地,所述系统还包括:内存资源申请模块,用于申请8K的额外内存,并且压缩数据或解压缩数据时也需要申请一块数据内存用于存放中转数据。优选地,所述系统还包括:内存资源释放模块,用于释放内存资源。优选地,所述异常信息压缩模块包括:压缩线程保护单元,用于通过一个互斥锁对压缩过程加以线程保护;数据压缩单元,用于调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据压缩处理;数据保存单元,用于将压缩后的数据保存在内存资源申请函数申请获得的数据内存中,并保存压缩后数据的长度;异常判断处理单元,用于对数据长度进行判断,即压缩后的数据大小是否大于调用方预留的用于保存压缩后数据的大小,如果是则作异常处理,否则直接将得到的压缩数据拷贝到数据内存中,并返回压缩数据大小。优选地,所述异常信息解压缩模块包括:解压缩线程保护单元,用于通过一个互斥锁对解压缩过程加以线程保护;数据解压缩单元,用于调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据解压缩处理;数据判断单元,用于对函数返回的解压后数据大小进行判断,只有在解压后数据大小等于原始数据大小时,解压缩数据才会成功。
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:与现有技术相比,本专利技术通过针对异常日志转储而将原生LZO数据压缩接口进行重新封装,将原本复杂的接口算法封装至四个函数接口中,由于封装了原生LZO接口算法本身的复杂操作,使用者不必关心LZO算法本身,没有学习成本,不需要清楚知道压缩算法的技术细节,使用步骤简洁,且利于维护。通过封装,最大限度的保证了调用方原有的代码逻辑,提高了代码的可读性,且对加入线程安全保护,保证数据压缩的可靠性。附图说明图1为本专利技术实施例中所提供的一种用于异常日志转储的LZO压缩方法流程图;图2为本专利技术实施例中所提供的一种用于异常日志转储的LZO压缩系统结构框图。具体实施方式为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本专利技术进行详细阐述。下文的公本文档来自技高网
...
一种用于异常日志转储的LZO压缩方法及系统

【技术保护点】
1.一种用于异常日志转储的LZO压缩方法,其特征在于,包括以下步骤:S101、接收内核异常信息反馈;S102、调用封装的LZO数据压缩函数接口,将异常信息进行压缩;S103、将压缩后的异常信息数据转储到存储介质;S104、当异常信息服务层需要获取异常日志时,调用封装的LZO数据解压缩函数接口,对异常信息数据进行解压缩;S105、将解压缩后的异常信息反馈给异常信息服务层。

【技术特征摘要】
1.一种用于异常日志转储的LZO压缩方法,其特征在于,包括以下步骤:S101、接收内核异常信息反馈;S102、调用封装的LZO数据压缩函数接口,将异常信息进行压缩;S103、将压缩后的异常信息数据转储到存储介质;S104、当异常信息服务层需要获取异常日志时,调用封装的LZO数据解压缩函数接口,对异常信息数据进行解压缩;S105、将解压缩后的异常信息反馈给异常信息服务层。2.根据权利要求1所述的一种用于异常日志转储的LZO压缩方法,其特征在于,在所述调用封装的LZO数据压缩函数接口之前以及调用封装的LZO数据解压缩函数接口之前均需调用内存资源申请函数,所述内存资源申请函数执行的操作内容具体为:申请8K的额外内存,并且压缩数据或解压缩数据时也需要申请一块数据内存用于存放中转数据。3.根据权利要求1所述的一种用于异常日志转储的LZO压缩方法,其特征在于,在所述调用封装的LZO数据压缩函数接口之后以及调用封装的LZO数据解压缩函数接口之后均需调用内存资源释放函数。4.根据权利要求2所述的一种用于异常日志转储的LZO压缩方法,其特征在于,所述封装的LZO数据压缩函数执行的操作内容具体为:通过一个互斥锁对压缩过程加以线程保护,然后调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据压缩处理,压缩后的数据保存在内存资源申请函数申请获得的数据内存中,并保存压缩后数据的长度,随后对数据长度进行判断,即压缩后的数据大小是否大于调用方预留的用于保存压缩后数据的大小,如果是则作异常处理,否则直接将得到的压缩数据拷贝到数据内存中,并返回压缩数据大小。5.根据权利要求2或4所述的一种用于异常日志转储的LZO压缩方法,其特征在于,所述调用封装的LZO数据解压缩函数执行的操作内容具体为:通过一个互斥锁对解压缩过程加以线程保护,调用内核已有的函数封装lzo1x_1_compress,并传入参数,发起数据解压缩处理,并对函数返回的解压后数据大小进行判断,只有在解压后数据大小等于原始数据大小时,解...

【专利技术属性】
技术研发人员:王鹏
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1