重复数据删除技术能够删除用户存储系统中大量的无用的冗余数据,因而为用户的存储与备份节约大量的空间成本。根据重复数据删除厂商的宣传,一些情况下,经过重复数据删除处理后的数据,精简比例可以达到30:1。
重复数据删除在实际实现方式上包括联机处理和后期处理两种类型。不同的厂商拥护不同的技术,开发不同的产品,也为这两种实现方式的优劣争论不休。实际上联机重复数据删除和后期处理重复数据删除技术只不过是技术实现方式的不同而已,而无孰优孰劣之分。而且我认为争论哪种方式更好就如同讨论同步复制和异步复制方式谁更好一样。两种方式各有长短。 重要的是何种方式能够更好地满足客户的数据备份需求。
以下我阐述了重复数据删除技术的这两种实现方式以及各自的技术特点,借此希望能消除人们的对这两种处理方式的误解,并对客户选购具备重复数据删除特性的备份设备时有所帮助。
首先,我简述一下两种方式的实现原理和过程。
联机重复数据删除技术(我觉得称之为同步方式更合适)
当大量的备份数据流到达具备重复数据删除技术的备份设备时,首先驻留在内存里,重复数据删除引擎开始对先到的备份数据进行辨识,判断是否存在已保存过的数据块。 如果有,则写入一个指针来代替实际数据块的写入过程。如果没有,则写入该新数据块。任务结束。
采用这种方式进行重复数据删除工作,可以显著降低I/O的开销,因为大部分工作是在RAM内完成的。只是在做哈希算法查找重复的数据块时产生了少量的磁盘操作(只有一家厂商声称他们的哈希查找也是在RAM内完成的)。
某些重复数据删除产品还需要花费额外的时间,对于在原有数据块中初步已判断重复的数据块进行读操作,在字节级别确认匹配后才会舍弃。假设重复数据删除比为10:1,那么95%的处理时间只是对于重复的数据块进行一次写操作,用来更新哈希表就可以了,对于冗余的数据块丢弃即可而无需对磁盘进行其他任何写操作。剩余5%的时间用来将那些唯一的数据块写入磁盘并更新哈希表。
后期处理重复数据删除技术(我觉得称之为异步方式更合适)
当备份服务器开始向备份设备传输备份数据流时,会将整个备份数据量作为一个整体来传送。 然后启动单独的进程开始读取已写入磁盘的数据块,开始重复数据删除处理过程(该过程通常由另外一个设备执行,访问备份数据已写入的磁盘),如读入的数据块和已存储的数据块重复了,则用指针替代该数据块,如果没有重复,则将该新数据块留在磁盘上,而无需任何其他操作。
这种处理方式比联机处理方式显然需要更多的I/O操作。首先,后期处理方式要求进行所有备份数据块的写入操作。 然后,还需要对写入的所有数据块进行再读入操作,并与哈希表记录进行对比查找重复的数据块,这就需要额外的磁盘读操作。某些厂商的产品还要求进行再次的读操作来确认数据块在字节级别的重复。如果确认了重复的数据块,需要进行删除重复的数据块的写操作,另外还需要发起更新哈希表的写操作,该过程占用了整个处理过程95%的时间。余下5%的时间用来处理那些不匹配的数据块,同样需要对哈希表进行更新写操作。
下表总结了两种处理方式的技术特点:
*某厂商宣称他们可以将哈希表保留在RAM内,这样就无需执行磁盘读操作来检查哈希表了。
各有长短的两种方式
所有的人都同意只有当重复数据删除处理过程结束后,整个备份任务才算完成。
从以上的技术对比表中,我们可以知道采用联机重复数据删除方式,整个处理过程所需的I/O操作最少。采用联机处理方式的厂商认为后期处理方式会导致备份时间延长。但是联机处理方式必须非常仔细地进行调优处理,保证它的重复数据删除速度足够快,从而不至于造成进入备份设备的备份数据流拥塞,而无法继续执行备份任务。
后期重复数据删除技术的强项在与它将整个处理过程进一步分解为两个独立的处理过程,而且在重复数据删除处理过程中可以利用更多的处理资源(添加额外的主机)来加快处理过程。但是,这种方式在整个处理过程中涉及到的I/O操作太多,这是它不利的一方面。
如果你的备份速度足够快,而且整个备份及重复数据删除过程所耗费的时间没有超过备份窗口的要求,你会介意采用何种重复数据删除技术方式吗?我认为不会。这也是为什么我认为争论何种方式更好没有实际意义的原因。关键是看哪种处理方式更适合你实际的备份需求。当然,我建议用备份环境中最大的备份负荷来进行测试。
如果你购买的备份设备能够满足你备份任务的需求,谁会介意具体采用的是哪种技术呢?我认为备份管理员应该重点考虑备份的速度、容量和成本等问题,而不是过于关心联机处理或者是后期处理方式。其他需要考虑的问题还包括:备份设备是否易于安装配置,是否支持主流的备份管理软件等。
确切地说,备份设备不会因为采用了何种重复数据删除方式从而使整个备份进度加快,具体要看设备供应商是如何实现备份处理过程的。采用两种方式的设备都存在截然不同的备份记录。所以不要太在意某些厂商所强调的,诸如他们的备份设备中采用的重复数据删除方式是最快的、最好的等这类的市场用语,我倒觉得由于两种处理方式各具千秋,如果能够在一台备份设备中集成这两种处理方式,让用户自己在实际备份环境中去选择最适合的方式,倒不失为一种明智的解决方案。
关于实现方式的五大误区
“联机处理方式一定会降低备份的处理速度”
大量的实际备份案例证明,采用联机重复数据删除模式的备份设备,其备份速度比那些磁带备份以及普通的磁盘备份方式要快很多。大多数情况下,都可以达到40-50MB/s的备份速度,而在普通的备份环境中很难在单一备份数据流中实现这一指标。
“降低备份数据流的读入速度会造成严重的后果”
采用的重复数据删除技术是否会造成备份速度降低?是否比以往采用的磁带备份方式更快?备份过程是否能够满足备份窗口以及RTO的需求?实际上后者才是需要关注的重点。
另外,需要强调的是只有当重复数据删除处理结束,整个备份任务才能算真正完成。特别是,当你的后期处理重复数据删除设备的性能较差时,显然那会降低你的重复数据删除比。
“后期处理重复数据删除方式是当所有数据备份过程结束后开始的”
这是关于后期重复数据删除技术流传最广泛的观点,人们往往是从该处理方式的名称简单推断而来的。这也是为什么我倾向于采用异步处理方式来称呼该处理技术的原因。
后期处理方式一般是在虚拟的磁带介质写入备份数据后才开始处理过程的,换句话说就是等待虚拟磁带写满后或者备份任务结束后才开始。根据备份管理员对备份系统的不同设置,这一等待延迟从几分钟到数小时不等。
该等待时间从第一组备份任务传送备份数据流开始算起,当第一盘虚拟的备份磁带写满或第一组备份数据流写入结束后,此后的重复数据删除处理就不存在延迟等待问题。因为,当系统在进行前一写入备份数据的重复数据删除处理时,备份系统可以继续往后续的虚拟磁带介质中写入第二组或第N组的备份数据,从此刻起,这两部分的工作是并行进行的。
“后期处理重复数据删除方式会降低整体备份进程的速度”
如果能对备份设备进行合适的配置,这不应该是个问题。如果在现有的备份环境中出现上述情况,我们可以通过将重复数据删除处理分配到多个单独的服务器上来分担处理的负荷,虽然在对已写入的备份数据进行重复数据删除时,不同的处理引擎(重复数据删除处理服务器)会访问同一磁盘阵列,但是它们可以访问同一磁盘阵列的不同区域,完全可以实现高速并发处理,而不会和持续写入的备份数据流产生任何的冲突。所以,这种担心是完全可以避免的。
“后期处理重复数据删除的过程是在所有备份数据都已被复制到另外一个磁盘设备上后才会开始执行”
就像大多数夸大之词一样,这也是目前市场上最流行的误区之一。
当虚拟磁带介质被加载到驱动器时,虚拟带库会停止对其的重复数据删除处理,另外,当备份数据流正在写入虚拟磁带时,也会暂停重复数据删除处理。前者是因为虚拟带库认为此时可能正在进行数据恢复或复制操作,而重复数据删除过程不能与此类作用于同一磁盘阵列的读操作相互竞争资源。后者则是通过大量测试证明没有任何技术问题。
其实,在实际环境中,这根本不会成为技术问题,因为我们一般会将备份数据流写入多盘磁带介质,实际写入磁带的数量远大于我们实际拥有的磁带驱动器数。只要满足这个唯一的条件,那么当其他磁带正在进行复制或其他读写操作时,总有剩余的磁带介质可以进行重复数据删除处理。
而且,重复数据删除机制也支持此类智能化操作。 (目前仅有的担心是当备份软件正准备从某磁带介质读取数据时,虚拟磁带库系统会暂停重复数据删除处理,但请注意,并不是暂停所有磁带介质上的重复数据删除处理。 这个技术问题很快也会得到解决,至少有一家厂商声称可以通过分割磁带数据区域的方法来实现并发读写,即当备份软件正在对某盘磁带介质进行写入操作时,我们可以对该介质的其他部分进行重复数据删除处理,而不存在相互干扰的问题。)
当我们对重复数据删除的实现方式有所了解后,发现这不是一个简单的非此即彼的选择,当你采购具备重复数据删除功能的备份设备时,建议你的购买决定应该更多地基于设备性能、备份容量、性价比、服务支持以及厂商的专业背景等方面,而不是看其具体采用何种重复数据删除模式。 |