1. 程式人生 > >linux mfs分布式文件系統

linux mfs分布式文件系統

根據 oal mar oca sha work mac os 子目錄 ln -s

mosefs介紹:

mooseFS(moose 駝鹿)是一款網絡分布式文件系統。它把數據分散在多臺服務器上,但對於用戶來講,看到的只是一個源。MFS也像其他類UNIX文件系統一樣,包含了層級結構(目錄樹),存儲著文件屬性(權限、最後訪問和修改時間),常見特殊的文件(塊設備、字符設備、管道、套接字),符號鏈接,硬鏈接。
MooseFS[MFS]是一個具有容錯性的網絡分布式文件系統。它把數據分散存放在多個物理服務器上,但呈現給用戶的則是一個統一的資源
當我們存儲服務器的容量達到瓶頸之後,那我們就需要采用分布式的文件系統來擴大存儲容量,類似與百度雲的存儲,也是采用分布式存儲。

MFS特征:

?1、層析結構(目錄樹)

2、存儲文件屬性(權限、訪問和修改時間)
3、支持特殊文件(塊設備,字符設備,管道)
4、符號鏈接,軟硬鏈接
5、對文件系統訪問可以通過IP地址或者密碼進行訪問限制
6、高可靠(數據的多個拷貝存儲在不同的計算機上)
7、通過附加新的計算機或者硬盤可以實現容量的動態擴展
8、刪除文件可以根據一個可配置的時間周期進行保留
9、不受訪問和寫入影響的文件連貫快照

應用場景:

分布式文件系統的應用場景
1、大規模高並發的數據存儲及訪問(小文件,大文件)
2、大規模的數據處理,如日誌分析

moosefs.com官網

官方網站:https://moosefs.com

MFS分布式文件系統部署方案:

Moosefs是一種分布式文件系統,MooseFS文件系統結構包括以下四種角色:

1、管理服務器 managing server(master)
負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復,多節點拷貝
?
2、元數據日誌服務器 Metalogger Server(Metalogger)
負責備份master服務器的變化日誌文件,文件類型為changelog_ml.*.mfs,以便於在master server出問題的時候接替其進行工作。
?
3、數據存儲服務器data servers(chunk servers)
聽從管理服務器調度,提供存儲空間,並為客戶提供數據傳輸。真正存儲用戶數據的服務器。
存儲文件時,首先把文件分出塊,然後這些塊在數據服務區chunk server之間復制(復制份數可以手工指定,建議設置副本數為3)。數據服務器可以是多個,並且數量越多,可使用的“磁盤空間”越大,可靠性也越高。
?
4、客戶機掛載使用client computers
客戶端掛載遠程mfs服務器共享出的存儲並使用。
通過fuse內核接口掛載進程管理服務器上所管理的數據存儲服務器共享出的硬盤。
共享的文件系統的用法和nfs相似。
使用MFS文件系統來存儲和訪問的主機稱為MFS的客戶端,成功掛載MFS文件系統以後,就可以像以前使用NFS一樣共享這個虛擬性的存儲了

分布式文件系統原理:

分布式文件系統是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。就是把一些分散的(分布在局域網內各個計算機上)共享文件夾,集合到一個文件夾內(虛擬共享文件夾)。對於用戶來說,要訪問這些共享文件夾時,只要打開這個虛擬共享文件夾,就可以看到所有鏈接到虛擬共享文件夾內的共享文件夾,用戶感覺不到這些共享文件是分散於各個計算機上的。

分布式文件系統優勢:

集中訪問
簡化操作
數據容災
提高文件存取性能、在線擴容

MFS讀取數據原理:

1.客戶端向元數據服務器發出讀請求
2.元數據服務器把所需數據存放的位置(Chunk Servert的IP地址和Chunk編號)告知客戶端
3.客戶端向己知的Chunk Serve請求發送數據
4.Chunk Server向客戶端發送數據

mfs工作過程:

1.客戶端向元數據服務器發送寫請求
2.元數據服務器與Chunk Server進行交互(只有當所需的分塊Chunks存在的時候才進行這個交互),但元數據服務器只在某些服務器創建新的分塊Chunks,創建完告知元數據服務器操作成功
3.元數據服務器告知客戶端,可以在哪個Chunk Server的哪些Chunks寫入數據
4.客戶端向指定的Chunk Server寫入數據
5.該Chunk Serve與其他Chunk Serve進行數據同步,之後Chunk Server告知客戶端數據寫入成功
6.客戶端告知元數據服務器本次寫入完畢

服務端口號:

9420:MFS master和MFS chunk通信端口
9421:MFS master和MFS client端通信端口
9419:MFS master和MFS metalogger端通信端口
9422:MFS chunk和MFS client端通信端口
9425:MFS master web界面監聽端口,查看整體運行狀態

系統環境

關閉防火墻
systemctl stop firewalld
需要六臺服務器如下
主機 操作系統 ip地址 軟件包
master centos7.4 192.168.80.100 mfs
metalogger centos7.4 192.168.80.101 mfs
chunk01 centos7.4 192.168.80.102 mfs
chunk02 centos7.4 192.168.80.103 mfs
chunk03 centos7.4 192.168.80.104 mfs
client centos7.4 192.168.80.105 mfs、fuse

首先搭建master server:
安裝相關編譯器,工具包(所有服務器都得安裝)

yum install gcc gcc-c++ make zlib-devel fuse-devel -y
yum install unzip -y //解壓工具

創建mfs進程用戶(所有服務器都得創建)

useradd -M -s /sbin/nologin mfs

安裝mfs軟件包

unzip moosefs-master.zip -d /opt

編譯安裝

cd /opt/moosefs-master
定制:
./configure --prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs
編譯及編譯安裝:
make && make install

修改相關文件信息:

cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.sample mfsexports.cfg #輸出目錄配置文件,定義掛載以及權限設定文件
cp mfsmaster.cfg.sample mfsmaster.cfg #主配置文件
cp mfstopology.cfg.sample mfstopology.cfg #元數據日誌文件
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs #master元數據文件
?

詳細解析配置文件

cd /usr/local/mfs/etc/mfs/
vi mfsmaster.cfg #此文件中,有註釋符號的就是默認配置
?
.# WORKING_USER = mfs #運行master服務的用戶
.# WORKING_GROUP = mfs #運行master服務的組
.# SYSLOG_IDENT = mfsmaster #在syslog中表示是mfsmaster產生的日誌,在syslog的標識,說明由master服務產生的
.# LOCK_MEMORY = 0 #是否執行mlockall(),避免master進程溢出(默認為0)
.# NICE_LEVEL = -19 #運行的優先級(如果可以,默認是-19;註意進程必須是root啟動)

.# EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg #被掛載目錄及其權限控制文件的存放位置

.# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg
.# DATA_PATH = /usr/local/mfs/var/mfs #數據存放位置

.# BACK_LOGS = 50 #metadata改變的log文件數目(默認是50)
.# BACK_META_KEEP_PREVIOUS = 1

.# REPLICATIONS_DELAY_INIT = 300
.# REPLICATIONS_DELAY_DISCONNECT = 3600

.# MATOML_LISTEN_HOST = #metalogger監聽的IP地址(默認是,代表任何IP)
.# MATOML_LISTEN_PORT = 9419 #metalogger監聽的端口地址(默認是9419)
.# MATOML_LOG_PRESERVE_SECONDS = 600

.# MATOCS_LISTEN_HOST = #用於chunkserver連接的IP地址(默認是,代表任何IP)
.# MATOCS_LISTEN_PORT = 9420 #用於chunkserver連接的端口IP地址(默認是9420)

.# MATOCL_LISTEN_HOST = *
.# MATOCL_LISTEN_PORT = 9421

.# CHUNKS_LOOP_MAX_CPS = 100000
.# CHUNKS_LOOP_MIN_TIME = 300 #chunks的回環頻率(默認是300秒)

.# CHUNKS_SOFT_DEL_LIMIT = 10
.# CHUNKS_HARD_DEL_LIMIT = 25
.# CHUNKS_WRITE_REP_LIMIT = 2 .#在一個循環裏復制到一個chunkserver的最大chunk數
.# CHUNKS_READ_REP_LIMIT = 10 #在一個循環裏從一個chunkserver復制的最大chunk數
.# ACCEPTABLE_DIFFERENCE = 0.1

.# SESSION_SUSTAIN_TIME = 86400
.# REJECT_OLD_CLIENTS = 0

