centos6.3配置MFS服務器

一、簡介

MooseFS(Moose File System,mfs)是一種分佈式文件系統,它將數據分佈在網絡中的不同服務器上,支持FUSE(用戶空間文件系統Filesystem in Userspace,簡稱FUSE),客戶端掛載後可以作爲一個 普通的Unix 文件系統使用MooseFS。
MooseFS中共有四種角色: 主控服務器 master server、 主控備份服務器 metalogger server、 存儲塊服務器 chunkserver、 客戶端主機 client。

主控服務器  負責各個存儲服務器的管理、文件讀寫調度、文件空間回收以及恢復、多節點拷貝。
主控備份服務器  負責備份主控服務器的元數據、變化日誌文件,文件類型爲changelog_ml.*.mfs,以便在主控服務器出問題的時候可以恢復。
存儲塊服務器  負責提供存儲空間,併爲客戶提供數據傳輸。
客戶端則通過fuse掛接主控服務器上所管理的存儲塊服務器,可以像操作本地文件一樣操作MooseFS文件系統中的文件。

二、NFS和MFS比較

1、NFS的缺陷

NFS雖然使用簡單,但當NFS客戶端訪問量大時,通過NFS方式共享一個服務器的存儲空間,使得NFS服務器不堪重負,並且執行讀寫都比較頻繁的操作會出現意外的錯誤,對於高可靠的集羣部署是有挑戰的。


2、MFS


分佈式文件系統服務器之間的數據訪問不再是一對多的關係(1個NFS服務器,多個NFS客戶端),而是多對多的關係,這樣一來,性能大幅提升毫無問題。moosefs分佈式文件系統,實施起來簡單、不停止服務擴容、恢復服務容易,因爲作爲共享存儲服務器是個不錯的選擇。

MooseFS 讀寫流程圖:

MFS的官方網站: http://www.moosefs.org/download.html 。  

上面有詳細的MFS簡介和MooseFS分佈式文件系統安裝嚮導以及MFS。

三、詳解

1、獲得二進制包

先將 mfs-1.6.25-1.tar.gz 重命名爲 mfs-1.6.25.tar.gz

#yum install fuse-devel pkgconfig zlib-devel    //build源碼包需要的依賴

#rpmbuild -ta mfs-1.6.25.tar.gz

會生成6個rpm二進制安裝包(其中debuginfo調試時使用):

也可以通過tar zxvf mfs-1.6.25-1.tar.gz  解壓,使用./configure、make、make install安裝(具體參考 安裝嚮導 )。

2、 主控服務器master server

(1) 安裝

#rpm -ivh mfs-master-1.6.25-1.x86_64.rpm    //安裝

#rpm -ql mfs-master                //查詢安裝的文件路徑,可以查看所有的安裝文件,便於修改

/etc/mfsexports.cfg.dist
/etc/mfsmaster.cfg.dist
/etc/mfstopology.cfg.dist
/usr/sbin/mfsmaster
/usr/sbin/mfsmetadump
/usr/sbin/mfsmetarestore
/usr/share/doc/mfs-master-1.6.25/usr/share/doc/mfs-master-1.6.25/NEWS
/usr/share/doc/mfs-master-1.6.25/README
/usr/share/doc/mfs-master-1.6.25/UPGRADE
/usr/share/man/man5/mfsexports.cfg.5.gz
/usr/share/man/man5/mfsmaster.cfg.5.gz
/usr/share/man/man5/mfstopology.cfg.5.gz
/usr/share/man/man7/mfs.7.gz
/usr/share/man/man7/moosefs.7.gz
/usr/share/man/man8/mfsmaster.8.gz
/usr/share/man/man8/mfsmetarestore.8.gz
/var/lib/mfs
/var/lib/mfs/metadata.mfs.empty

(2) 複製樣例文件,以得到 master 所需的配置文件  


#cp mfsmaster.cfg.dist mfsmaster.cfg

#cp mfstopology.cfg.dist mfstopology.cfg

#cp mfsexports.cfg.dist mfsexports.cfg

如果我們打算更改這些配置文件中的某些項目的值,則需要打開特定配置文件相關文本行前的 註釋 , 然後修改跟隨其後的值。因爲被註釋掉的行,即是 MooseFS 內置的缺省值。  

Mfsmaster.cfg 配置文件包含主控服務器 master 相關的設置,想查看 該配置文件 更多信息使用 命令 man mfsmaster.cfg。

