一、MooseFS是什麼前端

 一個類MooseFS是一個具有冗餘容錯功能的分佈式網絡文件系統,它將數據分別存放在多個物理服務器或單獨磁盤或分區上,確保一份數據有多個備份副本,然而對於訪問MFS的客戶端或者用戶來講,整個分佈式網絡文件系統集羣看起來就像一個資源同樣,從其對文件系統的狀況看MooseFS就至關於UNIX的文件系統(ext三、ext四、nfs):mysql

a.mfs是一個分層的目錄樹結構linux

b.存儲支持POSIX標準的文件屬性(權限,最後訪問和修改時間)web

c.支持特殊的文件。如:塊設備,字符設備,管道、套接字、連接文件(符合連接、硬連接)算法

 

二、MooseFS的特性sql

    a.高可靠性,每一份數據能夠設置多個備份(多分數據),並能夠存儲在不一樣的主機上mongodb

b.高可擴展性,能夠很輕鬆的經過增長主機的磁盤容量或增長主機數量來動態擴展整個文件系統的存儲量centos

c.高可容錯性,咱們能夠經過對mfs進行系統設置,實現當數據文件被刪除後的一段時間內,依舊存放於主機的回收站中,以備誤刪除恢復數據瀏覽器

d.高數據一致性,即便文件被寫入、訪問時,咱們依然能夠輕鬆完成對文件的一致性快照安全

 

三、MooseFS的優勢

a.輕量、易配置、易維護

b.易於擴展,支持在線擴容。不影響業務

c.開發活躍,社區也活躍,資料豐富

d.以文件系統方式展現:如存圖片,雖然存儲在chunkserver上的數據是二進制文件,可是在掛載mfs的client端仍舊以圖片文件形式展現,便於數據備份

e.硬盤利用率高。測試須要較大磁盤空間

f.可設置刪除的空間回收時間,避免誤刪除文件丟失就恢復不及時影響業務

g.系統負載,即數據讀寫分配到全部的服務器上

h.可設置文件備份的副本數量,通常建議3份,將來硬盤容量也要是存儲單份的容量的三倍

四、MooseFS的缺點

a.master目前是單點(雖然會把數據信息同步到備份服務器,可是恢復須要時間,所以,會影響上線,針對這個問題,能夠經過drbd+heartbeat方案或者drbd+inotify方案解決),master和backup之間的同步,相似mysql的主從不一樣。可是如今master的單點已經修復了

b.master服務器對主機的內存要求略高

c.默認metalogger複製元數據時間較長(可調整)

 

五、MooseFS系統應用場所

1.大規模高併發的線上數據存儲及訪問(小文件,大文件都適合)

2.大規模的數據處理,如日誌分析,小文件強調性能不用HDFS。

有大多的應用不適合分佈式文件系統,不建議你們爲了使用而使用。

儘可能在前端加cache應用,而不是一味的 擴充文件系統

 

六、MooseFS結構及原理

MFS組件

 

管理服務器managing server簡稱(master):

這個組件的角色是管理整個mfs文件系統的主服務器,除了分發用戶請求外,還用來存儲整個文件系統中每一個數據文件的metadata信息,metadate(元數據)信息包括文件(也能夠是目錄,socket,管道,塊設備等)的大小,屬性,文件的位置路徑等,很相似lvs負載均衡的主服務器,不一樣的是lvs僅僅根據算法分發請求,而master根據內存裏的metadata信息來分發請求,內存的信息會被實時寫入到磁盤,這個master只能由一臺處於激活的狀態

 

雲數據備份服務器Metadata backup servers(簡稱metalogger或backup):

這個組件的做用是備份管理服務器master的變化的metadata信息日誌文件,文件類型爲changelog_ml.*.mfs。以便於在管理服務器出問題時,能夠通過簡單的操做便可讓新的主服務器進行工做。這相似mysql主從同步,只不過它不像mysql從庫那樣在本地應用數據,而只是接受主服務器上文寫入時記錄的文件相關的metadata信息,這個backup,能夠有一臺或多臺,它很相似lvs從負載均衡服務器

 

數據存儲服務器組data servers(chunk servers)簡稱data:

這個組件就是真正存放數據文件實體的服務器了,這個角色能夠有多臺不一樣的物理服務器或不一樣的磁盤及分區來充當,當配置數據的副本多於一份時,據寫入到一個數據服務器後,會根據算法在其餘數據服務器上進行同步備份。這有點相似lvs集羣的RS節點

 

