集群文件系统

**叢集檔案系統**（英語：clustered file system）是一種通過同時掛載在多個伺服器上實現共享的檔案系統。有幾種實現叢集的方法，其中大多數不使用叢集檔案系統（每個節點只有直連式儲存）。叢集檔案系統可以提供基於位置的定址和冗餘等功能，這些特性可以提高可靠性或降低叢集其他部分的複雜性。**並列檔案系統** 是一種跨多個儲存節點傳播資料的叢集檔案系統，通常是為了冗餘或效能。

## 共享磁碟檔案系統

**共享磁碟檔案系統** 使用儲存區域網路（SAN）允許多台電腦在塊級別直接存取磁碟。從應用程式使用的檔案級操作到 SAN 使用的塊級操作的存取控制和轉換必須在客戶機節點上進行。最常見的叢集檔案系統檔案系統是共享磁碟檔案系統，它通過增加並行控制機制，提供了檔案系統的一致性和可串行化的視圖，即使多個客戶機試圖同時存取相同的檔案，也能避免損壞和意外的資料遺失。共享磁碟檔案系統通常採用某種隔離機制，以防止在節點故障時出現資料損壞，因為非隔離裝置如果失去與其姐妹節點的通信並試圖存取其他節點正在存取的相同資訊，就可能導致資料損壞。底層儲存區域網路可以使用任何一種塊級協定，包括 SCSI、iSCSI、HyperSCSI、ATA over Ethernet（AoE）、光纖通道、網路塊裝置和 InfiniBand。

共享磁碟檔案系統有不同的體系結構方法。有些在叢集中的所有伺服器上分發檔案資訊（完全分散式）。 另一些使用集中的集中式元資料伺服器。兩者都實現了相同的結果，即允許所有伺服器存取共享儲存裝置上的所有資料。

### 範例

## 分散式檔案系統

_分散式檔案系統_不共享對同一儲存的塊級存取，而是使用網路協定 。 這些系統通常被稱為_網路檔案系統_ ，儘管它們並不是唯一使用網路傳送資料的檔案系統。 分散式檔案系統可以根據伺服器和客戶端上的存取控制列表或能力來限制對檔案系統的存取，具體取決於協定的設計方式。分散式檔案系統和分散式資料儲存之間的區別在於，分散式檔案系統允許使用與本地檔案相同的介面和語意來存取檔案 – ，例如，掛載 / 解除安裝，列出目錄、讀取 / 寫入位元組邊界、系統的本地權限模型。相比之下，分散式資料儲存需要使用不同的 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。

### 範例

## 網路附加儲存

網路附加儲存（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