MooseFS是一種分佈式文件系統,MooseFS文件系統結構包括如下四種角色:shell
1 管理服務器managing server (master)服務器
負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝網絡
2 元數據日誌服務器Metalogger server(Metalogger)session
負責備份master服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在master server出問題的時候接替其進行工做架構
3 數據存儲服務器data servers (chunkservers)分佈式
負責鏈接管理服務器,遵從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸.oop
4 客戶機掛載使用client computers(須要FUSE支持)性能
經過fuse內核接口掛接遠程管理服務器上所管理的數據存儲服務器,.看起來共享的文件系統和本地unix文件系統使用同樣的效果.spa
通常架構以下:操作系統
MFS的讀數據過程:
MFS的寫數據過程:
實驗環境以下:
master:10.1.1.175
metalogger:10.1.1.40
chunkserver:10.1.1.173/10.1.1.176
client:10.1.1.174
mfs版本:mfs-1.6.19.tar.gz
master server 的安裝:
在安裝maste server服務器時咱們能夠取消安裝chunkserver和客戶端安裝,具體步驟以下:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmount --disable-mfschunkserver make&&make install
安裝成功後在/etc/mfs目錄下會有以.dist結尾的文件,因爲咱們這臺機器作master因此須要兩個文件mfsexports.cfg和 mfsmaster.cfg,全部配置文件的值都是被註釋掉的,他們是默認生效的,若是要修改去掉註釋修改便可。
mfsmaster.cfg是主配置文件
vi mfsmaster.cfg #運行master的用戶 # WORKING_USER = mfs #運行master的組 # WORKING_GROUP = mfs #master server在syslog中的標示,表示是由master產生 # SYSLOG_IDENT = mfsmaster #是否執行mlockall,以免master進程溢出 # LOCK_MEMORY = 0 #進程優先級,默認是-19時必須以root啓動 # NICE_LEVEL = -19 #被掛載目錄配置文件的位置 # EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg #數據存放路徑,有sessions,stats,metadata,changelog等日誌 # DATA_PATH = /var/lib/mfs #metadata更改的log文件數目 # BACK_LOGS = 50 #延遲複製時間 # REPLICATIONS_DELAY_INIT = 300 #chunkserver斷開的複製延遲 # REPLICATIONS_DELAY_DISCONNECT = 3600 #metalog監聽的ip地址和端口 # MATOML_LISTEN_HOST = * # MATOML_LISTEN_PORT = 9419 #用於chunkserver鏈接的ip地址和端口 MATOCS_LISTEN_HOST = 10.1.1.175 # MATOCS_LISTEN_PORT = 9420 #用於客戶端掛載的ip地址和端口 MATOCU_LISTEN_HOST = 10.1.1.175 # MATOCU_LISTEN_PORT = 9421 #chunk的迴環頻率 # CHUNKS_LOOP_TIME = 300 #chunk在loop中被刪除的最大延遲時間 # CHUNKS_DEL_LIMIT = 100 # CHUNKS_WRITE_REP_LIMIT = 1 # CHUNKS_READ_REP_LIMIT = 5 # REJECT_OLD_CLIENTS = 0 # deprecated, to be removed in MooseFS 1.7 # LOCK_FILE = /var/run/mfs/mfsmaster.lock
mfsexports.cfg 對被掛載目錄權限的設置
vi mfsexports.cfg # Allow everything but "meta". 10.1.1.0/24 / rw,alldirs,maproot=0 # Allow "meta". 10.1.1.0/24 . rw #* / ro #192.168.1.0/24 / rw #192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode #10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test #10.1.0.0/255.255.0.0 /public rw,mapall=1000:1000
第一部分爲客戶端ip地址
能夠有多種顯示方式
第二部分爲被掛載目錄
/ 表示moosefs的跟
* 表示mfsmeta文件系統
第三部分爲用戶權限
ro 只讀模式
rw 讀寫模式
alldirs 容許掛載任何指定的子目錄
maproot 映射爲root用戶
passwd 指定客戶端密碼
開始啓動master server
因爲咱們安裝時指定了--localstatedir=/var/lib ,因此metadata和changelog都保存在/var/lib/mfs下面,在第一次安裝master server時會生成一個metadata.mfs.empty文件,他是空的,master運行必須有metadata.mfs,因此只要改變metadata.mfs.empty的名字便可。
進入/usr/local/mfs/sbin目錄:
啓動以後查看master進程:
注意:在關閉master server不要使用kill命令,使用./mfsmaster -s 關閉便可。
metalogger的安裝:
在安裝metalogger時咱們能夠取消安裝chunkserver和客戶端安裝,一旦master server故障,導入changelogs,metalogger服務器即可以替代master server,安裝方法和master server方法同樣:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmount --disable-mfschunkserver make&&make install
在/etc/mfs/目錄下把mfsmetalogger.cfg.dist變爲mfsmetalogger.cfg便可,metalogger服務器只須要一個配置文件
vi mfsmetalogger.cfg # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfsmetalogger # LOCK_MEMORY = 0 # NICE_LEVEL = -19 # DATA_PATH = /var/lib/mfs # BACK_LOGS = 50 # META_DOWNLOAD_FREQ = 24 # MASTER_RECONNECTION_DELAY = 5 #MASTER_HOST是master server的ip地址 MASTER_HOST = 10.1.1.175 # MASTER_PORT = 9419 # MASTER_TIMEOUT = 60 # deprecated, to be removed in MooseFS 1.7 # LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
大部分參數和master server的參數同樣,具體意思可參看master的配置,啓動metalogger服務,在/usr/local/mfs/sbin目錄下./mfsmetalogger start便可,關閉也是不要用kill ./mfsmetalogger -s 便可。
chunkserver的安裝:
在安裝chunkserver時咱們能夠取消master的安裝,方法以下:
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmaster make&&make install
在/etc/mfs目錄下須要把mfschunkserver.cfg.dist mfshdd.cfg.dist改爲mfschunkserver.cfg mfshdd.cfg便可。
mfschunkserver.cfg是主配置文件
vi mfschunkserver.cfg # WORKING_USER = mfs # WORKING_GROUP = mfs # SYSLOG_IDENT = mfschunkserver # LOCK_MEMORY = 0 # NICE_LEVEL = -19 # DATA_PATH = /var/lib/mfs # MASTER_RECONNECTION_DELAY = 5 #本地地址,用來鏈接master的 BIND_HOST = 10.1.1.173 #元數據服務器的ip地址和端口 MASTER_HOST = 10.1.1.175 # MASTER_PORT = 9420 # MASTER_TIMEOUT = 60 #這個端口用於和其餘chunkserver之間的鏈接,通常是複製數據 # CSSERV_LISTEN_HOST = * # CSSERV_LISTEN_PORT = 9422 # CSSERV_TIMEOUT = 5 #分配給MFS磁盤空間的配置文件的位置 # HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg # HDD_TEST_FREQ = 10 # deprecated, to be removed in MooseFS 1.7 # LOCK_FILE = /var/run/mfs/mfschunkserver.lock # BACK_LOGS = 50
mfshdd.cfg是分配給MFS使用空間的配置文件
vi mfshdd.cfg # mount points of HDD drives #/mnt/hd1 #/mnt/hd2 #etc. /mfs
咱們新建了一個分區直接掛載到/mfs下面,建議在chunkserver上單獨劃分空間給mfs使用,方便管理。啓動以前確保mfs用戶對/mfs可讀寫。
在/usr/local/mfs/sbin目錄下./mfschunkserver start便可
客戶端的安裝:
爲了掛載基於MooseFS的分佈式文件系統,須要FUSE的支持。
fuse簡介
用戶空間文件系統(Filesystem in Userspace,簡稱FUSE)是操做系統中的概念,指徹底在用戶態實現的文件系統。目前Linux經過內核模塊對此進行支持。一些文件系統如ZFS,glusterfs和lustre使用FUSE實現。Linux用於支持用戶空間文件系統的內核模塊名叫FUSE,FUSE一詞有時特指Linux下的用戶空間文件系統。文件系統是一個通用操做系統重要的組成部分。傳統上操做系統在內核層面上對文件系統提供支持。而一般內核態的代碼難以調試,生產率較低。Linux從2.6.14版本開始經過FUSE模塊支持在用戶空間實現文件系統。
在用戶空間實現文件系統可以大幅提升生產率,簡化了爲操做系統提供新的文件系統的工做量,特別適用於各類虛擬文件系統和網絡文件系統。上述ZFS和glusterfs都屬於網絡文件系統。可是,在用戶態實現文件系統必然會引入額外的內核態/用戶態切換帶來的開銷,對性能會產生必定影響。
fuse內核模塊和fuse lib庫經過一個文件描述符通訊,/dev/fuse 文件描述符能夠被打開屢次,得到的文件描述符被傳遞到mount系統調用,用來匹配已經掛載的文件系統。
安裝fuse
tar zxvf fuse-2.8.5.tar.gz cd fuse-2.8.5 ./configure make && make install
安裝客戶端
useradd -s /bin/nologin mfs tar zxvf mfs-1.6.19.tar.gz cd mfs-1.6.19 ./configure --prefix=/usr/local/mfs --with-default-user=mfs \ --with-default-group=mfs --sysconfdir=/etc/mfs \ --localstatedir=/var/lib --disable-mfsmaster --enable-mfsmount \ --disable-mfschunkserver make&&make install
進入/usr/local/mfs/bin目錄下,./mfsmount --help 便可看到mfsmount的用法。
MFS集羣啓動:
1 啓動master server
2 啓動chunk server
3 啓動metalogger
4 啓動客戶端,使用mfsmount掛載相關目錄
MFS集羣中止:
1 全部客戶端卸載MooseFS文件系統
2 中止chunkserver
3 中止metalogger
4 中止master server