mfsexports.cfg 指定那些客戶端主機可以遠程掛接 MooseFS 文件系統,  以及授予  掛接客戶端什麼樣的訪問權限。  例如  指定只有 192.168.40.x 網段的主機可以以讀寫模式訪問 MooseFS 的整個共享結構資源(/),在 配置文件 mfsexports.cfg 文件的第二行改爲或添加:    

(注:可以掛在根/目錄下的子目錄,配置文件加上192.168.40.0/24  /test  rw,alldirs,maproot=0,password=test,注意test目錄是在根目錄已經創建好的子目錄,並且掛載時使用 mfsmount /mnt/client -H mfsmaster -o mfssubfolder=/test -p,否則會出現mfsmaster register error: Permission denied的錯誤。)

# Allow everything but "meta".#*                      /       rw,alldirs,maproot=0192.168.40.0/24 / rw,alldirs,maproot=0
192.168.40.0/24 . rw

二進制文件 metadata 和文本文件 changelog 將被保存在目錄/var/lib/mfs, 安裝 master 時,會自動生成一個名爲 metadata.mfs.empty 的元數據文件 metadata,該文件是空的。MooseFS master 運必須有文件 metadata.mfs,這個文件是從 metadata.mfs.empty 改名而來。

# cd /var/lib/mfs

#cp metadata.mfs.empty metadata.mfs   // MooseFS master 運行以後,metadata.mfs 文件大小將發生變,不會爲空文件。

(3)  綁定主機名 mfsmaster 與 ip (每個節點都需 綁定 )     修改/etc/hosts 文件,以綁定主機名 mfsmaster 與 ip 地址:

192.168.40.125       mfsmaster

(4)安裝 CGI  

爲了監控 MooseFS 當前運行狀態,可以安裝運行 CGI 監控服務 用瀏覽器查看整個MooseFS 的運行情況。

#rpm -ivh mfs-cgi-1.6.25-1.x86_64.rpm

#rpm -ql mfs-cgi

(5)啓動

# /usr/sbin/mfsmaster start  

會出現問題:

working directory: /var/lib/mfs
can't create lockfile in working directory: EACCES (Permission denied)

主要是沒有設置   運行用戶    

和運行組,添加用戶(安裝完成後配置文件沒有改動),也可以使用

nobody:nobody。              

# groupadd mfs              // 添加 mfs 組      

#useradd -g mfs mfs     // 新增系統用戶mfs      

#chown -R mfs.mfs /var/lib/mfs          //設置文件所屬用戶和組(也可以直接指定用戶和組,不需要重新創建)

#vim /etc/mfsmaster.cfg

WORKING_USER = mfs
 WORKING_GROUP = mfs# SYSLOG_IDENT = mfsmaster# LOCK_MEMORY = 0

然後正常啓動!

# /usr/sbin/mfscgiserv start      

會打不開網頁,這是因爲cgi文件沒有可執行權限

#chmod +x /usr/share/mfscgi/*.cgi

然後啓動  ,在瀏覽器地址欄輸入 http://192.168.40.125:9425 即可查看 master 的運行情況(這時不能看見 chunk server 的數據 )。  


3、 備份服務器Backup server(metalogger)

(1) 安裝

        安裝     備份服務器metalogger的主機在性能上應該比 master 強大(至少有更多的內存),一旦主控服務器 master 失效,只要導入 changelogs 到元數據文件,備份服務器 metalogger 將能接替發生故障的 master,行使管理服務器的職能。

       若 備份服務器        單獨安裝,需要安裝fuse-devel和修改vim /etc/hosts添加192.168.40.125 mfsmaster。 添加mfs用戶和組,也可指定到其他用戶,或使用nobody:nobody。          

#rpm -ivh mfs-metalogger-1.6.25-1.x86_64.rpm

#rpm -ql mfs-metalogger

#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

#vim mfsmetalogger.cfg(不修改會出現Permission denied)    

WORKING_USER = mfs
 WORKING_GROUP = mfs

接着運行備份服務 mfsmetaloger:

#usr/sbin/mfsmetalogger start

在生產環境裏應當設置自動啓動腳本,以便操作系統重新啓動時MooseFSmfsmetalogger 服務也能自動運行。

4、 存儲塊服務器chunk server

(1) 安裝