客戶機服務器組(client servers)簡稱client:

這個組件就是掛載並使用mfs文件系統的客戶端,當讀寫文件時,客戶端首先會鏈接主管理服務器獲取數據的metadata信息,而後根據獲得的metadata信息,訪問數據服務器讀取或寫入文件實體,mfs客戶端經過fuse mechanism實現掛載mfs文件系統的,所以,只有系統支持fuse,就能夠做爲客戶端訪問mfs整個文件系統,所謂的客戶端並非網站的用戶,而是前端訪問文件系統的應用服務器,如web

 

========================================

管理服務器——MASTER SERVER

元數據日誌服務器——Metalogger

數據存儲服務器——CHUNK SERVER

客戶端——CLIENT

 

4種角色做用以下:

 管理服務器:有時也稱爲元數據服務器,負責管理各個數據存儲服務器,調度文件讀寫,回收文件空間以及恢復多節點拷貝。

 

元數據日誌服務器:負責備份管理服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在管理服務器出問題時接替其進行工做。元數據日誌服務器是mfsl.6之後版本新增的服務,能夠把元數據日誌保留在管理服務器中,也能夠單獨存儲在一臺服務器中。爲保證數據的安全性和可靠性,建議單獨用一臺服務器來存放元  數據日誌。須要注意的是,元數據日誌守護進程跟管理服務器在同一個服務器上,備份元數據日誌服務器做爲它的客戶端,從管理服務器取得日誌文件進行備份。

 

數據存儲服務器是真正存儲用戶數據的服務器。在存儲文件時,首先把文件分紅塊,而後將這些塊在數據存儲服務器之間互相複製。同時,數據存儲服務器還負責鏈接管理服務器,遵從管理服務器調度,併爲客戶提供數據傳輸。數據存儲服務器能夠有多個,而且數量越多,可靠性越高,MFS可用的磁盤空間也越大。

 

客戶端經過fuse內核接口掛接遠程管理服務器上所管理的數據存儲服務器,使共享的文件系統和使用本地Linux文件系統的效果看起來是同樣的。

========================================

 

七、MooseFS版本選擇

  a、高穩定性要求

     根據前面mfs的原理流程,咱們知道管理服務器(master)是MooseFS的最主要的角色,並且是單點,所以master服務器的配置應該儘量的穩定,例如:

       雙電源分別接A、B兩路電,機櫃的的,儘可能不要放在一個機櫃上。

  多塊磁盤使用raid1或raid10,進行冗餘,也可選擇raid5

  

  b、資源性要求

  ====================================

  MooseFS ,master設備配置建議

  內存

    對於master服務器來講,資源型要求就是內存大小,爲了整個系統訪問更快,mfs會把因此訪問的元數據metadada信息放在內存中提供用戶訪問,所以,當文件數量增長時,內存使用量就會增長,根據官方說法,處理一百萬個文件chunkserver,大概須要300M的內存空間

    據此,推算若是將來要出來1個億的文件chunkserver,大概須要30G內存空間

  硬盤:

  硬盤驅動器所需的大小,取決於所用的文件和數據塊的數目(主元數據文件)上的文件(源數據更改日誌)做出的操做上的數量,例如20G的空間,用於存儲信息2500萬的文件變動記錄保存長達50小時

  ====================================

  MooseFS backup設備配置建議

  MooseFS Metalogger只是收集MooseFS主服務器的源數據(文件更改的信息的變化)備份,所以對硬件的要求不該該高於主服務器的配置,從硬盤上須要大約和主服務器相同的磁盤空間。

  若是肯定在主服務器失敗後,要啓動Metalogger頂替主服務器的話,那麼Metalogger服務器至少應該有相同數量的內存和硬盤做爲主要主服務器。在生產中咱們能夠用其餘的,如drbd或inotify的同步工具來替代器內部log同步

  ====================================

  MooseFS dataserver 設備配置建議

  MooseFS dataserver是存儲數據的真正載體,所以,硬盤的性能較爲關鍵,對於普通的業務,能夠選擇多塊raid5,也能夠選擇raid10或raid0,建議因此的dataserver的硬盤大小一致比較好,雖然dataserver能夠和其餘業務公用同一臺server,但不建議這樣混搭

  ====================================

  虛擬環境搭建準備重點

  內存能夠給256M。若是能夠建議給512

  能夠增大磁盤分區設備,也能夠不增長,咱們每一個服務器增長一個單獨的2G大小的虛擬磁盤,用於數據存儲,其中,主服務器和備份服務器虛擬磁盤用於drbd及inotify數據同步

  mfs數據服務器的存儲地點,能夠是單獨的服務器、磁盤、分區、目錄。至少建議以分區爲單位

  操做系統的硬盤空間10G,單獨磁盤2G,數據存儲

 ##################################################################  

