1. 程式人生 > 其它 >|NO.Z.00023|——————————|^^ 構建 ^^|——|分散式儲存之MFS.V1|----------------------------------|6臺server|

|NO.Z.00023|——————————|^^ 構建 ^^|——|分散式儲存之MFS.V1|----------------------------------|6臺server|



[Applications:分散式儲存之MFS.V1]                                                                [Applications.LBC&HAC$HPC] [網路儲存叢集|儲存|分散式儲存之MFS|6臺server]








一、什麼是MFS
### --- MFS:
~~~     MooseFS是一個具備冗餘容錯功能的分散式網路檔案系統,
~~~     它將資料分別存放在多個物理伺服器或單獨磁碟或分割槽上,確保一份資料有多個備份副本,
~~~     然而對於訪問MFS的客戶端或者使用者來說,整個分散式網路檔案系統叢集看起來就像一個資源一樣、
~~~     從其對檔案系統的情況看MooseFS就相當於UNIX的檔案系統

### --- 單個檔案就是儲存的最小單位,
~~~     對於上層應用來說認為是存在本地,其實是儲存在遠端的儲存裝置
### --- 冗餘:良性冗餘:
~~~     重要的檔案備份了多份;惡性冗餘:不重要的檔案備份了多份,就是一個檔案進行了多個節點的備份

### --- 容錯:
~~~     當檔案損壞之後還是可以進行恢復的。
### --- MFS特性:
### --- 高可靠性:
### --- 單主機或兩個主機死亡資料不會丟失。

~~~     每一份資料可以設定多個備份(多份資料)並可以儲存在不同的主機上,
### --- 高可擴充套件性:
~~~     可以很輕鬆的通過增加主機的磁碟容量或增加主機數量來動態擴充套件整個檔案系統的儲存量

### --- 高可容錯性:
~~~     我們可以通過對MFS進行系統設定,實現當資料檔案被刪除後的一段時間內,
~~~     依舊存放在主機的回收站中。以備#誤刪除恢復資料

### --- 高資料一致性:
~~~     及時檔案被寫入,訪問時,我們依然可以輕鬆完成對檔案的一致性快照
### --- NFS缺點:NFS社群版本:只能一個節點master配置,NFS企業版:是可以兩個節點配置master

~~~     Master目前是單節點(master宕機後集群會失效,資料不會丟失但不可以為應用使用),
~~~     雖然會把資料資訊同步到備份伺服器,但是恢復需要時間
~~~     (會有一個備份伺服器,會進行實時資料備份,資料不會丟失)
~~~     master伺服器對主機的記憶體要求略高(把所有的源資料儲存在記憶體中)
~~~     預設Metalogger複製元資料(完整備份)時間較長(可調整)
### --- 注:記憶體使用問題:
### --- 處理一百萬個檔案chunkserver,大概需要300M的記憶體空間,

~~~     據此,推算出如果未來要出來1個億的檔案chunkserver,
~~~     大概需要30G記憶體空間(標配服務的記憶體是64GB)
### --- MFS適用場景
### --- 應用場景

### --- 大規模高併發的線上資料儲存及訪問(小檔案,大檔案都適合)
### --- 大規模的資料處理,如日誌分析,小檔案強調效能不用HDFS。
二、MFS元件說明 1、MFS結構及原理
### --- MFS MASTER:
~~~     存資料的Metadata儲存資料的元資料資訊的,比如檔案大小,存在哪裡,檔案的屬主許可權

### --- CHUNKSERVER:
~~~     檔案會被分成不同的chunkserver進行儲存,儲存真實資料的服務。

### --- client:
~~~     客戶端
2、MFS元件角色說明
### --- 管理伺服器(managing server 簡稱master):

~~~     這個元件的角色是管理整個mfs檔案系統的主伺服器,除了分發使用者請求外,
~~~     還用來儲存整個檔案系統中每個資料檔案的metadata資訊,
~~~     # metadate(元資料)資訊包括檔案(也可以是目錄,socket,管道,塊裝置等)的大小,
~~~     # 屬性,檔案的位置路徑等。
~~~     # 社群版本有且只能存在一個;企業版可以有2個。
### --- 元資料備份伺服器Metadata backup servers簡稱metalogger:

~~~     這個元件的作用是備份管理伺服器master的變化metadata資訊日誌檔案,
~~~     檔案型別為changelog_m1.*.mfs。以便於管理伺服器出問題是,
~~~     可以經過簡單的操作即可讓伺服器進行工作。
~~~     # metalogger實時的和metadate保持聯絡,備份metadata資料資訊。
~~~     # 保證元資料的完整性。可以存在多個
### --- 資料儲存伺服器組data servers(chunk servers)簡稱data:

~~~     這個元件就是真正存放資料檔案實體的伺服器了,
~~~     這個角色可以有多臺不同的物理伺服器或不同的磁碟及分割槽來充當,
~~~     當配置資料的副本多於一份時,據寫入到一個數據伺服器後,
~~~     會根據演算法在其他資料伺服器上進行同步備份;可以存在多個。
### --- 客戶機伺服器組(client servers)簡稱client:

~~~     這個元件就是掛載並使用mfs檔案系統的客戶端,
~~~     當讀寫檔案時,客戶端首先會連結主管理伺服器獲取資料的metadata資訊,
~~~     然後根據得到的metadata資訊,訪問資料伺服器讀取或寫入檔案實體,mfs客戶端通過
~~~     # fusemechanism(使用者空間檔案系統,IBM和微軟開發出來的,
~~~     # 可以在使用者層去構建檔案系統,使用檔案系統),
~~~     實現掛載mfs檔案系統,因此只有系統支援fuse,
~~~     就可以作為客戶端訪問mfs整個檔案系統:可以存在多個
三、增/刪/改/查/讀/遍歷 1、基礎環境
### --- Client:客戶端
### --- MFS-Master:master伺服器
### --- MFS-ChunkServer:2臺
### --- MFS-MetaData:1臺備份伺服器
2、讀/遍歷
### --- 遍歷:
~~~     ls /:檢視根下有哪些內容;這種方式就是遍歷。

