分布式文件系统的历史

已完成

概括而言,分布式文件系统 (DFS) 是一种文件系统,其文件分布在各台文件服务器间。 必须注意的是,在分布式文件系统中,客户端会查看单个全局命名空间,其中包含所有文件系统服务器上的所有文件。 DFS 需要元数据管理,以便客户端可以在文件服务器间查找所需文件和文件块。 它们通常部署在多个文件共享节点上,旨在供多个用户同时使用。 与任何共享资源一样,必须考虑多个设计考虑因素:性能、一致性、容错、可用性是其中的一部分。

分布式文件系统的起源和发展

文件系统在很大程度上受到曾经用作本地文件系统的 UNIX 文件系统和 BSD 快速文件系统 (FFS) 的影响。 回忆一下,这些文件系统的主要重点是以快速和可靠的方式在磁盘上组织数据。

此后出现了网络文件系统(如 NFS),以允许用户通过网络共享文件。 NFS 使用客户端-服务器体系结构,其中服务器可以将它拥有的数据共享到多个客户端。 这是一种简单协议,至今仍用于通过网络共享文件。 在 NFS 中,文件无法以协调方式在多台服务器间进行分布,每台服务器只是可以共享一些文件。 命名空间也没有一致的全局视图。 客户端可以在其本地文件系统树中的任意位置装载 NFS 共享。 因此,这种方法在扩展到数千个客户端/服务器的能力上受到限制,并且仅限于在局域网 (LAN) 中使用。

Andrew 文件系统 (AFS) 是真正分布式文件系统的早期示例。 AFS 使协作主机(客户端和服务器)可以在局域网和广域网间高效共享文件系统资源。 AFS 由各个单元组成,这些单元是提供单个内聚文件系统的服务器的管理分组。 单元可以进行合并,以组成单个全局命名空间。 访问 AFS 中的数据的任何客户端都会首先在本地将文件复制到客户端。 只要文件处于打开状态,便会在本地对文件进行更改。 文件关闭后,AFS 客户端会将更改同步回服务器。 AFS 发展为 CODA,它是一种在 AFS 上进行了改进(特别是在共享语义和复制方面)的分布式文件系统。 AFS 和 CODA 都与 POSIX 兼容,这意味着它们适用于现有 UNIX 应用程序,无需进行任何修改。

2003 年,Google 公布了其分布式文件系统 (GFS) 的设计2,它是从零开始设计的,通过使用大型商用硬件群集提供高效、可靠的数据访问。 GFS 设计为以复制方式将非常大的文件存储为在多台服务器上存储的区块(通常大小为 64MB)。 虽然 GFS 具有单一客户端视图(类似于 AFS),但是文件区块的位置会向用户公开,从而使客户端有机会从最近的可用副本提取文件。 但是 GFS 并不与 POSIX 兼容,这意味着应用程序必须使用特殊 API 才能使用 GFS。 Hadoop 分布式文件系统 (HDFS) 是 GFS 的一种开放源代码变体,我们将在本模块中进行详细探讨。

Ceph 在 2006 年第一次在论文中阐述(作者是 Weil 等人)。1 Ceph 是一种分布式对象存储服务,可扩展为成百上千台计算机,同时存储 PB 级数据。 应用程序随后通过各种 API(从与 GFS 工作方式相似的本机 API,到名为 Ceph FS 的 POSIX 兼容文件系统 API)与 Ceph 进行通信。 Ceph 还支持块设备抽象,这使它成为适用于存储虚拟机映像的文件系统。

此后,Google 将 GFS 演变为名为 Colossus 的系统。3


参考

  1. Weil, S. A.、Brandt, S. A.、Miller, E. L. 和 Maltzahn, C.(2006). Ceph: A scalable, high-performance distributed file system Proceedings of the 7th symposium on Operating systems design and implementation (OSDI) 307-320
  2. Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung (2003). The Google File Systems 19th ACM Symposium on Operating Systems Principles
  3. McKusick, Kirk and Quinlan, Sean (March 2010). GFS: Evolution on Fast-forward Communications of the ACM