mfs分佈式文件系統的配置

mfs分佈式文件系統,所需主機:
管理服務器 managing server (master  vm3)
元數據日誌服務器 Metalogger server(Metalogger)(vm6)
數據存儲服務器 data servers (chunkservers) (兩臺vm5 vm6 作負載均衡)
客戶機掛載使用 client computers

1.生成 rpm,便於部署:
[root@vm3~]# yum install -y fuse-devel zlib-devel gcc rpm-build.x86_64
[root@vm3~]# mv mfs-1.6.27-5.tar.gz mfs-1.6.27.tar.gz
[root@vm3~]# rpmbuild -tb mfs-1.6.27-5.tar.gz
[root@vm3~]# cd rpmbuild/
[root@vm3rpmbuild]# ls
BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS
[root@vm3rpmbuild]# cd RPMS/x86_64/
[root@vm3x86_64]# ls
mfs-cgi-1.6.27-4.x86_64.rpm          mfs-client-1.6.27-4.x86_64.rpm
mfs-cgiserv-1.6.27-4.x86_64.rpm      mfs-master-1.6.27-4.x86_64.rpm
mfs-chunkserver-1.6.27-4.x86_64.rpm  mfs-metalogger-1.6.27-4.x86_64.rpm

2.主控服務器 Master server 安裝:
[root@vm3x86_64]# rpm -ivh mfs-master-1.6.27-4.x86_64.rpm mfs-cgi*
Preparing...                ########################################### [100%]
   1:mfs-cgi                ########################################### [ 33%]
   2:mfs-cgiserv            ########################################### [ 67%]
   3:mfs-master             ########################################### [100%]
[root@vm3x86_64]# cd /etc/mfs/
[root@vm3mfs]# ls
mfsexports.cfg.dist  mfsmaster.cfg.dist  mfstopology.cfg.dist
[root@vm3mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@vm3mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@vm3mfs]# cp mfstopology.cfg.dist mfstopology.cfg
[root@vm3mfs]# vim mfsexports.cfg
  # Allow "meta".
  172.25.254.0/24                        .       rw  容許172.25.254.網段可寫
[root@vm3mfs]# vim /etc/hosts            
 172.25.254.3 vm3.example.com mfsmaster
[root@vm3mfs]# cd /var/lib/mfs/
[root@vm3mfs]# cp metadata.mfs.empty metadata.mfs
[root@vm3mfs]# chown nobody /var/lib/mfs/ -R
[root@vm3mfs]# mfsmaster start
[root@vm3mfs]# mfsmaster test
mfsmaster pid: 6643
[root@vm3mfs]# cd /usr/share/mfscgi/
[root@vm3mfscgi]# chmod +x *.cgi
[root@vm3mfscgi]# mfscgiserv #啓動 CGI 監控服務

如今再經過瀏覽器訪問 http://172.25.254.3:9425/ 應該能夠看見這個 MooseFS 系統的所有信息,包括主控 master 和存儲服務 chunkserver 。
                     
3.配置數據存儲服務器 data servers (chunkservers)(vm5 vm6)
[root@vm3x86_64]# pwdcd
/root/rpmbuild/RPMS/x86_64
[root@vm3x86_64]# scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.254.5:
[root@vm3x86_64]# scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.254.6:

切換到vm5
[root@vm5~]# rpm -ivh mfs-chunkserver-1.6.27-4.x86_64.rpm
Preparing...                ###########################################[100%]
 1:mfs-chunkserver        ########################################### [100%]
