一、MooseFS簡介
MooseFS是一個具備冗餘容錯功能的分佈式網絡文件系統,它將數據分別存放在多個物理服務器或單獨磁盤或分區上,確保一份數據有多個備份副本。對於訪問的客戶端或者用戶來說,整個分佈式網絡文件系統集羣看起來就像一個資源一樣。從其對文件操作的情況看,MooseFS就相當於一個類UNIX文件系統。
二、MooseFS架構中的四種角色
- 管理服務器(Master Server):也稱爲元數據服務器,負責管理各個數據存儲服務器,調度文件讀寫,回收文件空間以及恢復多節點拷貝。目前MFS只支持一個元數據服務器master,這是一個單點故障,需要一個性能穩定的服務器來充當。
- 元數據日誌服務器(Metalogger Server):負責備份管理服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在管理服務器出問題時接替其進行工作。元數據日誌服務器是mfs 1.6以後版本新增的服務,可以把元數據日誌保留在管理服務器中,也可以單獨存儲在一臺服務器中。爲保證數據的安全性和可靠性,建議單獨用一臺服務器來存放元數據日誌。需要注意的是,元數據日誌守護進程跟管理服務器在同一個服務器上,備份元數據日誌服務器作爲它的客戶端,從管理服務器取得日誌文件進行備份。
- 數據存儲服務器(Chunk Server):數據存儲服務器是真正存儲用戶數據的服務器,負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸。在存儲文件時,首先把文件分成塊,然後將這些塊在數據存儲服務器之間互相複製。
- 客戶端(Client):通過FUSE內核接口掛載遠程管理服務器上所管理的數據存儲服務器,使共享的文件系統和使用本地文件系統的效果看起來是一樣的。
三、MooseFS工作機制
1. 集羣架構圖
2. 讀寫機制
2.1 讀機制
- 首先客戶端(Client)訪問主服務器(Master),獲取文件實體的位置等相關信息。
- 主服務器(Master)查詢緩存記錄,把文件實體的位置等相關信息發給客戶端(Client)。
- 客戶端(Client)根據拿到的信息去訪問對應的存儲實體數據的服務器(Chunk Server)。
- 存儲實體數據的服務器(Chunk Server)把對應的數據返回給客戶端(Client)。
2.2 寫機制
- 客戶端(Client)訪問主服務器(Master),請求寫入數據。
- 主服務器(Master)查詢緩存記錄,如果是新文件,則會聯繫後面的數據服務器(Chunk Server)創建對應的chunk對象準備存放文件。
- 數據服務器(Chunk Server)返回創建chunk對象成功的消息給主服務器(Master)。
- 主服務器(Master)把文件實體的位置等相關信息發給客戶端(Client)。
- 客戶端(Client)訪問對應的數據服務器(Chunk Server)寫數據。
- 數據服務器(Chunk Server)之間進行數據同步,互相確認成功。
- 數據服務器(Chunk Server)返回成功寫入信息給客戶端(Client)。
- 客戶端(Client)回報給主服務器(Master)寫入結束。
四、優劣分析
1. 優點
- 由於MFS是基於GPL發佈的,因此完全免費,並且開發和社區都很活躍,資料也非常豐富
- 輕量、易部署、易配置、易維護
- 通用文件系統,不需要修改上層應用就可以使用
- 擴容成本低、支持在線擴容,不影響業務,體系架構可伸縮性極強
- 體系架構高可用,所有組件無單點故障
- 文件對象高可用,可設置任意的文件冗餘程度(提供比 Raid 10 更高的冗餘級別)
- 提供系統負載,將數據讀寫分配到所有的服務器上,加速讀寫性能
- 提供諸多高級特性,比如類似Windows的回收站功能、類似JAVA語言的GC(垃圾回收)、快照功能等
- MooseFS 是 Google Filesystem 的一個 C 實現
- 自帶 Web Gui 的監控接口
- 提高隨機讀或寫效率和海量小文件的讀寫效率
2. 缺點
- Master Server本身的性能瓶頸。MFS的主備架構情況類似於MySQL的主從複製,從可以擴展,主卻不容易擴展。短期的對策就是按照業務來做切分。
- 隨着MFS體系架構中存儲文件的總數上升,Master Server對內存的需求量會不斷增大(MFS把文件系統的結構緩存到 Maset Server 的內存中)。根據官方提供的數據,8g對應2500萬的文件數,2億文件就得64GB內存。短期的對策也是按照業務來做切分。
- Master Server的單點解決方案的健壯性。目前官方自帶的是把數據信息從Master Server同步到Metalogger Server上,Master Server一旦出問題Metalogger Server可以恢復升級爲Master Server,但是需要恢復時間。目前,也可以通過第三方的高可用方案(heartbeat+drbd+moosefs)來解決Master Server的單點問題。
- Metalogger Server複製元數據的間隔時間較長(可調整)。
五、參考文獻
MooseFS官網 [https://moosefs.com]
MooseFS分佈式文件系統介紹 [https://www.cnblogs.com/hjc4025/p/9956988.html]
分佈式文件系統之MooseFS [https://blog.51cto.com/zouqingyun/1698710]