至顶网服务器频道 05月17日 新闻消息: 随着云计算和大数据的应用与发展, 各领域的信息量产生了爆炸式增长。企业不断购置大量的存储设备来应对快速增长的存储需求,然而更大、更多的存储容量会占用系统支出和能耗资源,因此数据压缩技术成为存储系统中的一项潮流技术。目前,数据压缩和重复数据删除是实现数据缩减的两种关键技术。而今天我们就来重点了解一下数据压缩。
数据压缩的前世今生
数据压缩,如WinRAR、ZIP等程序广为人知,是实现减少空间而把数据转换成比原始格式更紧凑形式的过程。数据压缩的概念相当古老,可追溯至19世纪中期的摩尔斯码。摩尔斯码发现某些字母比其他字母使用地更频繁(例如E比X),使用短的脉冲信号来表示常用字母,而使用较长脉冲信号表示非常用字母。这个压缩方案有效地改善了系统的整体效率,它使系统在更短的时间内传输了更多的信息。
数据压缩的起源可以追溯到信息论之父Shannon在1947年提出的香农编码。1952年 Huffman提出了第一种实用性的编码算法实现了数据压缩,该算法至今仍在广泛使用。1977年以色列数学家Jacob Ziv 和Abraham Lempel提出了一种全新的数据压缩编码方式,Lempel-Ziv系列算法(LZ77和LZ78,以及若干变种)凭借其简单高效等优越特性,最终成为目前主要数据压缩算法的基础。数据压缩算法大致分类如图1所示。
图1 数据压缩算法分类
通过上图,压缩算法从对数据的完整性角度分有损和无损。有损压缩算法通过移除在保真情形下需要大量的数据去存储的小细节,从而使文件变小。在有损压缩里,因某些必要数据的移除,恢复原文件是不可能的。有损压缩主要用来存储图像和音频文件,同时通过移除数据达到比较高的压缩率。无损压缩,也使文件变小,但对应的解压缩可以精确的恢复原文件,不丢失任何数据。无损数据压缩被广泛的应用于计算机领域,存储系统中均使用无损压缩算法。
存储系统中的压缩
存储系统中的无损数据压缩算法,正在由效率较低的定长(Fixed Bit Length Packing)压缩转变为不定长压缩。其中,由Abraham Lempel 和 Jacob Ziv独创性的使用字典的LZ77/78算法及其变种应用最为广泛。这类使用字典来压缩数据LZ算法如图2所示,它使用一种基于滑动窗口缓存的技术,该缓存用于保存最近刚刚处理的文本。当出现一个重复时,重复的序列可以用一个短的编码来代替。压缩程序扫描这样的重复,同时生成编码来代替重复序列。随着时间的过去,编码可以重用来捕获新的序列。系统必须设计成解压程序能够在编码和原始数据序列推导出当前的映射。
图2 LZ算法示意图
LZ算法使用了有限的窗口在以前的文本中查找匹配,对于相对于窗口大小来说非常长的文本块,很多可能的匹配就会被丢掉。窗口大小可以增加,但这会带来两个损失:(1)算法的处理时间会增加;(2)指针字段必须更长,以允许更长的跳转。两者都很消耗计算资源(CPU和缓存)。
传统在线实时压缩技术一般采用软件压缩来实现,会带来一定的CPU负载,如果压缩算法做的不够优化,就会导致压缩功能开启后占用较多CPU性能(双倍压缩,占用15%左右CPU资源),一般会影响系统1/3,甚至2/3的性能,影响业务的可用性能。因此,某些存储系统中并不建议企业在业务繁忙时开启压缩功能,一般在业务空闲阶段使用压缩。
数据压缩的另外一个痛点在于,数据块经过压缩后,因为有不同的冗余度,数据块长度变得不一,容易造成磁盘碎片,如图3所示。这种基于位置的压缩给系统的数据布局带来很大影响,严重影响业务的IO响应能力,加剧性能衰减。
图3 常见压缩及数据落盘
浪潮G2创新数据压缩技术
而浪潮迎难而上,采用专用的硬压缩技术如图4所示,降低了对控制器计算资源的占用,特别是CPU和缓存,使得压缩功能的开启,只占用了低于3%的CPU性能影响(部分IO交互)。
图4 专用压缩卡
与此同时,通过特定优化的压缩算法,将在线压缩的不定长数据转变为定长数据,如图5所示,在数据布局上,不再产生数据碎片,从总体测试表现看,经过开启压缩功能,反而提升系统的随机读写性能。
图5 浪潮G2压缩及数据落盘
总之,通过在线实时硬压缩,浪潮G2平台在不影响性能的基础上,可提供70%以上的压缩率,节省50%以上的空间,"变相"实现容量翻倍,总体提升客户收益。
好文章,需要你的鼓励
临近年底,苹果公布了2024年App Store热门应用和游戏榜单,Temu再次成为美国下载量最多的免费应用。
云基础设施市场现在已经非常庞大,很难再有大的变化。但是,因为人们可以轻松地关闭服务器、存储和网络——就像开启它们那样,预测全球云基础设施开支可能非常困难。