vivo存储系统的数据可靠性探索与实践
溯源:vivo存储服务介绍
vivo存储产品矩阵涵盖工具&接入类服务矩阵、存储&数据库产品矩阵,以高可靠+低成本、低成本+高性能为原则,为业务提供一流的高可靠、高性能、低成本的存储和数据库产品。vivo存储框架和运营数据展示了其产品结构和实际运行情况。
归因:存储可靠性原因分析
存储可靠性影响因素包括:
- 软件故障:软件设计缺陷、软件实现BUG。
- 数据损坏:不仅限于bitflip,传输处理存储环节都可能出现。
- 恶意窃取:内部员工或外部恶意人员攻击。
- 人为失误:运维操作失误、用户误删除、误覆盖。
- 硬件故障:硬盘故障、机架级故障、机房级故障、区域级故障。
针对这些原因,vivo提出相应解决方案:
- 软件故障和数据损坏:设计标准化、测试自动化、版本兼容和回滚、读写分离。
- 恶意窃取和人为失误:运维自动化、权限控制和生命周期管控、对象存储的版本功能、文件存储的回收站功能。
- 硬件故障:挑战在于纠删码技术余度与成本的衡量,以及多AZ余与修复带宽压力。
建模:存储可靠性量化模型
- 11个9的由来:定义为一干万个对象平均每1万年发生一个对象丢失,MTTR(故障平均修复时间)是关键指标,年平均故障率与之对应。
- 影响因素:包括软件设计、数据损坏、恶意窃取、人为失误、硬件故障等。
- MTTDL(平均系统数据丢失时间):描述系统平均丢数据时间,考虑数据分布系数,不同版本有借鉴意义。
- EAFDL(预期每年数据丢失比例):在MTTDL基础上关注丢失数量,更贴近11个9计算,计算公式为EAFDL = E(H)MTTDL + U。
vivo可靠性建模思路包括多副本模型和纠删码模型,并建设可靠性评估平台化。
实践:存储可靠性评估实践
- vivo建模思路:舍弃硬性故障率恒定和Markov链无记忆性,保留数据分布和错误率,借鉴EAFDL模型。
- 多副本模型:MTTDL副本模式可靠性计算公式考虑节点数、副本数、单盘业务数据量、年度磁盘故障率、数据分布系数等因素。
- 实验数据:MTTDL模型影响因素变化对可靠性影响显著。
- 平台化建设:评估新老方案可靠性的优劣,近实时评估线上系统可靠性风险。
思考:存储可靠性评估思考
- 方向思考:共享数据、统一标准、合作共赢,参考Iliasliadis论文等研究成果。
- 未来规划:持续优化可靠性评估模型和实践。