操做系統:centos6.5 支持fuse

兩塊硬盤  10G + 2G

mfs master  eth0 10.0.0.3 mfs主服務器

mfs backup eth0 10.0.0.4 mfs備份服務器

data server01 eth0 10.0.0.5mfs數據存放服務器

data server01 eth0 10.0.0.6mfs數據存放服務器

data server01 eth0 10.0.0.7mfs數據存放服務器

mfs clienteth010.0.0.8mfs客戶端服務器

mfs vip  eth0:0 10.0.0.100VIP初始化綁定在mfs主服務器上面

資源不夠,能夠把master 和data一、backup和data2.client和data3.綁定在一塊兒

 ##################################################################  

環境準備:

grep keepcache /etc/yum.conf 
sed -i 's/keepcache=0/keepcache=1/g' /etc/yum.conf 、grep keepcache /etc/yum.conf 
#關閉selinux:
setenforce 0 #臨時生效
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config #永久生效
##關閉防火牆
/etc/init.d/iptables stop
chkconfig iptables off
chkconfig --list iptables
#時間同步
/usr/sbin/ntpdate pool.ntp.org
echo '#time sync by lvnian at 2010-2-1'>>/var/spool/cron/root
echo '*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1'>>/var/spool/cron/root
crontab -l
#設置hosts文件
cp /etc/hosts /etc/hosts.bak
sed -i '$a 10.0.0.3 MASTER' /etc/hosts 
sed -i '$a 10.0.0.4 BCAKUP' /etc/hosts 
sed -i '$a 10.0.0.5 DATA1' /etc/hosts 
sed -i '$a 10.0.0.6 DATA2' /etc/hosts 
sed -i '$a 10.0.0.7 DATA3' /etc/hosts 
sed -i '$a 10.0.0.8 CLIENT' /etc/hosts 
sed -i '$a 10.0.0.100 mfsmaster.etiantian.org' /etc/hosts 
cat /etc/hosts

#修改主機名(根據不一樣的服務器,修改不一樣的主機名)

hostname MASTER
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=MASTER' /etc/sysconfig/network
logout
########################################################
hostname BCAKUP
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=BCAKUP' /etc/sysconfig/network
logout
########################################################
hostname DATA1
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA1' /etc/sysconfig/network
logout
########################################################
hostname DATA2
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA2' /etc/sysconfig/network
logout
########################################################
hostname DATA3
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=DATA3' /etc/sysconfig/network
logout
########################################################
hostname CLIENT
cp /etc/sysconfig/network /etc/sysconfig/network.bak
sed -i -e '/HOSTNAME=/d' -e '1aHOSTNAME=CLIENT' /etc/sysconfig/network
logout
######################################################## 

##VIP的配置

#在工做中,能夠用keepalived或者heartbeat啓用vip。在這裏。我先用ifconfig在master服務器中配置。

ifconfig eth0:100 10.0.0.100/24 up 
ifconfig eth0:100
------------------------------------------------
[root@MASTER ~]# ifconfig eth0:100 10.0.0.100/24 up 
[root@MASTER ~]# ifconfig eth0:100

 

------------------------------------------------
到這來部署前的準備工做纔算完成

###開始部署

 一、安裝主服務器mfs master 

 當咱們安裝主服務器mfs master時,因爲咱們的目的是安裝主服務器,所以在配置的過程當中(./configure),能夠選擇加參數取消安裝chunk server(使用--disable-mfschunkserver)以及mfs 客戶端(使用--disable-mfsmount)的參數,固然了,咱們也能夠不加相關的disable參數,安裝了不去啓動也能夠的。爲了統一因此服務器的安裝步驟,減低安裝的複雜性,咱們統一了一套安裝步驟,適合master backup data服務器,但不適合client服務器。安裝主控服務器master的具體步驟以下:

