集群文件系统

集群文件系统（clustered file system）是一种通过同时挂载在多个服务器上实现共享的文件系统。有几种实现集群的方法，其中大多数不使用集群文件系统（每个节点只有直连式存储）。集群文件系统可以提供基于位置的寻址和冗余等功能，这些特性可以提高可靠性或降低集群其他部分的复杂性。并行文件系统 是一种跨多个存储节点传播数据的集群文件系统，通常是为了冗余或性能。

## 共享磁盘文件系统

共享磁盘文件系统使用存储区域网络（SAN）允许多台计算机在块级别直接访问磁盘。从应用程序使用的文件级操作到SAN使用的块级操作的访问控制和转换必须在客户机节点上进行。最常见的集群文件系统文件系统是共享磁盘文件系统，它通过增加并发控制机制，提供了文件系统的一致性和可串行化的视图，即使多个客户机试图同时访问相同的文件，也能避免损坏和意外的数据丢失。共享磁盘文件系统通常采用某种隔离机制，以防止在节点故障时出现数据损坏，因为非隔离设备如果失去与其姐妹节点的通信并试图访问其他节点正在访问的相同信息，就可能导致数据损坏。底层存储区域网络可以使用任何一种块级协议，包括SCSI、iSCSI、HyperSCSI、ATA over Ethernet（AoE）、光纤通道、网络块设备和InfiniBand。

共享磁盘文件系统有不同的体系结构方法。有些在集群中的所有服务器上分发文件信息（完全分布式）。另一些使用集中的集中式元数据服务器。两者都实现了相同的结果，即允许所有服务器访问共享存储设备上的所有数据。

### 示例

- Silicon Graphics (SGI) clustered file system (CXFS)
- Veritas Cluster File System
- DataPlow Nasan File System
- IBM General Parallel File System (GPFS)
- Lustre
- Microsoft Cluster Shared Volumes (CSV)
- Oracle Cluster File System (OCFS)
- OpenVMS Files-11 File System
- PolyServe storage solutions
- Quantum StorNext File System (SNFS), ex ADIC, ex CentraVision File System (CVFS)
- Blue Whale Clustered file system (BWFS)
- Red Hat Global File System (GFS2)
- Sun QFS
- TerraScale Technologies TerraFS
- Versity VSM
- VMware VMFS
- Apple Xsan
- LizardFS

## 分布式文件系统

分布式文件系统不共享对同一存储的块级访问，而是使用网络协议。这些系统通常被称为网络文件系统，尽管它们并不是唯一使用网络发送数据的文件系统。分布式文件系统可以根据服务器和客户端上的访问控制表或能力来限制对文件系统的访问，具体取决于协议的设计方式。分布式文件系统和分布式数据存储之间的区别在于，分布式文件系统允许使用与本地文件相同的接口和语义来访问文件 –，例如，挂载/卸载，列出目录、读取/写入字节边界、系统的本地权限模型。相比之下，分布式数据存储需要使用不同的 API 或库，并且具有不同的语义（通常是数据库的语义）。

分布式文件系统也可以由实现IBM的分布式数据管理体系结构 （DDM）的软件创建，其中在一台计算机上运行的程序使用本地接口和语义来创建、管理和访问位于其他联网计算机上的文件。所有这样的客户机请求都被捕获并转换为由DDM定义的等效消息。同样，这些消息也会使用DDM定义的协议被传输到指定的远程计算机，在这台计算机上，DDM服务器程序解释消息，并使用该计算机的文件系统接口来定位和交互指定的文件。

### 设计目标

分布式文件系统可以在许多方面实现"透明性"。也就是说，它们的目标是让客户机程序"看不见"它们，这些客户端程序“看到”的事一个类似于本地文件系统的系统。在幕后，分布式文件系统处理定位文件、传输数据，并可能提供下面列出的其他功能。

- 访问透明性：客户端感受不到文件是分布式的，并且可以像访问本地文件一样访问它们。
- 位置透明性：存在一致的命名空间，包含本地文件和远程文件。文件名不提供其位置。
- 并发透明性：所有客户端都具有相同的文件系统状态视图。这意味着，如果一个进程正在修改一个文件，那么同一系统或远程系统上访问该文件的任何其他进程都会以一致的方式看到修改。
- 失败透明性：客户端和客户端程序应在服务器发生故障后正常运行。
- 异构性：文件服务应该跨不同的硬件和操作系统平台提供。
- 可扩展性：文件系统应该在小型环境（1台机器，12台机器）中运行良好，并且可以优雅地扩展到更大的（数百到数万个系统）。
- 复制透明性：客户端不应感受到文件复制是跨多个服务器执行的。
- 迁移透明度：文件在不同的服务器之间的移动不应该让客户感受到。

