分布式文件系统简介
探索接下来章节中我们将学习的关于分布式文件系统的内容。
动机
在现代分布式系统中,持久化数据存储与高可用性数据检索的重要性不言而喻。分布式文件系统扩展了本地文件系统的抽象概念,是构建任何分布式服务的核心基础之一。
我们将学习的内容
接下来的几章中,我们将讨论以下三篇论文:
-
[GFS] Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung. 2003. Google文件系统. 《第十九届ACM操作系统原理研讨会论文集》(SOSP '03). 计算机协会, 纽约, 美国, 29–43.
-
[Colossus] Google Colossus系统
-
[Tectonic] Pan, Satadru, Theano Stavrinos, Yunqiao Zhang, Atul Sikaria, Pavel Zakharov, Abhinav Sharma, Mike Shuey, 等. Facebook的Tectonic文件系统:从百亿亿级规模实现高效能. 《第19届USENIX文件与存储技术会议》(FAST 21), 页码217-231. 2021.
为何选择这些系统?
文件系统领域拥有来自学术界和工业界的众多系统。我们选取了三个系统——其中一个虽历史悠久但经受住了时间考验,另外两个则共同展现了设计随时间演进的过程。
Google文件系统(GFS)
GFS是2003年由Google提出的一项分布式文件系统开创性工作。GFS提供了一种定制的数据一致性模型,旨在实现数据的可扩展性、高可用性以及良好的性能(主要表现为高吞吐量)。GFS体现了协同设计的思想:它专为通用硬件打造,针对特定使用场景——写入和读取密集型负载,并支持大量并发操作。GFS展示了如何在一个数据中心内构建由数千台机器组成的分布式文件系统。其设计之美在于简洁性,同时仍能有效达成目标。
GFS 2:Colossus系统
原始的GFS系统采用集中式控制平面(以管理器的形式存在),使设计保持简单。GFS的设计者采用了巧妙的方法,避免单个管理器成为单点故障。然而,随着GFS集群规模持续增长至多拍字节级别,这种单管理器架构逐渐逼近其可扩展性极限。2010年,Google发布了GFS的后继系统——Colossus。尽管Google未公开Colossus的完整设计细节,但已披露部分信息。构建Colossus的主要原因包括:
- 实现对超过拍字节级别数据的扩展,具备良好的横向扩展能力。
- 支持更多类型的应用程序(例如小文件场景、对尾部延迟有要求的应用,如p99等)。
- 允许客户端在全复制、基于Reed-Solomon编码(一种纠错码,广泛用于大规模存储系统中纠正因介质缺陷引起的突发错误)的空间节省方案,以及RAID(独立磁盘冗余阵列,通过组合多个物理磁盘形成逻辑单元,实现数据冗余或性能提升)之间进行选择。
从GFS到Colossus的演进,正是“系统仅需复杂到满足当前及近期需求”的设计原则的体现。运维经验为系统下一次迭代提供了宝贵的反馈循环,使其能够持续适应不断变化的需求。
超大规模:Facebook的Tectonic系统
Tectonic是Facebook于2021年公布的文件系统。在许多方面,它与Colossus相似。Tectonic的核心目标是实现极高的数据可扩展性,同时保证资源利用效率。该系统由多个独立的服务模块构成,每个模块均可独立扩展。
我们希望通过这些文件系统的选型,帮助大家掌握系统设计中的诸多重要经验。让我们深入探索!