一、MFS的簡單瞭解
1、包含 4 種角色
管理服務器 managing server (master)
元數據日誌服務器 Metalogger server(Metalogger)
數據存儲服務器 data servers (chunkservers)
客戶機掛載使用 client computers
2、各種角色作用
管理服務器:負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝。
元數據日誌服務器: 負責備份 master 服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在 master server 出問題的時候接替其進行工作。
數據存儲服務器:負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸。
客戶端: 通過 fuse 內核接口掛接遠程管理服務器上所管理的數據存儲服務器,看起來共享的文件系統和本地 unix 文件系統使用一樣的效果。
3、MFS 讀寫原理
二、MFS環境的簡單部署
實驗環境rhel6.5 selinux and iptables disabled
Server1 master 172.25.70.1
Server2 chunkserver 172.25.70.2
Server3 chunkserver 172.25.70.3
foundation70(真機) Client 172.25.254.70
1、主控服務器 Master server 安裝
所需rpm包
moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm
moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm
moosefs-master-3.0.97-1.rhsysv.x86_64.rpm
安裝
[root@server1 ~]# yum install moosefs-cgi-3.0.97-1.rhsysv.x86_64.rpm moosefs-cgiserv-3.0.97-1.rhsysv.x86_64.rpm moosefs-master-3.0.97-1.rhsysv.x86_64.rpm
使用mfs分佈式文件系統需要做好解析(這裏我們設置master所在的主機server1爲mfsmaster)
[root@server1 ~]# vim /etc/hosts
啓動服務:
[root@server1 ~]# /etc/init.d/moosefs-cgiserv start
[root@server1 ~]# /etc/init.d/moosefs-master start
查看端口偵聽情況
用於 chunkserver 連接的端口地址(默認是 9420)
metalogger 監聽的端口地址(默認是 9419)
用於客戶端掛接連接的端口地址(默認是 9421)
MFS master web 界面監聽端口,查看整體運行狀態(默認是 9425)
2、客戶端可以對mfsmaster進行訪問,但是在這之前需要做好本地解析
[root@foundation70 ~]# vim /etc/hosts
172.25.70.1 server1 mfsmaster
訪問mfsmaster的ip+9425 這裏是(172.25.70.1:9425)
3、chunkserver的安裝(在server2和server3上)
所需rpm包:
moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm
[root@server2 ~]# yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm -y
[root@server3 ~]# yum install moosefs-chunkserver-3.0.97-1.rhsysv.x86_64.rpm -y
server2和server3都添加本地解析
vim /etc/hosts
172.25.70.1 server1 mfsmaster
在啓動chunkserver之前,需要定義mfs共享點,在這裏我們設置該共享點爲/mnt/chunk1(server1),/mnt/chunk2(serevr2)
在server2和server3上都進行下面操作
mkdir /mnt/chunk1
mkdir /mnt/chunk2
[root@server2 ~]# chown mfs.mfs /mnt/chunk1/ 需要確保用戶mfs對該共享點有權限讀寫
[root@server2 ~]# vim /etc/mfs/mfshdd.cfg
/mnt/chunk1 #在配置文件末尾定義mfs共享點
[root@server3 ~]# chown mfs.mfs /mnt/chunk2/
[root@server3 ~]# vim /etc/mfs/mfshdd.cfg
/mnt/chunk2 #在配置文件末尾定義mfs共享點
啓動chunkserver(在server2和server3上)
mfschunkserver start
如下圖:
4、在client端再次訪問9425端口
應該可以看見這個 MooseFS 系統的全部信息,包括主控 master 和存儲服務 chunkserver
5、客戶端 client 安裝
所需rpm包
moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm
安裝
[root@foundation70 moosefs6.5]# yum install moosefs-client-3.0.97-1.rhsystemd.x86_64.rpm -y
掛載
[root@foundation70 ~]# cd /etc/mfs/
[root@foundation70 mfs]# vim mfsmount.cfg #定義客戶端默認掛載
/mnt/mfs
[root@foundation70 mnt]# mkdir mfs
[root@foundation70 mnt]# useradd mfs
[root@foundation70 mnt]# chown mfs:mfs /mnt/mfs/
[root@foundation70 ~]# mfsmount #成功掛載
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
6、MFS 測試
在 MFS 掛載點下創建兩個目錄,並設置其文件存儲份數
[root@foundation70 mfs]# mkdir dir1 dir2
[root@foundation70 mfs]# mfssetgoal -r 2 dir1/ #設置在 dir1 中文件存儲份數爲兩個,默認是一個。
[root@foundation70 mfs]# mfsgetgoal dir1/ #獲取文件存儲份數
dir1/: 2
You have new mail in /var/spool/mail/kiosk
[root@foundation70 mfs]# mfsgetgoal dir2/ #獲取文件存儲份數
dir2/: 1
注意:對一個目錄設定 “ goal”,此目錄下的新創建文件和子目錄均會繼承此目錄的設定,但不會改變已經存在的文件及目錄的 copy 份數。但使用-r 選項可以更改已經存在的 copy 份數
#拷貝/etc/passwd這份文件分別到兩個目錄上
[root@foundation70 mfs]# cp /etc/passwd dir1
[root@foundation70 mfs]# cp /etc/passwd dir2
[root@foundation70 mfs]# mfscheckfile dir1/passwd
dir1/passwd:
chunks with 2 copies: 1
[root@foundation70 mfs]# mfsfileinfo dir1/passwd #查看dir1下文件信息
[root@foundation70 mfs]# mfscheckfile dir2/passwd
dir2/passwd:
chunks with 1 copy:
[root@foundation70 mfs]# mfsfileinfo dir2/passwd #查看dir2下文件信息
關閉 mfschunkserver3 後再查看文件信息
由於dir1/的文件存儲份數是2,本身存儲在chunkserver2上,dir2/的文件存儲份數是1,本身存儲在chunkserver3上,當我們把server3上的chunkserver關閉,那麼dir1/下的文件仍可以查看,因爲存儲份數是2的緣故,dir2/下的文件就不能查看。
7、恢復垃圾箱文件
[root@foundation70 mfs]# rm -rf dir1/passwd
[root@foundation70 mfs]# mfsgettrashtime dir1/ #文件刪除後存放在 “ 垃圾箱 ” 中的時間稱爲隔離時間, 這個時間可以用 mfsgettrashtime 命令來查看,用 mfssettrashtime 命令來設置,單位爲秒,默認爲 86400 秒。
dir1/: 86400
[root@foundation70 mfs]# mkdir /mnt/mfsmeta
[root@foundation70 mfs]# mfsmount -m /mnt/mfsmeta/ -H mfsmaster #掛載 MFSMETA 文件系統,它包含目錄 trash (包含仍然可以被還原的刪除文件的信息)和trash/undel (用於獲取文件)。把刪除的文件,移到/ trash/undel 下,就可以恢復此文件。
[root@foundation70 mfs]# cd /mnt/mfsmeta/
You have new mail in /var/spool/mail/kiosk
[root@foundation70 mfsmeta]# ls
sustained trash
[root@foundation70 mfsmeta]# cd trash/ #進入trash,該目錄下有很多文件
[root@foundation70 mfsmeta]# find -type f #我們要恢復的文件類型爲普通文件
./004/00000004|dir1|passwd
[root@foundation70 trash]# mv 00000004\|dir1\|passwd undel/ #將需要恢復的文件移動到undel目錄下,注意書寫格式
成功恢復
[root@foundation70 trash]# cd /mnt/mfs/dir1/
[root@foundation70 dir1]# ls
passwd