Moosefs分布式文件系統(tǒng)集群講解配置
1 管理服務(wù)器(master-server):負(fù)責(zé)各個數(shù)據(jù)存儲服務(wù)器的管理,文件讀寫調(diào)度,文件空間回收以及恢復(fù).多節(jié)點(diǎn)拷貝
2 元數(shù)據(jù)日志服務(wù)器(changelog-server): 負(fù)責(zé)備份master服務(wù)器的變化,(一般情況下可以和管理服務(wù)器放在一起)文件類型為changelog_ml.*.mfs,以便于在master server出問題的時候接替其進(jìn)行工作
3數(shù)據(jù)存儲服務(wù)器(chunk-server):負(fù)責(zé)連接管理服務(wù)器,聽從管理服務(wù)器調(diào)度,提供存儲空間,并為客戶提供數(shù)據(jù)傳輸.
4客戶端(clients): 通過fuse內(nèi)核接口掛接遠(yuǎn)程管理服務(wù)器上所管理的數(shù)據(jù)存儲服務(wù)器,.看起來共享的文件系統(tǒng)和本地unix文件系統(tǒng)使用一樣的效果.
MFS文件系統(tǒng)的讀寫原理:
MFS分布式文件系統(tǒng)搭建:
系統(tǒng)環(huán)境:
RHEL6.4
selinux is disabled
iptables is flush
一、yum 源定義,用來解決軟件包的依賴性問題
- # cat yum.repo
- [base]
- name=yum
- baseurl=ftp://192.168.2.234/pub/RHEL6.4
- gpgcheck=0
- [HA]
- name=ha
- baseurl=ftp://192.168.2.234/pub/RHEL6.4/HighAvailability
- gpgcheck=0
- [lb]
- name=LB
- baseurl=ftp://192.168.2.234/pub/RHEL6.4/LoadBalancer
- gpgcheck=0
- [Storage]
- name=St
- baseurl=ftp://192.168.2.234/pub/RHEL6.4/ResilientStorage
- gpgcheck=0
- [SFS]
- name=FS
- baseurl=ftp://192.168.2.234/pub/RHEL6.4/ScalableFileSystem
- gpgcheck=0
二、主機(jī)解析準(zhǔn)備
- # cat /etc/hosts
- 192.168.2.88 node1 mfsmaster
- 192.168.2.89 node2
- 192.168.2.90 node3
- 192.168.2.82 node4
- 192.168.2.85 node5
實(shí)驗(yàn)將用node1作為master-server
node3和node4作為chunk-server
node5作為clients
所有節(jié)點(diǎn)必須有以上準(zhǔn)備
三、安裝準(zhǔn)備
#yum install rpm-build gcc make fuse-devel zlib-devel -y 安裝編譯環(huán)境使用的依賴(其實(shí)安裝過程中會提示安裝)
#rpmbuild -tb mfs-1.6.27.tar.gz 將gz包構(gòu)建成rpm包的方式 注意:包的格式很重要(只支持大的版本)
## ls /root/rpmbuild/RPMS/x86_64/ 生成的rpm包
mfs-cgi-1.6.27-2.x86_64.rpm mfs-client-1.6.27-2.x86_64.rpm
mfs-cgiserv-1.6.27-2.x86_64.rpm mfs-master-1.6.27-2.x86_64.rpm
mfs-chunkserver-1.6.27-2.x86_64.rpm mfs-metalogger-1.6.27-2.x86_64.rpm
1.master-server安裝:
- # yum localinstall mfs-cgi-1.6.27-2.x86_64.rpm mfs-master-1.6.27-2.x86_64.rpm mfs-cgiserv-1.6.27-2.x86_64.rpm -y
可以用cgi進(jìn)行頁面監(jiān)控:
master-server:主要文件和目錄
/var/lib/mfs mfs數(shù)據(jù)目錄
metadata.mfs mfs啟動文件
/etc/mfs 主目錄(存儲配置文件)
mfsmaster.cfg mfs主配置文件(定義相關(guān)參數(shù),用戶、組等設(shè)定)
mfsexports.cfg mfs被掛接目錄及其權(quán)限控制文件
mfstopology.cfg 定義 MFS 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的文件
配置文件默認(rèn)不需要修改就可以使用
#chown -R nobody /var/lib/mfs 注意給數(shù)據(jù)目錄以mfs的權(quán)限
# mfsmaster 啟動mfs
#mfsmaster stop 關(guān)閉mfs
#netstat -antlpe(mfsmaster開啟三個端口:客戶端連接9421端口,監(jiān)聽9422端口;數(shù)據(jù)節(jié)點(diǎn)9420端口)
#/usr/share/mfscgi
#chmod +x *.cgi 給所有的cgi頁面可執(zhí)行權(quán)限(以便與在web下查看狀態(tài))
# mfscgiserv ------- -》啟動cgi監(jiān)控
http://192.168.2.88:9425/
查看mfs監(jiān)控信息
2.chunk-server安裝配置(node3 and node4)
#rpm -ivh mfs-chunkserver-1.6.27-2.x86_64.rpm
#cd /etc/mfs/
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
# cp mfshdd.cfg.dist mfshdd.cfg
# vim mfshdd.cfg 存儲文件
/mnt/chunk 真正存儲的目錄(將客戶端/mnt/mfs的文件存儲)
#mkdir /mnt/chunk
#mkdir /var/lib/mfs
#chown nobody /var/lib/mfs/
#chown nobody /mnt/chunk
# mfschunkserver 啟動mfs服務(wù)器(注意,mfsmaster的解析必須到位)
#l. 產(chǎn)生一個隱藏鎖文件
.mfschunkserver.lock
3.clients端的安裝與配置;
# yum localinstall mfs-client-1.6.27-2.x86_64.rpm
#cp mfsmount.cfg.dist mfsmount.cfg
#vim mfsmount.cfg
修改master和分布式目錄/mnt/mfs
#mkdir /mnt/mfs
#mfsmounts 執(zhí)行客戶端掛載
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root 掛載成功
# df 查看掛載設(shè)備
mfsmaster:9421 6714624 0 6714624 0% /mnt/mfs
# ll -d /mnt/mfs/ 掛載后自動讀寫
drwxrwxrwx 2 root root 0 Jun 8 10:29 /mnt/mfs/
測試:MFS測試:
# mkdir hello{1,2}
# ls
hello1 hello2
# mfsdirinfo hello1/
hello1/:
inodes: 1
directories: 1
files: 0
chunks: 0
length: 0
size: 0
realsize: 0
# mfssetgoal -r 3 hello1/ 設(shè)置備份次數(shù)
hello1/:
inodes with goal changed: 1
inodes with goal not changed: 0
inodes with permission denied: 0
# mfsgetgoal hello1/ 查看文件備份數(shù)
hello1/: 3
# mfsgetgoal hello2
hello2: 1
#cp /etc/fstab hello1/
# cp /etc/passwd hello2/
# mfsfileinfo /hello/fstab 查看文件具體信息
fstab:
chunk 0: 000000000000000B_00000001 / (id:11 ver:1)
copy 1: 192.168.2.82:9422
copy 2: 192.168.2.90:9422
# mfscheckfile passwd
測試存儲關(guān)系:
# mfsfileinfo fstab
fstab:
chunk 0: 000000000000000B_00000001 / (id:11 ver:1)
copy 1: 192.168.2.90:9422
[root@node5 hello1]# mfsfileinfo ../hello2/passwd
../hello2/passwd:
chunk 0: 000000000000000C_00000001 / (id:12 ver:1)
no valid copies !!!
客戶端:誤刪除文件(不小心刪除/mnt/mfs/hello*/passwd)
# mfsmount -m /mnt/test/ -H mfsmaster 恢復(fù)目錄掛載到mfsmaster上
mfsmaster accepted connection with parameters: read-write,restricted_ip
# mount
#cd /mnt/test/
## mfscheckfile passwd
# mv 00000005\|hello2\|passwd undel/
直接恢復(fù)到之前的mfs目錄中
# umount /mnt/meta/
mfschunk-server可以自動檢測客戶端的配置文件:
# mfschunkserver stop
在客戶端重新拷貝文件,
#cp /etc/inittab /mnt/mfs/hello1
#mfsgetgoal hello1/fstab 查看文件份數(shù)
#mfsgetgoal hello1/inittab
# mfsfileinfo inittab 剛開始只有一個chukserver,只能保存一份
開啟chunkserver
#mfschunkserver
# mfsfileinfo inittab 查看文件的備份數(shù),恢復(fù)成chunkserver的數(shù)
inittab:
chunk 0: 0000000000000006_00000001 / (id:6 ver:1)
copy 1: 192.168.2.184:9422
copy 2: 192.168.2.185:9422
注意:
在mfsmaster中,正常運(yùn)行時,數(shù)據(jù)文件為metadata.mfs.back
當(dāng)主機(jī)出現(xiàn)故障,數(shù)據(jù)文件會保存成metadata.mfs
使用非正常關(guān)閉,(kill -9 pid) 數(shù)據(jù)文件將不會恢復(fù)
# mfsmetarestore -a- 非正常啟動后會丟失metadata.mfs文件,必須恢復(fù)一下
然后重新啟動mfsmaster(mfsmaster啟動必須有metadata.mfs文件)