问:什么是数据检索技术?它同去重,压缩有什么关系呢?
答:在备份领域,重复数据删除和数据压缩技术的应用非常成功。那么,这些技术可以应用于主存储系统吗?
新一代主存储产品借助数据简缩技术,能够缩减磁盘使用量的问题,这一点是毫无争议的,但是我们却不能确定,基于主存储的数据简缩技术是否利大于弊。
对于主存储系统来说,数据简缩(data reduction)是一个更准确的术语,因为不是所有的数据简缩产品都基于重复数据删除。
压缩技术的优点是非常成熟,并且易于理解。它的缺点是处理机制仅限于单个文件之内,而无法做到跨文件处理。
针对某些特定的数据类型,块级别的去重效果是相当明显的。
怎样才能使用更少的磁盘,节省更多的电力。如果你买对了产品,不但可以缩减磁盘数量,甚至能够削减50%的电费成本 -- 这是主存储数据简缩技术的宣传口号,非常吸引人!与此同时,此类产品的价格也极具吸引力。不过,对此类技术质疑的声音仍然存在。尽管在缩减磁盘使用量这一点上几乎不存在争议,但是我们仍然不能确定基于主存储的数据简缩技术是否利大于弊。
以下是在主存储上使用数据简缩技术的关键问题:
为什么叫做数据简缩,而不是重复数据删除?
磁盘已经很便宜了,为什么还要开发新技术简缩数据?
基于主存储的数据简缩技术有哪些不同类型?
究竟能节省多少磁盘空间?
数据简缩的定义
在备份领域中,重复数据删除是被大家公认的、最恰当的技术术语,一般用来描述去除备份数据集的冗余部分。但是对于主存储系统来说,数据简缩(data reduction)却是一个更准确的术语,因为并不是所有的数据简缩技术都是基于重复数据删除的方法。作为一类技术的总称,任何能够降低磁盘空间占用的技术都包括在数据简缩的范围之内。目前,数据简缩技术有三种主要的类型:压缩、文件级重复数据删除、块级(或字节级)重复数据删除。
在详解这些不同的技术之前,让我们看看主存储系统和备份存储系统究竟有哪些区别(上面提到的几种数据简缩技术,都是先用于备份系统,之后才得以应用到主存储系统的)。主存储和备份之间最主要的区别在于它们对数据实体的存储与访问方式不同。备份是典型的批量写操作,一般通过自动化的进程处理。备份过程中,生产系统的性能会暂时下降,或者出现系统资源不足的情况。有的系统内部会植入一些技术,以解决备份过程中出现资源紧张的问题。备份过程几乎没有读操作,多数用户并不关注数据恢复的速度,如果有人要求恢复文件或数据库,管理员根据需求做恢复操作就可以了,除非恢复的时间特别长,否则没有人真的在意到底要等多久。大多数人对备份系统的期望值并不高,只要数据能恢复,他们就会满意(这看上去有点儿可笑,但事实的确如此)。使用基于磁盘的备份系统,可以显著降低备份过程对生产系统性能的影响,很多人都察觉不到这种影响的存在。
主存储系统则完全是另一种情况。数据会随时写入,常见的写操作包括填写电子表格、更新数据库,储存文档或者编辑多媒体文件等等,每天都可能有几十甚至数百次类似的操作请求。用户很在意“数据存盘、打开文档、访问数据库和网页”这些操作的响应时间。设想一下,如果因为某些原因,用户在存盘或打开文件时时间从一两秒延长到三四秒,那么肯定会找管理员投诉的。
这就意味着,主存储系统的首要原则是“不能出问题”,换句话说是不能影响请求的响应时间。回到最初的问题,使用数据简缩技术可以极大地降低存储系统的采购成本、节约电力并减少散热,但是,如果因为使用这些技术而给用户的应用体验带来负面影响的话,单纯的成本上优势看上去就不那么有吸引力了。
在主存储系统中,使用数据简缩的另一个挑战是磁盘空间的节省程度是否可以达到在备份系统中使用重复数据删除技术同样的水平,这通常是很难做到的。传统的备份技术大多以多份副本的形式将数据存放在不同的地方,同时带来大量的重复数据,但主存储系统一般不是这种情况(虽然也有例外)。大多数人感觉数据简缩50%(简缩比率为2:1)是很可观的,这就是为什么多数提供主存储简缩技术的厂商很少使用比率来衡量效果,而更倾向于使用百分比这个概念。(数据存储简缩75%,听上去比简缩率3:1更吸引人。)
如果用户考虑在主存储系统中实现数据简缩,而且期望的底线是达到备份环境中数据去重的效果,那这个工作就是非常困难的,并且得不到什么回报。我们在这里并不是不建议用户考虑主存储数据简缩技术,而是告诉用户要有一个合理的期望值。
基于主存储的数据缩减技术压缩。压缩技术已经出现了数十年,但是压缩通常是针对那些存取频率不是很高的数据,这是因为数据的压缩和解压缩需要CPU进行非常密集的计算处理,这样往往会影响数据的访问。
在企业级数据中心,压缩被广泛地应用在备份领域。现在的磁带机都可以在备份和恢复过程中动态地压缩和解压数据,我们看到压缩不仅没有减缓备份的速度,事实上还提高了备份的性能,这是怎么一回事呢?其秘密就在于磁带机使用了专用的芯片,能够以达到线速的性能对数据进行压缩和解压缩。通过压缩,数据减少了大约50%,相当于磁带机只需要将数据总量的一半写入到磁带,鉴于磁头是I/O的瓶颈,压缩实际上提高了磁带机的有效性能。
与备份应用一样,压缩的优势同样体现在主存储系统中。有一些产品诸如Storewize公司的STN-2100和STN-6000,以及Ocarina Networks公司的ECOsystem,都支持在数据写入/读取过程中同步进行压缩/解压缩,如果它们能达到线速,就不会影响主存储系统的读写性能。压缩算法的效果与数据类型有一定关系,针对不同类型的数据,存储空间的需求可以减少30%~75%不等。压缩技术的优点是技术成熟、易于理解。缺点是它的处理机制仅限于单个文件之内,无法做到跨文件处理,这也限制了压缩技术简缩数据的能力。
文件级去重。文件级去重即在文件系统中检查并判断两个文件是否完全相同。如果去重系统发现两个相同的文件,其中之一就会被指向另一个文件的指针所取代。这项技术的优点是不会影响数据的读取性能,而且用户打开文件时,也不需要进行解压缩或者数据重组,它只是简单地将多份访问请求链接到同一份数据。这种方法的缺点是效率问题,与压缩技术或者块级去重相比,它显然无法达到同样高的数据简缩比率。
块级重复数据删除。这个方案与备份系统中使用的基于哈希值比对的重复数据删除非常相似。它将所有的文件分解成数据块,然后通过散列算法,为每个块创建一个哈希值,并与其他所有数据块的哈希值进行比对,如果两个不同数据块的哈希值完全一致,其中的一个块就会被删除,并用指向另一个块的指针来代替。
针对某些数据类型,块级去重的数据简缩效果相当明显。其中,对虚拟机系统,尤其是桌面虚拟化系统的映像文件,块级去重的效果最为惊人。在这种环境下,将数据简缩掉75%甚至90%都很常见。在其他的应用环境中,数据简缩的效果与用户自己创建了多少重复的数据副本有一定关系。有一些用户会在他们所用的目录下保存文件的多个版本,比如他们在某一时刻将文件存盘,然后用不同的文件名再做一次存盘,他们知道,用这个方法,无论在什么情况下,都能恢复到以前的版本。但是,这种做法会导致一个文件有许多不同时间点的副本,而且用户很少回头去删除那些旧的文件版本。此外,有许多在一起工作的人可能会分别下载同样的文件,这些重复的数据都会存放在他们的共享文件夹中,这就是为什么块级去重经常是针对用户工作目录的原因。
块级去重是全局处理模式,能够发现存储空间内所有的重复数据,无论数据以怎样的形式保存,这是它的优点。这种方法的缺点是,它分割的数据块较大。压缩则恰好相反,压缩是一种粒度级别更低的处理机制,比如,去重算法可能将数据块的大小定义为8KB,而一个优秀的压缩算法会将块的大小缩小到4KB。这就是为什么有一些数据简缩系统同时使用压缩和去重两种技术的原因。
下面提及的厂商目前都已经推出了主存储数据简缩产品(按字母顺序排列):
EMC
EMC在他的Celerra filer (NAS产品)中提供了文件级去重以及针对休眠数据的压缩功能。管理员可以根据需要进行配置,比方说可以定义对旧文件(创建时间超过一个设定值)进行去重或压缩处理,或者从文件大小的维度进行定义。虽然,仅仅对部分数据进行简缩的效果明显不如覆盖全部数据,但是EMC的用户报告仍然显示,通过实施数据简缩,用户极大地节省了开支。
Exar公司
Exar在2009年4月收购了Hifn公司,获得了重复数据删除技术。最终用户可能不太熟悉Exar这家公司,但没准已经用上了他的产品。许多高端虚拟磁带库(VTL)和带有去重功能的备份系统都配有Exar的硬件数据压缩卡。目前Exar公司已经发布了一个可以安装在Windows或Linux服务器上的硬件重复数据删除卡Hifn BitWackr B1605R,这是一个硬件与软件结合的产品,服务器内任何一个硬盘上发生写操作,都会做数据去重处理。它可以帮助CPU摆脱处理数据去重和压缩的负担,同时也让用户在Windows或Linux服务器上加入数据简缩功能变得更加容易。
GreenBytes公司
GreenBytes公司的地位比较独特,因为他们是第一个试图创造一种单一的数据简缩产品,能够同时用于备份系统和主存储系统的厂商。这个产品就是GB-X系列,它既是一个NAS设备,也是SAN设备。GreenBytes使用了基于散列算法的重复数据删除技术,但他们的算法不同于所有其他厂商。他们的算法叫做Tiger,而不是其他公司广泛使用的SHA-1。GreenBytes解释说Tiger比SHA-1更适合通用处理器,因此,该产品具有明显的性能优势,同时也不会影响数据的完整性(因哈希碰撞引起的数据去重错误,可能造成数据丢失)。Tiger的散列键长度(key space)是192位,明显高于SHA-1的160位,从而进一步降低了哈希碰撞的几率。与此同时,GreenBytes在产品中大量使用SSD固态盘,作为SATA磁盘前端的高速缓存,这样做可以更好的满足用户对主存储系统性能的要求。
惠普
惠普在他的StorageWorks X系列网络存储系统中提供文件级去重功能,但不具备压缩功能。对于用户来说,文件级去重系统的存储空间简缩能力相对有限。
NetApp
实际上NetApp是第一个提供数据去重功能的一线存储厂商,它利用并改进了已有的WAFL(write anywhere file layout)文件系统技术。WAFL文件系统已经为存储在其中的每个数据块计算了一个CRC校验码,并且在文件系统中还包括块地址的指针(NetApp系统能够做数百个快照,而且文件系统的性能不会有任何下降,其秘密就在于此)。一个可选的占用极低系统资源的守护进程负责检查所有的校验码,如果有任意两个校验码匹配,filer(NetApp系统的别名)就会对这两个数据块做块级比对。如果比对的结果是完全一致,那么其中的一个数据块将被WAFL指针所取代。块级去重处理不会对系统性能产生明显的影响。有许多客户测试过NetApp的重复数据删除功能,涉及到多种数据类型,包括目录/文件,数据库和虚拟机映像文件,大部分用户对去重的效果和系统性能都比较满意。在撰写本文时,NetApp只提供了重复数据删除功能,而没有压缩。
Nexenta Systems公司
Nexenta的NexentaStor系列存储软件产品使用了Oracle/SUN公司的Solaris ZFS文件系统,该文件系统基于开源的 OpenSolaris操作系统平台。不过,该公司已经在标准的ZFS上面增加了超过30种独有的附加功能,集成了包括管理控制台,LDAP,持续数据保护(CDP)和同步复制等功能。最近发布的NexentaStor 3.0提供了重复数据删除功能,完全兼容Citrix、XenServer,微软Hyper-V和VMware vSphere等服务器虚拟化平台。
Ocarina Networks公司
同许多其他厂商相比,Ocarina Networks公司采用的数据简缩方法完全不同。多数厂商使用的压缩和去重技术并不会识别数据的类型,而Ocarina公司则有数百种不同的压缩和去重算法,针对每一种特定类型的数据。比如,他们使用完全不同的压缩技术去处理word文档和图像文件。他们还支持像DICOM (Digital Imaging and Communications in Medicine)这样的嵌入式系统。具体处理方法是:Ocarina先拆解DICOM数据包,然后对各类组件进行检查并去重,最后重新封装数据包。因此,在同类数据的压缩和去重比率方面,Ocarina经常可以做到比其他厂商更高。
Ocarina Networks不是一个存储厂商,他通常与存储硬件厂商合作,并为存储系统提供接口支持。目前他的商业伙伴包括BlueArc,EMC,惠普,HDS和Isilon。
Oracle-Sun
Oracle的Solaris ZFS文件系统也内建了块级重复数据删除功能,但是目前为止,关于它在客户那里的使用情况—去重和性能表现,我们还没看到很多可用的信息。不过,ZFS的网站倒是提供了一些说明:只要把用于去重比对的哈希表放在内存中运行,那么系统启用去重或不启用去重,在性能上不会有明显的差异。
市场的快速增长
大约一年多以前,市场上还没有基于主存储的数据简缩产品,但是现在,我们已经有了六、七个可选方案,而更多的新产品会陆续面市。文件存储市场正处在快速增长期,存储厂商必然会将数据简缩技术集成到他们的各种产品中,这个时间一定不会太久。
一些厂商认为归档和分级存储管理(HSM)也是数据简缩技术。归档和HSM应用都可以减少磁盘上的数据量,但它们的做法只是将数据从一个存储系统迁移到另外一个。虽然也可以节约成本,但是并没有真正缩减数据量,仅仅是将数据转移到更便宜的存储介质上。尽管它们都是很好的技术,也值得那些有海量数据管理需求的企业去研究,但它们并不是我们要讨论的数据简缩技术。