若在其他主機上單獨安裝chunkserver需要安裝 fuse-devel,並添加mfs用戶和組(可指定到其他用戶)

#rpm -ivh mfs-chunkserver-1.6.25-1.x86_64.rpm    //安裝

#rpm -ql mfs-chunkserver      //查詢安裝的文件路徑,可以查看所有的安裝文件,便於修改

(2) 準備 chunk server 服務所需的配置文件

#cp mfschunkserver.cfg.dist mfschunkserver.cfg

#cp mfshdd.cfg.dist mfshdd.cfg

 #vim /etc/   mfschunkserver.cfg (想了解配置文件mfschunkserver.cfg更詳細的信息,請查看手冊頁man mfschunkserver.cfg                )      

WORKING_USER = mfs
 WORKING_GROUP = mfs

(3)建立共享點

在配置文件 mfshdd.cfg 中 , 給出了用於客戶端掛接 MooseFS 分佈式文件系統根分區所 使用的共享空間位置。 建議在 chunk server 上劃分單獨的空間新建一個設備掛載點作爲儲存點專門給 MooseFS 使用 , 這樣做的好處是便於管理剩餘空間 。

此處 假定要使用兩個共享點/mnt/mfschunks1 和/mnt/mfschunks2 ,在 mfshdd.cfg 加入下面的文本行 :

# mount points of HDD drives##/mnt/hd1#/mnt/hd2#etc./mnt/mfschunks1
/mnt/mfschunks2

在啓動 chunk server 前,需確保用戶 mfs 有權限讀寫將要被掛接的分區(因爲 chunk server 運行時要在此創建一個.lock 的文件)。否則出現以下錯誤:

hdd space manager: can't create lock file '/mnt/mfschunks1/.lock': EACCES (Permission denied)
init: hdd space manager failed !!!

#chown -R mfs:mfs /mnt/mfschunks1

#chown -R mfs:mfs /mnt/mfschunks2

(注:若是單獨與 master     的機器,還需執行 chown -R mfs:mfs      /var/lib/mfs和修改 /etc/hosts 添加 192.168.40.125 mfsmaster。 )

(4) 開始啓動 chunk server

#/usr/sbin/mfschunkserver start

再通過瀏覽器訪問 http://192.168.40.125:9425就可以看到 MooseFS 系統的全部信息,包括主控 master 和存儲服務 chunkserver 。

(5)MooseFS chunk 以獨佔方式使用專門磁盤分區

在上述操作過程中不需要這部分的內容,此部分是在實際應用環境下,將chunk server用專門磁盤分區作爲 設備掛載點,這樣做是不要的,便於管理剩餘空間,因爲MooseFS 並不考慮其剩餘空間能被另作他用。      

如果沒有單獨創建文件系統的條件,可以在文件中創建一個文件系統,在此準備兩個 2GB 的文件(文件位於目錄/var/lib/mfs/下,也可以放在其他目錄下),並在其上創建文件系統,把他們格式化爲 ext3,分別掛接在/mnt/mfschunks1 和/mnt/mfschunks2。

操作步驟: 掛接第一個文件系統

1、創建鏡像文件mfschunks1

#dd if=/dev/zero of= /var/lib/mfs/       mfschunks1 bs=1024 count=1 seek=$((2*1024*1024-1))

2、創建文件系統

##mkfs -t ext3 /var/lib/mfs/       mfschunks1  

3、創建掛接點

#mkdir -p /mnt/mfschunks1

4、掛接文件系統

#mount -t ext3 -o loop /var/lib/mfs/       mfschunks1 /mnt/mfschunks1  

掛接第二個文件系統的步驟與上面相同,# mount -t ext3 -o loop /var/lib/mfs/       mfschunks2 /mnt/mfschunks2    

在啓動 chunk server 前,需確保用戶 mfs 有權限讀寫將要被掛接的分區(因爲 chunk server 運行時要在此創建一個.lock 的文件):

#chown -R mfs:mfs /mnt/mfschunks1

#chown -R mfs:mfs /mnt/mfschunks2          

5、 客戶端主機client  


爲了掛接基於 MooseFS 分佈式文件,客戶端主機必須安裝 FUSE 軟件包( fuse 版本號至少

2.6,推薦使用版本號大於 2.7.2 的 fuse),#yum install fuse。

安裝客戶端軟件 mfsmount:

