天天看點

MooseFS分布式檔案系統介紹

一、簡介

  MooseFS是一個具備備援容錯功能的分布式網絡檔案系統,它将資料分别存放在多個實體伺服器或單獨磁盤或分區上,確定一份資料有多個備份副本。對于通路的用戶端或者使用者來說,整個分布式網絡檔案系統叢集看起來就像一個資源一樣。從其對檔案操作的情況看,MooseFS就相當于一個類UNIX檔案系統。

二、适用場景

  MooseFS是一款相對小衆的分布式檔案系統,不需要修改上層應用接口即可直接使用,支援FUSE的操作方式,部署簡單并提供Web界面的方式進行管理與監控,同其他分布式作業系統一樣,支援線上擴容,并進行橫向擴充。MooseFS還具有可找回誤操作删除的檔案,相當于一個資源回收筒,友善業務進行定制;同時MooseFS對于海量小檔案的讀寫要比大檔案讀寫的效率高的多。但MooseFS的缺點同樣明顯,MFS的主備架構情況類似于MySQL的主從複制,從可以擴充,主卻不容易擴充。短期的對策就是按照業務來做切分,随着MFS體系架構中存儲檔案的總數上升,Master Server對記憶體的需求量會不斷增大。并且對于其單點問題官方自帶的是把資料資訊從Master Server同步到Metalogger Server上,Master Server一旦出問題Metalogger Server可以恢複更新為Master Server,但是需要恢複時間。目前,也可以通過第三方的高可用方案(heartbeat+drbd+moosefs)來解決 Master Server 的單點問題。

三、四大元件

MooseFS檔案系統主要由四大元件構成,分别為管理伺服器、中繼資料日志伺服器、資料存儲伺服器、用戶端,相關解釋如下:

  1. 管理伺服器(Master Server):這個元件的角色是管理整個mfs檔案系統的主伺服器,除了分發使用者請求外,還用來存儲整個檔案系統中的每個資料檔案的metadata資訊,metadata(中繼資料)資訊包括檔案(也可以是目錄、socket、管道、裝置等)的大小、屬性、檔案位置路徑等,以及檔案空間的回收和恢複,控制多chunk server節點的資料拷貝。很類似lvs負載均衡主伺服器,不同的是lvs僅僅根據算法分發請求,而master根據記憶體裡的metadata資訊來分發請求。這個master隻能有一台處于激活工作的狀态。
  2. 中繼資料日志伺服器(metalogger Server):作用是備份管理伺服器master的變化的metadata資訊日志檔案,檔案類型為changelog_ml.*.mfs,以便于在主伺服器出現問題的時候,可以經過簡單的操作即可讓新主伺服器進行工作。這很類似Mysql的主從同步,隻不過他不像mysql從庫那樣在本地應用資料,而隻是接收主伺服器上檔案寫入時記錄的檔案相關的metadata資訊。這個backup可以有一台或多台,它很類似于lvs從負載均衡器。
  3. 資料存儲伺服器(Chunk Servers):存放資料檔案實體的伺服器了,這個角色可以有多台不同的實體伺服器或不同的磁盤及分區來充當,當配置資料的副本多于一份時,劇寫入到一個資料伺服器後,會根據算法在其他資料伺服器上進行同步備份。
  4. 用戶端(Client):挂載并使用mfs檔案系統的用戶端,當讀寫檔案時,用戶端首先連接配接主管理伺服器擷取資料的metadata資訊,然後根據得到的metadata資訊,通路資料伺服器讀取或寫入檔案實體。mfs用戶端通過FUSE mechanism實作挂載MFS檔案系統的。是以,隻要系統支援FUSE,就可以作為用戶端通路MFS整個檔案系統。所謂的用戶端并不是網站使用者,而是前端通路檔案系統的應用伺服器,如web
MooseFS分布式檔案系統介紹

四、工作方式

如下圖中 Master Server用三角形表示,Chunk Server用圓形表示,Client 用方形表示。整個讀過程有以下四個步驟:

  1. 首先client用戶端通路主伺服器master,擷取檔案實體的位置等相關資訊。
  2. 主伺服器master查詢緩存記錄,把檔案實體的位置等相關資訊發給client用戶端。
  3. Client用戶端根據拿到的資訊去通路對應的存儲實體資料的伺服器(data servers或者chunk servers)。
  4. 存儲實體資料的伺服器(data servers或者chunk servers)把對應的資料傳回給Client用戶端。

我們還可以看出,當多個MFS用戶端讀資料的時候,master伺服器充當路由為這些用戶端分發指路的作用,而資料的傳回時由不同的資料伺服器直接傳回給請求的用戶端,這樣的模式可以極大的減輕主伺服器的系統及網絡瓶頸,增加了整個系統的吞吐。

MooseFS分布式檔案系統介紹

MooseFS檔案系統寫過成比讀過成相對複雜的多,如下圖:

  1. Client用戶端通路主伺服器master,請求寫入資料。
  2. 主伺服器master查詢緩存記錄,如果是新檔案,則會聯系後面的資料伺服器建立對應的chunk對象準備存放檔案。
  3. 資料伺服器傳回建立對應的chunk對象成功給主伺服器。
  4. 主伺服器master把檔案實體的位置等相關資訊發給client用戶端。
  5. Client用戶端通路對應的資料伺服器寫資料。
  6. 資料伺服器之間進行資料同步,互相确認成功。
  7. 資料伺服器傳回成功寫入資訊給Client用戶端。
  8. Client用戶端回報給主伺服器master寫入結束。
MooseFS分布式檔案系統介紹

轉載于:https://www.cnblogs.com/hjc4025/p/9956988.html