集群文件系統

集群文件系統（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