分布式文件系統介紹( MooseFS )
MooseFS 系統簡介
MooseFS 是一個高容錯性的分布式文件系統,它能夠將資源分布存儲于幾臺不同的物理介質,對外只提供給用戶一個訪問接口。對它的操作與其它文件系統完全一樣:
l 分層文件結構(目錄樹結構);
l 存儲POSIX 文件屬性(權限、最后訪問、修改時間);
l 支持特殊的文件(塊文件夾、字符文件及管道和socket )
l 軟鏈接(文件名指向目標文件)及硬鏈接(不同的文件名指向同一塊數據);
l 僅限于基于IP 地址或密碼來訪問文件系統。
MoosFS 具有以下特征:
l 高可靠性:數據可以被存儲于幾個不同的地方;
l 可擴展性:可以動態的添加計算機或磁盤來增加系統的容量產;
l 高可控性:系統能夠設置刪除文件的時間間隔;
l 可追溯性:能夠根據文件的不同操作(寫入/ 訪問)生成文件快照。
MooseFS 的體系結構
MooseFS 體系結構包含以下四個模塊:
l 管理服務器( master server ):它用來管理整個文件系統,用來存儲每個文件的元數據(包括文件大小、屬性及存儲位置,同時也包括的一些非規則性的文件,如目錄、 socket 、管道及設備);
l 數據服務器( chunk servers ):用于存儲文件的服務器,同時它們之間可以同步數據;
l 元數據備份服務器( metalogger servers ):用于存儲元數據變化日志并周期性的下載元數據文件;同時也可以替代管理服務器暫不能工作的情況;
l 客戶端:用于訪問 MooseFS 中的文件,采用 mfsmount 來與管理服務器進行交互(接收或修改元數據文件)及與數據服務器交換真正的數據。
mfsmount 是基于 FUSE 機制的 (FileSystem in USErspace) ,因此 mooseFS 能夠工作于任何實現了 FUSE 的操作系統( Linux 、 FreeBSD 、 MacOS X 等)。
MooseFS 讀操作
MooseFS 寫操作
元數據存儲在管理服務器的內存及磁盤中(周期性的更新二進制文件及增長的日志文件)。同時二進制文件及日志文件會被同步到元數據服務器。
文件數據被切分成最大不超過 64M 的不同的片段,每個片段會存儲于備選的數據服務器中。可以通過將數據配置在多個不同的數據服務器來保證高可靠性,可以通過 mfssetgoal 命令來設定最終要將數據存儲在幾臺服務器上。
系統如何工作
在客戶端上對掛載在 MooseFS 上的文件操作與的文件系統完全一樣,操作系統內核將文件操作傳輸至 FUSE 模塊,進而與 mfsmount 進程進行交互。 Mfsmount 進程通過網絡與管理服 務器及數據服務器交互。整個過程對用戶來說是完全透明的。
Mfsmount 每次與管理服務器交互,以下的操作文件元是必須的:
l 創建文件;
l 刪除文件;
l 讀取文件目錄;
l 讀取及改變屬性;
l 改變文件大小;
l 開始讀取或寫入數據;
l 訪問MFSMETA 上的任何特殊文件。
mfsmount 直接連接到數據服務器,用于存儲相關片段的文件。當寫入一個文件時,寫入過程完成后,管理服務器會接收從 mfsmount 發送回來的信息,用于更新文件的長度及最后的修改時間。
此外,數據服務器間能夠相互復制數據,以達到將數據文件存儲在不同機器上的目的。
容錯性
系統 管理員可以通過管理命令將數據文件拷貝至不同的數據服務器上。設置多于一臺數據服務器的目標將有利于提高系統的容錯性。多份數據文件的存儲有利于消除單一數據服務器宕機或網絡延遲帶來的災難。
當采用 mfssetgoal 的目標數為 1 時,會將數據文件存儲在系統中的單一數據服務器中。當有重要數據時,可以將該目標值設置大于 2 ,它能夠有效的防止因系統宕機而帶來數據無法訪問的后果。當然了目標數的設定不能多于數 據服務器的數目,否則將無法將數據保存到預定數目的服務器中。當有一個服務器已經存儲滿時,它將無法再容納數據存儲,在這種情況下,需要重新掛載一臺數據 服務器,才能夠滿足預期的目標數。如果有一臺數據服務器臨時無法訪問或網絡出現問題,由于之前數據文件至少有兩份以上的備份,客戶端可以從其它服務器上進 行有效訪問。
新的數據服務器能夠隨時掛載到系統中,同時新的存儲容量也會立即生效,用來存儲新文件或從其它數據服務器復制備份文件。管理工具能夠查詢文件系統中的狀態以及是否在目標值設定的范圍之前內,工具也能夠用來改變目標值的設置。客戶端(運行 mfsmount 進程)的機器對文件系統的連貫性及其它客戶端沒有任何影響。最嚴重的情形也不過是客戶端向數據服務器發送的數據失敗。
平臺
MooseFS 能夠被應用在實現了 FUSE 的任何操作系統:
· Linux (Linux 2.6.14 及更高,支持 FUSE 的內核 )
· FreeBSD
· OpenSolaris
· MacOS
管理服務器、日志服務器及數據服務器使用 Cygwin 運行在 Solaris 及 Windows 上。不幸的是沒有 FUSE 的話是不能將文件系統掛載到操作系統中。