mkdir -p /home/lvnian/tools && cd /home/lvnian/tools
groupadd mfs
useradd -g mfs mfs -s /sbin/nologin 
rz -y
yum install zlib-devel -y
#yum install fuse* #若是不做爲mfs的客戶端,能夠不用這個參數,只是mfs客戶端須要fuse模塊,其餘的都不須要
tar xf mfs-1.6.27-1.tar.gz 
cd mfs-1.6.27
./configure --prefix=/application/mfs-1.6.27 --with-default-user=mfs \
--with-default-group=mfs 
make && make install
ln -s /application/mfs-1.6.27 /application/mfs
ll /application/

====================================================

安裝成功最後的頁面:
make[2]: Leaving directory `/home/lvnian/tools/mfs-1.6.27'
make[1]: Leaving directory `/home/lvnian/tools/mfs-1.6.27'
[root@MASTER mfs-1.6.27]# ln -s /application/mfs-1.6.27 /application/mfs
[root@MASTER mfs-1.6.27]# ll /application/
total 4
lrwxrwxrwx. 1 root root 23 Nov 11 10:13 mfs -> /application/mfs-1.6.27
drwxr-xr-x. 6 root root 4096 Nov 11 10:12 mfs-1.6.27====================================================
configure出現下面問題:
checking for FUSE... no
******************************** mfsmount disabled ********************************
* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *
***********************************************************************************
checking for fuse_version in -lfuse... no
checking for zlibVersion in -lz... no
configure: error: zlib development library not found
[root@MASTER mfs-1.6.27]# 
問題解決:
yum install zlib-devel -y

 

編譯參數說明:

選項 做用
--disable-mfsmaster 不建立成管理服務器(用於純節點的安裝)
--disable-mfschunkserver不建立成數據存儲服務器
--disable-mfsmount 不建立mfsmount和mfstools(若是用開發包安裝,會默認建立這二者)
--enable-mfsmount 肯定安裝mfsmount和mfstools
--prefix=DIRECTORY 鎖定安裝目錄(默認是/usr/local)
--sysconfdir=DIRECTORY 選擇配置文件目錄(默認是${prefix}/etc)
--localstatedir=DIRECTORY選擇變量數據目錄(默認是${prefix}/var,MFS元數據被存儲在MFS的子目錄下,默認是${prefix}/var/mfs)
--with-default-user 運行守護進程的用戶,若是配置文件中沒有設定用戶,默認爲nobody的用戶
--with-default-group=GROUP運行守護進程的用戶組,若是配置文件中沒有設定用戶組,默認爲nobody的用戶組

mfs目錄結構說明:

etc ##這是mfs的配置文件目錄

sbin ##這是mfs的命令路徑,若是你還有bin目錄,證實你激活了mfs 客戶端的功能。

share ##mfs的幫助文件目錄

var ##mfs數據及日誌目錄,如:metadata的數據

提示:   etc和var須要備份
 ##############################################################################

配置主服務器mfs master

主服務器mfs master的配置文件位於安裝目錄/application/mfs下的etc目錄。全部的模板文件都是以dist爲擴展名結尾,若是咱們須要使用則把.dist取得便可。

 ###啓用master的兩個配置文件

和master相關的配置文件有倆。分別是mfsexports.cfg和mfsmaster.cfg。故啓用

cd /application/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg
cp mfsmaster.cfg.dist mfsmaster.cfg

###主配置文件 mfsmaster 暫時不須要改

###配置 mfsexports

cat >mfsexports.cfg<<EOF
#Allow "meta".
* .rw
# Allow everything but "meta".
10.0.0.0/24 / rw,alldirs,mapall=mfs:mfs,password=111111
EOF
cat mfsexports.cfg

上面配置文件的說明

 

配置文件mfsexpors.cfg指定哪些客戶端主機能夠遠程掛載MFS文件系統,以及授予掛載客戶端什麼訪問權限。例如,咱們指定只有10.0.0.X網段的主句能夠讀寫模式訪問mfs的整個共享結構資源(/)。在配置文件mfsexpors.cfg文件的第一行,先取消註銷而後把星號改成10.0.0.0/24

10.0.0.0/24 / rw,alldirs,mapall=mfs:mfs,password=111111

第一部分:mfs客戶端IP地址或地址範圍

