CentOS 6.1 x64部署MFShtml
時間:2012-8-2
QQ羣:18731199
node
簡介:
MooseFS(Moose File System,mfs)是一種分佈式文件系統,它將數據分佈在網絡中的不一樣服務器上,支持FUSE,客戶端掛載後能夠做爲一個 普通的Unix 文件系統使用MooseFS。
MooseFS中共有四種角色:元數據服務器master server、元數據日誌服務器metalogger server、存儲服務器chunkserver、客戶端client。
元數據服務器負責各個存儲服務器的管理、文件讀寫調度、文件空間回收以及恢復、多節點拷貝。
元數據日誌服務器負責備份主控服務器的元數據、變化日誌文件,文件類型爲changelog_ml.*.mfs,以便在主控服務器出問題的時候能夠恢復。
存儲服務器負責提供存儲空間,併爲客戶提供數據傳輸。
客戶端則經過fuse掛接主控服務器上所管理的存儲塊服務器,能夠像操做本地文件同樣操做MooseFS文件系統中的文件。
如下是來自官方的MFS工做方式圖解:
1、配置思路
一、自1.6.5以後,MooseFS提供了metalogger服務,默認每24小時自動得到主控服務器的全部元數據和更改日誌,能夠做爲備份主控。
二、利用腳本在元數據和元數據日誌服務器之間執行服務檢測若是發現元數據服務器故障,metalogger服務器將接管master提供服務;提供服務的IP爲虛擬IP,在故障出現後metalogger將接管虛擬IP地址;
2、實驗環境:
系統:所有選用CentOS6.1 x64系統,爲了更加快捷的安裝過程當中所依賴的庫先配置好yum、編譯環境
實驗服務器信息:
提供服務的虛擬IP: 10.103.9.3
master 10.103.9.4
metalogger 10.103.9.5
chunkserver 10.103.9.20
chunkserver1 10.103.9.21
client 10.103.9.30
3、安裝MooseFS集羣
到官網下載程序:http://www.moosefs.org/download.html
使用的版本爲: 1.6.25
一、master安裝
安裝依賴包
[root@mfsm-9-4 tmp]#yum -y install zlib-devel
添加mfs用戶、組
[root@mfsm-9-4 tmp]# useradd mfs
[root@mfsm-9-4 tmp]# yum -y install fuse fuse-devel
解壓
[root@mfsm-9-4 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-4 tmp]# cd mfs-1.6.25
[root@mfsm-9-4 mfs-1.6.25]# ./configure --prefix=/usr/local/mfsm \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfschunkserver \
> -- --mandir=/usr/share/man/
註解:
--prefix=/usr/local/mfsm 指定程序安裝目錄
--with-default-user=mfs 指定運行程序的默認用戶
--with-default-group=mfs 指定運行程序的默認組
--disable-mfschunkserver 不安裝mfschunkserver
--mandir=/usr/share/man/ man文件安裝路徑
[root@mfsm-9-4 mfs-1.6.25]# make && make install
爲了方便使用配置環境變量,標紅部分
[root@mfsm-9-4 ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATHHOME/bin:/usr/local/mfsm/sbin/
export PATH
[root@mfsm-9-4 ~]# source ~/.bash_profile
master是MooseFS的核心,應當安裝在具備高穩定性、高配置的服務器上。最關鍵的是內存要足夠大,MooseFS對內存的要求與存放的文件個數有關。按照官方的數據,存儲塊服務器上的1百萬文件,主控服務器須要300M內存存放相關的信息。硬盤也要大,受存儲塊服務器上文件、塊的個數(影響元數據文件大小)、文件變動數(影響changelog)的影響;2500萬文件、50小時的變動日誌須要20G空間。對CPU也有較高的要求,受MooseFS中文件的操做頻率影響。
二、metalogger安裝
安裝依賴包
[root@mfsm-9-5 tmp]#yum -y install zlib-devel fuse fuse-devel
添加mfs用戶、組
[root@mfsm-9-5 tmp]# useradd mfs
解壓
[root@mfsm-9-5 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-5 tmp]# cd mfs-1.6.25
[root@mfslog-9-5 mfs-1.6.25]# ./configure --prefix=/usr/local/mfslog \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfschunkserver \
> -- --mandir=/usr/share/man/
註解:同master
安裝
[root@mfsm-9-5 mfs-1.6.25]# make && make install
配置環境變量
[root@mfsm-9-5 ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATHHOME/bin:/usr/local/mfslog/sbin/
export PATH
[root@mfsm-9-5 ~]# source ~/.bash_profile
10.103.9.5元數據日誌服務器的同時,也是備份主控服務器,使用跟主控服務器相同的配置。
三、chunkserver安裝
安裝依賴包
[root@mfsm-9-20 tmp]#yum -y install zlib-devel
添加mfs用戶、組
[root@mfsm-9-20 tmp]# useradd mfs
解壓
[root@mfsm-9-20 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsm-9-20 tmp]# cd mfs-1.6.25
config.guess config.sub configure
[root@mfs-d-9-20 mfs-1.6.25]# ./configure --prefix=/usr/local/mfsd \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \
> --disable-mfsmount \
> --disable-mfscgi \
> --disable-mfscgiserv
> -- --mandir=/usr/share/man/
註解:
--disable-*爲不安裝部分
[root@mfs-d-9-20 mfs-1.6.25]# make && make install
配置環境變量
PATH=$PATHHOME/bin:/usr/local/mfsd/sbin/
[root@mfs-d-9-20 mfs-1.6.25]# source ~/.bash_profile
另一臺chunkserver同上安裝便可
存儲服務器應當提供1G以上的可用空間,爲了更方便的管理chunkserver空間,加入MFS集羣的空間最好是單獨的分區。
4、配置MooseFS集羣
一、master配置
安裝完master配置文件在/usr/local/mfsm/etc(--prefix=/usr/local/mfsm定義)
裏面有master的默認配置文件:mfsmaster.cfg.dist和權限控制文件mfsexports.cfg.dist
[root@mfsm-9-4 etc]# mv mfsmaster.cfg.di3st mfsmaster.cfg
[root@mfsm-9-4 etc]# mv mfsexports.cfg.dist mfsexports.cfg
mfsmaster.cfg詳解
[root@mfsm-9-4 etc]# vim mfsmaster.cfg
# WORKING_USER = mfs #運行mfs的用戶#
# WORKING_GROUP = mfs #運行mfs的組帳戶#
# SYSLOG_IDENT = mfsmaster #master server 在syslog中的標識,說明是由master serve 產生的#
# LOCK_MEMORY = 0 #是否執行mlockall()以免mfsmaster 進程溢出(默認爲0)
# NICE_LEVEL = -19 #運行的優先級(若是能夠默認是-19; 注意: 進程必須是用root啓動)
# EXPORTS_FILENAME = /usr/local/mfsm/etc/mfsexports.cfg #權限控制文件存放的路徑
# TOPOLOGY_FILENAME = /usr/local/mfsm/etc/mfstopology.cfg #這是1.6.24增長的新功能,用於運行那些chunkserver容許加入集羣?
# DATA_PATH = /usr/local/mfsm/var/mfs #數據存放路徑,此目錄下大體有三類文件,changelog,sessions和stats;
# BACK_LOGS = 50 #metadata 的改變log 文件數目(默認是50) #
# REPLICATIONS_DELAY_INIT = 300 延遲複製的時間(默認是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 斷開的複製延遲(默認是3600);
# MATOML_LISTEN_HOST = * # metalogger 監聽的IP 地址(默認是*,表明任何IP)
# MATOML_LISTEN_PORT = 9419 #metalogger 監聽的端口地址(默認是9419)
# MATOCS_LISTEN_HOST = * #用於chunkserver 鏈接的IP 地址(默認是*,表明任何IP)
# MATOCS_LISTEN_PORT = 9420 #用於chunkserver 鏈接的端口地址(默認是9420)
# MATOCL_LISTEN_HOST = * #用於客戶端掛接鏈接的IP 地址(默認是*,表明任何IP)
# MATOCL_LISTEN_PORT = 9421 #用於客戶端掛接鏈接的端口地址(默認是9421)
# CHUNKS_LOOP_CPS = 100000
# CHUNKS_LOOP_TIME = 300 # chunks 的迴環頻率(默認是:300 秒)
# CHUNKS_SOFT_DEL_LIMIT = 10 #
# CHUNKS_HARD_DEL_LIMIT = 25
# CHUNKS_WRITE_REP_LIMIT = 2
# CHUNKS_READ_REP_LIMIT = 10
# REJECT_OLD_CLIENTS = 0 #彈出低於1.6.0 的客戶端掛接(0 或1,默認是0)
# deprecated: CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmaster.lock #lock文件的路徑
注:以#註釋的即爲默認值,master配置文件保持默認便可
mfsexports.cfg 權限控制文件的配置
10.103.9.0/24 / rw,alldirs,maproot=0,password=123456
該文件每個條目分爲三部分:
第一部分:客戶端的ip 地址
第二部分:被掛接的目錄
第三部分:客戶端擁有的權限
1)
地址能夠指定的幾種表現形式:
* 全部的ip 地址
n.n.n.n 單個ip 地址
n.n.n.n/b IP 網絡地址/位數掩碼
n.n.n.n/m.m.m.m IP 網絡地址/子網掩碼
f.f.f.f-t.t.t.t IP 段
2)
目錄部分須要注意兩點:
/ 標識MooseFS 根;
. 表示MFSMETA 文件系統
3)
權限部分:
ro 只讀模式共享
rw 讀寫的方式共享
alldirs 許掛載任何指定的子目錄
maproot 映射爲root,仍是指定的用戶
password 指定客戶端密碼
啓動master server
master server 能夠單獨啓動(所謂單獨啓動就是在沒有數據存儲服務器、log服務器(chunkserver、metalogger)的時候也能夠啓動,可是不能存儲數據,chunkserver 啓動後會自動加入)。安裝配置完MFSM 後,cp 一個metadata便可啓動它。
# cp /usr/local/mfsm/var/mfs/metadata.mfs.empty /usr/local/mfsm/var/mfs/metadata.mfs
[root@mfsm-9-4 etc]# mfsmaster start #已經配置好環境變量
或者
[root@mfsm-9-4 mfs]# /usr/local/mfsm/sbin/mfsmaster start
[root@mfsm-9-4 mfs]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 31818/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 31818/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 31818/mfsmaster
中止master server
禁止用kill來中止服務,利用mfsmaster –s 或者 mfsmaster stop來安全中止master serve
由於要提供容災,因此對客戶端和其餘服務器使用的地址爲虛擬IP10.103.9.3
#ifconfig eth0:1 10.103.9.3 netmask 255.255.255.0
master server監控平臺
[root@mfsm-9-4 ~]# mfscgiserv start
或者
[root@mfsm-9-4 ~]# /usr/local/mfsm/sbin/mfscgiserv start
啓動後,在瀏覽器裏輸入:http://10.103.9.3:9425
二、metalogger配置
安裝完metalogger配置文件在/usr/local/mfslog/etc(--prefix=/usr/local/mfsm定義)
此服務只有一個配置文件:mfsmetalogger.cfg
#cd /usr/local/mfslog/etc
# mv mfsmetalogger.cfg.dist mfsmetalogger.cfg
配置文件詳解(相同部分請參考master配置文件):
# vim mfsmetalogger.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfsmetalogger
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfslog/var/mfs
# BACK_LOGS = 50
# META_DOWNLOAD_FREQ = 24 #元數據備份文件下載請求頻率。默認爲24小時,即每隔24小時從元數據服務器(MASTER)下載一個metadata.mfs.back 文件。當元數據服務器關閉或者出故障時,matedata.mfs.back 文件將消失,那麼要恢復整個mfs,則需從metalogger 服務器取得該文件。請特別注意這個文件,它與日誌文件一塊兒,纔可以恢復整個被損壞的分佈式文件系統。
# MASTER_RECONNECTION_DELAY = 5
# MASTER_HOST = mfsmaster #mfsmaster地地址信息,或者能夠是Master 的IP,當使用名字的時候請肯定可否正確解析
# MASTER_PORT = 9419 #鏈接master的端口
# MASTER_TIMEOUT = 60
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock
須要修改的地方:
# META_DOWNLOAD_FREQ = 1 #下載頻率設置爲沒一小時
META_DOWNLOAD_FREQ = 1 #注意得去掉#
綁定hosts
#echo "10.103.9.3 mfsmaster" >> /etc/hosts
啓動metalogger服務
[root@mfslog-9-5 etc]# mfsmetalogger start #一樣須要配置好環境變量#
working directory: /usr/local/mfslog/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly
或者
[root@mfslog-9-5 etc] /usr/local/mfslog/sbin/mfsmetalogger start
檢查:
[root@mfslog-9-5 etc]# ps -ef|grep mfs
mfs 31159 1 0 12:17 ? 00:00:00 mfsmetalogger start
root@mfslog-9-5 etc]# lsof -i:9419
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mfsmetalo 31159 mfs 6u IPv4 33247 0t0 TCP 10.103.9.5:41142->mfsmaster:9419 (ESTABLISHED)
中止metalogger服務
[root@mfslog-9-5 etc]# mfsmetalogger stop
或者
[root@mfslog-9-5 etc]# /usr/local/mfslog/sbin/mfsmetalogger stop
三、chunkserver 配置
安裝完chunkserver配置文件在/usr/local/mfsd/etc/(--prefix=/usr/local/mfsm定義)
此服務只有兩個配置文件:主配置文件mfschunkserver.cfg 和共享控制文件mfshdd.cfg
#cd /usr/local/mfsd/etc/
[root@mfs-d-9-20 etc]# mv mfschunkserver.cfg.dist mfschunkserver.cfg
[root@mfs-d-9-20 etc]# mv mfshdd.cfg.dist mfshdd.cfg
[root@mfs-d-9-20 etc]# vim mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# SYSLOG_IDENT = mfschunkserver
# LOCK_MEMORY = 0
# NICE_LEVEL = -19
# DATA_PATH = /usr/local/mfsd/var/mfs
# MASTER_RECONNECTION_DELAY = 5
# BIND_HOST = *
# MASTER_HOST = mfsmaster #master的地址,能夠是主機名或者IP
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422 #這個監聽端口用於與其它數據存儲服務器間的鏈接,一般是數據複製
# HDD_CONF_FILENAME = /usr/local/mfsd/etc/mfshdd.cfg #共享配置文件
# HDD_TEST_FREQ = 10
# deprecated, to be removed in MooseFS 1.7
# LOCK_FILE = /var/run/mfs/mfschunkserver.lock
# BACK_LOGS = 50
# CSSERV_TIMEOUT = 5
主配置文件默認便可
[root@mfs-d-9-20 etc]# vim mfshdd.cfg
/mfs #提供共享的分區,爲了更好的控制共享空間最好是獨立磁盤或者分區
若是沒有預先預留好專用磁盤或者分區,也可使用一下方法:
建立一個10G 的空文件
[root@mfs-d-9-20 ~]# dd if=/dev/zero of=/var/mfsd bs=1024M count=10
在建立的空文件上建立文件系統
[root@mfsd1-9-20 ~]# mkfs.ext4 /var/mfsd
mke2fs 1.41.12 (17-May-2010)
/var/mfsd is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
建立掛載點
[root@mfsd1-9-20 ~]# mkdir /mfs
掛載
[root@mfsd1-9-21 ~]# mount -o loop /var/mfsd /mfs/
查看
[root@mfsd1-9-21 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 20G 1.2G 18G 6% /
tmpfs 244M 0 244M 0% /dev/shm
/dev/sda1 97M 27M 66M 29% /boot
/dev/sdb1 20G 180M 19G 1% /home
/dev/sda6 2.0G 68M 1.9G 4% /tmp
/dev/sda3 20G 11G 8.5G 55% /var
/var/mfsd 9.9G 151M 9.2G 2% /mfs
賦權給mfs
[root@mfsd1-9-20 etc]# chown mfs:mfs -R /usr/local/mfsd/var/
[root@mfsd1-9-20 etc]# chown mfs:mfs /mfs/
綁定Hosts解析
[root@mfsd1-9-20etc]# echo "10.103.9.3 mfsmaster" >> /etc/hosts
另一天以一樣的方法配置好
啓動mfs chunkserver服務
[root@mfsd1-9-20 etc]# mfschunkserver start #配置好環境變量
或者
[root@mfsd1-9-20 etc]# /usr/local/mfsd/sbin/mfschunkserver start
working directory: /usr/local/mfsd/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: scanning folder /mfs/ ...
hdd space manager: scanning complete
hdd space manager: /mfs/: 0 chunks found
hdd space manager: scanning complete
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
查看是否啓動成功
[root@mfsd1-9-20 etc]# netstat –nltp
中止mfs chunkserver服務
[root@mfsd1-9-20 etc]# mfschunkserver stop
sending SIGTERM to lock owner (pid:3130)
waiting for termination ... terminated
或者
[root@mfsd1-9-20 etc]# /usr/local/mfsd/sbin/mfschunkserver stop
四、MFS client 的安裝與使用
[root@mfsc-9-30]# yum -y install fuse fuse-devel
解壓下載好的源代碼
[root@mfsc-9-30 tmp]# tar xvf mfs-1.6.25.tar.gz
[root@mfsc-9-30 tmp]# cd mfs-1.6.25
[root@mfsc-9-30 ~]# ./configure --prefix=/usr/local/mfsc \
> --with-default-user=mfs \
> --with-default-group=mfs \
> --disable-mfsmaster \
> --disable-mfschunkserver \
> --disable-mfscgi \
> --disable-mfscgiserv \
> --mandir=/usr/share/man
[root@mfsc-9-30 ~]# make && make install
配置環境變量:
[root@mfsc-9-30 ~]# vim ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATHHOME/bin:/usr/local/mfsc/bin
export PATH
[root@mfsc-9-30 ~]# source ~/.bash_profile
[root@mfsc-9-30 ~]# echo "10.103.9.3 mfsmaster" >> /etc/hosts
[root@mfsc-9-30 ~]# mfsmount /mnt/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
注:掛載點須要是個空目錄,不然掛載不成功
4、MooseFS master恢復
備用master服務器使用log服務器代替,從master把mfsmaster.cfg、mfsexports.cfg個配置文件放在/usr/local/mfslog/etc/下
另外把mfsmetalogger.cfg文件中的META_DOWNLOAD_FREQ設置成1,即每小時複製一次metadata.mfs.back文件,減小恢復的延遲時間。
當master失效時,在log服務器上執行如下操做,進行恢復:
[root@mfslog-9-5]mfsmetarestore –a
[root@mfslog-9-5] ifconfig eth0:1 10.103.9.3 netmask 255.255.255.0
[root@mfslog-9-5]mfsmaster startvim