(1)分佈式原理
分佈式文件系統( Distributed File System)是指文件系統管理的物理存儲資源不必定直接鏈接在本地節點上,而是經過計算機網絡與節點相連。簡單來講,就是把一些分散的(分佈在局域網內各個計算機上)共享文件夾,集合到一個文件夾內(虛擬共享文件夾)。對於用戶來講,要訪問這些共享文件夾時,只要打開這個虛擬共享文件夾,就能夠看到全部連接到虛擬共享文件夾內的共享文件夾,用戶感受不到這些共享文件
是分散於各個計算機上的。分佈式文件系統的好處是集中訪問、簡化操做、數據容災,以及提升文件的存取性能。c++
(2)MFS原理
MFS是一個具備容錯性的網絡分佈式文件系統,它把數據分散存放在多個物理服
務器上,而呈現給用戶的則是一個統一的資源。vim1)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】ide
MFS雖然有單點故障的可能性缺點,但也有不少比較好的特色好比:
一、高可靠(數據的多個拷貝被存儲在不一樣的計算機上)
二、經過附加新的計算機或者硬盤能夠實現容量的動態擴展
三、刪除的文件能夠根據一個可配置的時間週期進行保留(一個文件系統級別的回收站)
四、不受訪問和寫入影響的文件連貫快照性能
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 |
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的單獨操做
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
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服務器取得該文件。
請特別注意這個文件,它與日誌文件一塊兒,纔可以恢復整個被損壞的分佈式文件系統。
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
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掛載到客戶端
Client操做:
1.爲了能夠直接使用mfsmount這條命令,進行環境變量的修改。
編輯環境變量:
vim /etc/profile
#末尾插入一行: export PATH=/usr/local/mfs/bin:$PATH 添加完成後保存退出
啓動監控:
/usr/local/mfs/sbin/mfscgiserv
輸入Master Server地址進入監控
http://192.168.233.128:9425