企業實用——MFS網絡分布式文件系統
(1)分布式原理
分布式文件系統( Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。簡單來說,就是把一些分散的(分布在局域網內各個計算機上)共享文件夾,集合到一個文件夾內(虛擬共享文件夾)。對於用戶來說,要訪問這些共享文件夾時,只要打開這個虛擬共享文件夾,就可以看到所有鏈接到虛擬共享文件夾內的共享文件夾,用戶感覺不到這些共享文件
是分散於各個計算機上的。分布式文件系統的好處是集中訪問、簡化操作、數據容災,以及提高文件的存取性能。
(2)MFS原理
MFS是一個具有容錯性的網絡分布式文件系統,它把數據分散存放在多個物理服
務器上,而呈現給用戶的則是一個統一的資源。
> 1)MFS文件系統的組成。
- 元數據服務器( Master):一臺管理整個文件系統的獨立主機,在整個體系中負責管理文件系統,維護元數據。(文件的大小、屬性、位置信息,包括所有非常規文件的所有信息,例如目錄、套接字、管道以及設備文件)
- 元數據日誌服務器( MetaLogger):備份 Master服務器的變化日誌文件,文件類型為 changelog ml。*mfs當 Master服務器數據丟失或者損壞時,可以從日誌服務器中取得文件,進行恢復。
- 數據存儲服務器( Chunk server
):真正存儲數據的服務器。存儲文件時,會把文件分塊保存,並在數據服務器之間進行復制。數據服務器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。- 客戶端( Client):可以像掛載NFS一樣掛載MFS文件系統,其操作是相同的。
> MFS文件系統的組成架構如圖所示。2)MFS讀取數據的處理過程
- 客戶端向元數據服務器發出讀請求。
- 元數據服務器把所需數據存放的位置( Chunk Server的P地址和 Chunk編號)告知客戶端。
- 客戶端向已知的 Chunk server請求發送數據
- Chunk Server向客戶端發送數據。
3)MFS寫入數據的處理過程
- 客戶端向元數據服務器發送寫入請求
- 元數據服務器與 Chunk Server進行交互(只有當所需的分塊 Chunks存在的時候才進行這個交互),但元數據服務器只在某些服務器創建新的分塊Chunks,創建成功後由 Chunk servers告知元數據服務器操作成功。
- 元數據服務器告知客戶端,可以在哪個 Chunk Server的哪些 Chunks寫入數據。
- 客戶端向指定的 Chunk server寫入數據。
- 該 Chunk Server與其他 Chunk Server進行數據同步,同步成功後 ChunkServer告知客戶端數據寫入成功
- 客戶端告知元數據服務器本次寫入完畢
---------------------案例實驗----------------------
概述
公司之前的圖片服務器采用的是NFS,隨著業務量增加,多臺服務器通過NFS方式共享一個服務器的存儲空間,使得NFsS服務器不堪重負,經常出現超時問題。而且NFS存在著單點故障問題,盡管可以rsync同步數據到另外一臺服務器上做NFS服務的備份,但這對提高整個系統的性能並無幫助。基於目前的需求,我們需要對NFS服務器進行優化或采取別的解決方案,然而優化並不能應對日益增多的客戶端的性能要求,因此選擇的解決方案是采用分布式文件系統。采用分布式文件系統後,服務器之間的數據訪問不再是一對多的關系,而是多對多的關系,這樣可以使性能得到大幅提升。
在當前多種常用的分布式文件系統中,我們采用了MFS( MooseFS)。
>[需要註意:MFS的MasterServer管理節點只有一個,也有可能會出現單點故障,後續我會寫出解決方案FastDFS】MFS雖然有單點故障的可能性缺點,但也有很多比較好的特點比如:
1、高可靠(數據的多個拷貝被存儲在不同的計算機上)
2、通過附加新的計算機或者硬盤可以實現容量的動態擴展
3、刪除的文件可以根據一個可配置的時間周期進行保留(一個文件系統級別的回收站)
4、不受訪問和寫入影響的文件連貫快照
MFS正式推出是在2008年5月,它是一個具有容錯功能的、高可用、可擴展的海量級分布式文件系統。MFS把數據分散在多臺服務器上,但用戶看到的只是一個源。MFS也像其他類UNX文件系統一樣,包含了層級結構和文件屬性,可以創建特殊的文件(塊設備、字符設備、管道、套接字)、符號鏈接和硬鏈接。
實驗環境:
主機 | 操作系統 | IP地址 | 軟件安裝 |
---|---|---|---|
Master Server | CentOS 7 | 192.168.233.128 | mfs-1.6.27-5.tar.gz |
MetaLogger Server | CentOS 7 | 192.168.233.6 | mfs-1.6.27-5.tar.gz |
Chunk Server 1 | CentOS 7 | 192.168.233.4 | mfs-1.6.27-5.tar.gz |
Chunk Server 2 | CentOS 7 | 192.168.233.10 | mfs-1.6.27-5.tar.gz |
Client | CentOS 7 | 192.168.233.11 | mfs-1.6.27-5.tar.gz fuse-2.9.2.tar.gz |
軟件包 | 百度網盤 |
---|---|
mfs-1.6.27-5.tar.gz | 鏈接:https://pan.baidu.com/s/1-l0ZEisWmlGT2aNqR2nGaw 密碼:e98v |
fuse-2.9.2.tar.gz | 鏈接:https://pan.baidu.com/s/1rZPOnsVISzu0Z0aucr7J7g 密碼:71si |
一、Master Server和MetaLogger Server共同步驟:
1.關閉防火墻
#關閉防火墻
systemctl stop firewalld.service
setenforce 0
2.安裝環境
yum install gcc gcc-c++ zlib-devel -y
3.創建MFS程序用戶
useradd -s /sbin/nologin mfs
4.解壓縮MFS文件
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
5.安裝設置
cd /opt/mfs-1.6.27/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
6.編譯安裝
make && make install
7.復制元數據文件
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
接下來是Master Server和MetaLogger Server的單獨操作
二、Master Server操作
1.復制配置模板,從而開啟功能
cd /usr/local/mfs/etc/mfs/
[root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg #權限配置文件
[root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg #master配置文件
[root@localhost mfs]# cp mfstopology.cfg.dist mfstopology.cfg #本服務器的日誌文件
2.啟動主服務器服務:
/usr/local/mfs/sbin/mfsmaster start
3.查看下mfsmaster服務是否開啟
ps -ef | grep mfs
三、MetaLogger Server操作
1.復制配置模板,從而開啟功能
cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
2.修改mfs日誌服務配置文件
[root@localhost mfs]# vim mfsmetalogger.cfg
....以上內容忽略
MASTER_HOST = 192.168.233.128 #修改並指向Master Server的地址
#MASTER_PORT = 9419
....以下內容忽略
修改完成後保存退出
3.啟動MetaLogger Server服務器服務
/usr/local/mfs/sbin/mfsmetalogger start
4.查看下服務是否開啟
[root@localhost mfs]# ps -ef | grep mfs
日誌服務器服務開啟
需要註意:
默認為24小時,即每隔一天從元數據服務器Master下載一個metadata.mfs.back 文件。
當元數據服務器關閉或者出故障時,matedata.mfs.back 文件將消失,
那麽要恢復整個mfs, 則需從 metalogger服務器取得該文件。
請特別註意這個文件,它與日誌文件一起,才能夠恢復整個被損壞的分布式文件系統。
四、Chunk Server 1和2共同操作
1.安裝環境
yum install gcc gcc-c++ zlib-devel -y
2.創建MFS程序用戶
useradd -s /sbin/nologin mfs
3.解壓縮文件
tar zxvf mfs-1.6.27-5.tar.gz -C /opt
4.安裝設置
cd /opt/mfs-1.6.27/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
5.編譯安裝
make && make install
6.復制配置模板,從而開啟功能
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
7.修改mfschunk配置文件
vim mfschunkserver.cfg
....以上內容忽略
#BIND_HOST = *
MASTER_HOST = 192.168.233.128 #修改並指向Master Server的地址
#MASTER_PORT = 9420
....以下內容忽略
修改完成後保存退出
8.修改配置文件
vim mfshdd.cfg
....以上內容忽略
#/mnt/hd1
#/mnt/hd2
#etc.
/data #添加文件目錄
~
修改完成後保存退出
9.創建文件目錄,並且更改屬主屬組
mkdir /data
chown -R mfs.mfs /data
10.開啟服務
/usr/local/mfs/sbin/mfschunkserver start
11.查看服務開啟
ps -ef | grep mfs
五、Client 操作
1.關閉防火墻
systemctl stop firewalld.service
setenforce 0
2.安裝環境
yum install gcc gcc-c++ zlib-devel -y
3.解壓縮fuse
tar zxvf fuse-2.9.2.tar.gz -C /opt/
4.編譯安裝
cd /opt/fuse-2.9.2/
./configure
make && make install
5.編輯環境變量
vim /etc/profile
#在末尾插入一行:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
添加完成後保存退出
source /etc/profile
6.安裝mfs
cd ~
useradd -s /sbin/nologin mfs #創建mfs程序用戶
tar zxvf mfs-1.6.27-5.tar.gz -C /opt #解壓縮文件
7.編譯安裝mfs
cd /opt/mfs-1.6.27/
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
make && make install
8.加載Fuse內核
mkdir /opt/mfs #創建掛載目錄
modprobe fuse #加載fuse內核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.233.128 #Master Server掛載到客戶端
PS:優化客戶端操作
Client操作:
1.為了可以直接使用mfsmount這條命令,進行環境變量的修改。
編輯環境變量:
vim /etc/profile
#末尾插入一行:
export PATH=/usr/local/mfs/bin:$PATH
添加完成後保存退出
-----------在Master Server上啟動監控程序-----------
啟動監控:
/usr/local/mfs/sbin/mfscgiserv
輸入Master Server地址進入監控
http://192.168.233.128:9425
企業實用——MFS網絡分布式文件系統