MFS分布式文件系統


一、MFS概述:

        MooseFS(moose 駝鹿)是一款網絡分布式文件系統。它把數據分散在多台服務器上,但對於用戶來講,看到的只是一個源。MFS也像其他類unix文件系統一樣,包含了層級結構(目錄樹),存儲着文件屬性(權限,最后訪問和修改時間),可以創建特殊的文件(塊設備,字符設備,管道,套接字),符號鏈接,硬鏈接。

        MooseFS[MFS]是一個具有容錯性的網絡分布式文件系統。它把數據分散存放在多個物理服務器上,而呈現給用戶的則是一個統一的資源。

        http://www.moosefs.com/

   http://www.moosefs.org/reference-guide.html       //安裝和幫助文檔

  1.SAN和MFS比較:

 

  當我們存儲服務器的容量達到瓶頸之后,那我們就需要采用分布式的文件系統來擴大存儲容量,類似與百度雲的存儲,也是采用分布式存儲!

  2.MFS的特征

       1:層析結構(目錄樹)

       2:存儲文件屬性(權限,訪問和修改時間)

       3:支持特殊文件(塊設備,字符設備,管道)

       4:符號鏈接,軟硬鏈接

       5:對文件系統訪問可以通過IP地址或者密碼進行訪問限制

       6:高可靠(數據的多個拷貝存儲在不同的計算機上)

       7:通過附加新的計算機或者硬盤可以實現容量的動態拓展

       8:刪除文件可以根據一個可配置的時間周期進行保留

       9:不受訪問和寫入影響的文件連貫快照

 3.應用場景

      談及MooseFS的應用場景,其實就是去談分布式文件系統的應用場景。

      1)大規模高並發的數據存儲及訪問(小文件、大文件),

      2)大規模的數據處理,如日志分析

 

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

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

1、管理服務器 managing server (master):

  負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝

2、元數據日志服務器 Metalogger server(Metalogger):

  負責備份 master 服務器的變化日志文件,文件類型為 changelog_ml.*.mfs,以便於在 master server 出問題的時候接替其進行工作

3、數據存儲服務器 data servers (chunk servers ) :

  聽從管理服務器調度,提供存儲空間,並為客戶提供數據傳輸.。 真正存儲用戶數據的服務器。存儲文件時,首先把文件分成塊,然后這些塊在數據服務器 chunkserver之間復 制(復制份數可以手工指定,建議設置副本數為 3)。數據服務器可以是多個,並且數量越多,可使用的“磁盤空間”越大,可靠性也越高。

4、客戶機掛載使用 client computers :

  客戶端掛載遠程mfs服務器共享出的存儲並使用。  通過 fuse 內核接口掛載進程管理服務器上所管理的數據存儲服務器共享出的硬盤。 共享的文件系統的用法和 nfs 相似。 使用 MFS 文件系統來存儲和訪問的主機稱為 MFS 的客戶端,成功掛接 MFS 文件系統以后,就可以像以前使用 NFS 一樣共享這個虛擬性的存儲了。

  1. 系統部署方案

  2. 內部運行機制

       1:客戶端請求訪問存儲,請求發送到了MFS Master

       2:MFS Master根據我們的請求,查詢所需要的文件分布在那些服務器上

       3:客戶端直接和存儲服務器進行數據存儲和讀寫

  3. 端口關系圖

 

端口號:

9420  : MFS master和MFS chunck通信端口

9421  : MFS master和MFS Client端通信端口

9419  : MFS master和MFS metalogger端通信端口

9422  : MFS chunck  和MFS Client端通信端口

9425  : MFS master  web界面監聽端口,查看整體運行狀態

三、實驗

 1. MFS分布式文件實驗環境

服務器            角色

xuegod63      管理服務器managing server (master) 和元數據日志服務器(Metalogger) 

xuegod64      數據存儲服務器data servers (chunk servers )

xuegod62      客戶機掛載使用client computers

安裝環境准備:

  所有服務器端和客戶端都要支持fuse內核模塊。

  由於mfs的客戶端程序也就是加載mfs磁盤系統的命令是使用了fuse,因此只要是想掛載mfs的服務器,必要的前提條件就是先安裝fuse,這樣編譯mfs的時候才能順利通過。

