1. 程式人生 > 實用技巧 >msf儲存叢集的搭建

msf儲存叢集的搭建

什麼是MFS?

MooseFS是一個容錯,高可用,高效能,擴充套件,網路分散式檔案系統。它將資料分佈在多個物理商品伺服器上,這些伺服器對使用者可視為一個虛擬磁碟。它符合POSIX並且像任何其他類Unix檔案系統一樣支援:

  • 分層結構:檔案和資料夾,
  • 檔案屬性,
  • 特殊檔案:管道,插座,塊和字元裝置,
  • 符號和硬連結,
  • 安全屬性和ACL。
    它適用於需要標準檔案系統的所有應用程式。

分散式原理

分散式檔案系統是指檔案系統管理的物理儲存資源不一定直接連線在本地節點上,而是通過計算機網路與節點相連。簡單來說,就是把一些分散的(分佈在區域網內各個計算機上)共享資料夾,集合到一個資料夾內(虛擬共享資料夾)。對於使用者來說,要訪問這些共享檔案時,只要開啟這個虛擬共享資料夾,就可以看到所有連結到虛擬共享資料夾內的共享資料夾,使用者感覺不到這些共享檔案是分佈於各個計算機上的。分散式檔案系統的好處是集中訪問、簡化操作、資料容災,以及提高檔案的存取效能。

MFS原理

MFS是一個具有容錯性的網路分散式檔案系統,它把資料分散存放在多個物理伺服器上,而呈現給使用者的則是統一的資源。

MFS檔案系統的組成

  • 元資料伺服器(Master):在整個體系中負責管理檔案系統,維護元資料。
  • 元資料日誌伺服器(Metalogger):備份Master伺服器的變化日誌檔案,檔案型別為changelog_ml.*.mfs。當Master伺服器資料丟失或損壞時,可以從日誌伺服器中取得檔案,進行恢復。
  • 資料儲存伺服器(Chunk Server):真正儲存資料的伺服器。儲存檔案時,會把檔案分塊儲存,並在資料伺服器間進行復制。資料伺服器越多,能使用的“容量”也越大,可靠性越高,效能也就越好。
  • 客戶端(Client):可以直接掛載MFS檔案系統。

MFS讀取資料的處理過程

  • 客戶端向元資料伺服器發出讀請求
  • 元資料伺服器把所需資料存放的位置(Chunk Server的IP地址和Chunk編號)告知客戶端
  • 客戶端向已知的Chunk Server請求傳送資料
  • Chunk Server向客戶端傳送資料

MFS寫入資料的處理過程

  • 客戶端向元資料伺服器傳送寫入請求
  • 元資料伺服器與Chunk Server進行互動(只有當所需的分塊Chunk存在的時候才進行互動),但元資料伺服器只在某些伺服器建立新的分塊chunks,建立成功後由Chunk Servers告知元資料伺服器操作成功
  • 元資料伺服器告知客戶端,可以在哪個Chunk Server的那些chunks寫入資料
  • 客戶端向指定的Chunk Server寫入資料
  • 該Chunk Server與其他Chunk Server進行資料同步,同步成功後Chunk Server告知客戶端資料寫入成功
  • 客戶端告知元資料伺服器本次寫入完畢

MFS優勢

  • 高可用性:沒有單點故障也稱為無SPOF配置。檔案系統的元資料在物理冗餘伺服器上儲存為兩個或多個副本。使用者資料冗餘地分佈在系統中的儲存伺服器上。
  • 低成本的資料安全:MooseFS使使用者能夠節省大量硬碟空間,保持相同的資料冗餘級別。在大多數常見情況下,將節省至少55%的硬碟空間.
  • 可擴充套件性:儲存可以擴充套件到16位元組(~16000千兆位元組),這使我們可以儲存超過20億個檔案
  • 高效能:旨在支援高效能I/O操作。使用者資料可以在許多儲存節點上同時讀取/寫入,從而避免單箇中央伺服器或單個網路連線瓶頸。

MFS叢集配置