地址能夠指定的集中表現形式
# * = 因此IP地址 (same as 0.0.0.0/0)
# A.B.C.D = given ip address 具體的單個IP地址
# A.B.C.D-E.F.G.H = range of ip addresses IP地址範圍
# A.B.C.D/BITS = A.B.C.D network with BITS ones in netmask 網絡地址/多少位掩碼
# A.B.C.D/E.F.G.H = A.B.C.D network with E.F.G.H netmask 網絡地址/子網掩碼

第二部分:被掛載的目錄

目錄部分須要注意兩點
/ 表示MFS的根
.表示MFSmeta 文件系統
第三部分:這種mfs客戶端能夠擁有的訪問權限
權限部分
ro ##只讀方式共享
rw ##讀寫的方式共享
alldirs #容許掛載任何指定的子目錄
maproot #映射爲root,仍是指定的用戶(相似nfs的匿名用戶)
password #指定客戶端密碼

master啓動

cd /application/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs 
/application/mfs/sbin/mfsmaster start
netstat -lntup |grep mfs
==============================================
### 啓動報錯解決
[root@MASTER mfs]# /application/mfs/sbin/mfsmaster start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... file not found
if it is not fresh installation then you have to restart all active mounts !!!
exports file has been loaded
mfstopology configuration file (/application/mfs-1.6.27/etc/mfstopology.cfg) not found - using defaults 《=====報錯
loading metadata ...
can't open metadata file
if this is new instalation then rename /application/mfs-1.6.27/var/mfs/metadata.mfs.empty as /application/mfs-1.6.27/var/mfs/metadata.mfs 《=====報錯
init: file system manager failed !!!
error occured during initialization - exiting
[root@MASTER mfs]# 
#######啓動報錯解決,修改源數據文件爲metadata.mfs ,啓動以後這個metadata.mfs 會變成metadata.mfs.back
cd /application/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs 
==============================================
[root@MASTER mfs]# cp metadata.mfs.empty metadata.mfs 
[root@MASTER mfs]# pwd
/application/mfs/var/mfs
[root@MASTER mfs]# ls
metadata.mfs metadata.mfs.empty sessions.mfs
[root@MASTER mfs]# /application/mfs/sbin/mfsmaster start
working directory: /application/mfs-1.6.27/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology configuration file (/application/mfs-1.6.27/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@MASTER mfs]# 
[root@MASTER mfs]# ll
total 12
-rw-r----- 1 mfs mfs 95 Sep 9 12:56 metadata.mfs.back
-rw-r--r-- 1 root root 8 Sep 9 11:53 metadata.mfs.empty
-rw-r----- 1 mfs mfs 10 Sep 9 12:52 sessions.mfs
[root@MASTER mfs]#
[root@MASTER mfs]# netstat -lntup|grep mfs 
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 10905/mfsmaster 
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 10905/mfsmaster 
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 10905/mfsmaster 
[root@MASTER mfs]# 
###若是還報錯,注意權限問題
chown -R mfs.mfs /application/mfs/var/mfs

 

###master關閉

/application/mfs/sbin/mfsmaster stop
/application/mfs/sbin/mfsmaster –s

#安全定製master server是很是必要的,必定不要用kill -9 mongodb 。

可使用 mfsmaster -s 或者 mfsmaster stop來安全中止master進程,固然一旦是用來kill 也有解決的辦法,那就是經過mfsmaster修復

 

###配置主服務器的圖像監控

主服務器mfs master的圖像監控mfscgiserv,這是一個用Python編寫的一個web服務器,它的監控端口是9425.

能夠用:/application/mfs/sbin/mfscgiserv start 啓動。啓動後咱們就能夠用瀏覽器就即刻能夠比肩全面的監控master、backup及全部客戶端掛載的情況信息及相關操做等

 

#不須要配置,直接啓動

/application/mfs/sbin/mfscgiserv start
lsof -i :9425
#在web打開下面網站
http://10.0.0.3:9425/mfs.cgi

下面是master的端口圖解

master《=====》backup:9419 也就是master和backup之間通訊用9419端口通訊
master《=====》chunk:9420 也就是master和data之間通訊用9420端口
master sever module:listen on:9421 也就是提供服務給client的端口
master web port:9425也就是master的web管理端口

 

###backup元數據日誌服務器部署

MFS主服務器的備份服務器,也稱爲backup server或者元數據日誌服務器(Metalogger server)。這裏我統一稱爲 backup server,即備份服務器。