fuse概述:

  用戶空間文件系統(Filesystem in Userspace,簡稱FUSE)是操作系統中的概念,指完全在用戶態實現的文件系統。目前Linux通過內核模塊對此進行支持。一些文件系統如NTFS-3G(作用:讓Linux中對NTFS文件系統提供支持) 使用FUSE實現。

注:2.6以上內核,都自帶fuse

  2. 部署MFS分布式文件系統

    部署MFS架構,我們按照上面的拓撲,從Master開始部署

  MFS管理服務器

[root@xuegod63 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@xuegod63 ~]# useradd -s /sbin/nologin mfs			#運行mfs的用戶
[root@xuegod63 ~]# unzip moosefs-master.zip  && cd moosefs-master
[root@xuegod63 moosefs-master]#  ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
[root@xuegod63 moosefs-master]# make -j 4 && make install
[root@xuegod63 moosefs-master]# cd /usr/local/mfs/
[root@xuegod63 mfs]# ls				#看下安裝完成生成的目錄
    bin         #客戶端工具
    etc         #服務器的配置文件都放在該目錄中 
    sbin        #服務端啟動程序。如:元數據服務器端程序 mfsmaster、數據存儲服務器端服務程序 mfschunkserver 
    share       #文檔 
    var         #元數據目錄(可在配置文件中自定義到其他目錄) 
