日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MFS分布式文件系統(tǒng)

 夜貓速讀 2022-06-17 發(fā)布于湖北

一、分布式文件系統(tǒng):背景:計(jì)算機(jī)通過(guò)文件系統(tǒng)管理、存儲(chǔ)數(shù)據(jù),而信息爆炸時(shí)代中人們可以獲取的數(shù)據(jù)成指數(shù)倍的增長(zhǎng),單純通過(guò)增加硬盤個(gè)數(shù)來(lái)擴(kuò)展計(jì)算機(jī)文件系統(tǒng)的存儲(chǔ)容量的方式,在容量大小、容量增長(zhǎng)速度、數(shù)據(jù)備份、數(shù)據(jù)安全等方面的表現(xiàn)都差強(qiáng)人意。分布式文件系統(tǒng)可以有效解決數(shù)據(jù)的存儲(chǔ)和管理難題,人們?cè)谑褂梅植际轿募到y(tǒng)時(shí),無(wú)需關(guān)心數(shù)據(jù)是存儲(chǔ)在哪個(gè)節(jié)點(diǎn)上、或者是從哪個(gè)節(jié)點(diǎn)從獲取的,只需要像使用本地文件系統(tǒng)一樣管理和存儲(chǔ)文件系統(tǒng)中的數(shù)據(jù)。

概述:分布式文件系統(tǒng)(Distributed File System)是指文件系統(tǒng)管理的物理存儲(chǔ)資源不一定直接連接在本地節(jié)點(diǎn)上,而是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)與節(jié)點(diǎn)相連。分布式文件系統(tǒng)的設(shè)計(jì)基于客戶機(jī)/服務(wù)器模式。一個(gè)典型的網(wǎng)絡(luò)可能包括多個(gè)供多用戶訪問的服務(wù)器;

  目前常見的分布式文件系統(tǒng)有很多種,比如 Hadoop、MoosefsHDFS、FastDFSLustre、TFS、GFS 等等一系列;

 

二、MFS 分布式文件系統(tǒng):

概述:MooseFS(即 Moose File System)是一個(gè)具有容錯(cuò)性的網(wǎng)絡(luò)分布式文件系統(tǒng),它將數(shù)據(jù)分散存放在多個(gè)物理服務(wù)器或單獨(dú)磁盤或分區(qū)上,確保一份數(shù)據(jù)有多個(gè)備份副本,對(duì)于訪問 MFS 的客戶端或者用戶來(lái)說(shuō),整個(gè)分布式網(wǎng)絡(luò)文件系統(tǒng)集群看起來(lái)就像一個(gè)資源一樣,也就是說(shuō)呈現(xiàn)給用戶的是一個(gè)統(tǒng)一的資源。

MFS 支持 FUSE(用戶空間文件系統(tǒng) Filesystem in Userspace),客戶端掛載后可以作為一個(gè)普通的 Unix 文件系統(tǒng)使用 MooseFS;優(yōu)勢(shì):

1.部署簡(jiǎn)單,輕量、易配置、易維護(hù);

2.易于擴(kuò)展,支持在線擴(kuò)容,不影響業(yè)務(wù),體系架構(gòu)可伸縮性極強(qiáng);

3.通用文件系統(tǒng),不需要修改上層應(yīng)用就可以使用;

4.可設(shè)置文件備份的副本數(shù)量,一般建議 3 份,未來(lái)硬盤容量也要是存儲(chǔ)單份的容量的三倍;劣勢(shì):

1.master 目前是單點(diǎn)(雖然會(huì)把數(shù)據(jù)信息同步到備份服務(wù)器,但是恢復(fù)需要時(shí)間,因此,會(huì)影響上線,針對(duì)這個(gè)問題;可以通過(guò) DRBD+Keeaplived 方案或者 DRBD+Inotify 方案解決);

2.master 服務(wù)器對(duì)主機(jī)的內(nèi)存要求略高;

3.默認(rèn) metalogger 復(fù)制元數(shù)據(jù)時(shí)間較長(zhǎng);

三、MFS 分布式文件系統(tǒng)存儲(chǔ)架構(gòu):角色:

 

MFS 存取數(shù)據(jù)的過(guò)程:

 

--------------------------------------------------MFS 存取數(shù)據(jù)詳解------------------------------------------------------

