打开网易新闻 查看精彩图片

作者 | Rob Mueller 编译 | 屠敏

出品 | CSDN(ID:CSDNnews)

一年前,Ruby on Rails 作者、37Signals 联合创始人兼 CTO David Heinemeier Hansson(简称 DHH)高调提出“下云”理念。他,在 2022 年,公司在云计算上的支出高达 320 万美元,而机架空间和新硬件的年成本为 84 万美元。通过放弃云计算,预计五年内可节省 700 万美元。这一言论迅速引起了众人对“下云”话题的广泛关注。

打开网易新闻 查看精彩图片

然而不上云是否真的能省钱?存储的灵活性和扩展性是否能如愿?近日,Fastmail 的创始人兼 CTO Rob Mueller 发表了一篇主题为《Why we use our own hardware at Fastmail》(为什么我们在 Fastmail 使用自己的硬件)的文章,在 HN 上引发热烈讨论,也再次将“下云”问题推进大众视野。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

为什么会使用自己的硬件?

Fastmail 是一家提供电子邮件服务的公司,总部位于澳大利亚,其凭借着隐私保护功能,成为国际上最受欢迎的 IMAP 邮件服务之一。一直以来,Fastmail 团队坚持使用自有硬件,并通过高效利用裸机服务器来优化系统性能。

相比将所有服务全面迁移至云端,Rob Mueller 认为,利用裸机服务器存储这种方式在成本优化方面更具优势。主要原因也离不开 Fastmail 服务的特性、团队经验等,详细来看包括:

  1. Fastmail 对自身的短期、中期和长期使用模式、需求以及增长趋势有深入了解。这种清晰的预判能力使其能够提前规划硬件采购, 而不需要依赖云计算的动态扩展功能。

  2. 内部运维能力:Fastmail 内部具备安装、配置和运行自有硬件及网络的专业经验。经过 25 年的技术积累,这些技能已经成为其核心竞争力之一。

  3. 硬件使用寿命长:Rob Mueller 称,其硬件的使用周期通常能达到 5 至 10 年,具体取决于硬件类型及其购买时的技术周期。这种长时间的使用能够分摊和降低硬件采购成本,使资源投入更加高效。

Fastmail 采用自有硬件管理方式来减少云的额外开支,然而并非所有企业都适合这种方式,毕竟这意味着需要承担更多的工作,包括规划、选择、采购和安装等。

不过,Rob Mueller 表示,这种投入带来的回报一直被认为是非常值得的。

打开网易新闻 查看精彩图片

硬件演变历程

至于为什么这么说,Rob Mueller 分享了 Fastmail 使用的硬件演变历程。

Rob Mueller 表示,早期的 IMAP 服务器存储平台主要依赖机械硬盘(HDD)和 ARECA RAID 控制器组合。常用配置是选择速度更快的 15k RPM SAS 硬盘,以 RAID1 形式存储热元数据(meta data);而主邮件数据(email blob data)则存储在 7.2k RPM SATA 硬盘组成的 RAID6 阵列中。

此外,为了提升存储性能,邮件系统设计了一个两步写入机制:当邮件被接收时,正文会先写入高速 RAID1 的 SAS 硬盘,这些硬盘专用于高性能操作,能够快速处理实时数据。随后,在服务器负载较低的时间段,通过自动归档流程,将这些邮件数据迁移到容量更大的 SATA 硬盘上,以优化存储资源的使用。

Rob Mueller 称,为了支持这一流程,多年来 Fastmail 在 Cyrus 邮件系统及相关工具中增加了对“meta”(元数据)、“data”(数据)和“archive”(归档)分区的支持,使存储管理更加高效灵活。

打开网易新闻 查看精彩图片

全面升级至 NVMe SSD

然而,几年前,Fastmail 进行了一次大规模硬件升级,将所有邮件服务器迁移到全新的 2U AMD 平台,并采用纯 NVMe SSD 存储方案。Rob Mueller 透露,这一改变大幅提高了硬件密度(24 块 2.5 英寸 NVMe 硬盘 vs 12 块 3.5 英寸 SATA 硬盘)和性能,实际表现甚至超出了预期。

遗憾的是,当时,在该团队想要升级时,市场上还没有广泛可用的 NVMe RAID 控制器,因此 Fastmail 团队需要重新规划冗余方案。基于此,他们也认真评估了几个选项,包括直接使用裸 SSD 配合同步应用级别的跨机复制,但发现软件改动过于复杂;或者使用经典的 Linux mdadm RAID 方案,不过由于写入漏洞(write hole)和缓存机制的稳定性问题,这种方案被认为风险较高,很快就被否定了。

最终,该团队决定研究一下 ZFS 文件系统并对其进行测试尝试。

