4. 存储层灾备:存储复制技术(同步/异步)、存储虚拟化、存储双活(VPLEX/SVC)
存储层,说白了就是交易系统的「压舱石」。
我见过太多系统,应用层做得花里胡哨,结果存储一挂,全完蛋。金融交易系统尤其如此——每一笔订单、每一分钱,最终都要落到磁盘上。存储层要是扛不住,前面再牛的架构都是白搭。
今天咱们就聊聊存储层灾备的几个核心手段。我个人习惯把它们分成三类:复制技术、虚拟化、双活架构。咱们一个一个来。
4.1 存储复制技术:同步 vs 异步
存储复制,说白了就是把数据从A存储拷贝到B存储。但怎么拷、拷多快、丢不丢数据,这里面的门道可深了。
4.1.1 同步复制
同步复制,就是「写一次,确认两次」。应用写数据到主存储,主存储必须等备存储也写成功了,才告诉应用「写完了」。
我在项目中遇到过一家券商,他们做核心交易系统的存储灾备,坚持用同步复制。为什么?因为交易数据丢不起。哪怕丢一笔订单,可能就是几百万的损失。
- RPO = 0(数据零丢失)
- RTO 取决于切换速度,通常分钟级
- 对网络延迟极其敏感,建议同城10公里以内
- 写性能受限于最慢的那一端
4.1.2 异步复制
异步复制就灵活多了。应用写完主存储就返回成功,数据在后台慢慢同步到备端。
你想想看,如果两个数据中心隔了1000公里,同步复制根本跑不起来。这时候异步复制就是唯一选择。
| 对比项 | 同步复制 | 异步复制 |
|---|---|---|
| RPO | 0 | 秒级到分钟级(取决于同步间隔) |
| 对网络要求 | 高(延迟<1ms最佳) | 低(可容忍几十ms延迟) |
| 适用距离 | 同城(<10km) | 异地(可跨省跨国) |
| 写性能影响 | 明显 | 几乎无影响 |
4.2 存储虚拟化
存储虚拟化,说白了就是把一堆不同品牌、不同型号的存储,抽象成一个统一的资源池。
为什么要做这个?我举个例子。你手上有三台存储:一台EMC、一台HDS、一台华为。如果没有虚拟化,每台存储各自为政,管理起来累死人。有了虚拟化层,上层应用看到的就是一个大存储池。
存储虚拟化的几个核心价值:
- 资源池化: 把碎片化的存储空间整合起来,提高利用率
- 异构管理: 不同品牌的存储统一管理,不用学三套管理工具
- 数据迁移透明: 后端存储换设备,前端应用完全无感知
- 高级功能统一: 快照、克隆、复制等功能,跨品牌统一实现
4.3 存储双活:VPLEX 与 SVC
存储双活,是存储层灾备的「终极形态」。两个数据中心,两台存储,同时在线提供服务。任何一个挂了,另一个无缝接管。
4.3.1 VPLEX(EMC/Dell)
VPLEX 是 EMC 的存储虚拟化网关产品。它最牛的地方在于,可以实现跨数据中心的存储双活。
我记得有个银行客户,两个数据中心相距30公里,用了VPLEX Metro。两边的存储同时读写,任何一个数据中心宕机,业务零中断。
VPLEX 的核心架构:
- VPLEX Metro: 同城双活,距离限制在50km以内
- VPLEX Geo: 异地双活,距离可以更远,但需要同步复制
- 分布式缓存: 两个VPLEX集群之间通过高速链路同步缓存数据
4.3.2 SVC(IBM)
SVC 是 IBM 的存储虚拟化产品,和 VPLEX 功能类似,但实现方式不同。
SVC 走的是「带外虚拟化」路线。什么意思呢?就是数据不经过SVC网关,直接走存储网络。SVC只负责控制面的管理。
| 对比项 | VPLEX | SVC |
|---|---|---|
| 虚拟化方式 | 带内(数据经过网关) | 带外(数据不经过网关) |
| 双活方案 | VPLEX Metro/Geo | SVC Stretched Cluster |
| 对性能影响 | 有一定影响(数据过网关) | 影响较小(数据直通) |
| 兼容性 | 主要支持自家存储 | 兼容性更广 |
4.4 存储双活的核心挑战
存储双活听起来很美,但落地的时候,有几个绕不开的坎:
- 脑裂问题: 两个数据中心之间的链路断了,两边都以为对方挂了,都抢着接管。这时候就需要仲裁机制。
- 性能瓶颈: 双活意味着每次写操作都要同步到对端,对网络延迟极其敏感。
- 数据一致性: 两个站点同时写同一块数据,怎么保证不乱?这需要分布式锁和一致性协议。
- 运维复杂度: 双活架构的运维难度是单活的3倍以上。出了问题,排查链路长、涉及组件多。
4.5 本章知识体系
下面这张图,是我梳理的存储层灾备知识体系。你可以把它当作一张「地图」,随时回来对照。
嗯,存储层灾备这块,内容确实不少。但核心就三件事:数据怎么复制、资源怎么池化、双活怎么落地。把这三点吃透了,存储层的灾备方案你就能拿捏住。