中小企业必须停止把 BackBlaze 当作参照标准
我必须为这篇文章作个开场白,因为人们常常断章取义,对那些从未说过的话作出强烈反应——在此我郑重声明:我认为 BackBlaze 干得非常出色,拥有一批才华横溢的员工,并且在设计和运用那些对其自身需求而言绝对适用且恰当的技术方面,做得令人赞叹。这篇文章里没有任何内容,我是真心实意地说没有任何内容,可以被断章取义地拿来当作对 BackBlaze 的负面评价。如果这篇文章中有任何地方看起来或让人感觉是在表达相反的意思,请重新阅读并确认是否确有此言,倘若如此,请告知我,以便我加以更正。这篇文章绝无任何意图,以任何方式暗示 BackBlaze 没有在做对其自身、其业务及其客户而言明智的事情。现在进入正文:
在过去这许多年里,我发现许多中小企业的 IT 专业人员迷上了一种在他们看来堪称低成本、高容量存储奇迹的东西,也就是所谓的 BackBlaze POD 设计。本质上,BackBlaze POD 是一种低成本、高容量、低性能、近乎白盒的存储服务器,由定制机箱和消费级配件搭建而成,构成一个可抛弃的存储节点,用于运用纠删编码的大型存储 RAIN 阵列之中。BackBlaze 定制设计了最初的 POD,并将其设计公之于众,专供其大规模托管备份数据中心独家使用——在那里,POD 充当一个由海量节点组成、彼此之间进行复制的巨型阵列中的单个节点。多年来,随着技术的变迁和问题的解决,BackBlaze 不断更新其 POD 设计。但其根本的使用场景始终未变。
我不得不将其与存储领域的 SAM-SD 方法作一番比较,后者遵循类似的思路,但采用的是企业级、受支持的硬件。这些差异有时显得无足轻重,但它们绝非微不足道,它们是使不同解决方案在不同情境下各自适用的关键基石。SAM-SD 背后的理念是:存储需要可靠,并且要从硬件层面自下而上地设计得尽可能可靠,同时在出现故障时能得到良好的支持。POD 则采取相反的方法,使单个服务器在本质上变得不可靠且短暂易逝,被设计为可供抛弃,而根本不加以修理。SAM-SD 的设计则假定单个服务器是重要的、甚至是关键的——绝非可抛弃之物。
SAM-SD 这一概念,说白了无非就是一种构建开放式存储的方法,它是以 SMB 存储市场为出发点设计的。BackBlaze POD 则是以一个极其小众、大规模、特殊情形的消费级备份市场为出发点设计的。SAM-SD 旨在供小型企业运行,甚至包括那些没有内部 IT 的企业。POD 则被设计为由一支全职、专职的存储工程团队来部署和管理。
由于 BackBlaze POD 是由专家、为专家、针对最庞大的存储场景而设计的,它对于小型企业领域中并非存储专家的人来说可能令人困惑,也很容易被误解。事实上,它被误解得如此频繁,以至于对它提出的异议常常招来“我认为 BackBlaze 知道自己在做什么”之类的回应,而这恰恰表明了围绕这种方法所存在的极大误解。BackBlaze 当然知道自己在做什么,但他们所做的事情,跟任何一家 SMB 所做的事情都不一样。
将 POD 设计公之于众引发了诸多困惑,因为它只是一个更宏大整体中的一个组成部分。完整数据中心的设计,以及 POD 之间实现冗余的方式与相应机制,并未公开,而是专有的。因此,POD 本身仅代表一个集群(或 Vault)中的单个节点,并不反映集群化本身,而集群化才是最重要的工作所在。事实上,POD 设计本身无非就是上一个十年里 Sun Thumper 和 SAM-SD 项目所做的工作,只是去掉了可靠性方面的约束而已。POD 本不应是一种新颖的设计,而应是一种显而易见的设计。这种设计在 SMB 存储领域已经被回避了数十年,原因正在于它是如此极端地不适用。
由于在谈论 BackBlaze POD 时,集群化和复制方面被忽视了,人们往往会对单个 POD 的容量作出一些重大的假设,而这种假设所对应的开销,远低于 BackBlaze 自己在其 POD 基础设施上所承担的开销,即便是在规模化的情况下也是如此。举例来说,用 RAID 的术语来打比方,这就好比假定 POD 是 RAID 6(开销仅为 5%),因为那是单个组件的 RAID 级别,而事实上,所采用的是 RAID 61(开销为 55%)!实际上,许多 SMB IT 专业人员在打算采用 POD 设计时,竟当真考虑仅仅使用 RAID 6,并且还只使用单个 POD。这与 BackBlaze 模型之间的背离程度,令人瞠目结舌。
BackBlaze:“Backblaze Vault 将二十个物理存储 POD 组合成一个虚拟机箱。Vault 软件实现了我们自有的 Reed-Solomon 编码,可同时将数据分片分散到 Vault 中全部二十个 POD 之上,从而大幅提升持久性。”
要让 POD 成为 SMB 市场的一个考量对象,就必须将 POD 的整个概念彻底地断章取义——无论是它的预期使用场景,还是它的实现方式。BackBlaze 之所以特别的那些东西被完全剥离,只取走了最微不足道、最浮于表面的方面,再被改造成某种与 BackBlaze 的愿景或宗旨毫无相似之处的东西。
深入探究 BackBlaze POD 在设计上与一家普通企业的标准需求有何不同,我们会发现以下这些问题:
- POD 被设计为不可靠的,依赖于超级 POD 层面的可靠性与复制层,而这一层要求部署大量的 POD,并通过定制的复制或集群化手段在它们之间实现数据冗余。没有这一层,POD 就完全脱离了上下文。这个超级 POD 层在内部被称为 BackBlaze Vault。
- POD 被设计为部署在企业级数据中心之中,配有精心的减振、电源调节及环境系统。相较于标准的企业级硬件,它对这些问题的抗受能力更弱。
- POD 的设计通常是作为一个完整单元予以更换,而非原地修理某个节点。这与标准的企业级硬件恰恰相反,后者配备热插拔组件,被设计为无需中断即可修理,更不必说无需整体更换。我们称之为可抛弃或短暂易逝的使用场景。
- POD 被设计为以极低的成本满足非常缓慢的冷存储需求。虽然 SMB 中也可能存在这种需求,但通常并不存在。
- POD 被设计为大得惊人的存储池中的一个单一、高容量存储节点。鲜有 SMB 能够充分利用哪怕单个 POD 的存储潜力,更不用说一个大到足以让 POD 设计显得合理的存储池了。
- BackBlaze POD 被设计为使用定制的纠删编码,而非 RAID。在这种规模下,即便是在单个 POD 层面,RAID 也并不奏效。
- 单个 POD 被设计为具备 180TB 的容量,而 Vault 的规模则为 3.6PB。
BackBlaze POD 5 的最新参考资料:https://www.backblaze.com/blog/cloud-storage-hardware/
简而言之,BackBlaze POD 是一项出色服务的出色底层基石,它满足的是一种非常特定的需求,而这种需求与 SMB 存储市场的需求相去之远,已近乎情理之中所能达到的极限。请为 BackBlaze 出色的工作而尊敬他们,但不要试图去效仿它。
