应对磁盘或服务器故障的常用方法是保留多个副本,通常3倍复制意味着存储成本是原来的3倍。对备份提供商来说,这是最主要的成本。

Reed-Solomon纠删码提供了一种更便宜的方案。Backblaze将文件拆成17个相等的分片,计算3个校验分片,并将全部20个分片存储在不同的驱动器上。任意17个中的20个分片即可还原原文件,因此文件可以承受最多丢失3个分片。

这是设计的关键:不是保留3个完整副本,而是保留1个副本和少量校验数据,在获得几乎相同耐用性的同时,只花费一小部分存储成本。

用校验数学买耐用性,而不是用重复副本

校验分片的成本远低于完整副本。

任意17个中的20个分片都能重建文件,容忍多驱动器故障。

更低的存储开销直接降低了提供商的单位成本。

当你通过复制数据来购买可靠性时,你是在用高价的整体单位购买;编码数学让你以固定开销精确购买所需的数量。

Backblaze开源了其Java Reed-Solomon库,纠删码也成为云提供商和备份服务用少量CPU换取更便宜耐用性的常见方式。

从这里,追溯依据

参考来源

  1. Backblaze open-sources Reed-Solomon erasure coding source code Backblaze · backblaze.com ·
  2. Erasure coding OpenStack Wiki · wiki.openstack.org