### 历史

在20世纪60年代，不兼容分时系统使用虚拟设备进行透明的机器间文件系统访问。20世纪70年代开发了更多的文件服务器。1976年，数字设备公司发明了文件访问监听器（FAL），这是数据访问协议的一种实现，作为DECnet阶段II的一部分，成为第一个广泛使用的网络文件系统。1985年，昇阳电脑创建了名为“网络文件系统”（NFS）的文件系统，该系统成为第一个广泛使用的基于Internet协议的网络文件系统。其他著名的网络文件系统包括安德鲁文件系统（AFS）、Apple文件协议（AFP），NetWare核心协议（NCP）和服务器消息块（SMB，也称为通用因特网文件系统（CIFS））。1986年，IBM宣布为运行CICS的System/36、System/38和IBM大型计算机提供分布式数据管理架构（DDM）的客户端和服务器支持。随后是对IBM Personal Computer、AS/400、MVS和VSE操作系统下的IBM大型计算机以及FlexOS的支持。DDM也成为分布式关系数据库体系结构 （也称为DRDA）的基础。

面向云计算的开源分布式文件系统或闭源集群文件系统，有许多对等网络协议，例如：9P、AFS、Coda、CIFS/SMB、DCE/DFS、Lustre、PanFS、Google File System、Mnet、Chord Project。

### 示例

- Alluxio
- BeeGFS （弗劳恩霍夫）
- Ceph （Inktank，Red Hat，SUSE）
- Windows Distributed File System (DFS) (Microsoft)
- Infinit
- GfarmFS
- GlusterFS （红帽）
- GFS （谷歌公司）
- HDFS （Apache软件基金会）
- IPFS
- iRODS
- LizardFS (Skytechnology)
- MapR FS
- MooseFS (Core Technology / Gemius)
- ObjectiveFS
- OneFS （EMC Isilon）
- OpenIO
- OrangeFS （克莱姆森大学，Omnibond Systems），以前的并行虚拟文件系统
- PanFS （Panasas）
- 并行虚拟文件系统 （克莱姆森大学，阿贡国家实验室，俄亥俄州超级计算机中心）
- RozoFS （Rozo Systems）
- Torus（CoreOS）
- XtreemFS

## 网络附加存储

网络附加存储（NAS）提供存储和文件系统，就像存储区域网络（SAN）上的共享磁盘文件系统。NAS通常使用基于文件的协议（与SAN将使用的基于块的协议不同），例如NFS （在UNIX系统上很流行），SMB/CIFS（服务器消息块/通用Internet文件系统）（与MS Windows系统一起使用），AFP （与Apple Macintosh计算机一起使用）或NCP（与OES和Novell NetWare一起使用）。

## 设计方面的考虑

### 避免单点故障

磁盘硬件或集群中某个给定存储节点的故障可能会导致单点故障，从而导致数据丢失或不可用。可以通过各式各样的数据复制提供容错和高可用性，这样即使任何单个设备发生故障，数据仍然是完整的和可用的。有关示例，请参阅分布式容错文件系统和分布式并行容错文件系统的列表。

### 性能

集群文件系统的常见性能度量是满足服务请求所需的时间量。在传统系统中，此时间由磁盘访问时间和少量CPU处理时间组成。但是在集群文件系统中，由于分布式结构，远程访问会产生额外的开销。这包括向服务器发送请求的时间、向客户机发送响应的时间，以及对于每个方向运行通信协议软件的CPU开销。

### 并发

当不止一个人或客户端访问同一个文件或块并想要更新它时，并发控制就会成为一个问题。因此，一个客户端对文件的更新不应该干扰其他客户端的访问和更新。这个问题在文件系统中更加复杂，因为并发的重叠写操作是由不同的写入器并发地写入文件的重叠区域。这个问题通常由并发控制或锁来处理，它们可以内置在文件系统中，也可以通过附加协议来提供。

## 历史

上世纪70年代的IBM大型机，如果每台机器都有自己的通道连接到驱动器的控制单元，就可以共享物理磁盘和文件系统。在20世纪80年代，Digital Equipment Corporation的TOPS-20和OpenVMS集群（VAX/ALPHA/IA64）包含了共享磁盘文件系统。

## 扩展阅读

- A Taxonomy of Distributed Storage Systems
- A Taxonomy and Survey on Distributed File Systems
- A survey of distributed file systems
- Basics_EvolutionFileSystems.pdf The Evolution of File Systems