moofs分布式存储
Moosefs分布式存儲
?
MFS文件系統(tǒng)結(jié)構(gòu):
包含4種角色:
管理服務(wù)器managing server (master)
元數(shù)據(jù)日志服務(wù)器Metalogger server(Metalogger)
數(shù)據(jù)存儲服務(wù)器data servers (chunkservers)
客戶機掛載使用client computers
?
各種角色作用:
1. 管理服務(wù)器:負責(zé)各個數(shù)據(jù)存儲服務(wù)器的管理,文件讀寫調(diào)度,文件空間回收以及恢復(fù)
2. 元數(shù)據(jù)日志服務(wù)器: 負責(zé)備份master服務(wù)器的變化日志文件,文件類型為
changelog_ml.*.mfs,以便于在master server出問題的時候接替其進行工作。
3. 數(shù)據(jù)存儲服務(wù)器:負責(zé)連接管理服務(wù)器,聽從管理服務(wù)器調(diào)度,提供存儲空間,并為客戶提供數(shù)據(jù)傳輸。
4. 客戶端: 通過fuse內(nèi)核接口掛接遠程管理服務(wù)器上所管理的數(shù)據(jù)存儲服務(wù)器,看起來共享的文件系統(tǒng)和本地unix文件系統(tǒng)使用一樣的效果。
MFS部署:
主機環(huán)境:RHEL6.0 selinux and iptables disabled
Master:192.168.0.11
Metalogger: 192.168.0.76
Chunkserver: 192.168.0.76 192.168.0.79
Client: 192.168.0.75
軟件下載:www.moosefs.org
首先在主機11上安裝gcc make rpm-build(用來生成rpm軟件包)fuse-devel zlib-devel
#yum install gcc make rpm-build fuse-devel zlib-devel -y
之后去網(wǎng)站或者服務(wù)器下載mfs最新的軟件包mfs-1.6.26.tar.gz
lftp 192.168.0.254->cd pub/docs/mfs->get mfs-1.6.26.tar.gz(lftp需要安裝,沒有服務(wù)器請去官網(wǎng)下載)
使用rpm解壓成rpm包
#rpmbuild -tb mfs-1.6.26.tar.gz
#cd /root/rpmbuild/RPMS/x86_64
#ls
會產(chǎn)生如下rpm包
mfs-cgi-1.6.26-1.x86_64.rpm
mfs-master-1.6.26-1.x86_64.rpm
mfs-chunkserver-1.6.26-1.x86_64.rpm mfs-metalogger-1.6.26-1.x86_64.rpm
mfs-client-1.6.26-1.x86_64.rpm
主控服務(wù)器 Master server 安裝:
# yum localinstall -y mfs-master-1.6.26-1.x86_64.rpm mfs-cgi-1.6.26-1.x86_64.rpm
#cd /etc/
#cp mfsmaster.cfg.dist mfsmaster.cfg
此文件中凡是用#注釋掉的變量均使用其默認值,基本不需要就可以工作,所以不需要修改。
# cp mfsexports.cfg.dist mfsexports.cfg
# vi mfsexports.cfg
192.168.0.0/24??? ??? /??? ??? rw,alldirs,maproot=0
##客戶端的ip地址??? ??? 被掛接的目錄??? ??? 客戶端擁有的權(quán)限##
# cd /var/lib/mfs
# cp metadata.mfs.empty metadata.mfs
# chown nobody /var/lib/mfs(由于mfsmaster.cfg中的user=nobody)
# ll -d /var/lib/mfs
drwxr-xr-x. 2 nobody root 4096 Aug 26 14:00 /var/lib/mfs/
修改
# vi /etc/hosts文件,增加下面的行:
192.168.0.11 mfsmaster
之后啟動mfsmaster
#mfsmaster start
working directory: /var/lib/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 (/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
出現(xiàn)上面表示成功
?
# mfscgiserver啟動CGI監(jiān)控服務(wù)
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)
在瀏覽器地址欄輸入 http://192.168.0.11:9425 即可查看 master 的運行情況
?
存儲塊服務(wù)器 Chunk servers 安裝:
# yum localinstall -y mfs-chunkserver-1.6.26-1.x86_64.rpm
*/lvs? openssh-clietns
#rpm -ivh mfs-chunkserver-1.6.26-1.x86_64.rpm
#rpm -ql mfs-chunkserver(查看安裝目錄)
#cd /etc/
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg
#vi /etc/hosts
192.168.0.11??? mfsmaster
#fdisk -cu /dev/vda
全部默認回車,創(chuàng)建一個LVM分區(qū)/dev/vda4
#partx -a
#df -h
#pvcreate /dev/vda4
#pvs
#vgcreate vg0_desktop79 /dev/vda4
#vgs
#lvcreate -L 2G -n data1 vg0_desktop79
#lvs
#mkfs.ext4? /dev/vg0_desktop79/data1
#mkdir /mnt/mfschunks1
#mount? /dev/vg0_desktop79/data1 /mnt/mfschunks1/
#df -h
#ll -d /mnt/mfschunks1/
#chown -R nobody:nobody /mnt/mfschunks1/
#mkdir /var/lib/mfs/
#chown nobody:nonody /var/lib/mfs
#ll -d /var/lib/mfs/
#vi /etc/mfshdd.cfg
/mnt/mfschunks1
#mfschunkserver start
#cd
#ls
#scp mfs-chunkserver-1.6.26-1.x86_64.rpm desktop76:
#lvextend -L +500M /dev/vg0_desktop79/data1
#resize2fs /dev/vg0_desktop79/data1
#df -h
#mfschunkserver reload
現(xiàn)在再通過瀏覽器訪問 http://192.168.0.11:9425/ 應(yīng)該可以看見這個 MooseFS系統(tǒng)的全部信息,包括主控master和存儲服務(wù)chunkserver 。
在存儲塊服務(wù)器desktop76上同樣操作以上部分,掛在點為/mnt/mfschunks2
數(shù)據(jù)為/dev/vg0_desktop76/data2,其他同上。
客戶端 desktop75 client 安裝:
# yum localinstall -y mfs-client-1.6.26-1.x86_64.rpm
# cd /etc
# cp mfsmount.cfg.dist mfsmount.cfg
# vi mfsmount.cfg
定義客戶端默認掛載
/mnt/mfs
#vi /etc/hosts
192.168.0.11 mfsmaster
#mkdir /mnt/mfs
# mfsmount
# df -h
... ??? mfsmaster:9421 ??? 2729728? 0? 2729728? 0%? /mnt/mfs
?
MFS測試:
在MFS掛載點下創(chuàng)建兩個 目錄,并設(shè)置其文件保存的副本數(shù):
# cd /mnt/mfs
# mkdir dir1 dir2
# mfssetgoal -r 2 dir2/
設(shè)置在dir2中保存的文件有兩個副本,默認是一個
dir2/:
inodes with goal changed:??? 1
inodes with goal not changed:??? 0
inodes with permission denied:??? 0
拷貝同一個文件到兩個目錄
# cp /etc/passwd dir1
# cp /etc/passwd dir2
查看文件信息
# mfsfileinfo dir1/passwd
dir1/passwd:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.0.79:9422
# mfsfileinfo dir2/passwd
dir2/passwd:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 192.168.0.76:9422
copy 2: 192.168.0.79:9422
?
關(guān)閉mfschunkserver2后再查看文件信息
?
# mfsfileinfo dir1/passwd
dir1/passwd:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
no valid copies !!!
# mfsfileinfo dir2/passwd
dir2/passwd:
chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
copy 1: 192.168.0.76:9422
啟動mfschunkserver2后,文件回復(fù)正常。
?
恢復(fù)誤刪文件
?
# rm -f dir1/passwd
?
# mkdir /mnt/mfsmeta
?
# mfsmount -m /mnt/mfsmeta/ -H mfsmaster
?
# cd /mnt/mfsmeta/trash
?
# mv 00000004\|dir1\|passwd undel/
?
到dir1目錄中可以看到passwd文件恢復(fù)
轉(zhuǎn)載于:https://blog.51cto.com/xingdiango/973617
總結(jié)
以上是生活随笔為你收集整理的moofs分布式存储的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: extmail从数据库导出通讯录
- 下一篇: android 输入法的显示和隐藏