存储的高可用与备份
引言
在《存储的高可用与数据风险(一)》中,我们介绍了主存储的可用性与持久性,并且分析了系统可能面临的各种风险。在这篇文章中,我们将探讨一下存储的高可用与备份在技术、场景上的一些区别。
背景知识
在主要内容展开之前,先整理几个下文中会提到的术语:
RTO(Recovery time objective)
从灾难发生到整个系统恢复正常所需要的时间的指标。
RPO(Recovery point objective)
恢复点目标,指当灾难或紧急事件发生时,系统丢失数据的最大区间。RPO可以用时间来衡量,例如5分钟。
数据损失/数据丢失量
跟RPO有点相似,RPO是衡量业务连续性的指标,而数据损失/数据丢失量就是意外发生时,实际的数据丢失的衡量,也可以用时间来表示。
技术原理
存储系统的高可用一般有以下一些技术方案:
RAID或纠删码技术
在传统磁盘阵列的存储系统里,RAID5,RAID6,RAID10都是常见的RAID类型。纠删码技术更多用在分布式存储中,例如分布式文件系统或者对象存储。相比较来说,纠删码技术提供了更灵活的配置,一般也可以提供比RAID6更好的冗余性。
多副本拷贝
多副本技术也是分布式存储中常见的技术,常见的使用多副本的分布式存储有Ceph,vSAN,HDFS等。相比较纠删码技术来说,多副本拷贝由于数据分布较简单,不用做冗余码的计算,一般来说IO性能以及重构性能会有一些优势。在可靠性上,多副本和纠删码的故障冗余程度往往差别不大,比如3副本和4+2纠删码都可以允许任意2个节点故障而数据不丢失。但是在数据的利用率上,多副本比纠删码就差的比较多。
同步或者异步复制
传统的磁盘阵列存储系统,通常也有同步或异步复制功能,可以把数据从一个站点同步或者异步的复制到灾备站点。参考2中NetApp的MetroCluster宣称RPO=0,RTO小于2分钟。参考3中IBM的Global Mirror技术可以实现RPO在3至5秒,RTO为30秒到5分钟之内。
数据备份主要的技术原理是:
快照
这里的快照是指主存储的快照。主存储的快照的特点是生成快照的速度比较快,而且不影响应用。备份系统的作用主要是通过备份的策略来协调快照的生成,并管理整个的数据的周期。
数据拷贝到第二存储
数据备份的关键在于把数据拷贝到与主存储隔离的第二存储,如NFS,对象存储等。有些备份系统还会把数据归档到磁带库。我们知道,主存储系统不是完美的,可能会遭遇数据的意外损坏,这时候需要用被损坏前的完整数据来进行恢复。因此备份的数据需要同主存储的数据隔离开来,并且一般来说备份系统会保证数据的留存周期超时之前,数据都不能被删掉。
恢复时效
对主存储来说,系统的恢复有两种场景:
一种是单块(甚至多块)盘或者单个(多个)副本的可恢复的数据损坏
这种情况下,数据一般通过RAID、纠删码或者多副本天然的恢复机制就可以恢复过来,可能会造成部分IO延迟返回,但大部分情况都不会造成对应用的影响。
站点失效
这种情况下,主站点已经不可用,一般的主流存储厂商可以实现应用秒级的切换到灾备站点。
对备份来说,这里探讨的恢复数据只有一种情况,那就是主存储的数据被真正损坏了,要么没有配置灾备站点,要么灾备站点数据也被影响而不可用。这里恢复的实效分两种情况:
数据损失
对主存储来说,数据损失分为几种情况:
局部数据损坏可以被RAID、纠删码或者多副本恢复
这种情况下局部的数据损坏被主存储发现并且依靠RAID等技术自动恢复了,最终损失为0
配置了同步复制的灾备中心
由于软硬件故障或者极端情况导致了主站点不可用,由于配置了同步复制,RPO接近0,这种情况下数据损失为0。
配置了异步复制
如果没有配置同步复制,那么当主站点不可用时,灾备站点的数据是有损失的,取决于异步复制的传输延迟。例如,异步复制的延迟是2分钟,那么数据损失至少就是2分钟。
对备份来说,当主存储出现数据损坏需要备份数据来恢复时,这里说的数据损失就取决于备份的间隔。例如,系统配置了一个每小时整点备份的策略,主存储在12:20发现数据损坏的情况。如果从备份数据来恢复,那这里最近的备份就是12:00时刻的,那么数据损失就有20分钟。
适用场景
到这里,我们可以根据前面的理解来分析一下存储的高可用与备份分别适用于哪些场景。
对主存储来说,RAID、纠删码以及多副本等技术主要是为了提高本地的数据的冗余性,在单盘或多盘失效的情况下还能进行客户无感知的恢复动作,保证数据的一致性。而同步或异步复制,其实已经引入了灾备中心,在站点级别多了一层冗余的保护,让系统整体的可靠性进一步提升。因此,主存储的可靠性主要适用的场景可以总结为:
然而,这在整个系统面临的风险中,只覆盖了一部分,基本上只涵盖了硬件故障和自然灾害引起的站点失效等。还有诸如系统本身的软件故障,以及人为因素等,基本上都不在此范围内。
举例来说,当系统遇到误操作或者病毒攻击引起的数据篡改时,主存储对数据是否被篡改根本无法察觉。而被篡改的数据很自然就会在主存储中通过RAID、多副本等技术扩散开来。如果配置了灾备中心,那数据也同样会被同步或异步复制到远端。当数据篡改被发现时,可能已经过了一段时间,扩散已经发生。在这种情况下,就需要备份系统的配合。如果之前配置了备份策略将数据定时备份到隔离的第二存储,那么,当数据篡改这样的事件发生后,总能在第二存储中找到一个被篡改前的时间点,这个点就可以被用来恢复主存储的数据。
上面这个例子是在配置了灾备中心的情况下的数据损坏,对一般的中小企业来说,可能大部分都不会配置灾备中心,毕竟一套以主存储为基础的灾备中心成本不菲。其实,对这种配置来说,如果主存储出现数据丢失,也可以用备份的数据进行恢复,只不过恢复的时效以及数据损失量可能比不上灾备系统。但是,在没有配置灾备中心的情况下,备份系统的配备几乎是必须的,否则,当发生数据丢失的情况下,拿什么来恢复数据?
因此,这里我们可以总结下备份适用的场景:
- 物理故障(恢复时效要求不高时)
- 逻辑故障(软件缺陷导致的数据损坏)
- 人为故障(黑客攻击、病毒感染、删库跑路等)
总结
把上面几节的内容整理到下面的表中:
| | 技术原理 | 恢复时效 | 数据损失 | 适用场景 |
| ------ | --------------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| 高可用 | - RAID、纠删码<br />- 多副本 <br />- 同步或异步复制 | - 无影响时间(RAID,多副本)<br />- 秒级以上(数据切换速度) | - 无丢失(RAID,多副本,同步复制)<br />- 取决于传输间隔(异步复制) | - 物理故障(坏盘、节点故障、站点失效) |
| 备份 | - 快照<br />- 数据拷贝至第二存储 | - 秒级(快照)<br />- 分钟级以上(数据拷贝速度) | - 取决于备份间隔 | -物理故障(恢复时效要求不高时)<br />- 逻辑故障(软件缺陷导致的数据损坏)<br />- 人为故障(黑客攻击、病毒感染、删库跑路等) |
结语
本文在技术原理、恢复时效、数据损失等几个方面分析了存储的高可用与备份各自的特点,并对各自的适用以及不适用的场景进行了分析与总结。回到《存储的高可用与数据风险(一)》中开篇提出的问题:“在主存储的可靠性达到7个9、持久性到11个9的情况下,还是否需要备份?”相信大家都有了自己的答案。
参考
1. Wikipedia Disaster Recovery
2. Netapp DR
3. Wikipedia IBM Global Mirror