MFS分佈式文件系統部署

實驗環境

  • rhel7.3 且 selinux and iptables disabled
主機名(IP) 服務
server1(172.25.11.1) master server
server2(172.25.11.2) chuck server
server3(172.25.11.3) chunk server
真機(172.25.11.250) 測試

server1(master server的部署)

  • 下載並安裝master server需要的軟件(包括web UI界面)。
[root@server1 ~]# ls
moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm
moosefs-metalogger-3.0.103-1.rhsystemd.x86_64.rpm

[root@server1 ~]# yum install moosefs-master-3.0.103-1.rhsystemd.x86_64.rpm   moosefs-cli-3.0.103-1.rhsystemd.x86_64.rpm  moosefs-cgiserv-3.0.103-1.rhsystemd.x86_64.rpm   moosefs-cgi-3.0.103-1.rhsystemd.x86_64.rpm -y

在這裏插入圖片描述
在這裏插入圖片描述
安裝完成之後會產生/etc/mfs目錄裏面是mfs文件系統的相關配置文件
在這裏插入圖片描述
注:在該目錄下的mfsmaster.cfg的文件中記錄瞭如果進行部署及其使用都需要在各個節點寫入mfsmaster的解析。
在這裏插入圖片描述

  • 給主機server1添加解析。
[root@server1 ~]# vim /etc/hosts
172.25.11.1     server1  mfsmaster
  • 開啓master服務,查看端口
    注意:
    9419:metalogger監聽的端口地址,和原數據日誌相結合,定期和master端同步數據
    9420:用於和chunkserver連接的端口地址,通信節點
    9421:用於客戶端對外連接的點口地址
[root@server1 mfs]# systemctl start moosefs-master
[root@server1 mfs]# netstat -antlp

在這裏插入圖片描述

  • 打開cgi圖形工具,並查看端口,爲9425。
[root@server1 mfs]# systemctl start moosefs-cgiserv
[root@server1 mfs]# netstat -antlp

在這裏插入圖片描述

  • 瀏覽器中訪問查看:http://172.25.11.1:9425/mfs.cgi
    在這裏插入圖片描述

server2&3(chunk server)的部署

  • server2與server3的部署過程相同,這裏以server2爲例。
  • 安裝chunkserver,安裝完成系統會生成用戶mfs。
[root@server1 ~]# scp moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm server2:
[root@server2 ~]# rpm -ivh moosefs-chunkserver-3.0.103-1.rhsystemd.x86_64.rpm
[root@server2 ~]# id mfs
uid=997(mfs) gid=995(mfs) groups=995(mfs)
  • 添加mfsmaster的解析。
[root@server2 ~]# vim /etc/hosts
172.25.11.1     server1 mfsmaster
  • 因爲chunk server是真正存放數據的服務器,所以我們需要給他們的內存大一些,我們給server3添加一塊20G的硬盤用於mfs對數據節點的操作,添加完成後查看。
    在這裏插入圖片描述

操作

server2的操作

  • 創建目錄,修改目錄所有人所有組都爲mfs,並將此目錄寫到配置文件中。
[root@server2 ~]# mkdir /mnt/chunk1
[root@server2 ~]# cd /mnt/chunk1/
[root@server2 chunk1]# chown mfs.mfs ..

[root@server2 chunk1]# cd /etc/mfs/
[root@server2 mfs]# vim mfshdd.cfg
/mnt/chunk1   #寫到最後一行

在這裏插入圖片描述
在這裏插入圖片描述

  • 開啓服務。
[root@server2 mfs]# systemctl start moosefs-chunkserver
  • 此時在我們剛纔寫入配置文件的目錄/mnt/chunk下出現了256個數據目錄。
[root@server2 mfs]# cd /mnt/chunk1/
[root@server2 chunk1]# ls | wc -l
256

在這裏插入圖片描述

  • 此時再在瀏覽器中訪問,發現出現了server2的詳細信息。
    在這裏插入圖片描述
    同樣的,在server3上做上述同樣的操作,再次刷新,並在瀏覽器中查看,可以看到server3的信息也出現了。
    在這裏插入圖片描述
  • 在server1查看9420端口的使用情況。
[root@server1 ~]# yum install lsof -y
[root@server1 ~]# lsof -i :9420
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mfsmaster 1029  mfs    8u  IPv4  61791      0t0  TCP server1:9420->server2:36344 (ESTABLISHED)
mfsmaster 1029  mfs   10u  IPv4  19091      0t0  TCP *:9420 (LISTEN)
mfsmaster 1029  mfs   13u  IPv4  62542      0t0  TCP server1:9420->server3:47036 (ESTABLISHED)

真機(moosefs-client的搭建)

  • 安裝客戶端的軟件。
[root@server1 ~]# scp moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm [email protected]:
[root@foundation11 ~]# yum install moosefs-client-3.0.103-1.rhsystemd.x86_64.rpm
[root@foundation11 ~]# mfs   #安裝完成命令可以自動補齊
  • 修改配置文件,添加掛載目錄,按照配置文件寫的建立出掛載的目錄。
[root@foundation11 ~]# mkdir /mnt/mfs
[root@foundation11 ~]# vim /etc/mfs/mfsmount.cfg
/mnt/mfs   #最後以行取消註釋
  • 做好解析。
[root@foundation11 mfs]# vim /etc/hosts
172.25.11.1     mfsmaster
  • 在客戶端掛載。
[root@foundation11 mfs]# mfsmount
[root@foundation11 mfs]# df

在這裏插入圖片描述

  • 在掛載的目錄下新建兩個目錄。
