歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 用Linux山寨一個分布式文件系統

用Linux山寨一個分布式文件系統

日期:2017/2/28 16:35:44   编辑:Linux教程

話說目前市面上絕大部分的集群文件系統都是從Linux上開發出來的,所以有一天我突然想到那些所謂企業化的套件,其實我們也是可以山寨出一個,然後自己出個發行版,比如效仿glusterFS或mooseFS那種做法,於是寫下此文。

最近由於"雲"這個概念的崛起,各種分布式文件系統也如雨後春筍那般遍地發芽。在我的印象裡,分為兩大類。一種是以單台元數據服務器(MDS,MDC)和多台IO節點服務器組成的的架構,典型的比如Stornext和Lustre;另一種是沒有獨立的元數據服務器,而把元數據分散到各個IO節點中的架構,比如Ibrix和GlusterFS等。這兩種結構也各有其優缺點。

如今絕大部分的分布式文件系統都是基於*nix平台的,並且Linux下的居多,只有個別的除外(微軟的DFS)。所以我靈光一閃,何不用各種開源的包和工具自己山寨出一個呢?

底層的存儲部分無論DAS或者SAN,我們均可以用Linux的LVM拼接出一個大卷;或者不使用MBR,而直接改用GPT來引導。這樣,可以突破2TB容量的限制。利用device mapper來實現存儲部分的linear,mirror,stripe等策略,以及multi-path機制。

文件系統部分,我們可以先掛載ext3,然後用FUSE來實現用戶層文件系統跨服務器的拼接。讓一個單一的命名空間跨越多台IO節點服務器。FUSE通過RPC服務實現IO節點服務器和元數據服務器之間的通信。

集群和高可用性可以這樣設置,來達到容錯的效果。各台IO節點服務器之間通過CVS來做集群;而元數據服務器可以設主備共兩台,通過heartbeat來實現HA切換,active-standby模式。各個IO節點服務器安裝DRBD,來實現file raid的功能,即每次寫入一文件,會寫兩份,同時分散到2個節點服務器所抓的卷中。

對於用戶層,各台IO節點可以使用samba,nfs等手段進行共享,並且用戶看到的應該是一個單一命名空間,這個空間跨越了所有的節點服務器。如果條件允許的話,甚至可以用python或perl配合apache或tomcat開發一個GUI,類似webmin那樣的以簡化用戶的操作。

剩下的便是那些附加的功能了。使用LDAP,或者winbind走NIS域與windows AD連接來達到對用戶的賬號控制;使用ACL和quota來達到對用戶的權限和配額控制,等等。

總體的框架如上,不過具體實施起來應該會碰到很多問題,撇開腳本和python先不說,光協調好如此多的系統服務,已經很難了......  

Copyright © Linux教程網 All Rights Reserved