[root@vm5~]# cd /etc/mfs/
[root@vm5mfs]# ls
mfschunkserver.cfg.dist  mfshdd.cfg.dist
[root@vm5mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@vm5mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@vm5mfs]# mkdir /var/lib/mfs
[root@vm5mfs]# chown nobody /var/lib/mfs/
[root@vm5mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mnt/chunk1
[root@vm5mfs]# mkdir /mnt/chunk1
[root@vm5mfs]# chown nobody /mnt/chunk1
[root@vm5mfs]# mfschunkserver
working directory: /var/lib/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /mnt/chunk1/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
[root@vm5mfs]# vim /etc/hosts
加入172.25.254.3 mfsmaster

在vm6作相似操做:
[root@vm6mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/mnt/chunk2

4.客戶端掛載讀取
[root@vm3x86_64]# scp mfs-client-1.6.27-4.x86_64.rpm 172.25.254.1:
[root@benberba ~]# rpm -ivh mfs-client-1.6.27-4.x86_64.rpm
Preparing...                ########################################### [100%]
   1:mfs-client             ########################################### [100%]
[root@benberba ~]# cd /etc/mfs/
[root@benberba mfs]# ls
mfsmount.cfg.dist
[root@benberba mfs]# cp mfsmount.cfg.dist mfsmount.cfg
[root@benberba mfs]# mkdir /mnt/mfs
[root@benberba mfs]# vim mfsmount.cfg
mfsmaster=mfsmaster
/mnt/mfs
[root@benberba mfs]# vim /etc/hosts
172.25.254.3 mfsmaster
[root@benberba mfs]# mfsmount
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
MFS 測試:
在 MFS 掛載點下建立兩個目錄,並設置其文件存儲份數
[root@benberba mfs]# cd /mnt/mfs/
[root@benberba mfs]# mkdir dir1
[root@benberba mfs]# mkdir dir2
[root@benberba mfs]# mfssetgoal -r 2 dir2  設置在 dir2 中文件存儲份數爲兩個,默認是一個
[root@benberba mfs]# cp /etc/passwd dir1
[root@benberba mfs]# cp /etc/passwd dir2

查看文件信息
[root@benberba mfs]# mfsfileinfo dir1/passwd
dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        copy 1: 172.25.254.6:9422
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254.5:9422
        copy 2: 172.25.254.6:9422

關閉 mfschunkserver2 後再查看文件信息(即[root@vm6mfs]# mfschunkserver stop)
[root@benberba mfs]# mfsfileinfo dir1/passwd
dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        no valid copies !!!
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254:9422
啓動 mfschunkserver2 後,文件回覆正常([root@vm6mfs]# mfschunkserver start)。
[root@benberba mfs]# mfsfileinfo dir2/passwd
dir2/passwd:
    chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
        copy 1: 172.25.254.5:9422
        copy 2: 172.25.254.6:9422

恢復誤刪文件
[root@benberba mfs]# rm -f dir1/passwd
[root@benberba mfs]# mfsgettrashtime dir1/
dir1/: 86400
文件刪除後存放在「 垃圾箱」中的時間稱爲隔離時間, 這個時間能夠用 mfsgettrashtime 命令來查
看,用 mfssettrashtime 命令來設置,單位爲秒,默認爲 86400 秒。
[root@benberba mfs]# mkdir /mnt/mfsmeta
[root@benberba mfs]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@benberba mfs]# cd /mnt/mfsmeta/trash
[root@benberba trash]# ls
00000004|dir1|passwd  undel
[root@benberba trash]# mv 00000004\|dir1\|passwd undel/
到 dir1 目錄中能夠看到 passwd 文件恢復
[root@benberba ~]# mfsfileinfo /mnt/mfs/dir1/passwd
/mnt/mfs/dir1/passwd:
    chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
        copy 1: 172.25.254.6:9422
在 MFSMETA 的目錄裏,除了 trash 和 trash/undel 兩個目錄,還有第三個目錄 reserved,該目
錄內有已經刪除的文件,但卻被其餘用戶一直打開着。在用戶關閉了這些被打開的文件後,
reserved 目錄中的文件將被刪除,文件的數據也將被當即刪除。此目錄不能進行操做node

爲了安全中止 MooseFS 集羣,建議執行以下的步驟:
# umount -l /mnt/mfs     #客戶端卸載 MooseFS 文件系統
# mfschunkserver stop  #中止 chunk server 進程
# mfsmetalogger stop   #中止 metalogger 進程
# mfsmaster stop          #中止主控 master server 進程
安全的啓動 MooseFS 集羣:
# mfsmaster start          #啓動 master 進程
# mfschunkserver start  #啓動 chunkserver 進程
# mfsmetalogger start    #啓動 metalogger 進程
# mfsmount                     #客戶端掛載 MooseFS 文件系統
實際上不管如何順序啓動或關閉,未見任何異常,master 啓動後,metalogger、chunker、client
三個元素都能自動與 master 創建鏈接。

故障測試:
Client 客戶端斷電、斷網對 MFS 的體系不產生影響.
若是客戶端誤殺 killall -9 mfsmount 進程,須要先 umount /mnt/mfs,而後再 mfsmount。不然會
提示:/mnt/mfs: Transport endpoint is not connected
vim


mfschunkserver:
瀏覽器

斷網、殺掉 mfschunkserver 程序對 MFS 系統無影響。
斷電:
#無文件傳輸時,對兩個 chunker 都無影響;
#當有文件傳輸時,可是文件設置存儲一份時,對文件的存儲無影響。
#文件設置存儲兩份,數據傳輸過程當中,關掉 chunker1,等待數據傳輸完畢後,啓動
chunker1.chunker1 啓動後,會自動從 chunker2 複製數據塊。整個過程當中文件訪問不受影響。
#文件設置存儲兩份,數據傳輸過程當中,關掉 chunker1,不等待數據傳輸完畢,開機啓動
chunker1.chunker1 啓動後,client 端會向 chunker1 傳輸數據,同時 chunker1 也從 chunker2 復
制缺失的塊。
只要不是兩個 chunker 服務器同時掛掉的話,就不會影響文件的傳輸,也不會影響服務的使用。

master 端:
斷網、殺掉 MFS 的 master 服務對 MFS 系統無影響。
斷電可能會出現如下的狀況:
#當沒有文件傳輸時,可在服務器重啓以後,運行 mfsmetarestore –a 進行修復,以後執行
mfsmaster start 恢復 master 服務。
# mfsmetarestore -a
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... ok
checking filesystem consistency ... ok
connecting files and chunks ... ok
store metadata into file: /var/lib/mfs/metadata.mfs
# mfsmaster start
working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... ok
sessions file has been loaded
exports file has been loaded
mfstopology configuration file (/etc/mfstopology.cfg) not found - using defaults
loading metadata ...
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... ok
checking filesystem consistency ... ok
connecting files and chunks ... ok
all inodes: 5
directory inodes: 3
file inodes: 2
chunks: 2
metadata file has been loaded
stats file has been loaded
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
#當有文件傳輸時,可能會在/usr/local/mfs/sbin/mfsmetarestore –a 進行修復時可能會出現:
# mfsmetarestore -a
loading objects (files,directories,etc.) ... ok
loading names ... ok
loading deletion timestamps ... ok
loading chunks data ... ok
checking filesystem consistency ... ok
connecting files and chunks ... ok
�S:115: error: 32 (Data mismatch)
此時沒法修復也沒法啓動 master 服務,有個應急的辦法是將 metadata.mfs.back 複製成
metadata.mfs,而後再啓動 master。這樣將會丟失那些正在傳輸的數據。

安全

相關文章
相關標籤/搜索