MFS分佈式文件系統實戰(二)——搭建基本的MFS文件系統及配置

一、搭建基本的MFS系統

實驗環境

主機名(ip) 角色
server1(172.25.2.1) mfs-master
server2(172.25.2.2) mfs-chunk
server3(172.25.2.3) mfs-chunk
server5(172.25.2.5) mfs-client

1.1 YUM源安裝配置MooseFS系統

在每個節點上

1、添加鍵值

curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS

2、添加YUM源

curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

在這裏插入圖片描述server1上

3、安裝MooseFS組件。

yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y

在這裏插入圖片描述
4、編輯解析文件 /etc/hosts,併發送給其他節點。

scp /etc/hosts server2:/etc/
scp /etc/hosts server3:/etc/
scp /etc/hosts server5:/etc/

在這裏插入圖片描述
5、安裝完,可以看到MFS的配置文件 mfsmaster.cfgmfsexports.cfg

在這裏插入圖片描述

  • mfsexports.cfg:被掛接目錄及權限設置

  • mfsmaster.cfg:主配置文件,凡是用#註釋掉的變量均使用其默認值。

vim /etc/mfs/mfsmaster.cfg
# WORKING_ USER = mfs      #運行master server 的用戶
# WORKING_ GROUP = mfs     #運行master server 的組
# SYSLOG_IDENT = mfsmaster #master server 在syslog 中的標識,說明是由master serve 產生的
# LOCK_MEMORY = 0          #是否執行mlockall()以避免mfsmaster 進程溢出(默認爲0
# NICE_LEVEL = -19         #運行的優先級(如果可以默認是-19; 注意: 進程必須是用root 啓動)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被掛接目錄及其權限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs    #數據存放路徑,此目錄下大致有三類文件,changelog,sessions 和stats;
# BACK_LOGS = 50                        #metadata 的改變log 文件數目(默認是50);
# REPLICATIONS_ DELAY_INIT = 300        #延遲複製的時間(默認是300s);
# REPLICATIONS_ DELAY_DISCONNECT = 3600 #chunkserver 斷開的複製延遲(默認是3600);
# MATOML_LISTEN_HOST = *     #metalogger 監聽的IP 地址(默認是*,代表任何IP)
# MATOML_LISTEN_PORT = 9419 #metalogger 監聽的端口地址(默認是9419)
# MATOCS_LISTEN_ HOST = *   #用於chunkserver 連接的IP 地址(默認是*,代表任何IP);
# MATOCS_LISTEN_PORT = 9420 #用於chunkserver 連接的端口地址(默認是9420);
# MATOCU_LISTEN_HOST = *    #用於客戶端掛接連接的IP 地址(默認是*,代表任何IP)
# MATOCU_LISTEN_PORT = 9421 #用於客戶端掛接連接的端口地址(默認是9421);
# CHUNKS_LOOP_TIME = 300    #chunks 的迴環頻率(默認是:300 秒);# CHUNKS_DEL_LIMIT = 100
# CHUNKS_WRITE_REP_LIMIT = 1 #在一個循環裏複製到一個chunkserver 的最大chunk 數目(默認是1
# CHUNKS_READ_REP_LIMIT = 5  #在一個循環裏從一個chunkserver 複製的最大chunk 數目(默認是5
# REJECT_OLD_ CLIENTS = 0    #彈出低於1.6.0 的客戶端掛接(0 1,默認是0

6、此時,啓動moosefs-mastermoosefs-cgiserv,查看端口發現開啓了9419,9420,9421,9425端口。

systemctl start moosefs-master  #啓動MASTER
netstat -antlupe
systemctl start moosefs-cgiserv  #啓動WEBUI監控服務
netstat -antlupe
  • 9419:metalogger監聽的端口地址
  • 9420:用於chunkserver連接的端口地址
  • 9421:用於客戶端掛接連接的端口地址
  • 9425:監控各個分佈節點的端口

在這裏插入圖片描述
7、在web界面訪問:172.25.2.1:9425,可以看到分佈式文件系統的監控頁面
在這裏插入圖片描述
在server2和server3上,Chunk Server

8、在server2和server3上,真正存儲數據的節點安裝moosefs-chunkserver

yum install moosefs-chunkserver -y

在這裏插入圖片描述

9、安裝之後在兩個節點都會生成一個mfs用戶

在這裏插入圖片描述

10、編輯配置文件mfshdd.cfg,寫入mfs的分區/mnt/chunk1

  • mfshdd.cfg:MFS使用空間配置文件

在這裏插入圖片描述在這裏/mnt/chunk1 是一個給mfs 的分區,但在本機上是一個獨立的目錄,最好是一個單獨的硬盤或者一個raid 卷,最低要求是一個分區。
在這裏插入圖片描述
11、更改目錄/mnt/chunk 的權限,因爲mfschunkserver進程是用mfs運行的

chown -R mfs:mfs /mnt/chunk1

在這裏插入圖片描述
由於 mfschunkserver.cfg chunk配置文件,默認Master爲mfsmaster,且已做解析。

12、開啓chunkserver

systemctl start moosefs-chunkserver
netstat -antlupe  ##開通監控的端口9422


在這裏插入圖片描述
在這裏插入圖片描述
13、此時,在server1上就可以看到,mfsmaster與server2建立了連接

在這裏插入圖片描述
server3同上操作
在這裏插入圖片描述可以看出server2和server3同時通過server1的9420端口與server1進行交互
在這裏插入圖片描述
14、此時,在web監控頁面就可以看到在這裏插入圖片描述

MFS Client

15、在server5上,安裝MFS Client客戶端

yum install moosefs-client -y

