多副本机制是超融合软件常用的数据保护方式,可以为存储数据提供冗余保护——即使一个或部分副本异常,系统仍可通过健康副本进行副本恢复。但是,主流实现方式下,这一机制依旧无法避免“副本降级”期间带来的风险:在副本恢复完成之前,集群整体副本数依旧少于预期,此时若健康副本同样遭遇故障或意外离线,将很有可能导致数据丢失。为进一步提高数据安全性,SMTX OS 5.1 引入了“临时副本”这一创新机制,保证副本数据恢复期间“副本不降级、数据不丢失”,满足关键业务连续稳定运行的需求。
主流多副本保护机制的缺陷
多副本保护机制介绍
多副本技术,顾名思义就是一份数据对应多个相同的数据副本,多个副本按照既定的规则放置在不同的设备当中,以避免硬件故障导致的数据损坏或丢失。当发生硬件故障导致集群中一个副本或多个副本离线或损坏时,一方面,健康副本可保证正常 I/O 读写;另一方面,系统可通过拷贝健康副本重新生成多个副本,以恢复数据的副本级别,实现数据冗余保护。
如图 1 所示:以 2 副本为例,存储卷(volume)被切分为多个数据块,而每个数据块都拥有 2 个副本。如数据块 A 的两个副本分别放置在服务器节点 1 和服务器节点 2 上。即使任意一台服务器节点宕机,至少还有一个副本可以正常访问,从而达到数据冗余保护的目的。
SmartX 超融合基础架构同样采用多副本技术为虚拟机提供数据冗余保护。它⽀持配置 2 副本、3 副本共两种存储策略,不同的副本策略可以容忍不同级别的硬件损坏。
当前问题
超融合集群除了需要面临硬件损坏, 还可能面临诸如硬盘误操作拔出、服务器节点意外重启、存储网络闪断等问题,最终导致硬件的短暂离线(一段时间后重新上线)。这些情况通常会引起副本降级(副本数量少于预期),而且系统也很难辨别这是一次短暂离线还是永久离线。以 2 副本为例,在发生副本离线超时后,后台会自动剔除异常副本,以健康副本来响应正常的 I/O 请求,同时触发数据恢复来重建缺失的数据副本。但在数据完成恢复之前,新的数据读写都只发生在唯一的健康副本之上。
如图 2 所示:以 2 副本策略为例,正常情况下,数据 A 包含 2 个副本,当发生 I/O 写入时,副本 1 和副本 2 会同步写入 I/O。当副本 2 异常下线之后,副本 2 将被剔除,并触发数据恢复到副本 2’。在数据恢复期间,数据的变化只写入了副本 1 (副本降级),直至副本 2’ 重建完成之后,副本 2’’ 才能重新接受写 I/O(副本级别恢复)。
注:副本 2” 表示完成数据恢复的新副本,与未完成数据复制的副本 2′ 进行区分。
在副本降级期间,实际只有 1 副本在工作,一旦出现健康副本受损离线的情况,那么就有很大几率导致数据丢失。下面将通过图例说明副本降级期间的风险。
如图 3 所示:当副本 2 发生异常而无法访问时,I/O 可以正常写入并更新到副本 1,同时后台将触发数据恢复(通过拷贝副本 1 的数据重新生成副本 2’’)。而数据恢复是需要一定时间的(时长取决于数据量的大小),在数据恢复完成之前,副本 2’ 是无法正常访问的(数据不完整)。如果这个时候副本 1 遭遇硬件故障或其他原因的损坏而无法访问,那么数据 A 将没有办法通过任何可用的副本进行恢复,也无法正常读写,大概率导致数据丢失的情况发生。
SmartX 超融合临时副本技术原理
针对这一以上问题,SMTX OS 5.1 提供了一种创新性的数据恢复机制,可有效降低副本降级问题带来的风险,提高故障场景下的数据安全等级。新的处理机制引入“临时副本”概念,可确保新写入的数据维持副本级别(整个数据恢复过程不降级);甚至在数据恢复期间发生其他叠加故障导致所有健康副本异常时,依然允许系统通过特殊的恢复机制进⾏数据修复(支持完全修复和部分修复),从⽽最大限度地保障数据恢复期间的数据安全性。
概念定义
- 健康副本:可提供完整读写能⼒的数据副本。
- 失败副本:出现异常、⽆法提供正常读写能⼒的数据副本,可基于临时副本进⾏数据修复。
- 临时副本:在健康副本降级期间,负责记录新数据的写⼊,不负责数据的读取。
临时副本运作机制
SMTX OS 5.1 采用临时副本策略提高异常发生后数据副本的安全性。
- 数据组成:当出现副本降级,需要剔除异常副本时,通过分配临时副本响应写请求,记录数据恢复期间新写⼊的数据,以保证数据副本数满⾜预期(临时副本数据 + 健康副本数据 = 完整副本数据)。
- 生命周期:数据恢复期间,会保留异常副本并标记为失败副本,每恢复⼀个健康副本,就移除对应的失败副本和临时副本。
- 无损修复:如果在数据恢复期间叠加其他故障导致所有副本均出现异常,在失败副本恢复访问的情况下,可以通过特殊恢复机制⼈⼯进⾏数据修复,将临时副本上的数据重放⾄失败副本上,形成完整的健康副本。
- 适用场景:临时副本策略仅能改善因为可恢复故障(由于⽹络或者其他原因造成的副本临时下线)带来的副本降级。
数据恢复
正常数据恢复
2 副本或 3 副本数据在出现单个副本异常时,会为异常副本分配对应的临时副本,记录副本异常后的新写⼊的数据,并使⽤健康副本作为数据源进⾏数据恢复。
如图 4 所示: 以 2 副本为例,当副本 2 离线无法访问时,系统将从元数据中剔除异常副本,同步触发数据恢复,并额外创建临时副本,所有新写入的数据会同步写入副本 1 和临时副本(新写入数据维持 2 副本级别,不降级);与此同时数据恢复也同时在进行,通过复制副本 1 重新形成副本 2‘,当所有数据恢复完成,副本 2’‘ 处于正常状态,系统会自动删除临时副本。
利用临时副本进行无损修复
在数据恢复的过程中,如果不幸,唯一的健康副本也发生了损坏或下线,那么虚拟机将⽆法访问任何副本数据,也没有办法正常进行 I/O。但如果这时候当初离线的失败副本已经重新上线(如机器重新启动或者网络恢复等),且数据没有损坏的情况下,系统仍然可以合并失败副本(首次副本离线前的旧数据)和临时副本(离线后写入的新数据)进⾏修复,但虚拟机在数据修复期间⽆法进⾏ I/O,直至修复完成。下面将举例说明无损修复是如何实现的。
如图 5 所示: 当副本 2 发生异常离线,系统自动触发数据恢复并创建临时副本,新写入的数据会同时记录到副本 1 和临时副本当中,并通过数据恢复生成副本 2’。如果在数据恢复过程中(副本 2’ 未完全复制完成的情况),发生叠加故障,副本 1 发生了损坏或离线时,那么这个时候已经没有任何完整副本可供访问了,数据 A 也完全离线了。而系统可对原有的副本 2 的数据(已经重新上线)和临时副本(增量数据)进行数据整合,形成完整的数据副本 3,此时数据 A 可以重新上线并接受读写请求,同时可重新触发数据恢复,等待完成数据恢复之后,重新形成健康的 2 副本状态。
临时副本机制的限制和影响
限制
临时副本主要针对硬件短暂离线下的副本降级风险,但对于不可恢复的硬件故障(如磁盘损坏等),临时副本没有直接的效果。如要应对此类多个硬件叠加故障的场景,建议采用高级别的副本策略(3 副本策略)进行保护。
影响
- 空间影响:临时副本的创建会额外占用存储空间,但是数据恢复完成后,这部分空间会自动回收。
- 性能影响:由于虚拟机变化的数据会同步写入临时副本,因此这一过程对虚拟机的写入性能会有一定的影响(持续至数据恢复完成)。目前性能影响在可接受的范围内,而且该功能也在持续优化过程中,后续版本这部分影响将进一步降低。
原文链接:https://www.smartx.com/blog/2023/11/smartx-hci-temp-replica/