生成配置文件
[root@xuegod63 etc]# cd /usr/local/mfs/etc/mfs/
[root@xuegod63 mfs]# ll
-rw-r--r-- 1 root root  531 Dec 24 14:13 mfschunkserver.cfg.sample
-rw-r--r-- 1 root root 4060 Dec 24 14:13 mfsexports.cfg.sample
-rw-r--r-- 1 root root   57 Dec 24 14:13 mfshdd.cfg.sample
-rw-r--r-- 1 root root 1020 Dec 24 14:13 mfsmaster.cfg.sample
-rw-r--r-- 1 root root  417 Dec 24 14:13 mfsmetalogger.cfg.sample
-rw-r--r-- 1 root root  404 Dec 24 14:13 mfsmount.cfg.sample
-rw-r--r-- 1 root root 1123 Dec 24 14:13 mfstopology.cfg.sample
[root@xuegod63 mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg	//Master配置文件
[root@xuegod63 mfs]# cp mfsexports.cfg.sample mfsexports.cfg	//輸出目錄配置文件
[root@xuegod63 mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg //元數據日志
[root@xuegod63 mfs]# cd /usr/local/mfs/var/mfs/
[root@xuegod63 mfs]# cp metadata.mfs.empty metadata.mfs	
        //首次安裝 master 時,會自動生成一個名為 metadata.mfs.empty 的元數據文件 metadata,
        //該文件是空的。MooseFS master 運必須有文件 metadata.mfs
[root@xuegod63 mfs]# cd /usr/local/mfs/etc/mfs/
[root@xuegod63 mfs]# vim mfsmaster.cfg			//這個文件不需要修改,但你需要了解下面這幾個字段
72 # MATOCS_LISTEN_HOST = *    #監聽所有 IP,也直接寫一個 IP 地址,如 192.168.1.63 
75 # MATOCS_LISTEN_PORT = 9420  
30 # DATA_PATH = /usr/local/mfs/var/mfs 
注:這個配置文件中所有注掉的設置都是默認的配置。
     如果有需要還可以修改 DATA_PATH 的設置將元數據目錄存儲到其他的分區或磁盤。
     其他的參數都很簡單根據需要調整即可。 
master 會打開 9420 端口等待 mfschunkserver 數據存儲服務器連接 
[root@xuegod63 mfs]# chown -R mfs:mfs /usr/local/mfs/
[root@xuegod63 mfs]# /usr/local/mfs/sbin/mfsmaster start		//各個端口開始起來
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 configuration file (/usr/local/mfs/etc/mfstopology.cfg) not found - using defaults
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@xuegod70 mfs]# cp mfstopology.cfg.sample mfstopology.cfg //此處處理上面啟動時報錯 [root@xuegod63 mfs]# netstat -antup | grep 94* tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 49618/mfsmaster tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 49618/mfsmaster tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 49618/mfsmaster [root@xuegod63 mfs]# echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local [root@xuegod63 mfs]# chmod +x /etc/rc.local [root@xuegod63 mfs]# /usr/local/mfs/sbin/mfsmaster stop //服務的關閉方法 [root@xuegod63 mfs]# ll /usr/local/mfs/var/mfs/ //查看生成的日志文件 -rw-r----- 1 mfs mfs 95 Dec 24 14:30 metadata.mfs -rw-r----- 1 mfs mfs 95 Dec 24 14:28 metadata.mfs.back.1 -rw-r--r-- 1 mfs mfs 8 Dec 24 14:13 metadata.mfs.empty -rw-r----- 1 mfs mfs 10 Dec 24 14:28 sessions.mfs -rw-r----- 1 mfs mfs 762516 Dec 24 14:30 stats.mfs 指定需要共享的權限 [root@xuegod63 mfs]# cd /usr/local/mfs/etc/mfs [root@xuegod63 mfs]# vim mfsexports.cfg # Allow everything but "meta". * / rw,alldirs,maproot=0 # Allow "meta". * . rw #下面添加兩行 192.168.1.64/24 / rw,alldirs,maproot=0 192.168.1.0/24 / rw,alldirs,maproot=0 mfsexports.cfg 文件每一條由三部分組成, 第一部分表示客戶端的 IP 地址, 第二部分表示被掛接的目錄, 第三部分表示客戶端擁有的權限,下面對三給部分迚行解釋 1.客戶端 IP 地址 * 所有 IP 地址 x.x.x.x 單個 IP 地址 x.x.x.x/m.m.m.m IP 網絡地址/子網掩碼 f.f.f.f-t.t.t.t IP 段 2.被掛載的目錄 / 表示 MooseFS 的根 . 表示 MFSMETA 文件系 3.客戶端擁有的權限 ro 只讀 rw 讀寫 alldirs 允許掛載任何指定的子目錄 maproot 映射為 root 用戶還是指定的用戶 password 指定客戶端密碼 [root@xuegod63 mfs]# sh /etc/rc.local //啟動服務

3.安裝MFS元數據日志服務器

  元數據日志守護進程是在安裝master server 時一同安裝的,最小的要求並不比master 本身大,可以被運行在任何機器上(例如任一台chunkserver),但是最好是放置在MooseFS master 的備份機上,備份master 服務器的變化日志文件,文件類型為changelog_ml.*.mfs。因為主要的master server 一旦失效,可能就會將這台metalogger 機器取代而作為master server。

[root@xuegod63 mfs]# cd
[root@xuegod63 ~]# rm -rf moosefs-master     #元數據又是另外一台服務器,這里我們在一台機器上做,那么我們也要重新編譯
[root@xuegod63 ~]# unzip moosefs-master.zip && cd moosefs-master   #編譯的時候,用戶在若在其他設備,需要新建運行mfsmetalogger角色的用戶,
xuegod63上在安裝master的時候,已經新建,略過,其他機器上,應該執行useradd -s /sbin/nologin mfs [root@xuegod63 moosefs-master]# ./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs [root@xuegod63 moosefs-master]# make && make install [root@xuegod63 moosefs-master]# cd /usr/local/mfsmeta/etc/mfs/ [root@xuegod63 mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg [root@xuegod63 mfs]# vim mfsmetalogger.cfg 39# META_DOWNLOAD_FREQ = 24 #24元數據備份文件下載請求頻率。默認為24小時,即每隔一天從元數據服務器 #(MASTER) 下載一個 metadata.mfs.back 文 件 。 當 元 數 據 服 務 器 關 閉 戒 者 出 故 障 時 , matedata.mfs.back 文件將消失,
那么要恢復整個 mfs,則需從 metalogger 服務器取得該文件。請特別注意這個文件,它與日志文件一起,才能夠恢復整個被損壞的分布式文件系統。原本注釋,修改,並開啟 52 MASTER_HOST = 192.168.1.63 #此行原來注釋了,修改,並啟用 #MASTER_HOST,這個文件中需要修改的是 MASTER_HOST 變量,這個變量的值是 MASTER SERVER 的 IP 地址 [root@xuegod63 mfs]# chown -R mfs:mfs /usr/local/mfsmeta/ #啟動元數據日志服務器 [root@xuegod63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger start working directory: /usr/local/mfsmeta/var/mfs lockfile created and locked initializing mfsmetalogger modules ... mfsmetalogger daemon initialized properly [root@xuegod63 mfs]# echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >> /etc/rc.local #服務關閉方法 [root@xuegod63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger stop #查看端口 [root@xuegod63 mfs]# /usr/local/mfsmeta/sbin/mfsmetalogger start [root@xuegod63 mfs]# netstat -anput | grep 9419 tcp 0 0 0.0.0.0:9419 0.0.0.0: LISTEN 7266/sbin/mfsmaster tcp 0 0 192.168.1.63:9419 192.168.1.63:49776 ESTABLISHED 7266/sbin/mfsmaster 到此為止,我們Master和Metalogger服務器安裝完成,且在一台機器上

4.Chunk Server安裝配置

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

[root@xuegod64 ~]# useradd -s /sbin/nologin mfs
[root@xuegod64 ~]# unzip moosefs-master.zip
[root@xuegod64 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@xuegod64 ~]# cd moosefs-master && ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install
配置文件修改
[root@xuegod64 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg#主配置文件
[root@xuegod64 mfs]# cp mfshdd.cfg.sample mfshdd.cfg	#使用的磁盤空間配置文件
[root@xuegod64 mfs]# vim mfschunkserver.cfg
71  MASTER_HOST = 192.168.1.63  #元數據服務器的名稱或地址,可以是主機名,也可以是 ip 地址
74  MASTER_PORT = 9420               #可以啟用它,也可以不啟用,不啟用,默認就是9420
94# CSSERV_LISTEN_PORT = 9422     #這個監聽端口用於與其它數據存儲服務器間的連接,通常是數據復制

33# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfs/mfshdd.cfg     #分配給 MFS 使用的磁盤空間配置文件的位置 
[root@xuegod64 mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/tmp
#在這里/tmp 是一個給 mfs 的分區,但在生產環境是一個獨立的磁盤的掛載目錄 
[root@xuegod64 mfs]# chown -R mfs:mfs /usr/local/mfs/
服務器啟動關閉
[root@xuegod64 mfs]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /tmp/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@xuegod64 mfs]# echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local 
[root@xuegod64 mfs]# chmod +x /etc/rc.local
[root@xuegod64 mfs]# ls /tmp			#分塊存儲,人工時無法認識的
00  11  22  33  44  55  66  77  88  99  AA  BB  CC  DD  EE  FF
01  12  23  34  45  56  67  78  89  9A  AB  BC  CD  DE  EF  keyring-J8XeaN
02  13  24  35  46  57  68  79  8A  9B  AC  BD  CE  DF  F0  orbit-gdm
03  14  25  36  47  58  69  7A  8B  9C  AD  BE  CF  E0  F1  orbit-root
04  15  26  37  48  59  6A  7B  8C  9D  AE  BF  D0  E1  F2  pulse-oErxG6JvcJR1
05  16  27  38  49  5A  6B  7C  8D  9E  AF  C0  D1  E2  F3  pulse-ZvGMw7hIpLaC
06  17  28  39  4A  5B  6C  7D  8E  9F  B0  C1  D2  E3  F4  vgauthsvclog.txt.0
07  18  29  3A  4B  5C  6D  7E  8F  A0  B1  C2  D3  E4  F5  virtual-root.qMLdFF
08  19  2A  3B  4C  5D  6E  7F  90  A1  B2  C3  D4  E5  F6  VMwareDnD
09  1A  2B  3C  4D  5E  6F  80  91  A2  B3  C4  D5  E6  F7  vmware-root
0A  1B  2C  3D  4E  5F  70  81  92  A3  B4  C5  D6  E7  F8
0B  1C  2D  3E  4F  60  71  82  93  A4  B5  C6  D7  E8  F9
0C  1D  2E  3F  50  61  72  83  94  A5  B6  C7  D8  E9  FA
0D  1E  2F  40  51  62  73  84  95  A6  B7  C8  D9  EA  FB
0E  1F  30  41  52  63  74  85  96  A7  B8  C9  DA  EB  FC
0F  20  31  42  53  64  75  86  97  A8  B9  CA  DB  EC  FD
10  21  32  43  54  65  76  87  98  A9  BA  CB  DC  ED  FE
[root@xuegod64 mfs]# /usr/local/mfs/sbin/mfschunkserver stop		#關閉方法

5.配置客戶端

[root@xuegod62 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@xuegod62 ~]# useradd -s /sbin/nologin mfs
[root@xuegod62 ~]# unzip moosefs-master.zip && cd moosefs-master
[root@xuegod62 moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount  
#開啟mfsmount必須有,作為客戶端必須有的這一個選項。
[root@xuegod62 moosefs-master]# make -j && make install
[root@xuegod62 moosefs-master]# mkdir /mfs
[root@xuegod62 moosefs-master]# lsmod | grep fuse
fuse                   73530  4
[root@xuegod62 moosefs-master]# modprobe fuse            #若沒有,加載一下
[root@xuegod62 moosefs-master]# ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount
將mfs共享出來的存儲空間掛載到xuegod62的/ /mfs目錄下:
[root@xuegod62 moosefs-master]# mfsmount /mfs/ -H 192.168.1.63 -p		
MFS Password:           #無密碼 直接回車
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
[root@xuegod62 moosefs-master]# df –h
……
192.168.1.63:9421  5.3G     0  5.3G   0% /mfs
[root@xuegod62 moosefs-master]# echo "modprobe fuse" >> /etc/rc.local 
[root@xuegod62 moosefs-master]# echo "/usr/local/mfs/bin/mfsmount /mfs -H 192.168.1.63" >> /etc/rc.local 
[root@xuegod62 moosefs-master]# chmod +x /etc/rc.local    

6.測試

[root@xuegod64 mfs]# yum install -y tree			#64上用tree監控狀態
[root@xuegod64 mfs]# tree /tmp/
/tmp/
├── 00
├── 01
├── 02
├── 03
├── 04
├── 05
├── 06
├── 07
├── 08
├── 09
├── 0A
├── 0B
├── 0C
├── 0D
├── 0E
[root@xuegod62 moosefs-master]# cp -r /boot/* /mfs/		#客戶端寫入數據
[root@xuegod64 mfs]# tree /tmp/					#存儲服務器監控
/tmp/
├── 00
├── 01
│   └── chunk_0000000000000001_00000001.mfs
├── 02
│   └── chunk_0000000000000002_00000001.mfs
├── 03
│   └── chunk_0000000000000003_00000001.mfs
├── 04
│   └── chunk_0000000000000004_00000001.mfs
├── 05
│   └── chunk_0000000000000005_00000001.mfs
[root@xuegod62 moosefs-master]# ls /mfs			#客戶端是看得到的文件內容,而在我們的Chunk Server上看到的都是一些碎片
config-2.6.32-431.el6.x86_64         lost+found
efi                                  symvers-2.6.32-431.el6.x86_64.gz
grub                                 System.map-2.6.32-431.el6.x86_64
initramfs-2.6.32-431.el6.x86_64.img  vmlinuz-2.6.32-431.el6.x86_64

7.配置web監控

主用來監控 MFS 各節點狀態信息,可部署在任一節點服務器。

[root@xuegod63 mfs]# /usr/local/mfs/sbin/mfscgiserv	 start   #啟動網頁監控
瀏覽器:http://192.168.1.63:9425/(如需指定服務器ip修改share/mfscgi/mfs.cgi)

磁盤使用

 

權限

 

CPU資源

四、拓展

  關於密碼設置和添加一台存儲設置以及復制份數

 1. 密碼設置

[root@xuegod63 ~]# cd /usr/local/mfs/etc/mfs/
[root@xuegod63 mfs]# vim mfsexports.cfg			//權限后面跟上密碼即可
# Allow everything but "meta".
#*                       /       rw,alldirs,maproot=0  #這行注釋
# Allow "meta".
#*                       .       rw                  #這行注釋
192.168.1.0/24         /      rw,alldirs,maproot=0,password=123456 #設置密碼
#192.168.1.64/24          /       rw,alldirs,mapproot=0   #這行注釋
[root@xuegod63 ~]# /usr/local/mfs/sbin/mfsmaster  restart  #重啟master服務
在客戶端測試掛載
[root@xuegod62 ~]# ps -ef #找到對應的進程號,然后kill掉,在進行掛載
………………………………………………………………………..
root       7723      1  1 14:20 ?        00:00:26 mfsmount /mfs/ -H 192.168.1.63 -p
[root@xuegod62 ~]# kill -9 7723
[root@xuegod62 ~]# mfsmount /opt  -H 192.168.2.63 
mfsmaster register error: Password is needed    #提示需要密碼
[root@xuegod62 ~]# mfsmount /opt -H 192.168.2.63 -p
MFS Password:                           #輸入密碼123456
mfsmaster accepted connection with parameters: read-write,restricted_ip ; root mapped to root:root
[root@xuegod62 ~]# df -h      #掛載成功
文件系統                 容量  已用  可用 已用% 掛載點
………………………………………………………………………..
192.168.2.63:9421         18G  1.7G   17G   10% /opt

2. 添加Chunk Server

  開啟一台新主機並添加為Chunk Server

[root@xuegod65 ~]# yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
[root@xuegod65 ~]# useradd -s /sbin/nologin mfs
[root@xuegod65 ~]# unzip moosefs-master.zip && cd moosefs-master
[root@xuegod65 moosefs-master]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs && make && make install
[root@xuegod65 moosefs-master]# cd /usr/local/mfs/etc/mfs/
[root@xuegod65 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
[root@xuegod65 mfs]# vim mfschunkserver.cfg
MASTER_HOST = 192.168.1.63          #修改管理IP
MASTER_PORT = 9420                 #去掉注釋
[root@xuegod65 mfs]# cp mfshdd.cfg.sample mfshdd.cfg
[root@xuegod65 mfs]# vim mfshdd.cfg
# mount points of HDD drives
#
#/mnt/hd1
#/mnt/hd2
#etc.
/opt            #添加一行
[root@xuegod65 mfs]# chown -R mfs:mfs /usr/local/mfs/
[root@xuegod65 mfs]# chown -R mfs:mfs /opt/
[root@xuegod65 mfs]# /usr/local/mfs/sbin/mfschunkserver start
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfschunkserver modules ...
hdd space manager: path to scan: /opt/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file - initializing empty charts
mfschunkserver daemon initialized properly
[root@xuegod65 mfs]# yum install -y tree
[root@xuegod63 ~]# /usr/local/mfs/sbin/mfsmaster stop		#重啟管理
[root@xuegod63 ~]# /usr/local/mfs/sbin/mfsmaster start
[root@xuegod63 ~]# /usr/local/mfsmeta/sbin/mfsmetalogger stop	#元數據日志
[root@xuegod63 ~]# /usr/local/mfsmeta/sbin/mfsmetalogger start
[root@xuegod62 moosefs-master]# cp /etc/passwd /mfs/			#寫入數據
[root@xuegod62 moosefs-master]# cp /etc/hosts /mfs/
[root@xuegod65 mfs]# tree /opt/   #看到也有數據過來了
/tmp/
├── 00
│   ├── chunk_0000000000000001_00000001.mfs
│   ├── chunk_0000000000000002_00000001.mfs
│   ├── chunk_0000000000000003_00000001.mfs
│   ├── chunk_0000000000000004_00000001.mfs
│   ├── chunk_0000000000000005_00000001.mfs
│   ├── chunk_0000000000000006_00000001.mfs
│   ├── chunk_0000000000000007_00000001.mfs
│   ├── chunk_0000000000000008_00000001.mfs
│   ├── chunk_0000000000000009_00000001.mfs
├── 16
│   └── chunk_0000000000000016_00000001.mfs
├── 17

3. 設置復制份數

[root@xuegod62 moosefs-master]# cd /usr/local/mfs/bin/	  #客戶端
[root@xuegod62 bin]# ./mfssetgoal -r 2 /mfs/		  #設置2份
[root@xuegod62 bin]# ./mfsgetgoal /mfs              #查看份數
/mfs: 2

查看文件復制份數,都保存在哪兒:
[root@xuegod62 bin]# ./mfsfileinfo /mfs/initramfs-2.6.32-431.el6.x86_64.img
/mfs/initramfs-2.6.32-431.el6.x86_64.img:
    chunk 0: 0000000000000012_00000001 / (id:18 ver:1)
        copy 1: 192.168.1.65:9422
        copy 2: 192.168.1.64:9422
停掉XueGod64
[root@xuegod62 mfs]# cp /etc/group  /mfs/
[root@xuegod62 mfs]# ls					#文件仍然可寫
config-2.6.32-431.el6.x86_64         lost+found
efi                                  passwd
group                                symvers-2.6.32-431.el6.x86_64.gz
grub                                 System.map-2.6.32-431.el6.x86_64
hosts                                vmlinuz-2.6.32-431.el6.x86_64
initramfs-2.6.32-431.el6.x86_64.img

4. 回收站清空時間

修改MFS文件刪除延遲時間(都在client端下操作)
[root@xuegod62 ~]# cd /usr/local/mfs/bin
[root@xuegod62 bin]# ./mfssettrashtime 600  /mfs/	  
#回收站延遲清空時間,以秒計算,設置文件或目錄的刪除時間。

查看MFS文件刪除延遲時間
[root@xuegod62 bin]# ./mfsgettrashtime  /mfs
/mnt/mfs: 3600   #為什么不是600?
因為設置的時間是按照小時計算,設置的單位是秒,不滿一小時就按一小時計算

5. 集群啟動和關閉循序   

MFS集群啟動:
  1 啟動master server
  2 啟動chunk server
  3 啟動metalogger
  4 啟動客戶端,使用mfsmount掛載相關目錄
MFS集群停止:
  1 所有客戶端卸載MooseFS文件系統
  2 停止chunkserver
  3 停止metalogger
  4 停止master server

 

附件:mfsmaster配置文件注釋(usr/local/mfs/etc/mfs/mfsmaster.cfg)
# WORKING_USER = mfs     #運行master server 用戶
# WORKING_GROUP = mfs  #運行master server 組
# SYSLOG_IDENT = mfsmaster #master server 在syslog中的標識,說明是由master產生的
# LOCK_MEMORY = 0      #是否執行mlockall()避免mfsmaster 進程溢出(默認為0)
# NICE_LEVEL = -19      #運行的優先級(如果可以默認-19;注意:進程必須是用root啟動)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被掛接的目錄及其權限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs #數據存放路徑,此目錄分三類文件,changelog ,sessions 和stats
# BACK_LOGS = 50        #metadata的改變log文件數目(默認是50)
# REPLICATIONS_DELAY_INIT = 300 #延遲復制的時間(默認是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 斷開的復制延遲(默認是3600)
# MATOCS_LISTEN_HOST = *      #metalogger 監聽的ip地址(默認是*,代表任何ip)
# MATOCS_LISTEN_PORT = 9419     #metalogger 監聽的端口地址(默認是9419)
# MATOCS_LISTEN_HOST = *      #用於chunkserver 連接的ip地址(默認是*,代表任何ip)
# MATOCS_LISTEN_PORT = 9420     #用於chunkserver 連接的端口地址(默認是9420)
# MATOCU_LISTEN_HOST = *      #用於客戶端掛接的ip地址(默認*,代表任何ip)
# MATOCU_LISTEN_PORT = 9421     #用於客戶端掛接連接的端口地址(默認9421)
# CHUNKS_LOOP_TIME = 300      #chunksde 回環頻率(默認是:300秒)
# CHUNKS_WRITE_REP_LIMIT = 1    #在一個循環里復制到一個chunkserver的最大chunk數目
# CHUNKS_READ_REP_LIMIT = 5      #在一個循環里從一個chunkserver復制的最大chunk數目
# CHUNKS_READ_REP_LIMIT = 0      #彈出低於1.6.0的客戶端掛接(0或1,默認是0)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM