1)MFS 文件系統的組成
2)MFS 讀寫數據的處理過程
3)MFS 搭建案例環境
4)MFS 搭建過程詳解
5)MFS 監控
6)文章總結node
MooseFS是一個具備容錯性的網絡分佈式文件系統。它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。python
獨有特徵:
一、高可靠(數據的多個拷貝被存儲在不一樣的計算機上)
二、經過附加新的計算機或者硬盤能夠實現容量的動態擴展
三、刪除的文件能夠根據一個可配置的時間週期進行保留(一個文件系統級別的回收站)
四、不受訪問和寫入影響的文件連貫快照c++
體系機構
一、管理服務器(master server)
一臺管理整個文件系統的獨立主機,存儲着每一個文件的元數據(文件的大小、屬性、位置信息,包括全部很是規文件的全部信息,例如目錄、套接字、管道以及設備文件)
二、數據服務器羣(chunk servers)
任意數目的商用服務器,用來存儲文件數據並在彼此之間同步(若是某個文件有超過一個備份的話)
三、元數據備份服務器(metalogger server)
任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外中止時好接替其位置。
四、訪問mfs的客戶端
任意數量的主機,能夠經過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。vim
MFS 文件系統組成架構圖以下:瀏覽器
1·MFS 讀取數據的處理過程:服務器
以下圖:網絡
2·MFS 寫入數據的處理過程:session
以下圖:架構
分佈式原理:app
分佈式文件系統,就是把一些分散的 (分佈在局域網內各個計算機上)共享文件夾,集合到一個文件夾內(虛擬共享文件夾)。對於用戶來講,要訪問這些共享文件夾時,只要打開它就能夠看到全部連接到虛擬共享文件夾內的共享文件夾,用戶時感受不到這些時分散各個計算機的。它的好處是:集中訪問、簡化操做、數據容災,以及提升文件的存儲性能。
案例拓撲圖:
此篇文章是使用五臺服務器模擬搭建MFS文件系統,以下圖:
案例表格:
主機 操做系統 IP 地址 主要軟件 Master Server CenOS 7.4 192.168.154.128 mfs-1.6.27-5.tar.gz MetaLogger Server CenOS 7.4 192.168.154.136 mfs-1.6.27-5.tar.gz Chunk Server 1 CenOS 7.4 192.168.154.131 mfs-1.6.27-5.tar.gz Chunk Server 2 CenOS 7.4 192.168.154.132 mfs-1.6.27-5.tar.gz Client CenOS 7.4 192.168.154.130 mfs-1.6.27-5.tar.gz 、 fuse-2.9.2.tar.gz
源碼包下載:
MFS 源碼包 百度網盤連接 密碼:x4v5
部署(Master Server)
1·部署元數據服務器 (Master Server),下載源碼包、關閉防火牆、安裝依賴包
[root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y [root@localhost Y2C]# systemctl stop firewalld.service [root@localhost Y2C]# setenforce 0
2·建立 mfs 管理用戶
[root@localhost Y2C]# useradd -s /sbin/nologin -M mfs
3·解壓、安裝源碼包
[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt/ [root@localhost Y2C]# cd /opt/mfs-1.6.27 [root@localhost mfs-1.6.27]# ./configure \ --prefix=/usr/local/mfs \ #指定安裝路徑 --with-default-user=mfs \ #指定默認用戶爲 mfs --with-default-group=mfs \ #指定默認組爲 mfs 組 --disable-mfschunkserver \ #關閉 數據存儲服務器 --disable-mfsmount #關閉客戶端掛載功能 [root@localhost mfs-1.6.27]# make && make install
4·把配置文件模板複製爲配置文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs [root@localhost mfs]# cp mfsexports.cfg.dist mfsexports.cfg [root@localhost mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg [root@localhost mfs]# cp mfstopology.cfg.dist mfstopology.cfg [root@localhost mfs]# cd /usr/local/mfs/var/mfs [root@localhost mfs]# cp metadata.mfs.empty metadata.mfs
5·以上配置文件無需修改就直接可使用,如今能夠啓動 Master Server
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster start #啓動mfs服務 working directory: /usr/local/mfs/var/mfs lockfile created and locked initializing mfsmaster modules ... loading sessions ... file not found if it is not fresh installation then you have to restart all active mounts !!! exports file has been loaded mfstopology: incomplete definition in line: 7 mfstopology: incomplete definition in line: 7 mfstopology: incomplete definition in line: 22 mfstopology: incomplete definition in line: 22 mfstopology: incomplete definition in line: 28 mfstopology: incomplete definition in line: 28 topology file has been loaded loading metadata ... create new empty filesystemmetadata file has been loaded no charts data file - initializing empty charts master <-> metaloggers module: listen on *:9419 master <-> chunkservers module: listen on *:9420 main master server module: listen on *:9421 mfsmaster daemon initialized properly
[root@localhost mfs]# ps -ef | grep mfs #檢查服務是否啓動 mfs 46007 1 0 11:21 ? 00:00:00 /usr/local/mfs/sbin/mfsmaster start
中止 Master Server 的命令是:[root@localhost mfs]# /usr/local/mfs/sbin/mfsmaster stop
部署 MetaLogger Server。和Master Server是同樣的過程
1·下載源碼包、關閉防火牆、安裝依賴包
[root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y [root@localhost Y2C]# systemctl stop firewalld.service [root@localhost Y2C]# setenforce 0
2·建立管理用戶、解壓、安裝源碼包
[root@localhost Y2C]# useradd -s /sbin/nologin -M mfs [root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt [root@localhost Y2C]# cd /opt/mfs-1.6.27 [root@localhost mfs-1.6.27]# ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfsmount [root@localhost mfs-1.6.27]# make && make install
3·把配置文件模板,複製爲配置文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs [root@localhost mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
4·修改 mfsmetalogger.cfg 配置文件
[root@localhost mfs]# vim mfsmetalogger.cfg 修改內容以下: MASTER_HOST = 192.168.154.128 #這裏 IP地址須要指向 Master Server 的 IP地址
5·啓動 MfsmetaLogger Server 服務
[root@localhost mfs]# /usr/local/mfs/sbin/mfsmetalogger start [root@localhost mfs]# ps -elf |grep mfs #查看服務是否啓動 5 S mfs 41488 1 0 61 -19 - 2967 poll_s 11:46 ? 00:00:00 /usr/local/mfs/sbin/mfsmetalogger start 0 S root 41508 1387 0 80 0 - 28180 - 11:48 pts/0 00:00:00 grep --color=auto mfs
部署 Chunk Server
此文章是兩臺 Chunk Server 服務器,每臺的搭建步驟是相同的 。
1· 下載源碼包、關閉防火牆、安裝依賴包
[root@localhost Y2C]# systemctl stop firewalld.service [root@localhost Y2C]# setenforce 0 [root@localhost Y2C]# yum install gcc gcc-c++ zlib-devel -y
2·建立管理用戶 mfs 、解壓、安裝源碼包
[root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt [root@localhost Y2C]# cd /opt/mfs-1.6.27 [root@localhost mfs-1.6.27]# useradd -s /sbin/nologin -M mfs [root@localhost mfs-1.6.27]# ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfsmaster \ --disable-mfsmount [root@localhost mfs-1.6.27]# make && make install
3·複製配置文件模板爲配置文件
[root@localhost mfs-1.6.27]# cd /usr/local/mfs/etc/mfs [root@localhost mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg [root@localhost mfs]# cp mfshdd.cfg.dist mfshdd.cfg
4·修改chunk server 配置文件
[root@localhost mfs]# vim mfschunkserver.cfg 修改內容以下: MASTER_HOST = 192.168.154.128 #須要指向 Master Server 服務器IP地址
[root@localhost mfs]# vim mfshdd.cfg 添加以下內容: /data #這裏添加的 /data 是一個給 MFS 的分區,生產環境中最好使用獨立的分區或磁盤掛載到此目錄
5·建立 /data 目錄、給予管理用戶權限、啓動服務
[root@localhost mfs]# mkdir /data [root@localhost mfs]# chown -R mfs.mfs /data [root@localhost mfs]# /usr/local/mfs/sbin/mfschunkserver start [root@localhost mfs]# netstat -antp | grep mfschunkserve #查看啓動狀態
部署 Client 客戶端
1·另外一臺 mfschunk server 安裝配置都是相同,這裏就再也不重複介紹。如今開始部署 Client 客戶端。關閉防火牆、下載源碼包、安裝依賴包
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# yum install gcc gcc-c++ zlib-devel -y
2· 解壓 、 安裝軟件包 fuse
[root@localhost Y2C]# tar zxvf fuse-2.9.2.tar.gz -C /opt #MFS 客戶端依賴於 fuse 因此這裏須要先安裝 fuse 這個包 [root@localhost Y2C]# cd /opt/fuse-2.9.2 [root@localhost fuse-2.9.2]# ./configure [root@localhost fuse-2.9.2]# make && make install
設置環境變量: [root@localhost ~]# vim /etc/profile 加入如下環境變量: export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
加載環境變量配置文件: [root@localhost ~]# source /etc/profile
3·建立管理用戶 mfs ,解壓 mfs 源碼包、安裝
[root@localhost Y2C]# useradd -s /sbin/nologin mfs [root@localhost Y2C]# tar zxvf mfs-1.6.27-5.tar.gz -C /opt [root@localhost mfs-1.6.27]# ./configure \ --prefix=/usr/local/mfs \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfsmaster \ --disable-mfschunkserver \ --enable-mfsmount #開啓客戶端掛載功能 [root@localhost mfs-1.6.27]# make && make install
4·建立掛載點、加載內核模塊、掛載MFS
[root@localhost mfs-1.6.27]# mkdir /opt/mfs [root@localhost mfs-1.6.27]# modprobe fuse [root@localhost mfs-1.6.27]# /usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.154.128 # -H 指定元數據服務器 IP地址 mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
5·查看掛載是否成功:
[root@localhost mfs-1.6.27]# df -h
6· MFS 經常使用操做
MFS 在客戶端安裝完畢後,會生成 /usr/local/mfs/bin/ 目錄,在這個目錄下會生成不少命令是用戶所須要的,爲了方便,能夠將 /usr/local/mfs/bin 加入環境變量中
[root@localhost mfs-1.6.27]# vim /etc/profile 加入以下內容: export PATH=/usr/local/mfs/bin:$PATH [root@localhost mfs-1.6.27]# source /etc/profile #從新加載環境變量配置文件
7· mfsgetgoal 命令用來查詢文件被複制的分數,利用 -r 命能夠對整個目錄進行遞歸,goal 是指文件被複制份數
[root@localhost mfs-1.6.27]# mfsgetgoal -r /opt/mfs /opt/mfs: directories with goal 1 :
8·mfssetgoal 命令用來設置文件被複制的份數,生產環境 Chunk Server 節點數量應該大於2,文件副本數小於等於 Chunk Server 服務器的數量。
[root@localhost mfs-1.6.27]# mfssetgoal -r 2 /opt/mfs /opt/mfs: inodes with goal changed: 1 inodes with goal not changed: 0 inodes with permission denied: 0
[root@localhost mfs-1.6.27]# mfsgetgoal -r /opt/mfs /opt/mfs: directories with goal 2 :
9·建立測試文件
[root@localhost mfs-1.6.27]# cd /opt/mfs [root@localhost mfs]# echo "this is test" > test.txt
Mfscgiserv 是用 python 編寫的一個Web 服務器,其監聽端口是 9425 ,能夠在 Master Server 上經過命令 /usr/local/mfs/sbin/mfscgiserv 來啓動,用戶利用瀏覽器就能夠全面監控全部客戶掛載、chunk server、master server,以及客戶端的各類操做等。
在 Master Server 上經過命令 /usr/local//mfs/sbin/mfscgiserv 啓動監控,經過瀏覽器訪問
http://192.168.154.128:9425/mfs.cgi 。以下圖:
下表是對 MFS 監控 的含義說明:
功能 含義 Info 顯示 MFS 的基本信息 Servers 列出現有 Chunk Server Disks 列出現有 Chunk Server 的硬盤信息 Exports 列出可被掛載的目錄 Mounts 列出被掛載的目錄 operations 顯示正在執行的操做 Resources 列出當前存儲信息 Quotas 列出當前配額信息 Master Charts 顯示Master Server的操做狀況。如:讀、寫 Server Charts 顯示 Chunk server 的操做狀況。數據傳輸率及系統狀態