.# deprecated:
.# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
.# LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfile

詳解被掛載目錄及權限配置文件:
>cd /usr/local/mfs/etc/mfs/

vi mfsexports.cfg

.# Allow everything but "meta".

  • / rw,alldirs,maproot=0

.# Allow "meta".

  • . rw
    #詳解
    根據文件的顯示,可以看出,該文件每一個條目分為三個部分
    第一部分:客戶端的IP地址
    第二部分:被掛載的目錄
    第三部分:客戶端擁有的權限

客戶端的IP地址部分
*:代表所有的IP地址
192.168.100.71:代表單個IP地址
192.168.100.0/24:代表整個網段
192.168.100.71-192.168.100.100:代表指定網段

被掛載的目錄部分
/:標識MFS根
.:標識MFSMETA文件系統

客戶端擁有的權限部分
ro:代表只讀模式
rw:代表讀寫方式共享
alldirs:允許掛載任何指定的子目錄
admin:管理員權限
maproot:映射為root,還是指定的用戶
Password:指定客戶端的密碼

授權、優化路徑

chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/

啟動服務:

mfsmaster start
netstat -anpt | grep ‘mfs‘
技術分享圖片

設置服務開機自啟動:

echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

搭建MetaLogger Server 192.168.80.101

解壓
unzip moosefs-master.zip -d /opt

編譯並安裝

cd /opt/moosefs-master
定制:
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
編譯安裝:
make && make install

修改主配置文件:

cd /usr/local/mfs/etc/mfs/
復制
cp mfsmaster.cfg.sample mfsmaster.cfg
cp mfsexports.cfg.sample mfsexports.cfg
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs
cd /usr/local/mfs/etc/mfs/
vi mfsmetalogger.cfg?
修改以下內容:
MASTER_HOST = 192.168.80.100 執行master服務器的ip地址,去掉註釋符號
META_DOWNLOAD_FREQ = 24 #備份頻率時間

授權、優化路徑:

chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/

啟動服務:

mfsmetalogger start
技術分享圖片

開機自啟

echo "/usr/local/mfs/sbin/mfsmetalogger start" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

搭建Chunk Server 192.168.80.103(三臺Chunk Server主機搭建步驟相同)

安裝數據服務器(chunkservers),這些機器的磁盤上要有適當的剩余空間,而且操作系統要遵循POSIX標準(驗證了的有這些:Linux、FreeBSD、Mac OS X and OpenSolaris)。
chunkserver存儲數據時,是在一個普通的文件系統如ext4上存儲數據塊或碎片(chunks/fragments)作為文件。你在chunkserver上看不到完整的文件。

安裝相關編譯器、工具包

安裝mfs軟件包
unzip moosefs-master.zip -d /opt
cd /opt/moosefs-master
定制
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
編譯安裝
make && make install

修改配置文件

cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.sample mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg
vi mfschunkserver.cfg
修改以下內容:
MASTER_HOST = 192.168.80.100 指向master服務器的ip地址,去掉註釋符號
MASTER_PORT = 9420
技術分享圖片

vi mfshdd.cfg

添加一行:
/opt/mfs 這是一個給MFS的分區,生產環境中最好使用獨立的分區,或者磁盤掛載到此目錄下
技術分享圖片

創建MFS分區目錄

mkdir /opt/mfs/
chown -R mfs:mfs /opt/mfs/

授權、優化路徑

chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/

啟動服務

mfschunkserver start
看9422 端口是否在工作
技術分享圖片

開機自啟

echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc..d/rc.local
chmod +x /etc/rc.d/rc.local

配置客戶端:

解壓包
junzip moosefs-master.zip -d /opt

編譯並安裝

cd /opt/moosefs-master
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--enable-mfsmount
編譯並安裝
make && make install

優化路徑

ln -s /usr/lcoal/mfs/bin/* /usr/local/bin

掛載MFS文件系統

mkdir /mnt/mfs #創建掛載點
modprobe fuse #加載fuse模塊到內核
mfsmount /opt/mfs/ -H 192.168.80.100 #掛載MFS
df -h #查看掛載情況
技術分享圖片
註:192.168.80.103 和 192.168.80.104 和192.168.80.102配置一樣

linux mfs分布式文件系統