我们介绍过专门针对应用在线主存储设备的重复数据删除(Data de-duplication,De-Dupe)技术,在缩减存储设备容量耗用这个领域,除了重复数据删除技术外,即时压缩技术(Real Time Compression)是另一个发展方向。
即时压缩技术的应用远早于重复数据删除,迄今已有20年以上的发展历史,在许多存储领域都有普遍使用。
内置于操作系统的即时压缩技术
在文档系统层级运行、针对部份或整个磁盘区的即时压缩技术,已有很长的发展历史。与针对个别文档的文档压缩不同,磁盘压缩可针对部份或整个磁盘区运行压缩与解压缩,当数据写入硬盘时,磁盘压缩程序会先将其压缩后再写入硬盘;当数据要从硬盘读取出来时,则磁盘压缩程序会先进行解压缩将其还原。压缩与解压缩操作都是自动即时的运行,无需使用者操作。
在1990年代初期、PC仍处于文字命令列操作系统的时代,由于当时的硬盘容量有限、价格又高,因此这类可即时压缩磁盘机数据、减少磁盘空间耗用的产品曾有过广泛应用。
当时较着名的产品有Stac公司的Stacker、IIT的XtraDrive、AddStor的SuperStor Pro、Vertisoft的DoubleDisk 、Salient的DiskDoubler等。有监于市场上对这类产品的需求,Digital Research率先在该公司1991年9月发表的DR DOS 6.0操作系统中整合了Add的SuperStor,提供了内置在操作系统中的磁盘压缩指令,稍后当Digital Research为Novell收购、于1992年推出的PalmDOS 1.0,也继续提供SuperStor功能。
在DR DOS的刺激下,后来微软也引进了Vertisoft的DoubleDisk,在1993年推出的DOS 6.0中增加了称为Double Space的磁盘压缩功能,从DOS 6.22起,这个功能改为DriveSpace.
此后即时磁盘压缩功能,便成为PC操作系统标准功能之一,微软后来Windows 95/98/Me操作系统中,都仍继续提供搭配FAT 16文档系统的DriveSpace功能。后来搭配Windows NT一起推出的NTFS文档系统,也提供了基于LZNT1压缩演算法的原生文档系统压缩功能,这个功能也一直保留到后来各版本的Windows中,可对指定数据夹或整个磁盘进行即时的压缩与解压缩。
磁盘压缩与解压缩是耗用处理器资源的操作,在早期存储装置缓慢、处理器相对高速的时代,磁盘即时压缩不仅可节省容量消耗,还有改善能效的效用。但随着硬盘容量的提高,以及硬盘单位容量成本的不断下降,从磁盘压缩节省空间所获得的效益逐渐递减,反之,随着操作系统进入图形介面时代,处理器负载相对提高许多,若再启用磁盘压缩功能,将有影响系统能效的疑虑,因此这个功能已不像以前那样受到重视。
即时压缩应用的3种基本型态:
1. 主机端:由主机运行即时压缩运算
典型产品:操作系统内置的磁盘压缩功能、数据库软件内置的即时压缩功能
优点:内置于操作系统或应用软件、无需另行建置
缺点:需耗用主机运算资源,某些情况下会拖慢主机
2. 专属应用服务器:由特定应用服务器行即时压缩运算
典型产品:专用即时压缩应用服务器、备份服务器的压缩功能
优点:不耗用主机能效,一台应用服务器可同时服务多台主机
缺点:需另行购买建置
3. 存储设备端:由存储设备运行即时压缩运算
典型产品:内置压缩功能的磁带机或VTL
优点:不影响前端能效、内置功能无需另行购置
缺点:某些情况下会影响存储能效
内置于应用程序的即时压缩
许多数据库软件也内置了即时压缩功能,可借以取得缩减存储容量、改善缓冲快取使用效率、提高查询能效等效益,又分为物理(Physical)数据库压缩、逻辑(Logical)数据库压缩两种类型。
物理数据库压缩是通过数据库软件外部的机制(硬件或软件程序)来运行压缩,包括利用硬件辅助压缩,以及利用外部压缩程序的区块(Block)或分页(Page)层级压缩等;逻辑数据库压缩则由数据库管理软件自行运行,包括数据表(Table)/区段(Segment)层级压缩、列(Row)层级压缩等。
以Oracle为例,最早在Oracle 8i提供了索引(index)压缩功能,Oracle 9i R2增加数据表压缩、Oracle 10g新增LOB压缩,接下来在Oracle 11g则有列层级压缩。
与操作系统的文档系统层级压缩相同,数据库压缩通常在I/O密集型环境较能显示出优势,若是处理器密集型环境,反而可能拖累整体能效。
应用于备份领域的即时压缩技术
备份是另一个经常应用即时压缩技术的领域,当前几乎所有备份软件都提供压缩功能,可由备份服务器对备份数据进行压缩再写入备份存储媒体,还原时再反向操作、将数据读取出来解压缩后,再送回前端,在备份与还原过程中,自动进行即时压缩与解压缩操作。
几乎所有磁带机或虚拟磁带柜,也内置了压缩功能,可将压缩与解压缩运算负担从备份服务器,转移到存储设备上。
针对网络存储设备的即时压缩
压缩/解压缩是一种耗用处理器资源的操作,如果频繁存取压缩文档,将会产生大量的压缩与解压缩操作,从而增加处理器的负担。所以微软便建议不要在共享数据夹、网络磁盘机这种多人共用、存取特别频繁的装置上,启用磁盘压缩功能,以免处理器负担过大反而影响能效。
因此文档服务器或NAS这类通过网络共享存取的存储设备,也就被排除在磁盘即时压缩的适用范围外。
不过近年来随着非结构化数据的极速增长,对存储容量的需求也直线上升,然而基于耗电量与机房空间的考量,又难以无限制地添购硬盘来扩充存储空间,因此缩减文档耗用容量的技术也再次获得重视。
为克服在网络共享存储设备上应用即时压缩功能所造成的能效问题,近来出现了一个变通方法,就是将压缩/解压缩运算移出文档服务器或NAS,改由外部的专用应用服务器来运行,如此便能兼顾利用压缩减少存储消耗、改善I/O能效,又不会增加文档服务器或NAS的处理器负担。
如IBM近来推出的即时压缩应用服务器,便是这种类型产品。这种应用服务器部署在前端主机与后端文档服务器或NAS之间,可对前端写入后端的数据进行压缩,并对后端读取到前端的数据解压缩。通过这种架构,既可减少数据在后端存储设备上占用的容量,又不会增加前端主机或后端存储设备的负担。
另一方面,在应用服务与后端存储设备间由于都是传输经过压缩的数据,所以可以减轻网络负担;而在应用服务器与前端主机间,由于应用服务器提供了额外的读取用闪存,也有增加读取能效的效果。
此外,一台应用服务器,即可同时为整个网络中的多台主机与存储设备提供即时压缩服务,省去了在每台设备上启用压缩功能的麻烦。不过副作用是用户必须另外购买与建置这种应用服务器,投入额外的初始建置成本。
即时压缩的能效冲击:I/O密集型vs.处理器密集型应用
在I/O密集型(I/O bound)环境中,能效瓶颈落在存储装置或汇流排上,处理器资源相对充裕,负载有限,反而经常必须等待缓慢的I/O读写操作。此时若启用即时压缩功能,便能充分利用多余的处理器能效,而且数据经压缩以后,存储设备所需处理的数据量减少,也可减少I/O操作,从而改善I/O能效。
反之若是处理器密集型(CPU bound)环境,此时的能效落在处理器上,处理器的运算负载接近100%满载,I/O负担相对较轻,此时若再启用即时压缩功能,将会给原本就接近满载运行的处理器带来更多运算负担,以致进一步拖慢系统能效。