分佈式文件系統之MooseFS----介紹

       前一段公司由於nfs存儲的問題,作了一段時間的調研。最終雖然有nfs高可用方案(nfs+drbd+heartbeat),可是在nfs故障切換的時候會出現 2 分鐘左右的延時。這樣子。。。就開始了對分佈式文件系統的調研選型。也就是這樣,有了本系列的博文。html

       針對 MooseFS 預計會有 3 篇博文,分爲介紹、部署、深刻。本篇博文主要介紹 MooseFS 。前端


1、簡述mysql

一、介紹web

       MooseFS是一個具有冗餘容錯功能的分佈式網絡文件系統,它將數據分別存放在多個物理服務器或單獨磁盤或分區上,確保一份數據有多個備份副本。對於訪問的客戶端或者用戶來講,整個分佈式網絡文件系統集羣看起來就像一個資源同樣。從其對文件操做的狀況看,MooseFS就至關於一個類UNIX文件系統:算法

       一、mfs是一個分層的目錄樹結構sql

       二、存儲支持POSIX標準的文件屬性(權限,最後訪問和修改時間)緩存

       三、支持特殊的文件,如:塊設備,字符設備,管道和套接字,連接文件(符號連接和硬連接)服務器

       四、支持基於IP地址和密碼的方式訪問文件系統網絡


二、特性架構

       一、高可靠性,每一份數據能夠設置多個副本(多份數據),並能夠存儲在不一樣的主機上

       二、高可擴展性,能夠很輕鬆的經過增長主機磁盤容量或增長主機數量來動態擴展整個文件系統的存儲量

       三、高可容錯性,咱們能夠經過對mfs進行系統設置,實現當數據文件被刪除後的一段時間內,依然存放於主機的回收站中,以備誤刪恢復數據

       四、高數據一致性,即使文件被寫入/訪問時,咱們依然能夠完成對文件的一致性快照


三、優缺點

優勢:

       一、因爲MFS是基於GPL發佈的,所以徹底免費,而且開發和社區都很活躍,資料也很是豐富

       二、輕量、易部署、易配置、易維護

       三、通用文件系統,不須要修改上層應用就可使用(那些須要專門 API 的DFS確實有點麻煩)
       四、擴容成本低、支持在線擴容,不影響業務,體系架構可伸縮性極強(官方的case能夠擴到70臺了!)
       五、體系架構高可用,全部組件無單點故障
       六、文件對象高可用,可設置任意的文件冗餘程度(提供比 Raid 10 更高的冗餘級別)

       七、提供系統負載,將數據讀寫分配到全部的服務器上,加速讀寫性能

       八、提供諸多高級特性,好比相似Windows的回收站功能、相似JAVA語言的GC(垃圾回收)、快照功能等

       九、MooseFS 是 Google Filesystem 的一個 c 實現

       十、自帶 Web Gui 的監控接口

       十一、提升隨機讀或寫效率和海量小文件的讀寫效率(有待進一步證實)

缺點:

       一、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的應用場景,其實就是去談分佈式文件系統的應用場景。

      一、大規模高併發的數據存儲及訪問(小文件、大文件),TFS適合小文件(<1M)

      二、大規模的數據處理,如日誌分析


五、使用現狀

       針對 MooseFS 在全球的使用狀況,我在國內的一篇論文上挖了一張圖。圖片以下,在該圖中標記爲馴鹿的就是 Moosefs 的使用者所在區域。從圖中能夠看出,它在中國、歐洲以及北美都擁有了大量的用戶,正是有了普遍的用戶基礎,才能使得mfs特性可以快速的迭代和進步。

wKioL1S-G8mi7IpqAALojpL2UZ0261.jpg

MooseFS官方的使用狀況連接:http://www.moosefs.org/who-is-using-moosefs.html


2、組成

一、架構圖


wKioL1SulSPRwhESAAInaVmZaEE454.jpg

       整個架構中,主要有四個組件,分別是管理服務器 Master Server、備份服務器Metalogger Server、數據存儲服務器 Chunk Server 和 客戶端 Client。其中,管理服務器 Master Server 負責全部數據存儲服務器的數據存儲管理,響應客戶端文件的讀寫請求,收回文件空間以及恢復文件,多存儲節點之間的文件複製;元數據日誌服務器 Metalogger Server,對 Master Server  服務器的變化日誌文件進行備份,changelog_ml.*.mfs 是備份文件的類型,當 Master Server 出現故障時替換其繼續工做,避免 Master Server 的單點故障致使分佈式文件系統的不能正常運行;數據存儲服務器chunkserver,服從 Master Server 的安排,按期向 Master Server 發送本身的狀態信息,除此以外,還能向客戶提供數據存儲空間,可以向客戶傳輸數據;客戶端 Client,經過 FUSE 內核接口掛載到數據存儲服務器上,在客戶端看來使用數據存儲服務器上的文件系統和使用本地Unix文件系統是同樣的。

       下面再針對這4個組件進行更詳細的介紹!


二、四個組件

組件名稱 組件做用

管理服務器

Managing Server

簡稱Master Server 

這個組件的角色是管理整個mfs文件系統的主服務器,除了分發用戶請求外,還用來存儲整個文件系統中的每一個數據文件的metadata信息,metadata(元數據)信息包括文件(也能夠是目錄、socket、管道、設備等)的大小、屬性、文件位置路徑等,以及文件空間的回收和恢復,控制多chunk server節點的數據拷貝。很相似lvs負載均衡主服務器,不一樣的是lvs僅僅根據算法分發請求,而master根據內存裏的metadata信息來分發請求。這個master只能有一臺處於激活工做的狀態。

元數據備份服務器

Metadata backup servers

簡稱metalogger Server

這個組件的做用是備份管理服務器master的變化的metadata信息日誌文件,文件類型爲changelog_ml.*.mfs,以便於在主服務器出現問題的時候,能夠通過簡單的操做便可讓新主服務器進行工做。這很相似Mysql的主從同步,只不過他不像mysql從庫那樣在本地應用數據,而只是接收主服務器上文件寫入時記錄的文件相關的metadata信息。這個backup能夠有一臺或多臺,它很相似於lvs從負載均衡器。

數據存儲服務器組

Data Servers

簡稱Chunk Servers

這個組件就是真正存放數據文件實體的服務器了,這個角色能夠有多臺不一樣的物理服務器或不一樣的磁盤及分區來充當,當配置數據的副本多於一份時,劇寫入到一個數據服務器後,會根據算法在其餘數據服務器上進行同步備份。這個很像lvs集羣的rs節點。

客戶機服務器組

Client

這個組件就是掛載並使用mfs文件系統的客戶端,當讀寫文件時,客戶端首先鏈接主管理服務器獲取數據的metadata信息,而後根據獲得的metadata信息,訪問數據服務器讀取或寫入文件實體。mfs客戶端經過FUSE mechanism實現掛載MFS文件系統的。所以,只要系統支持FUSE,就能夠做爲客戶端訪問MFS整個文件系統。所謂的客戶端並非網站用戶,而是前端訪問文件系統的應用服務器,如web


3、原理

    MooseFS是一個文件系統,所以其最主要的工做就是文件的讀寫流程,即 MooseFS的主要的兩大工做過程。

一、MooseFS的讀文件流程:

       首先要了解的是它的讀過程。以下圖所示:

wKiom1SulMLzDCnlAAEwaJH26ME157.jpg

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

        一、首先client客戶端訪問主服務器master,獲取文件實體的位置等相關信息

        二、主服務器master查詢緩存記錄,把文件實體的位置等相關信息發給client客戶端

        三、Client客戶端根據拿到的信息去訪問對應的存儲實體數據的服務器(data servers或者 chunk servers)

        四、存儲實體數據的服務器(data servers或者 chunk servers)把對應的數據返回給Client客戶端

        從上圖,咱們還能夠看出,當多個MFS客戶端讀數據的時候,master服務器充當路由爲這些客戶端分發指路的做用,而數據的返回時由不一樣的數據服務器直接返回給請求的客戶端,這樣的模式能夠極大的減輕主服務器的系統及網絡瓶頸,增長了整個系統的吞吐,很像LVS的DR模式的負載均衡的分發和數據傳輸的狀況。


二、MooseFS的寫文件流程:

           相對於讀文件,MooseFS的寫文件流程較爲複雜,如圖所示:

wKioL1SulZrAKHD6AAGZ1raekhw377.jpg

         圖中 Master Server用三角形表示,Chunk Server用圓形表示,Client 用方形表示。

         整個寫過程要分爲下面八個步驟:

        一、Client客戶端訪問主服務器master,請求寫入數據

        二、主服務器master查詢緩存記錄,若是是新文件,則會聯繫後面的數據服務器建立對應的chunk對象準備存放文件。

        三、數據服務器返回建立對應的chunk對象成功給主服務器

        四、主服務器master把文件實體的位置等相關信息發給client客戶端。

        五、Client客戶端訪問對應的數據服務器寫數據

        六、數據服務器之間進行數據同步,互相確認成功

        七、數據服務器返回成功寫入信息給Client客戶端

        八、Client客戶端回報給主服務器master寫入結束


OK!

以上就是 MooseFS 的簡單介紹,但願能對51博友有所幫助!

相關文章
相關標籤/搜索