### --- 遍歷:
~~~     Client客戶端向MFS-Master伺服器發出請求,需要訪問某一個檔案;
~~~     MFS-Master會檢索自己儲存的資料資訊,檢索彎沉後把對應的元資料資訊直接傳送給client端,
~~~     遍歷的時候沒有接受到真實的資料,檢視到的只是元資料資訊。

### --- 讀:
~~~     client客戶把請求傳送到MFS-Master伺服器,MFS-Master接收到這個請求, 
~~~     MFS-Master會在自己的記憶體中檢索這個檔案的元資料資訊到底在哪裡,
~~~     然後把這個請求的元資料資訊傳送給client端,
~~~     client接收後會連線到對應的MFS-ChunkServer的對應的IP埠對應的ChunkServerID
~~~     上對應的檔案上;獲取資料;返回給client。
3、刪
### --- Client刪除檔案想MFS-Master伺服器發起請求,

~~~     MFS-Master伺服器會檢索有沒有需要刪除的這個檔案的元資料資訊;
~~~     若有的情況下,會刪除MFS-Master伺服器中這個檔案的元資料資訊;
~~~     還需要把該檔案的元資料資訊對應的真實資料載入到這臺伺服器的裡
~~~     # 非同步佇列(現在不做,設定多少秒後執行正式刪除操作)
~~~     #(也就說明在非同步佇列裡未刪除之前還能將檔案恢復回來)
4、改
### --- client發起修改檔案請求到MFS-Master伺服器,

~~~     MFS-Master會在MFS-ChunkServer上拷貝該檔案的新塊。
~~~     MFS-ChunkServer會把改檔案拷貝的新塊的元資料資訊告訴給MFS-Master伺服器,
~~~     MFS-Master把這該檔案新塊的元資料資訊路徑返回給client,
~~~     client連線MFS-ChunkServer伺服器後 開啟該新塊進行資料修改。
~~~     (介入新塊:是為了防止資料干擾,或者同步操作失敗,類似於VIM的操作);
~~~     當該新塊檔案修改完成後,client會告訴MFS-Master該檔案我準備關閉,
~~~     MFS-Master會對比這兩個檔案之間有沒有區別;若有區別,
~~~     它會建立一個新的塊,把這個檔案的內容再拷貝過來,然後再把舊檔案和新檔案全部刪除。
~~~     更新這個檔案的元資料資訊,和最新塊的對應關係。 
~~~     後期若是有訪問的話,訪問的是這個最新的塊檔案。若是沒有區別;
~~~     就不會建立最新塊,會刪除新塊,還是用老塊的地址並且更新舊塊的最終修改時間。
5、增
### --- Client告訴MFS-Master我要touch一個1.txt新檔案,

~~~     Client會告訴MFS-Master這個檔案的元資料資訊:
~~~     名稱,檔案大小,型別等,MFS-Master會選擇一個MFS-ChunkServer建立一個塊, 
~~~     MFS-ChunkServer把這個塊建立完成之後會告訴MFS-Master建立的這個檔案的路徑在哪裡:
~~~     IP,Port絕對地址,MFS-Master會把這個塊的資料資訊傳送給client,
~~~     client連線到這個空塊上去寫入資料,寫入彎沉過之後,
~~~     client告訴MFS-Master這個檔案我已經寫完,你可以把它關閉後了;
~~~     MFS-Master會去查詢這個檔案的最終大小,
~~~     以及儲存它的屬組屬主以及元資料資訊並儲存在MFS-Master中。
四、MFS補充描述
### --- 儲存檔案變更

~~~     Master記錄著管理資訊,比如:檔案路徑|大小|儲存位置|(IP、port、chunkid)
~~~     |份數|時間等,# 元資料資訊存在於記憶體中,
~~~     會定期寫入metadata.mfs.back檔案中(持久化同步),定期同步到metalogger中。
~~~     操作實時寫入changelog.*.mfs,實時同步到metalogger中。
~~~     master啟動將metadata.mfs載入記憶體,重新命名為metadata.mfs.back檔案
### --- 儲存塊分割

~~~     檔案以chunk大小儲存,每chunk最大為64M,小於64M的,
~~~     該chunk的大小即為該檔案大小(驗證實際chunk檔案略大於實際檔案)
~~~     超過64M的檔案將切分,以每一份(chunk)的大小不超過64M為原則,
~~~     塊的生成遵循規則:目錄迴圈寫入(00-FF 256個目錄迴圈,step為2),
~~~     chunk檔案遞增生成,大檔案切分目錄連線。
### --- MFS儲存可用性

~~~     Chunkserver上的剩餘儲存空間要大於1GB(Reference Guide有提到),
~~~     新的資料才會被允許寫入,否則,你會看到NO space left on device的提示,
~~~     實際上,測試發現當磁碟使用率達到95%左右的時候,就已經不行寫入了,當時可用空間1.9GB
### --- MFS副本可用性:

~~~     檔案可以有多分copy,當goal為1時,檔案會被隨機存到一臺chunkserver上,
~~~     當goal的數大於1 時,copy會由master排程儲存到不用的chunkserver上,
~~~     goal的大小不要超過chunkserver的數量,否則多出的copy,不會有chunkserver去存。








===============================END===============================


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart                                                                                                                                                    ——W.S.Landor



來自為知筆記(Wiz)