?MFS 讀取數(shù)據(jù)步驟:

1)客戶端向元數(shù)據(jù)服務(wù)器發(fā)出請(qǐng)求;

2)元數(shù)據(jù)服務(wù)器把所需數(shù)據(jù)存放的位置(Chunk Server IP 地址及 Chunk 編號(hào))告知客戶端;

3)客戶端向已知 Chunk Server 請(qǐng)求發(fā)送數(shù)據(jù);

4)客戶端向 chunk server 請(qǐng)求取得所需數(shù)據(jù);

?MFS 寫入數(shù)據(jù)步驟:

1)客戶端向元數(shù)據(jù)服務(wù)器發(fā)送寫入請(qǐng)求;

2)元數(shù)據(jù)服務(wù)器與 Chunk Server 進(jìn)行交互如下;

1)元數(shù)據(jù)服務(wù)器指示在某些 Chunk Server 創(chuàng)建分塊 Chunks

2)Chunk Server 告知元數(shù)據(jù)服務(wù)器,步驟(1)的操作成功;

3)元數(shù)據(jù)服務(wù)器告知客戶端,你可以在哪個(gè) Chunk Server 的哪個(gè) Chunks 寫入數(shù)據(jù);

4)向指定的 Chunk Server 寫入數(shù)據(jù);

5)與其他 Chunk Server 進(jìn)行數(shù)據(jù)同步,同步的服務(wù)器依據(jù)設(shè)定的副本數(shù)而定,副本為 2,則需同步一個(gè) ChunkServer;

6)Chunk Sever 之間同步成功;

7)Chunk Server 告知客戶端數(shù)據(jù)寫入成功;

8)客戶端告知元數(shù)據(jù)服務(wù)器本次寫入完畢;

9)元數(shù)據(jù)服務(wù)器將數(shù)據(jù)存放記錄寫入到本地日志;

10)元數(shù)據(jù)服務(wù)器將本地日志拷貝到 logger 服務(wù)器;

?MFS 的刪除文件過(guò)程:

1)客戶端有刪除操作時(shí),首先向 Master 發(fā)送刪除信息;

2)Master 定位到相應(yīng)元數(shù)據(jù)信息進(jìn)行刪除,并將 chunk server 上塊的刪除操作加入隊(duì)列異步清理;

3)響應(yīng)客戶端刪除成功的信號(hào);

?MFS 修改文件內(nèi)容的過(guò)程:

1)客戶端有修改文件內(nèi)容時(shí),首先向 Master 發(fā)送操作信息;

2)Master 申請(qǐng)新的塊給.swp 文件;

3)客戶端關(guān)閉文件后,會(huì)向 Master 發(fā)送關(guān)閉信息;

4)Master 會(huì)檢測(cè)內(nèi)容是否有更新,若有,則申請(qǐng)新的塊存放更改后的文件,刪除原有塊和.swp 文件塊;

5)若無(wú),則直接刪除.swp 文件塊;

?MFS 重命名文件的過(guò)程:

1)客戶端重命名文件時(shí),會(huì)向 Master 發(fā)送操作信息;

2)Master 直接修改元數(shù)據(jù)信息中的文件名;返回重命名完成信息;

?MFS 遍歷文件的過(guò)程:

1)遍歷文件不需要訪問 chunk server,當(dāng)有客戶端遍歷請(qǐng)求時(shí),向 Master 發(fā)送操作信息;

2)Master 返回相應(yīng)元數(shù)據(jù)信息;

3)客戶端接收到信息后顯示;

?總結(jié)注意:

1)Master 記錄著管理信息,比如:文件路徑|大小|存儲(chǔ)的位置(ip,port,chunkid)|份數(shù)|時(shí)間等,元數(shù)據(jù)信息存在于內(nèi)存中,會(huì)定期寫入 metadata.mfs.back 文件中,定期同步到 metalogger,操作實(shí)時(shí)寫入 changelog.*.mfs,實(shí)時(shí)同步到 metalogger 中。master 啟動(dòng)將 metadata.mfs 載入內(nèi)存,重命名為 metadata.mfs.back 文件。