用來安裝backup server的服務器,性能不該該低於master,一旦主服務器master宕機,咱們只要導入備份信息changelogs到元數據文件,備份服務器可直接替換故障的master繼續提供服務

 安裝backup server和master安裝都同樣,只是使用的配置文件不同。用不同的配置文件區分不一樣的服務器

 

###啓用mfsmetalogger的配置文件

===============================================

cd /application/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

=============================================== 

####修改mster_host 對於的主機名,若是準備用域名,能夠改用域名,也能夠是IP。對着的一個位置

sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfsmetalogger.cfg
#主要這個mfsmaster.etiantian.org和對於的IP要寫到/etc/hosts裏面,
===============================================

##啓動mfsmetalogger

/application/mfs/sbin/mfsmetalogger start
ps -ef|grep mfs
netstat -an|grep -i 9419
##這個端口是master的端口,backup須要和master保持這個長連接

===============================================
若是 netstat -an|grep -i 9419 沒有,注意防火牆問題

##日誌文件路徑

[root@BCAKUP mfs]# ll /application/mfs/var/mfs
total 12
-rw-r-----. 1 mfs mfs 0 Nov 11 11:59 changelog_ml_back.0.mfs
-rw-r-----. 1 mfs mfs 0 Nov 11 11:59 changelog_ml_back.1.mfs
-rw-r--r--. 1 root root 8 Nov 11 10:24 metadata.mfs.empty
-rw-r-----. 1 mfs mfs 255 Nov 11 11:59 metadata_ml.mfs.back
-rw-r-----. 1 mfs mfs 10 Nov 11 12:01 sessions_ml.mfs


到時候若是須要恢復數據的時候,咱們須要用到的是metadat* 和changelog*這兩種文件

 ===============================================

###/mfsmetalogger關閉

/application/mfs/sbin/mfsmetalogger stop
/application/mfs/sbin/mfsmetalogger -s
===============================================

#安全定製master server是很是必要的,必定不要用kill -9 mongodb 。可使用 mfsmaster -s

或者 mfsmaster stop來安全中止master進程,固然一旦是用來kill 也有解決的辦法,那就是經過mfsmaster修復

 

### 數據存儲服務器data servers (chunkservers)

負責鏈接管理服務器,遵從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸.

三臺data服務器都要才用雙磁盤,也就是多加一個2G的磁盤

 ###三個服務器都要多掛載一個磁盤

 


掛載/dev/sdb1
mkdir -p /mfsdata
mount /dev/sdb1 /mfsdata
mkfs -t ext4 /dev/sdb1
mount /dev/sdb1 /mfsdata
df

 ###先卸載/mfsdata,再用mount -a 自動掛載,若是成功就好了

===============================================
###修改mfschunkserver.cfg配置文件

cd /application/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cat mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
cat mfshdd.cfg
===============================================
sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = mfsmaster.etiantian.org/g' /application/mfs/etc/mfs/mfschunkserver.cfg
echo "/mfsdata" >>/application/mfs/etc/mfs/mfshdd.cfg
MASTER_HOST = mfsmaster.etiantian.org ##若是讓它仍是解析到10.0.0.3,而不是vip,能夠不改
/mfsdata ##本地分區的掛載點。真正存放數據的地方,若是有多個,能夠寫多行
=============================================== 

#受權/mfsdata

 chown -R mfs.mfs /mfsdata

##啓動/mfschunkserver