在這裏插入圖片描述16、編輯掛載配置文件mfsmount.cfg,寫入掛載點目錄/mnt/mfs並創建。
在這裏插入圖片描述
17、掛載 mfsmount

在這裏插入圖片描述 到此爲止,我們的MFS集羣已經搭建完成。

二、MFS的高級特性

2.1 冗餘goal設置

目標(goal),是指文件被拷貝的份數,設定了拷貝的份數後是可以通過mfsgetgoal 命令來證實的,也可以通過mfsrsetgoal 來改變設定。

mfssetgoal -r 份數 目錄/文件
  • 實際的拷貝份數可以通過mfscheckfilemfsfile info 命令來證實
[root@server5 mfs]# mkdir rr1
[root@server5 mfs]# mkdir rr2
[root@server5 mfs]# ls
rr1  rr2
[root@server5 mfs]# mfssetgoal -r 1 rr1
rr1:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0
[root@server5 mfs]# cd rr1
[root@server5 rr1]# cp /etc/passwd .
[root@server5 rr1]# ls
passwd
[root@server5 rr1]# mfsfileinfo passwd
passwd:
	chunk 0: 0000000000000003_00000001 / (id:3 ver:1)
		copy 1: 172.25.2.3:9422 (status:VALID)
[root@server5 mfs]# mfssetgoal -r 2 rr2
rr2:
 inodes with goal changed:                       0
 inodes with goal not changed:                   1
 inodes with permission denied:                  0
[root@server5 mfs]# cd rr2
[root@server5 rr2]# cp /etc/fstab .
[root@server5 rr2]# ls
fstab
[root@server5 rr2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.2.2:9422 (status:VALID)
		copy 2: 172.25.2.3:9422 (status:VALID)

  • 文件可以有多份copy,當goal爲1時,文件會被隨機存到一臺chunkserver上,當goal的數大於1時,copy會由master調度保存到不同的chunkserver上,goal的大小不要超過chunkserver的數量,否則多出的copy,不會有chunkserver去存。

此時,如果server3宕機,那麼copy到server3上的副本就打不開了。

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

2.2 垃圾回收站

被刪除的文件能夠存放在一個“ 垃圾箱”的時間就是一個隔離時間,用mfsgettrashtime 命令查看,用mfssettrashtime 命令來設置

  • 刪除文件可以通過一個單獨安裝MFSMETA 文件系統。特別是它包含目錄/ trash (包含任然可以被還原的被刪除文件的信息)和/ trash/undel (用於獲取文件)。只有管理員有權限訪問MFSMETA(用戶的uid 0,通常是root)。
[root@server5 ~]# mkdir /mnt/mfsmeta
[root@server5 ~]# mfsmount -m /mnt/mfsmeta
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@server5 ~]# mount
mfsmaster:9421 on /mnt/mfsmeta type fuse.mfsmeta (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
[root@server5 ~]# cd /mnt/mfsmeta
[root@server5 mfsmeta]# ls
sustained  trash
[root@server5 mfsmeta]# cd trash/
[root@server5 trash]# find -name *passwd*
./004/00000004|rr1|passwd
[root@server5 trash]# mv ./004/00000004\|rr1\|passwd undel/
[root@server5 trash]# cd /mnt/mfs
[root@server5 mfs]# ls
rr1  rr2
[root@server5 mfs]# cd rr1
[root@server5 rr1]# ls
passwd
[root@server5 rr1]# 

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

  • 被刪文件的文件名在“垃圾箱”目錄裏還可見,文件名由一個八位十六進制的數i-node 和被刪文件的文件名組成,在文件名和i-node 之間不是用“/”,而是用了“|”替代。如果一個文件名的長度超過操作系統的限制(通常是255個字符),那麼部分將被刪除。通過從掛載點起全路徑的文件名被刪除的文件任然可以被讀寫。
    移動這個文件到trash/undel 子目錄下,將會使原始的文件恢復到正確的MooseFS文件系統上路徑下(如果路徑沒有改變)。 如果在同一路徑下有個新的同名文件,那麼恢復不會成功。從“垃圾箱”中刪除文件結果是釋放之前被它站用的空間(刪除有延遲,數據被異步刪除)。

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

三、MFS的常見問題

3.1 啓動MFS集羣

最安全的啓動MooseFS 集羣(避免任何讀或寫的錯誤數據或類似的問題)的方式是按照以下命令步驟:

  1. 啓動mfsmaster 進程
  2. 啓動所有的mfschunkserver 進程
  3. 啓動mfsmetalogger 進程(如果配置了mfsmetalogger)
  4. 當所有的chunkservers 連接到MooseFS master 後,任何數目的客戶端可以利用mfsmount 去掛接被export 的文件系統。(可以通過檢查master 的日誌或是CGI 監視器來查看是否所有的chunkserver被連接)。

3.2 停止MFS集羣

  1. 在所有的客戶端卸載MooseFS 文件系統(用umount 命令或者是其它等效的命令)
  2. 用mfschunkserver stop 命令停止chunkserver 進程
  3. 用mfsmetalogger stop 命令停止metalogger 進程
  4. 用mfsmaster stop 命令停止master 進程

3.3 MFS Master的恢復

  • 在正常關閉的時候,/var/lib/mfs目錄中會產生metadata.mfs這個文件,這個文件是開啓mfsmaster服務時必備的文件。如果沒有該文件,那麼mfsmaster服務也就起不來。
  • 在正常開啓的時候,/var/lib/mfs目錄中就會產生metadata.mfs.back這個文件。
    修改mfsmaster的啓動腳本
systemctl daemon-reload

在這裏插入圖片描述

發佈了127 篇原創文章 · 獲贊 26 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章