原理
HyperCDP能为存储设备上的数据生成更多更密集的恢复点,从而为用户提供持续的数据保护。
相关概念
- ROW
ROW是指写时重定向技术,是实现HyperCDP的核心技术。当系统收到写数据请求需要修改源数据时,存储系统在存储池中为新写入的数据指定新的存储位置,并将被修改数据块的指针指向新的存储位置。
- 数据组织形式
OceanStor Dorado V6系列存储系统存储池中创建的LUN包含了元数据卷和数据卷两部分。
- 元数据卷:记录LUN中数据组织形式(LBA、Version、Clone ID)及其属性的卷,结构形式为树形。
LBA(Logical Block Address)是逻辑区块地址,Version和HyperCDP的时间点信息是一一对应,Clone ID表示副本数。
- 数据卷:存放LUN中的实际数据的卷。
- 元数据卷:记录LUN中数据组织形式(LBA、Version、Clone ID)及其属性的卷,结构形式为树形。
- 源卷
需要创建HyperCDP的源数据所在的卷,对用户而言表现形式为源LUN。
- HyperCDP副本
对HyperCDP进行复制,获得多份激活时间点HyperCDP数据副本的技术。HyperCDP数据副本中的数据仍然与HyperCDP创建时间点的数据一致。
- HyperCDP一致性组
保护组用于集合一组具有一致性应用的LUN,保证多个LUN之间数据的关联关系。OceanStor Dorado V6系列存储系统支持对保护组创建HyperCDP,即对保护组中的成员LUN在同一时间点创建HyperCDP。
HyperCDP一致性组主要应用于数据库场景。数据库中通常将不同的数据(例如,数据文件、配置文件、日志文件)存放在不同的LUN上,且这些LUN之间是存在关联关系的。当通过HyperCDP对数据库进行备份时,需要确保这些LUN在同一个时间点创建HyperCDP,确保进行数据库恢复时应用数据的一致性。
原理实现
- 创建HyperCDP:HyperCDP创建后,即为激活状态,系统会生成与源LUN一致的数据副本。此时,存储系统将源LUN的指针复制给HyperCDP,HyperCDP的指针指向源LUN数据的存储位置,即源LUN和快照的LBA相同。
- 源LUN写入数据:HyperCDP创建后,当应用服务器对源LUN有数据写入请求时,存储系统利用ROW技术将新写入的数据存放在存储池中新的位置,源LUN的指针更新,指向新数据的存放位置。HyperCDP的指针仍指向原始数据的存储位置,从而保存源LUN在HyperCDP创建时间点的数据。
执行快照前,源LUN数据分布图如图1-1所示。
执行一次HyperCDP创建操作并对源LUN进行写操作后,源LUN和HyperCDP的数据存储位置如图1-2所示。
- 源LUN和HyperCDP都使用映射表访问物理空间, 源LUN的初始数据为“ABCDE”,且“ABCDE”在物理空间上也是顺序存放的。 快照的映射元数据一开始是空的。
- 当源LUN接收到一个把“C”修改为“F”的写操作时,并不会覆盖写入物理空间P2,而是直接写入一个新分配的物理空间P5,即图中步骤2。
- 源LUN完成写入后,向Hyper的映射元数据中插入映射项“L2 ->P2”,表明此后对HyperCDP逻辑地址L2的访问不再重定向到源LUN,而是直接读取物理空间P2。此步骤即图中步骤3。
- 将源LUN映射元数据中的映射项“L2 ->P2”修改为“L2 ->P5”,即图中步骤4。 此时源LUN的数据变为“ABFDE”,而快照的数据仍保持“ABCDE”不变。
此时,HyperCDP和源LUN元数据分布图如图1-3所示。
HyperCDP创建后,主机不能直接读取HyperCDP数据。需要对HyperCDP创建副本并映射给主机,客户端应用程序通过访问HyperCDP副本获取某个时间点的HyperCDP数据。后续,如果想读取该LUN的另一个时刻的HyperCDP的数据,可基于另一时刻的HyperCDP重新创建副本,重新创建副本可以立即获得另一时刻的HyperCDP的数据。
HyperCDP不但能够快速生成源LUN在某个时间点的一致性副本,还提供了快速恢复源LUN的机制。当源LUN的数据遭到人为意外删除、破坏或病毒入侵时,通过回滚可以快速将源LUN的数据恢复到HyperCDP创建时间点的数据,减少源LUN数据的丢失量。