/application/mfs/sbin/mfschunkserver start
ps -ef|grep mfs
netstat -lnt |grep 94
netstat -an|grep -i est
===============================================
##啓動以後,看/mfsdata目錄的內容
[root@DATA1 ~]# ls /mfsdata/
00 09 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90 99 A2 AB B4 BD C6 CF D8 E1 EA F3 FC
01 0A 13 1C 25 2E 37 40 49 52 5B 64 6D 76 7F 88 91 9A A3 AC B5 BE C7 D0 D9 E2 EB F4 FD
02 0B 14 1D 26 2F 38 41 4A 53 5C 65 6E 77 80 89 92 9B A4 AD B6 BF C8 D1 DA E3 EC F5 FE
03 0C 15 1E 27 30 39 42 4B 54 5D 66 6F 78 81 8A 93 9C A5 AE B7 C0 C9 D2 DB E4 ED F6 FF
04 0D 16 1F 28 31 3A 43 4C 55 5E 67 70 79 82 8B 94 9D A6 AF B8 C1 CA D3 DC E5 EE F7 lost+found
05 0E 17 20 29 32 3B 44 4D 56 5F 68 71 7A 83 8C 95 9E A7 B0 B9 C2 CB D4 DD E6 EF F8
06 0F 18 21 2A 33 3C 45 4E 57 60 69 72 7B 84 8D 96 9F A8 B1 BA C3 CC D5 DE E7 F0 F9
07 10 19 22 2B 34 3D 46 4F 58 61 6A 73 7C 85 8E 97 A0 A9 B2 BB C4 CD D6 DF E8 F1 FA
08 11 1A 23 2C 35 3E 47 50 59 62 6B 74 7D 86 8F 98 A1 AA B3 BC C5 CE D7 E0 E9 F2 FB
===============================================

####/mfsmetalogger關閉

/application/mfs/sbin/mfschunkserver stop
/application/mfs/sbin/mfschunkserver –s

##打開下面網頁

http://10.0.0.3:9425/mfs.cgi?sections=CS
[root@DATA2 mfsdata]# df -h
爲何df -h的大小和master管理界面的大小有區別:274-19=155M

由於master向data服務器申請空間是按照最小256M申請的,低於256M就不申請空間了

#################################################################################

配置client server

因爲MFS文件系統客戶端的掛載依賴於fuse工具,因此要先安裝工具。若是所在的系統已經安裝了fuse,則能夠跳過這個步驟,高版本的linux內核已經支持了

 mfs的客戶端,通常是web等須要存儲功能的應用服務器

 ###安裝,能夠yum安裝,也能夠編譯安裝,下面採用yum安裝的方案

###查看是否存在fuse模塊。沒有的再安裝完fuse後掛載這個模塊
lsmod |grep fuse
modprobe fuse
lsmod |grep fuse
###編譯若是不肯定默認編譯是否存在--enable-mfsmount這個參數,能夠加上這個參數,若是默認編譯加了,就不須要加了
===============================================
[root@CLIENT mfs-1.6.27]# ll /application/mfs/bin/
total 704
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsappendchunks -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfscheckfile -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsdeleattr -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsdirinfo -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsfileinfo -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsfilerepair -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsgeteattr -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsgetgoal -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsgettrashtime -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsmakesnapshot -> mfstools
-rwxr-xr-x. 1 root root 510650 Sep 9 16:04 mfsmount
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsrgetgoal -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsrgettrashtime -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsrsetgoal -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsrsettrashtime -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfsseteattr -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfssetgoal -> mfstools
lrwxrwxrwx. 1 root root 8 Sep 9 16:04 mfssettrashtime -> mfstools
-rwxr-xr-x. 1 root root 137 Sep 9 16:04 mfssnapshot
-rwxr-xr-x. 1 root root 204078 Sep 9 16:04 mfstools
===============================================
最重要的命令時 mfsmount 這個參數

###建立數據目錄掛載點

mkdir -p /mnt/mfs
chown -R mfs.mfs /mnt/mfs
##設置fuse開機自動掛載

echo "modprobe fuse" >>/etc/rc.local
echo "modprobe fuse" >>/etc/modprobe.d/fuse
cat /etc/modprobe.d/fuse
===============================================

#客戶端掛載mfs

/application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org -O mfs password 111111
/application/mfs/bin/mfsmount /mnt/mfs -H mfsmaster.etiantian.org -p # 交互式輸入密碼

============================================================
測試
進入client剛剛掛載的/mnt/mfs 目錄建立文件,添加內容
============================================================
[root@CLIENT bin]# cd /mnt/mfs/
[root@CLIENT mfs]# echo 12121221313241 >lvnian.txt
[root@CLIENT mfs]# for n in `seq 10 `;do cp /bin/cat $n ;done
============================================================
分別看maste端和backup的changelog.0.mfs 在添加內容先後的變化
cat /application/mfs/var/mfs/changelog.0.mfs
cat /application/mfs/var/mfs/changelog_ml.0.mfs
同時分別看三個data的下面內容在添加內容先後的變化
find /mfsdata/ -type f

####這樣就完成部

往後用的時候就器多個客戶端,都掛載好,須要寫數據,讀數據就往這裏讀和寫就能夠了