虽然 Cyrus 邮件系统的一些磁盘数据库结构并不完全适配 ZFS 的写时复制(Copy-on-Write)机制,但 ZFS 仍然展现出了在高负载下处理大量数据的强大能力。所以试试也未尝不可。

打开网易新闻 查看精彩图片

ZFS 压缩与调优

于是,Fastmail 在邮件服务器中推出了 ZFS 文件系统,并默认开启了透明的 Zstandard 压缩。通过这一策略,Rob Mueller 表示,此举为他们所有邮件数据的存储空间节省了约 40%。

最近,Fastmail 研发团队还通过一项对压缩参数的深入研究对比了不同 ZFS 记录大小(32k、128k、512k)和压缩级别(zstd-3 和 zstd-9)的效果。

该团队随机抽取了 100 万封邮件,计算了在不压缩的情况下,存储这些邮件需要多少数据块,然后再使用 ZFS 的不同记录大小(32k、128k、512k)和压缩选项(zstd-3 或 zstd-9)来存储它们。虽然 ZFS 的 RAIDz2 在概念上类似于传统的 RAID6,但它实际存储数据的方式有所不同,因此在计算时需要考虑一些因素,比如块的大小(volblocksize)、文件是如何分割成更小的块(recordsize),以及硬盘的数量。

Emails: 1,026,000
Raw blocks: 34,140,142
32k & zstd-3, blocks: 23,004,447 = 32.6% saving
32k & zstd-9, blocks: 22,721,178 = 33.4% saving
128k & zstd-3, blocks: 20,512,759 = 39.9% saving
128k & zstd-9, blocks: 20,261,445 = 40.7% saving
512k & zstd-3, blocks: 19,917,418 = 41.7% saving
512k & zstd-9, blocks: 19,666,970 = 42.4% saving

结果显示,使用 128k 的记录大小和 zstd-3 压缩效果不错。将记录大小改为 512k,压缩效果比 128k 提高了 4% 以上,而且没有什么明显的负面影响。至于将压缩算法从 zstd-3 升级到 zstd-9,虽然压缩率提高了 2%,但 zstd-9 的 CPU 使用量是 zstd-3 的 4 倍。考虑到邮件是不可更改的,且通常会存储很长时间,因此该团队决定不采用 zstd-9,以避免过高的 CPU 成本。

在数据安全方面,所有存储设备默认启用了静态加密。过往,Fastmail 早期是使用 LUKS 来实现的,而如今 ZFS 的原生加密功能进一步简化了系统复杂性。

打开网易新闻 查看精彩图片

全面转向 ZFS

ZFS 的初步测试结果令人满意,这也推动了 Fastmail 在大型数据存储中的全面部署。过去三年,Rob Mueller 称,所有邮件服务器都运行在 ZFS 文件系统上,甚至数据库、日志和备份服务器也完成了向 NVMe SSD 和 ZFS 的迁移,表现同样出色。

打开网易新闻 查看精彩图片

SSD 寿命

迁移之后,非常值得关注的一个关键点就是 SSD 的闪存具有有限的使用寿命,意味着它们能够承受的写入次数是有限的。为了延长硬盘的使用寿命,SSD 采用了越来越复杂的“磨损均衡”算法,目的是将写入操作分散到不同的存储区域,从而避免某些区域的过度使用。企业级 SSD 的耐用度通常通过两种方式来衡量:一种是“总写入量”或“总字节写入量”(例如:65PBW,表示写入了65 个拍字节),另一种是“每天写入的次数”,例如 0.3,通过乘以硬盘容量和预期使用寿命(通常假定为 5 年)可以计算出硬盘的总写入量。

在迁移到新系统时,虽然可以计算现有 HDD 系统的输入输出(IO)速率,但由于做了许多关键更改,SSD 的表现变得更加不可预测。首先,切换到了像 ZFS 这样的写时复制(COW)文件系统,去除了对特殊分区(如 meta、data 和 archive 分区)的单独处理。同时,系统的延迟大幅降低,性能得到显著提升,原本需要额外时间处理的操作,现已变得更快,导致更多独立的 IO 操作。

因此,Rob Mueller 发现,SSD 在实际生产环境中的“磨损”速度成为一个不确定的问题。经过几年的使用,已有明确的数据显示,某台随机选中的老服务器的 SSD 使用情况如下,Rob Mueller 表示,这一情况在该公司最旧的服务器中表现一致:

# smartctl -a /dev/nvme14
...
Percentage Used: 4%

按照当前速度,早在硬盘达到写入上限之前,预计这些硬盘将因硬盘容量增大或采用全新的硬盘格式(如逐渐流行的 E3.S 格式)而被更换。

