在上一篇我们谈的火星舱写入队列缓存保证了I/O级CDP同时兼顾了系统性能的优化,本篇文章我们谈一谈火星舱的无限IO记录技术,通过对历史数据的任意回退,保证了企业对于IT数据的实时把握,保证了CDP的真正价值。
让我们再一次从SNIA(存储网络工业协会)在2008年对CDP的定义开始谈起:
“持续数据保护(CDP)是一种连续采集或者追踪数据改动,并存储这些变化独立于主存储,使恢复点能够来自过去的任意(时间/IO记录)点。CDP系统可以是基于数据块、文件或者应用,并能够为可恢复目标提供优秀的粒度,达到无限变化的恢复点。因此,根据这个定义,所有CDP方案需要体现出这3条必要的属性:
1. 数据变化被连续采集或者追踪
2. 所有数据变化存储在一个独立于主存储的位置
3. 恢复点目标是随意的,并无需在实际恢复之前进行定义”
在上面的描述中,大家应该注意到“来自过去的任意点”和“无限变化的恢复点”。这是指在对每次写I/O操作打上时间戳的同时,支持不限历史长度的回滚。
那么,回滚到每一个I/O有多大意义呢?这就好像数据库的undo日志能回滚每次事务操作那样。经过测试火星舱CDP系统,在SQL Server中循环插入一条简单的记录,真的能够做的回滚到每一次事务。而如果是秒级或者分钟级的“准CDP”,显然做不到这一点。
火星舱CDP可以通过时间定位到需要回滚使用的历史快照/记录点
然而,并不是每种I/O级CDP,都能回滚无限的时间长度。比如有的产品能做到保留15天内数据变化,有的不建议超过30天,等等。
为什么会这样呢?有两点因素:
1.性能影响——随着CDP保护时间的延长,对生产存储性能影响会增加?
2. 索引信息庞大——每一次数据变化,都要在索引表里有一条记录,这个记录有没有限制?
从实现原理上看:I/O记录和快照最大的不同在于,如果是ROW(写重定向)快照,在回滚时不需要真正移动数据,只是根据快照表来将索引“还原”到历史状态;或者像WAFL、ZFS这些Copy-on-write文件系统则可以做到更先进,天生就是“从不原地修改数据”的写策略,其元数据管理机制支持几乎无限数量的快照,并且性能影响更小,回滚时只是对一个表的操作。
由于I/O记录级CDP的粒度更细,有人将它称为“录像”技术,那么在回滚时就类似于“倒放”。如果保护时间一长,数据累积的变化量较大时,回滚时间通常也是成正比的。
而火星舱CDP的I/O记录技术与众不同,结合了底层文件系统的高效快照功能(非传统快照技术),使无限I/O记录的回滚也能在“瞬间”完成。并且不会随着保护时间延长,而导致性能的下降。
“长年使用我们也不怕!”——火星高科技术总监黄疆对此充满信心。除此之外,可以看到火星舱还能选择多个任意时间历史快照点,挂载为“影子卷”,在这里火星舱上生成的可回滚的I/O记录和一致性快照作为基础,保证了CDP对于用户的价值。