[root@foundation11 mfs]# cd /mnt/mfs/
[root@foundation11 mfs]# mkdir dir1
[root@foundation11 mfs]# mkdir dir2
[root@foundation11 mfs]# mfsgetgoal dir1
[root@foundation11 mfs]# mfsgetgoal dir2    

在這裏插入圖片描述

客戶端數據備份副本數測試

  • 指定掛載在dir1目錄下的文件備份數爲1。
[root@foundation11 mfs]# mfssetgoal -r 1 dir1
[root@foundation11 mfs]# mfsgetgoal dir1/
[root@foundation11 mfs]# cd dir1/
[root@foundation11 dir1]# cp /etc/passwd .
[root@foundation11 dir1]# mfsfileinfo passwd

在這裏插入圖片描述

可以看到我們設置dir1目錄下的副本數爲1,所以此文件只有在server3上備份了1份。

  • 指定掛載在dir2目錄下的文件備份數爲1。
[root@foundation11 mfs]# mfssetgoal -r 2 dir2
[root@foundation11 mfs]# cd dir2/
[root@foundation11 dir2]# cp /etc/fstab .
[root@foundation11 dir2]# mfsfileinfo fstab 

在這裏插入圖片描述

可以看到我們設置dir2目錄下的副本數爲2,所以此文件在server2和sevrver3上各備份了1份。

  • 我們關閉server3的chunk服務,再次查看兩個目錄下文件的可用性情況。
[root@server3 ~]# systemctl stop moosefs-chunkserver

dir2目錄下的文件因爲有2份備份,所以在server2上的數據依然在,文件依然可以查看。
在這裏插入圖片描述
dir1目錄下的文件已經不可見。
在這裏插入圖片描述
注意:當server3的chunk服務再次打開時,兩個目錄下的文件都會恢復,所以dir1目錄下的文件會再次可讀。

客戶端離散存儲的測試

默認chunkserver對數據的備份是按塊來備份的,每一塊備份64KB。

  • 在dir1目錄下:
[root@foundation11 dir1]# dd if=/dev/zero of=file1 bs=1M count=100
[root@foundation11 dir1]# mfsfileinfo file1

在這裏插入圖片描述
可以看到file1被分爲成2份,在server2和server3之間交叉存儲(每個chunk服務器存儲一半數據)。

  • 在dir2目錄下:
[root@foundation11 dir2]# dd if=/dev/zero of=file2 bs=1M count=100
[root@foundation11 dir2]# mfsfileinfo file2

在這裏插入圖片描述
可以看到同樣是交叉存儲,不過file2的兩部分在兩個chunk server上各存了一份。

  • 關閉server3的chunk server服務。
[root@server3 ~]# systemctl stop moosefs-chunkserver
  • 分別在兩個目錄下查看。
[root@foundation11 dir2]# mfsfileinfo file2
[root@foundation11 dir2]# cd ../dir1
[root@foundation11 dir1]# mfsfileinfo file1

在這裏插入圖片描述
關閉服務後可以看到,dir1目錄下只備份一份,所以會有部分數據丟失,而在dir2目錄下沒有數據丟失。
注意:當server3的chunk服務再次打開時,兩個目錄下的文件都會恢復,所以dir1目錄下的文件存在server3的部分會再次可讀。

數據恢復

  • 刪除dir1目錄下的文件。
[root@foundation11 dir1]# ls
file1  passwd
[root@foundation11 dir1]# rm -f passwd
  • 創建恢復數據的目錄,並掛載。
[root@foundation11 mnt]# mkdir /mnt/mfsmeta
[root@foundation11 mnt]# mfsmount -m /mnt/mfsmeta/
[root@foundation11 mnt]# mount  (df看不到,mount可以看到)

在這裏插入圖片描述

  • 掛載後會生成trash目錄,在此目錄下查看已經刪除的文件。
    在這裏插入圖片描述
  • 進入trash目錄,查找文件所在的位置,並進行恢復。
[root@foundation11 mnt]# cd /mnt/mfsmeta/
[root@foundation11 mfsmeta]# cd trash/
[root@foundation11 trash]# find -name *passwd*
[root@foundation11 trash]# cd 004/
[root@foundation11 004]# mv 00000004\|dir1\|passwd undel/

在這裏插入圖片描述

  • 查看,數據恢復成功!
[root@foundation11 004]# cd /mnt/mfs/dir1
[root@foundation11 dir1]# cat passwd

在這裏插入圖片描述
補充:查看已刪除文件在垃圾桶裏默認停留的時間(可以設置)。

[root@foundation11 mfsmeta]# cd /mnt/mfs/dir1
[root@foundation11 dir1]# mfsgettrashtime .
.: 86400

mosefs-master的服務開啓及關閉

  • 正常的開啓與關閉,在/var/lib/mfs目錄下的記錄mfs信息的文件及master的信息記錄的文件 metadata.mfs.back 會變爲metadata.mfs
    在這裏插入圖片描述
  • kill強制關閉服務後 metadata.mfs.back文件不會發生改變,並且使用systemctl命令是無法再次啓動服務的。
    在這裏插入圖片描述
  • 解決如下:查看服務狀態會顯示使用mfsmaster start -a 成功開啓。
    在這裏插入圖片描述
  • 恢復systemctl 啓動服務需要進行如下操作:
[root@server1 mfs]# vim /usr/lib/systemd/system/moosefs-master.service 
編輯第8行:
  8 ExecStart=/usr/sbin/mfsmaster -a
殺掉mfsmaster的進程在重新加載並開啓服務
[root@server1 mfs]# kill -9 16426
[root@server1 mfs]# systemctl daemon-reload
[root@server1 mfs]# systemctl start moosefs-master
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章