前言:分佈式文件系統是大型網站的必用架構,我們公司網站升級的時候考慮使用分佈式文件系統,最初考慮使用fastdfs,但是性能不足,hdfs配置複雜,所以使用了moosefs文件系統。moosefs配置簡單,並且性能也不錯,唯一缺點就是master單點故障問題,不過1.6以上版本使用了metalogger server,它會定時把master上的meta數據下載到本機上,故障發生時,可以實現恢復。對於恢復這塊,我會在後續的文章中給出比較完善的解決方案。此博還附帶有moosefs2.0的tar包,需要的小夥伴可以下載,因爲我在寫這篇博客的時候,www.moosefs.org,打開速度太慢。以下是正文。
Moosefs原理
原理圖
從上圖可以看到master是整個系統的大腦,它知道數據被分成了多少份,放在那個服務器上的那個位置,client每次訪問都要經過master。chunk是數據真正存放的地方。
實現過程
Master負責整個系統數據的管理,保存數據分成多少份,在那個服務器存放等信息;metalogger會定時備份master的管理數據,master故障後,通過metalogger的備份數據,可以實現系統的恢復;chunk server是數據真正的存放位置,數據會被分成多份chunk放在chunk server中;client端是分佈式系統的使用者,系統搭建成功後,可以把系統像掛載硬盤一樣掛載在client上,實現系統的分佈式應用。
安裝規範:
1、moosefs源碼文件包統一放在所有服務器的/usr/local/src下
2、創建獨立的運行用戶:mfs
3、安裝目錄爲:/usr,配置文件路徑爲:/etc/mfs,
4、Chunk server的存儲路徑爲/mfschunk
5、Client 端的掛載點爲/mnt/mfs
6、Master和chunk server的啓動加入到/etc/rc.local文件中,使其隨開機啓動
安裝過程
Master端
1、把tar包上傳到/usr/loca/src下
2、在/etc/hosts文件中填入一下內容:“IP mfsmaster”(其中IP爲master的ip地址)
3、添加mfs用戶:useradd mfs
4、解包:tar xf moosefs-2.0.81-1.tar.gz
5、進入安裝目錄:cd moosefs-2.0.81
6、編譯安裝:./configure--prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib--with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver--disable-mfsmount
7、編譯:make&&make install
8、# cd/etc/mfs/更改配置文件名稱:
把原來的文件名改爲cfg文件
# cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
#cp mfstopology.cfg.dist mfstopology.cfg
9、啓動master:/usr/sbin/mfsmasterstart
Metalogger server端
1、把tar包上傳到/usr/loca/src下
2、在/etc/hosts文件中填入一下內容:“IP mfsmaster”(其中IP爲master的ip地址)
3、添加mfs用戶:useradd mfs
4、解包:tar xf moosefs-2.0.81-1.tar.gz
5、進入安裝目錄:cd moosefs-2.0.81
6、編譯安裝:./configure--prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib--with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver--disable-mfsmount
7、編譯:make&&makeinstall
8、啓動metaloggerserver:/usr/sbin/mfsmetalogger start
Chunk server端
1、把tar包上傳到/usr/loca/src下
2、在/etc/hosts文件中填入一下內容:“IP mfsmaster”(其中IP爲master的ip地址)
3、添加mfs用戶:useradd mfs
4、解包:tar xf moosefs-2.0.81-1.tar.gz
5、進入安裝目錄:cd moosefs-2.0.81
6、編譯安裝:./configure--prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster
7、編譯:make&&makeinstall
8、更改配置文件名稱:
#cd /etc/mfs
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
9、創建目錄:mkdir /mfschunk
10、修改權限 chmod –R mfs:mfs /mfschunk
11、修改配置文件:在/etc/mfs/mfshdd.cfg文件中添加內容:/mfschunk
12、啓動chunk server:/usr/sbin/mfschunkserverstart
Client 端
1、安裝fuse:yum install –y fuse*
2、在/etc/hosts文件中填入一下內容:“IP mfsmaster”(其中IP爲master的ip地址)
3、把tar包上傳到/usr/loca/src下
4、解包:tar xf moosefs-2.0.81-1.tar.gz
5、進入安裝目錄:cd moosefs-2.0.81
6、編譯安裝:./configure--prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--disable-mfschunkserver
7、編譯:make&&makeinstall
8、掛載文件系統:/usr/bin/mfschunk/mnt/mfs –H mfsmaster
9、使用df -h 查看,出現類似如下內容說明安裝成功
現在就可以像使用普通硬盤一樣,使用整個文件系統了。
總結:moosefs故障後,只能通過手動的方式來解決,網上有說法搭配keepalived可是實現自動切換,做到無延時故障處理,這個我沒有實驗,我會在後續的文章中繼續探討moosefs的故障問題。