Linux企業實戰(五十六)——分散式檔案系統MFS(一)

bdkl9998發表於2020-12-24

一、MFS簡介

  • MooseFS是一款Linux下的開源儲存系統,是OpenStack開源雲端計算專案的子專案之一,被稱為物件儲存,提供了強大的擴充套件性、高可靠性和永續性。它能夠將檔案分佈儲存於不同的物理機器上,對外卻提供的是一個透明的介面的儲存資源池。它還具有線上擴充套件、檔案切塊儲存、節點無單點故障、讀寫效率高等特點。

  • MFS分散式檔案系統由後設資料伺服器(Master Server)、後設資料日誌伺服器(Metalogger Server)、資料儲存伺服器(Chunk Server)、客戶端(Client)組成。

    • 後設資料伺服器:MFS系統中的核心組成部分,儲存每個檔案的後設資料,負責檔案的讀寫排程、空間回收和在多個chunk server之間的資料拷貝等。目前MFS僅支援一個後設資料伺服器,因此可能會出現單點故障。針對此問題我們需要用一臺效能很穩定的伺服器來作為我們的後設資料伺服器,這樣可以降低出現單點故障的概率。
    • 後設資料日誌伺服器:後設資料伺服器的備份節點,按照指定的週期從後設資料伺服器上將儲存後設資料、更新日誌和會話資訊的檔案下載到本地目錄下。當後設資料伺服器出現故障時,我們可以從該伺服器的檔案中拿到相關的必要的資訊對整個系統進行恢復。此外,利用後設資料進行備份是一種常規的日誌備份手段,這種方法在某些情況下並不能完美的接管業務,還是會造成資料丟失。
    • 資料儲存伺服器:負責連線後設資料管理伺服器,聽從後設資料伺服器的排程,提供儲存空間,併為客戶端提供資料傳輸,MooseFS提供一個手動指定每個目錄的備份個數。假設個數為n,那麼我們在向系統寫入檔案時,系統會將切分好的檔案塊在不同的chunk server上覆制n份。備份數的增加不會影響系統的寫效能,但是可以提高系統的讀效能和可用性,這可以說是一種以儲存容量換取寫效能和可用性的策略。
    • 客戶端:使用mfsmount的方式通過FUSE核心介面掛接遠端管理伺服器上管理的資料儲存伺服器到本地目錄上,然後就可以像使用本地檔案一樣來使用我們的MFS檔案系統了。
  • MFS的優點

    • 通用檔案系統,不需要修改上層應用就可以使用;
    • 可以線上擴容,體系架構可伸縮性極強;
    • 高可用,可設定任意的檔案冗餘程度(提供比 raid1+0 更高的冗餘級別,而絕對不會影響讀或
      寫的效能,只會加速);
    • 部署簡單;
    • 提高隨機讀或寫的效率。

二、MFS工作原理

  • MFS讀資料過程:

    • MFS客戶端向系統的後設資料管理伺服器提交讀取檔案的任務請求;
    • 後設資料伺服器檢索自己的資料並把資料所存放的位置發給客戶端;
    • 客戶端接收到後設資料管理伺服器返回的資訊後,向已知的資料儲存伺服器傳送資料請求。
  • MFS寫資料過程:

    • MFS的客戶端有資料寫需求時,首先向後設資料管理伺服器提交些檔案的任務請求;
    • 後設資料管理伺服器接收到客戶端請求後在資料伺服器建立新的Chunk檔案塊;
    • 資料伺服器將建立成功的訊息返回給後設資料管理伺服器;
    • 後設資料管理伺服器將資料伺服器的地址返回給客戶端;
    • 客戶端直接向已知的資料伺服器寫資料;
    • 資料伺服器將寫檔案成功的訊息返回給客戶端;
    • 客戶端將此次寫完成的訊號傳送給後設資料管理伺服器。

三、部署過程

  • 實驗環境:
主機角色
server2MFS Master
server3MFS Chunkserver
server9MFS Chunkserver
server10MFS Client
  • 安裝相關軟體,並進行設定
    在server2,master節點上
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在瀏覽器中訪問192.168.0.102:9425
在這裡插入圖片描述
在這裡插入圖片描述
此時還沒有chunk server資料結點,所以server這裡是空的

在server3和server9,chunk資料結點上
在這裡插入圖片描述
在這裡插入圖片描述
建立儲存目錄
在這裡插入圖片描述
在配置檔案中指定儲存路徑,並開啟服務,並開啟moosefs-chunkserver

vim /etc/mfs/mfshdd.cfg

在這裡插入圖片描述
在這裡插入圖片描述
在server9建立儲存目錄,/mnt/chunk2,然後進行和server3的操作一樣

然後重新整理瀏覽器檢視server下的資料
在這裡插入圖片描述
在server10client節點進行設定
在這裡插入圖片描述
在這裡插入圖片描述

  • 測試使用
    在客戶端server10上進行操作
    在這裡插入圖片描述
mount    #檢視掛載資訊

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
測試將server9當機
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
我們發現data1中的資料不能再訪問,因為沒有資料副本,訪問時會卡住;但是不影響data2的訪問,因為它還有一個副本。

  • 測試大檔案會在資料結點上分開儲存
    在這裡插入圖片描述
    在這裡插入圖片描述

相關文章