名稱 ip地址
master 192.168.40.11
MetalLogger 192.168.40.12
Server1 192.168.40.23
Server2 192.168.40.24
client 192.168.40.25

官方源: https://moosefs.com/download/

一、前提準備

每個節點執行

[root@master ~]# systemctl stop firewall.service
[root@master ~]# setenforce 0
[root@master ~]# curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
[root@master ~]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

二、master

[root@master ~]# yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
[root@master ~]# systemctl start moosefs-master
[root@master ~]# systemctl enable moosefs-master
Created symlink from /etc/systemd/system/multi-user.target.wants/moosefs-master.service to /usr/lib/systemd/system/moosefs-master.service.
[root@master ~]# netstat -ntap | grep mfs
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      6527/mfsmaster
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      6527/mfsmaster
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      6527/mfsmaster
[root@master ~]#

三、搭建MetalLogger Server

[root@metallogger ~]# yum install moosefs-metalogger -y
[root@metallogger ~]# vim /etc/mfs/mfsmetalogger.cfg
[root@metallogger ~]# grep -i "master_host" /etc/mfs/mfsmetalogger.cfg
MASTER_HOST = 192.168.40.11
[root@metallogger ~]# systemctl start moosefs-metalogger
[root@metallogger ~]# systemctl enable moosefs-metalogger
Created symlink from /etc/systemd/system/multi-user.target.wants/moosefs-metalogger.service to /usr/lib/systemd/system/moosefs-metalogger.service.
[root@metallogger ~]# netstat -ntap | grep mfs
tcp        0      0 192.168.40.12:35318     192.168.40.11:9419      ESTABLISHED 4892/mfsmetalogger
[root@metallogger ~]#

四、搭建Chunk Server

專案中的兩臺Chunk Server的搭建步驟是完全相同

[root@server1 ~]# yum install moosefs-chunkserver -y
[root@server1 ~]# grep -i "master_host" /etc/mfs/mfschunkserver.cfg
MASTER_HOST = 192.168.40.11
[root@server1 ~]# tail -1 /etc/mfs/mfshdd.cfg
/jiang
[root@server1 ~]# mkdir /jiang
[root@server1 ~]# chown mfs:mfs /jiang
[root@server1 ~]# systemctl start moosefs-chunkserver
[root@server1 ~]# systemctl enable moosefs-chunkserver
Created symlink from /etc/systemd/system/multi-user.target.wants/moosefs-chunkserv                                                                                                       er.service to /usr/lib/systemd/system/moosefs-chunkserver.service.
[root@server1 ~]# netstat -ntap | grep mfs
tcp        0      0 0.0.0.0:9422            0.0.0.0:*               LISTEN      22                                                                                                       770/mfschunkserve
tcp        0      0 192.168.40.23:47333     192.168.40.11:9420      ESTABLISHED 22                                                                                                       770/mfschunkserve
[root@server1 ~]#

五、client

[root@client ~]# yum install moosefs-client -y
[root@client ~]# modprobe fuse
[root@client ~]# mkdir /mfs/jiang -p
[root@client ~]# mfsmount /mfs/jiang -H 192.168.40.11
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@client ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   36G  2.3G   34G   7% /
devtmpfs                 1.9G     0  1.9G   0% /dev
tmpfs                    1.9G     0  1.9G   0% /dev/shm
tmpfs                    1.9G  8.5M  1.9G   1% /run
tmpfs                    1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1                497M  125M  373M  26% /boot
tmpfs                    378M     0  378M   0% /run/user/0
tmpfs                    1.9G     0  1.9G   0% /tmp
192.168.40.11:9421        37G  5.4G   32G  15% /mfs/jiang
[root@client ~]#

六、master節點開啟web檢視

[root@master ~]# mfscgiserv
lockfile created and locked
starting simple cgi server (host: any , port: 9425 , rootpath: /usr/share/mfscgi)
[root@master ~]#

七、建立檔案測試

[root@client jiang]# mfsfileinfo 1.txt
1.txt:
        chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
                copy 1: 192.168.40.23:9422 (status:VALID)
                copy 2: 192.168.40.24:9422 (status:VALID)
[root@client jiang]#