同时,Rob Mueller 结合自身的经验来看,称 SSD 的可靠性明显优于 HDD。尽管他们只使用过数据中心级的 SSD,但旧服务器上的 HDD 经常出现故障,并且每隔几周就需要更换一次。而在过去三年多的时间里,整个升级后的服务器队列中,SSD 的故障数量极为有限,故障率不到使用 HDD 时的十分之一。

打开网易新闻 查看精彩图片

存储成本计算

在将所有邮件存储转换为 NVMe SSD 后,Fastmail 团队最近重新审视了数据备份解决方案。当时,该解决方案由一些较旧的 2U 服务器组成,每台服务器配有 12 个 3.5 英寸的 SATA 硬盘槽。该团队决定对以下几个方案进行成本计算:

  1. 迁移到云存储。

  2. 升级现有服务器中的硬盘。

  3. 升级到 SSD NVMe 服务器。

1. 云存储方案

根据不同供应商的定价,按每 TB 每月的费用计算,以下是 1000TB/1PB 的年费用(截至 2024 年 12 月的价格):

  • Amazon S3:每月 21 美元,年费用为 252,000 美元

  • Cloudflare R2:每月 15 美元,年费用 180,000 美元

  • Wasabi:每月 6.99 美元,年费用 83,880 美元

  • Backblaze B2:每月 6 美元,年费用为 72,000 美元

  • Amazon S3 Glacier Instant Retrieval:每月 4 美元,年费用 48,000 美元

  • Amazon S3 Glacier Deep Archive(12小时取回时间):每月 0.99 美元,年费用为 11,880 美元

需要注意的是,其中一些(如 Amazon)可能还会产生较高的带宽费用。

Rob Mueller 表示,这里的价格差异非常有趣。一些方案还存在一些特殊的情况。例如,“S3 Glacier Flexible Retrieval 和 S3 Glacier Deep Archive 存储类别每个对象需要额外的 32 KB 数据”。考虑到这些存储类具有较长的取回时间和每个对象的额外开销,可能更适合将小的增量备份存储在常规的 S3 中,当积累到一定量时,再构建一个较大的对象推送到 Glacier。这增加了实现的复杂度。

  • 优点:没有存储量的限制。如果使用兼容 S3 的 API,可以选择多个提供商。

  • 缺点:将现有备份系统从假定为本地 POSIX 文件的架构转换为 S3 风格的对象 API 的实现成本不确定,可能会很高。最低成本选项需要对实施细节和特殊限制进行额外的谨慎考虑。随着存储数据量的增加,持续的每月费用也将增加。价格是否会下降或上涨尚不确定,可能还会有显著的带宽费用,具体取决于服务提供商。

2. 升级 HDD

Seagate Exos 24 HDs 是 3.5 英寸 24TB 的 HDD,能够让现有服务器的存储空间增加三倍。每个 HDD 的价格约为 500 美元,因此升级一台 2U 机器的成本大约为 6,000 美元,能够提供约 220TB 的存储空间。

  • 优点:可以重复使用现有硬件。升级可以逐台机器进行,成本较低。

  • 缺点:现有的设备是否能够支持 24TB 硬盘?硬盘出现故障后的重建时间是多长?对于 8TB 的硬盘,重建几乎需要一天时间,那么 24TB 硬盘的故障可能需要将近一周?是否有足够的 I/O 性能来处理满负荷的每日备份?

3. 升级至新硬件

众所周知,SSD 更加紧凑(2.5 英寸 -> 每 2U 24 块硬盘 vs 3.5 英寸 -> 每 2U 12 块硬盘)、更可靠,并且现在的容量更大——每个 2.5 英寸硬盘最大可达 61TB。一个 2U 的服务器可以配备 24 块 61TB 的硬盘,使用 2 x 12 RAIDz2 配置,总存储容量达到 1220TB。目前,每块硬盘的价格约为 7,000 美元,价格可能波动。因此,24 块硬盘的成本为 168,000 美元,加上约 20,000 美元的服务器费用,总成本大约为 190,000 美元,可以提供超过 1000TB 的存储空间。

  • 优点:相比 HDD,SSD 提供了更高的顺序和随机 I/O 性能。成本低于 1 年标准 S3 存储费用。内部网络中,无带宽费用且延迟极低。无需新的开发,现有的备份系统可以继续使用。所有存储(包括 Cyrus、数据库、备份)都可以集中在单一的 2U 平台上,且全部使用 SSD 存储。相比现有的基于 HDD 的服务器,空间和电力消耗节省显著。

  • 缺点:前期成本较高。随着备份数据的增长,仍然需要预测并购买更多的服务器。