#rpm -ivh mfs-client-1.6.25-1.x86_64.rpm

(客戶端若單獨安裝,需要安裝fuse-devel和修改vim /etc/hosts添加192.168.40.125 mfsmaster。)

#cp /etc/mfsmount.cfg.dist /etc/mfsmount.cfg

假定客戶端的掛接點是/mnt/mfs,將以下面的指令來使用 MooseFS 分佈式共享文件系統:
1、 創建掛接點
#mkdir -p  /mnt/ mfs  
2、開始掛接操作
#/usr/bin/mfsmount /mnt/  mfs   -H mfsmaster

有時會出現mfsmaster register error: Permission denied:

是因爲 mfsmaster的配置文件和掛載目錄 不一致的原因, vim /etc/mfsexports.cfg  

# Allow everything but "meta".#*                      /       rw,alldirs,maproot=0192.168.40.0/24 /test rw,alldirs,maproot=0

master的掛載配置文件中  允許掛載的目錄是 /test  ,若用戶# mfsmount /mnt  -H mfsmaster (不加 -o mfssubfolder       默認是掛載/)掛載  根/目錄會掛載不上,可以修改 mfsexports.cfg配置文件爲/,再進行掛在就沒問題了。                    

192.168.40.0/24 / rw,alldirs,maproot=0

 

# /usr/sbin/mfsmaster restart


有時掛載目錄有內容,提示error in fuse_mount,可以使用 -o nonempty 選項掛載。

# mfsmount /mnt/mfs -H mfsmaster -o nonempty

3、掛載meta文件系統

首先保證 mfsexports.cfg  文件中加入:

# Allow "meta".*       .       rw

然後執行:

#mfsmount -m / mnt/mfs -H mfsmaster

可以不掛載MFS META文件系統,掛載該系統主要是爲了恢復被誤刪除的文件。

4、查看分區

執行命令 df -h | grep mfs 檢查分區情況:

mfsmaster:9421        102G  256K  102G   1% /mnt/mfs

6、 使用

(1)備份

#cd /mnt/mfs

#mkdir dir1

#mkdir dir2

默認mfs將儲存的文件只儲存在一個節點上(master選取的)。

設置儲存在儲存塊dir2上的文件儲存在兩個節點上,做一個備份,系統會自動將數據同步到選定的節點上,這樣達到裏備份的效果 。

因master和trunk服務器在同一臺機器上,  即便設定了 goal=2 來到達保存兩個副本但  看到的只是一個副本而已,  儘管有兩個trunk掛在點,但 它只是一個 chunk server。    

設置文件副本數量,一般以3份爲佳。

#mfssetgoal -r 3 /mnt/mfs

#mfsgetgoal /mnt/mfs/

#/mnt/mfs :  3

(2)設置刪除文件的空間回收時間

#mfsgettrashtime dir2/passwd

dir2/passwd: 86400

#mfssettrashtime 300 /mnt/mfs

獲取刪除 dir2/passwd後在回收站中保存的時間,防止用戶誤刪,這個數字不能設置的太高也不能太低,一般設置爲300(5分鐘)。

(3)查看目錄信息

# mfsdirinfo -H /mnt/mfs  

(4)數據恢復

二進制文件 metadata 和文本文件 changelog 將被保存在目錄/var/lib/mfs

執行數據恢復操作,其命令爲:mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs 恢復成功後再執行啓動新的 master  服務操作。

(5) 停止 MooseFS  

爲了安全停止 MooseFS 集羣, 建議執行如下的步驟:      
在所有客戶端用 unmount 命令先卸載文件系統(本例將是: umount /mnt/mfs)
停止 chunk server 進程: /usr/sbin/mfschunkserver stop
停止 metalogger 進程: /usr/sbin/mfsmetalogger stop
停止主控 master server 進程: /usr/sbin/mfsmaster stop

四、總結

(1)使用configre、make、make install的方式可以參考官方文檔,具體參數和配置都給的很詳細,  官方網站 http://www.moosefs.org/download.html  。

(2) 集羣部署還需要進一步強化,數據恢復及其他關於MooseFS的內容以後會更新。

(3)MooseFS 命令的使用方法: http://www.moosefs.org/reference-guide.html#using-moosefs 。    

(4)上述的安裝包和參考文檔已上傳到csdn上,需要下載的可以點擊 http://download.csdn.net/detail/taiyang1987912/8229595


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章