toc 目录

管理员 - 1

Object2
Object2 摆烂中
tagHome
arrow_back返回
Object2

分布式存储的进化:从三副本到纠删码,存储是怎么省下一半成本的

数据量爆炸式增长,存储成本成了企业的沉重负担。分布式存储技术从三副本到纠删码的演进,帮助企业把存储成本降低了一半以上。本文解析分布式存储的核心技术和选型策略。

分布式存储的进化:从三副本到纠删码,存储是怎么省下一半成本的

分布式存储的进化:从三副本到纠删码,存储是怎么省下一半成本的

你的数据越来越多,存储账单越来越长。这是每个成长中的企业都面临的问题。

一个中等规模的互联网公司,每天可能产生几十 TB 的新数据。一年下来就是 PB 级别的数据量。如果用传统的三副本方式存储,实际需要的物理存储是数据量的三倍。存储成本直接占了基础设施预算的一大块。

有没有办法在保证数据安全的前提下降低存储成本?有。答案是纠删码。

三副本:简单粗暴但有效

Server infrastructure

三副本是最直观的数据保护策略。每份数据存三份副本,分布在不同的机器上。任何一台机器故障,数据不会丢失。

三副本的优势是简单。读取速度快(可以从最近的副本读取),恢复速度快(直接从其他副本复制),实现复杂度低。大部分分布式文件系统的默认策略都是三副本。

但三副本的成本是显而易见的:你需要三倍的存储空间。如果你有 1PB 的数据,实际需要 3PB 的物理存储。这个成本在数据量小的时候可以接受,但数据量一大就成了沉重的负担。

纠删码:用计算换存储

纠删码提供了一种更经济的方案。它的核心思想是:不存完整的副本,而是把数据拆成若干片段,再加上若干校验片段。只要丢失的片段不超过校验片段的数量,就可以通过剩余的片段恢复原始数据。

举个例子:一个常见的纠删码配置是"8+4"。把数据拆成 8 个片段,生成 4 个校验片段,总共 12 个片段分布在 12 台机器上。任意 4 台机器故障,数据都可以恢复。

和三副本相比,这种方案的存储开销是 12/8 = 1.5 倍,而三副本是 3 倍。也就是说,纠删码把存储成本降低了一半。

但纠删码也有代价。写入时需要计算校验片段,这增加了 CPU 开销。读取时需要从多个片段重组数据,这增加了网络开销和延迟。部分故障时的恢复需要读取大量数据,恢复时间比三副本长。

所以纠删码更适合"冷数据":不经常访问但需要长期保存的数据。对于频繁访问的"热数据",三副本或者混合策略可能更合适。

对象存储的崛起

纠删码技术的成熟推动了对象存储的广泛应用。

对象存储是专门为非结构化数据设计的存储系统。图片、视频、文档、备份、日志,这些数据不适合存在数据库里,也不适合存在文件系统里。对象存储用"桶+键"的简单模型来管理数据,天然支持海量数据和纠删码。

Amazon S3 是对象存储的标杆产品。它定义了对象存储的 API 标准,几乎所有对象存储产品都兼容 S3 API。

开源领域,Ceph 的 RADOS Gateway、MinIO 是最流行的对象存储方案。Ceph 是一个统一的分布式存储平台,同时支持块存储、文件存储和对象存储。MinIO 专注于对象存储,追求极致的性能和兼容性。

分布式存储的架构选择

Data center architecture

分布式存储系统的架构选择取决于你的数据特征和访问模式。

如果你的数据是结构化的(表格数据),需要事务支持和 SQL 查询,那应该选择分布式数据库,而不是分布式存储系统。

如果你的数据是非结构化的(文件、图片、视频),访问模式以读多写少为主,对象存储是最经济的选择。纠删码可以把存储成本控制在很低的水平。

如果你的数据需要低延迟访问(比如数据库的存储后端),块存储是更合适的选择。Ceph RBD、AWS EBS 都是块存储产品。

如果你的数据需要被多个客户端共享访问(比如代码仓库、配置文件),文件存储是更自然的选择。NFS、CephFS、AWS EFS 都是文件存储产品。

数据可靠性的数学

分布式存储的核心目标是数据可靠性。理解可靠性的数学基础,有助于做出合理的架构决策。

数据可靠性通常用"几个 9"来衡量。三个 9 意味着 99.9% 的可靠性(每年约 8.7 小时的停机),五个 9 意味着 99.999% 的可靠性(每年约 5 分钟的停机)。

对于存储系统,数据丢失比停机更严重。大部分存储系统的目标是"不丢失数据",而不是"不停机"。三副本和纠删码都是为了实现这个目标。

纠删码的可靠性取决于配置参数。"8+4"的配置意味着可以容忍 4 台机器同时故障。如果单台机器的年故障率是 5%,那"8+4"配置的数据丢失概率极低,远超三副本的可靠性。

但可靠性不只取决于存储策略,还取决于运维能力。硬件故障、网络分区、软件 Bug、人为误操作,都可能导致数据丢失。完善的监控、告警、备份、恢复流程同样重要。

成本优化策略

除了纠删码,还有其他策略可以优化存储成本。

数据分层是常用的策略。热数据(频繁访问)存在高性能存储上,冷数据(很少访问)存在低成本存储上。可以根据访问频率自动迁移数据。AWS 的 S3 Intelligent-Tiering 就是这样的产品。

数据压缩也能显著降低存储成本。文本数据的压缩率通常很高(50% 到 90%),图片和视频已经是压缩格式,进一步压缩的效果有限。

数据去重可以消除重复数据的存储开销。在备份场景下,去重的效果尤其明显,因为大部分备份数据是重复的。

生命周期策略可以让过期数据自动删除或者归档到更低成本的存储中。日志数据保留 30 天、备份数据保留 1 年,超过期限自动删除。

Cloud server technology

我的判断

分布式存储技术已经相当成熟。对于大部分企业来说,不需要自建存储系统,使用云厂商的对象存储服务是最省心的选择。

如果确实需要自建(比如数据合规要求、成本控制需要),Ceph 是最成熟的开源方案。它有完善的生态和大量的生产案例。

纠删码是存储成本优化的关键技术。对于数据量大的场景,从三副本迁移到纠删码可以节省 40% 到 50% 的存储成本。这个节省是实实在在的。

数据存储不是一个"设好就忘"的事情。随着数据量的增长和业务的变化,存储策略需要持续优化。定期审视存储成本、评估数据分层策略、清理过期数据,这些运维工作不能忽视。

吉祥物