在这个计算中,数据中心的空间、电力、冷却等费用并未考虑在内。原因是,与存储服务器的年摊销费用相比,这些费用现在已经变得相对较低,大约为每 2U 服务器每年 3,000 美元。计算人工成本更为复杂。由于有许多自建的自动化系统,因此安装和运行额外一台服务器的边际成本几乎为零。

结果

最终,衡量之下,Fastmail 团队选择了新的 2U 服务器方案:

打开网易新闻 查看精彩图片

  • 2U 的 AMD NVMe 平台与 ZFS 结合,是一个已有经验的方案。

  • 相比 HDD,SSD 更加可靠,I/O 性能更高。

  • 不再有超大 HDD、RAID 控制器、重建时间、数据迁移等不确定因素。

  • 相比现有基于 HDD 的服务器,节省了大量空间和电力。

  • 不需要新的开发,可以继续使用现有的备份系统和代码。

  • 硬件生命周期长,前期成本可控,可以进行硬件折旧。

部署结果表明,这一方案运行良好。这些配备 25Gbps 网络的服务器在初次数据写入时实现了约 5GB/s 的网络吞吐量,同时将数据实时压缩并写入 RAIDz2 的 ZFS 数据集。

不过,Rob Mueller 也提醒道,「运行自有硬件并非适合所有场景,其间涉及的规划与技术要求较高。但对于拥有丰富经验和明确扩展预期的团队,自有硬件方案能够显著优化成本,且在性能与可靠性上表现优异」。

打开网易新闻 查看精彩图片

上云还是不上?众人看法不一

对于 Fastmail 一直使用自有硬件的方式,不少人颇为认可其在节省成本上的优势,但这背后也引发了关于云计算和自建基础设施的更多思考。

有网友评价道:

  • 随着 AWS 等云服务的迅速崛起,我一直在研究它们的定价和功能,始终感到疑惑:是不是我遗漏了什么?这些服务价格高出几个数量级,却更难管理,而且会将用户绑定到特定厂商的工具链中。但尽管如此,几乎所有人都在转向它们。2006 年 AWS 首次推出实例时,按需计费两年的成本就相当于从零售商店购买硬件并持续使用的成本。如今,对于机器学习工作负载,这一成本差距已经缩短到两周;而对于中型实例,这个时间也不过三个月左右。AWS 在大企业环境中确实有其意义,比如采购硬件需要六个月审批时间,再加上另一半年的软件部署周期。但在今天的环境下,我只会在需要快速验证一个原型时使用 AWS,一旦确认项目有可能持续一个季度以上,我会立即将它迁移到本地部署上。

  • 作为一个经历过那个时代的人,我可以告诉你,现在有大量开发人员和与开发相关的人对自动化管理关键硬件一无所知。早在 2000 年代初期,这几乎是每个人都必须做的事情。但如今时间已经过去得足够久,以至于职场上有不少人从未接触过自建硬件的管理,因为他们根本不需要。我怀疑这方面会重新引起广泛的兴趣,尤其是随着 CTO 们努力控制云服务开支,我们可能正在接近“将业务带回本地”的新周期。

不过,也有人认为,很多公司把自建硬件服务的问题说得太简单了。HN 上 jandrewrogers 这名网友表示:

云计算解决的最大问题之一是硬件供应链的管理。想要自己搭建一个规模不小的基础设施并真正受益,你得成为硬件方面的专家,包括设计、采购和组装硬件。实际上,要按时按需获得硬件并不容易——零件会延迟交货、大客户会优先拿到供应等。这些技术问题相对简单,但长期管理硬件供应商、物流和交货时间会耗费大量精力。而使用云计算,相当于把这些麻烦的工作外包了。

如果能做好这些工作,确实可以大幅降低成本。但是,很多公司自己搭建基础设施时都做得不到位,因为他们(可以理解为)不想花精力处理这些细节,结果大部分成本节省的效果都被抵消了。

此外,很少有公司能在安全性上做到像主流云服务商那样出色,这一点几乎没有争议。

不过,无论是自建基础设施还是使用云服务,在运维支持上所需的人手基本一样。这里的固定人力成本并没有太大的节省,除非你的服务器数量多到一个巨大的规模,这点成本才显得无关紧要。

最后,还要看具体的工作负载。对于那些需要处理大规模数据密集型任务的公司,比如每天处理几十 PB 或上百 PB 的数据进行分析,自建数据基础设施在经济性上是非常划算的。

毋庸置疑的是,在未来,企业如何在效率、成本、安全和灵活性之间找到平衡点,或许会成为技术决策者们需要长期关注的问题。

https://www.fastmail.com/blog/why-we-use-our-own-hardware/

https://news.ycombinator.com/item?id=42485124