2)文件以 chunk 大小存儲(chǔ),每 chunk 最大為 64M,小于 64M 的,該 chunk 的大小即為該文件大?。?yàn)證實(shí)際 chunk 文件略大于實(shí)際文件),超過(guò) 64M 的文件將被切分,以每一份(chunk)的大小不超過(guò) 64M 為原則;塊的生成遵循規(guī)則:目錄循環(huán)寫入(00-FF 256 個(gè)目錄循環(huán),step 2)chunk 文件遞增生成、大文件切分目錄連續(xù)。

3)Chunkserver 上的剩余存儲(chǔ)空間要大于 1GBReference Guide 有提到),新的數(shù)據(jù)才會(huì)被允許寫入,否則,你會(huì)看到 No space left on device 的提示,實(shí)際中,測(cè)試發(fā)現(xiàn)當(dāng)磁盤使用率達(dá)到 95%左右的時(shí)候,就已經(jīng)不可以寫入了,當(dāng)時(shí)可用空間為 1.9GB。

4)文件可以有多份 copy,當(dāng) goal 1 時(shí),文件會(huì)被隨機(jī)存到一臺(tái) chunkserver 上,當(dāng) goal 的數(shù)大于 1 時(shí),copy 會(huì)由 master 調(diào)度保存到不同的 chunkserver 上,goal 的大小不要超過(guò) chunkserver 的數(shù)量,否則多出的 copy,不會(huì)有 chunkserver 去存。

四、案例:搭建 MFS 分布式存儲(chǔ):案例拓?fù)洌?/span>

 案例環(huán)境:

系統(tǒng)類型

IP 地址

主機(jī)名

所需軟件

Centos 7.4 1708 64bit

192.168.100.101

master.linuxfan.cn

mfs-1.6.27-5.tar.gz

Centos 7.4 1708 64bit

192.168.100.102

log.linuxfan.cn

mfs-1.6.27-5.tar.gz

Centos 7.4 1708 64bit

192.168.100.103

chunk1.linuxfan.cn

mfs-1.6.27-5.tar.gz

Centos 7.4 1708 64bit

192.168.100.104

chunk2.linuxfan.cn

mfs-1.6.27-5.tar.gz

Centos 7.4 1708 64bit

192.168.100.105

chunk3.linuxfan.cn

mfs-1.6.27-5.tar.gz

Centos 7.4 1708 64bit

192.168.100.106

client.linuxfan.cn

fuse-2.9.2.tar.gz mfs-1.6.27-5.tar.gz

案例步驟:

?安裝并配置 master 元數(shù)據(jù)服務(wù)器;

?安裝并配置 log 日志服務(wù)器;

?安裝并配置 chunk 節(jié)點(diǎn)存儲(chǔ)服務(wù)器(在此三臺(tái) chunk 節(jié)點(diǎn)服務(wù)器配置相同,只列舉 chunk1 節(jié)點(diǎn)的配置);

?安裝并配置客戶端節(jié)點(diǎn);

?配置 master 節(jié)點(diǎn)開啟 MFS 監(jiān)控;

?客戶端測(cè)試訪問監(jiān)控頁(yè)面;

?客戶端測(cè)試寫入數(shù)據(jù);

?驗(yàn)證 chunk 節(jié)點(diǎn)數(shù)據(jù)分配情況及 web 監(jiān)控頁(yè)面;

?配置 master 節(jié)點(diǎn)修改數(shù)據(jù)的復(fù)制份數(shù);

?客戶端再次寫入數(shù)據(jù)測(cè)試;

?驗(yàn)證 chunk 節(jié)點(diǎn)數(shù)據(jù)分配情況及 web 監(jiān)控頁(yè)面;

?安裝并配置 master 元數(shù)據(jù)服務(wù)器;

[root@master ~]# yum -y install zlib-devel

[root@master ~]# useradd -s /sbin/nologin mfs [root@master ~]# ls mfs-1.6.27-5.tar.gz  mfs-1.6.27-5.tar.gz

[root@master ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src

[root@master ~]# cd /usr/src/mfs-1.6.27       

[root@master mfs-1.6.27        ]#        ./configure        --prefix=/usr/local/mfs        --with-default-user=mfs

--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

[root@master mfs-1.6.27        ]# make &&make install

[root@master mfs-1.6.27        ]# cd

[root@master ~]# cd /usr/local/mfs/etc/mfs/

[root@master mfs]# ls mfsexports.cfg.dist  mfsmaster.cfg.dist  mfsmetalogger.cfg.dist  mfstopology.cfg.dist

[root@master mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg       


##復(fù)制主配置文件

[root@master mfs]# cp mfsexports.cfg.dist mfsexports.cfg 


##復(fù)制被掛載目錄及權(quán)限配置文件

[root@master mfs]# cp mfstopology.cfg.dist mfstopology.cfg

[root@master mfs]# cd /usr/local/mfs/var/mfs/

[root@master mfs]# ls metadata.mfs.empty


##復(fù)制 ip 網(wǎng)絡(luò)的位置配置文件

[root@master mfs]# cp metadata.mfs.empty metadata.mfs


##復(fù)制日志記錄的配置文件

[root@master mfs]# /usr/local/mfs/sbin/mfsmaster start       


##關(guān)閉使用選項(xiàng)-s

[root@master mfs]# netstat -utpln |grep mfs tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      5769/mfsmaster       tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      5769/mfsmaster       tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      5769/mfsmaster [root@master mfs]# cd                      

? 安裝并配置 log 日志服務(wù)器;

[root@log ~]# yum -y install zlib-devel                      

[root@log ~]# useradd -s /sbin/nologin mfs [root@log ~]# ls mfs-1.6.27-5.tar.gz  mfs-1.6.27-5.tar.gz

[root@log ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src/

[root@log ~]# cd /usr/src/mfs-1.6.27

[root@log mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

--disable-mfschunkserver --disable-mfsmount

[root@log mfs-1.6.27]# make &&make install

[root@log mfs-1.6.27]# cd

[root@log ~]# cd /usr/local/mfs/etc/mfs/

[root@log mfs]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg                             ##復(fù)制日志配置文件

[root@log mfs]# sed -i '/mfsmaster/a MASTER_HOST = 192.168.100.101' mfsmetalogger.cfg 

[root@log mfs]# /usr/local/mfs/sbin/mfsmetalogger start

[root@log mfs]# ps aux |grep mfs |grep -v grep mfs       5766  0.1  0.1  11824   832 ?        S<   05:42   0:00 /usr/local/mfs/sbin/mfsmetalogger start

[root@log mfs]# cd

? 安裝并配置 chunk 節(jié)點(diǎn)存儲(chǔ)服務(wù)器(在此三臺(tái) chunk 節(jié)點(diǎn)服務(wù)器配置相同,只列舉 chunk1 節(jié)點(diǎn)的配置);

[root@chunk1 ~]# yum -y install zlib-devel

[root@chunk1 ~]# useradd -s /sbin/nologin mfs [root@chunk1 ~]# ls mfs-1.6.27-5.tar.gz  mfs-1.6.27-5.tar.gz

[root@chunk1 ~]# tar zxf mfs-1.6.27-5.tar.gz -C /usr/src/

[root@chunk1 ~]# cd /usr/src/mfs-1.6.27

[root@chunk1 mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount

[root@chunk1 mfs-1.6.27]# make &&make install

[root@chunk1 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/

[root@chunk1 mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg                ##復(fù)制主配置文件

[root@chunk1 mfs]# cp mfshdd.cfg.dist mfshdd.cfg                                           ##復(fù)制掛載信息的配置文件

[root@chunk1 mfs]# sed -i '/BIND_HOST/a MASTER_HOST = 192.168.100.101' mfschunkserver.cfg

[root@chunk1 mfs]# echo "/data" >>mfshdd.cfg                 

[root@chunk1 mfs]# mkdir /data

[root@chunk1 mfs]# chown -R mfs:mfs /data/       

[root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver start                 

[root@chunk1 mfs]# ps aux |grep mfs |grep -v grep

mfs       5528  0.3  0.5 171640  2560 ?        S<l </l05:44   0:00 /usr/local/mfs/sbin/mfschunkserver start        

[root@chunk1 mfs]# cd

? 安裝并配置客戶端節(jié)點(diǎn);

[root@client ~]# yum -y install zlib-devel       

[root@client ~]# ls fuse-2.9.2.tar.gz  mfs-1.6.27-5.tar.gz       

[root@client ~]# tar zxvf fuse-2.9.2.tar.gz -C /usr/src                                    ##編譯安裝 fuse 文件系統(tǒng)

[root@client ~]# cd /usr/src/fuse-2.9.2/

[root@client fuse-2.9.2]# ./configure &&make &&make install

[root@client fuse-2.9.2]# cd

[root@client ~]# echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >>/etc/profile

[root@client ~]# source /etc/profile              

[root@client ~]# useradd -s /sbin/nologin mfs

[root@client ~]# tar zxvf mfs-1.6.27-5.tar.gz -C /usr/src/

[root@client ~]# cd /usr/src/mfs-1.6.27/

[root@client mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

--disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

[root@client mfs-1.6.27]# make &&make install

[root@client mfs-1.6.27]# cd

[root@client ~]# echo "export PATH=/usr/local/mfs/bin:$PATH" >>/etc/profile        

[root@client ~]# source /etc/profile              

[root@client ~]# modprobe fuse

[root@client ~]# lsmod |grep fuse fuse                   91874  1

[root@client ~]# mkdir /mnt/mfs

[root@client ~]# mfsmount /mnt/mfs -H 192.168.100.101 mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root [root@client ~]# df -hT |grep mfs

192.168.100.101:9421        fuse.mfs   50G     0   50G    0% /mnt/mfs

?配置 master 節(jié)點(diǎn)開啟 MFS 監(jiān)控;

[root@master ~]# /usr/local/mfs/sbin/mfscgiserv   ##啟動(dòng) mfscgiserv 是用 python 編寫的 web 服務(wù),監(jiān)聽端口 9425

lockfile created and locked starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

[root@master ~]# netstat -utpln |grep 9425 tcp        0      0 0.0.0.0:9425            0.0.0.0:*               LISTEN      5779/python  

?客戶端測(cè)試訪問監(jiān)控頁(yè)面;

http://192.168.100.101:9425

 

?客戶端測(cè)試寫入數(shù)據(jù);

[root@client ~]# df -hT |grep mfs

192.168.100.101:9421        fuse.mfs   50G     0   50G    0% /mnt/mfs

[root@client ~]# dd if=/dev/zero of=/mnt/mfs/1.file bs=1G count=1

記錄了 1+0 的讀入記錄了 1+0 的寫出

1073741824 字節(jié)(1.1 GB)已復(fù)制,20.7523 秒,51.7 MB/

[root@client ~]# du -sh /mnt/mfs/1.file 

1.0G /mnt/mfs/1.file

[root@client ~]# df -hT |grep mfs

192.168.100.101:9421        fuse.mfs   49G  1.1G   48G    3% /mnt/mfs

?驗(yàn)證 chunk 節(jié)點(diǎn)數(shù)據(jù)分配情況及 web 監(jiān)控頁(yè)面;

?配置 master 節(jié)點(diǎn)修改數(shù)據(jù)的復(fù)制份數(shù);

a.默認(rèn)每個(gè) chunk server 中會(huì)占用一定的空間:

b.MFS 默認(rèn)存放文件的份數(shù)為 1,如若存放 1G 的文件,三個(gè) chunk 節(jié)點(diǎn)會(huì)將 1G 的文件分割存儲(chǔ)(分布式存儲(chǔ)); c.如若在后續(xù)將默認(rèn)的 1 份改成了 2 份,那么包括以前存在的文件和改后存放的文件,都會(huì)被 chunk 節(jié)點(diǎn)所同步成兩份,并且將兩份文件的大小,分布存儲(chǔ)在多個(gè) chunk 節(jié)點(diǎn)中;

 

?客戶端再次寫入數(shù)據(jù)測(cè)試;

 

?驗(yàn)證 chunk 節(jié)點(diǎn)數(shù)據(jù)分配情況及 web 監(jiān)控頁(yè)面;

注:MFS 集群的啟動(dòng)與停止:

MFS 的啟動(dòng)順序:master 元數(shù)據(jù)服務(wù)器-->chunkserver 存儲(chǔ)服務(wù)器-->metalogger 元數(shù)據(jù)日志服務(wù)器-->client 客戶端

MFS 停止的順序:client(umount)客戶端-->chunkserver(-s)存儲(chǔ)服務(wù)器-->metalogger(-s)元數(shù)據(jù)日志服務(wù)器 -->master(-s)元數(shù)據(jù)服務(wù)器

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多