close
 實驗說明                                                                    20110606修正文章說明一次

截錄MooseFS官網一小段說明 http://www.moosefs.org/

Distinctive features of MooseFS are:
High reliability (several copies of the data can be stored across separate computers)
Capacity is dynamically expandable by attaching new computers/disks
Deleted files are retained for a configurable period of time (a file system level "trash bin")
Coherent snapshots of files, even while the file is being written/accessed

其中提到mfs 具高可用HA容錯特性與容量動態擴充優點,且將提升用戶端存取效能

Near 之前曾發表過Windows DFS 實驗文章(有興趣讀者可回頭查尋),Near將此次主題設定

以MFS(moosefs)架構下實現Linux OS 分散檔案系統架構,先Share Near 設計拓樸

LAB設計環境設計簡易說明:(請參考下圖),

Fedora 15 * 2 : 擔任 MFS master 與 Metalogger Role

CentOS 5.6*2  擔任兩台資料儲存Server,越多台擴充效能與資料分散儲存力較具彈性

Ubuntu 11.04*1   擔任 MFS Client 端: 我們將利用此台Server掛載MFS Server 目錄

                     後段將測試Chunk1(.171)掛點後,是否不影響Ubuntu 存取mfs 掛載目錄

  
本文LAB實作步驟參考官方方式 於Fedora 與 CentOS  上預先安裝RpmForge Reposity

當然您也可以用源碼編譯方式安裝Moosefs套件(截錄官網一小段說明)

 MooseFS packages for RHEL/CentOS 3/4/5/6

(maintained by RPMforge team) are available from the

RPMforge repository. Instructions for configuring RPMforge are here:


http://wiki.centos.org/AdditionalResources/Repositories/RPMForge


[套件預先安裝之前置作業準備]                  #接下來Lab 內容說明時將不再贅述


shell> yum -y install mfs   mfs-cgi       

# mfs master 與 metalogger  及 chunk server 與cgi web 監控mfs 運行套件
shell> yum -y install mfs-client   #安裝於MFS Client ,由於我們使用Ubuntu 故另外編譯安裝


#Ubuntu 11.04(MFS Client端): 請預先安裝 fuse-utils pkg-config 套件

>apt-get install fuse-utils pkg-config


接者請至 http://zlib.net/ 官網下載 zlib-1.2.5.tar.gz 套件編譯安裝(安裝moosefs必要元件)

>wget http://zlib.net/zlib-1.2.5.tar.gz #若未裝此zlib套件,等會安裝moosefs將不成功
>tar zxvf zlib-1.2.5.tar.gz
>cd zlib-1.2.5
>./configure
>make && make install


#至官網下載最新穩定版本moosefs,編譯安裝於ubuntu11.04

> useradd  mfs -s /usr/sbin/nologin     #預先建立一個mfs帳號供mfs程式使用

> tar  zxvf   mfs-1.6.20-2.tar.gz        #截至本日官網發表最新版本

> cd  mfs-1.6.20-2

> ./configure      #我們指定mfs主程式安裝於/usr/local/mfs 目錄下

>./configure --prefix=/usr/local/mfs --with-default-user=mfs \
 --with-default-group=mfs --enable-mfsmount    

> make && make install      
    


所有主機安裝套件皆安裝OK後將接下來進入正式主題介紹
 [ Master 組態 : 192.168.0.191(mfs1)

   首先檢查一下套件安裝成果 

mooseFS 主要組態檔皆位於 /etc/mfs/  目錄下,

然後當我們安裝完成後,在此目錄下預先建立幾個範例檔案,我們可以直接copy修改

範本檔有以下幾個 #  標示粉紅色字樣檔案為master必需

mfsmaster.cfg.dist
mfsmetalogger.cfg.dist
mfsexports.cfg.dist
mfshdd.cfg.dist
mfschunkserver.cfg.dist

於/var/mfs 底下尚有
metadata.mfs.empty


(A)
編輯Master 主要設定檔  /etc/mfs/mfsmaster.cfg

  > cd  /etc/mfs

 > cp  mfsmaster.cfg.dist  mfsmaster.cfg

 > cp  mfsexports.cfg.dist  mfsexports.cfg


 >  vi    mfsmaster.cfg            #組態內容展現如下

 
 裡面其中幾個參數說明

  
EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg    

  #類似NFS,我們同樣需編寫分享內容與權限配置(稍後說明)

 DATA_PATH=/var/mfs  

  #指定存放Master Role  Log 變動檔案異動資料,建議排成備份此資料夾 


 
     下圖指示Master Role主機與其他Role溝通所LISTEN Port 預設如下

      master  to metaloggle: 使用9419

      master  to  chunkserver: 使用9420

      master  to  client:  使用9421

  
     接下來我們要配置/etc/mfs/mfsexports.cfg  #我們將配置存取網路或主機與權限


 
#下圖中我們配置讓192.168.0.193(ubuntu1104)可以掛載mfs 之區,具RW權限,與掛載成功後,

     映射為root權限身份

   
        > vi /etc/mfs/mfsexports.cfg          


      
        192.168.0.193/24  /  rw,alldirs,maproot=0

    

  
     切喚到/var/mfs 目錄下,將 metadata.mfs.empty 複製成 metadata.mfs

    > cd /var/mfs   
   >  cp metadata.mfs.empty   metadat.mfs


所有上述配置皆OK後,我們現在可以著手啟動master (mfs1) mfsmaster service 

> /etc/init.d/mfsmaster start

> chkconfig mfsmaster on 
   

      檢視master (mfs1) 啟動情況 

      > tail -f /var/log/messages        # 下圖中找不到metalogger主機與chunkserver 
                                                                 待我們回頭組態好metalogger回頭再觀看log

      > netstat -an | grep '94'            #查看9419,9420,9421 幾個port 已經處於listen 狀態

        
Near's TIP: 本人預先在mfs1主機之/etc/hosts 寫下幾筆紀錄對應如下
                                                        
                                                   #將有助於我們等會使用mfs web bui 界面檢視
 192.168.0.192  metalogger

 192.168.0.171   chunksrevr1

 192.168.0.172  chunkserver2

 192.168.0.193   ubuntu1104 

 
另外請在非master主機上之 /etc/hosts 檔案中加入一筆record


 192.168.0.191  mfsmaster


 
[ Metalogger 組態 : 192.168.0.192(mfs2)


 > cd /etc/mfs         #metalogger 僅需配置mfsmetalogger.cfg 組態

 > cp mfsmetalogger.cfg.dist    mfsmetalogger.cfg

>  vi  mfsmetalogger.cfg


 #參數設定前方註解符號表示默認預設設定,若需更改請移除參數後修改設定值


# MASTER_HOST = mfsmaster   #我們前幾步驟已將mfsmaster指定mfs1(.191)
# MASTER_PORT = 9419             #master listen metalogger port 為9419

 
    # BACK_LOGS = 50                               #存放日誌個數,超過50自動輪替
   # META_DOWNLOAD_FREQ = 24     
 #間隔24hr下載從master備份檔案   
所有上述配置皆OK後,我們現在可以著手啟動metalogger(mfs2) mfsmetalogger service

> /etc/init.d/mfsmetalogger start

> chkconfig mfsmetalogger on 

 
檢視切換master (mfs1) Listen情況

> tail -f /var/log/messages   

 # 下圖中已經找到metalogger主機但尚未正確設定chunkserver 

      待我們回頭組態好chunkserver回頭再觀看log變化

 

[ Chunkserver 組態 : 192.168.0.171(node1) 與  192.168.0.172(node2)]

> cd /etc/mfs         #chunkserver 僅需配置mfschunkserver.cfg & mfshdd.cfg 組態

 > cp  mfschunkserver.cfg.dist   mfschunkserver.cfg

> cp  mfshdd.cfg.dist  mfshdd.cfg

>  vi  mfschunkserver.cfg


修改參數

 MASTER_HOST = mfsmaster        #指定master 位置
 MASTER_PORT = 9420
 HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg
  #組態mount 配置
  
  

>   vi  mfshdd.cfg     #本例指定存放Data磁區為/var/hit

       /var/hit

>  mkdir -p  /var/hit                                        #建立目錄使用權限
>  chown  -R  daemon.daemon /var/hit


所有上述配置皆OK後,我們現在可以著手啟動mfschunkserver(node1) mfschunkserver service 

> /etc/init.d/mfschunkserver start

> chkconfig mfschunkserver  on 


#請在node2 做與node1 一樣組配置,這此本人習慣用copy方式,將設定檔複製至node2(較效率)

下圖中我們切換回mfs1(master),再次查尋/var/log/messages

 可發現Master 已經成功抓到.metaserver,chunkserver(.171) 紀錄
  

   接下來我們也把chunkserver2.172 (node2)也on 上線,來看

    從下圖中,我們可以看見.172 (node2) 也成功上線了
   

[ MFS-Clinet 組態 : 192.168.0.193(ubuntu1104) ]

由於Near在本文最前方[摘要說明]已經提到預先安裝好 moosefs client 套件

我們來撿視套件安裝成果,相關套件皆已安裝
   
mfs-client 角色很簡單,就如同我們Mount NFS 相差無異,簡易介紹使用如下

ubuntu1104> mkdir -p /mnt/hits                                  #建立一個mount 目錄掛載空間

ubuntu1104>  /usr/local/mfs/bin/mfsmount  /mnt/hits -H  mfsmaster

#上述指令使用mfsmount 指令將mfs 空間 掛載於本地端/mnt/hits 上

    下圖中,我們使用df -h 查看,目前主機掛載情況,發現MFS分區已成功Mount

     可用Size:  為Chunkserver1 & Chunkserver 2 兩台主機可用剩餘空間之加總
 
Near 建議Chunk1 & Chunk 2 規劃設計: 硬碟空間各自規劃獨立分割一個目錄並掛載 

      Ex: 在Chunk上加入一顆80G 硬碟,建立Mount目錄: /mnt/chunkser1,然後新增磁區

              (假設為sdb),將其格式化後(ext3)後 再mount 到mnt/chunkser1 較佳(方便Quota管理)

    
[ MFSCgiserv_Moosefs_Web bui 監控界面]

mooseFS 內附Cgi網頁監控程式; mfscgiserv

預設未Enabled, 請切換至mfs1 ,啟動apache 然後執行該command:  mfscgiserv

Then 我們打開Broswer觀察:  以本Lab而言為: http://192.168.0.191:9425

  下圖中我們點選Mounts- tab :  可查看目前Client 端掛載情形

 

   下圖中我們點選Servers- tab :  可監控各台主機連繫狀況,Chunk Server 使用情形..等數據 

  下圖中我們點選Exports- tab :  可查看master(mfs1): mfsexports.cfg 之組態內容  
 
   下圖中我們點選Master Charts- tab :  可查看master(mfs1): 硬體使用率 之相關數據圖表
   
     下圖中我們點選Server Charts- tab :  可查看ChunkServer: 硬體使用率 之相關數據圖表
     
 
[測試Fail Over 容錯轉移] :

測試當chunk1(node1) 斷線時,Client 是否不遺失Data  & 

Client 端是否會因此掛載連線中斷?


[情境說明]

確定Ubuntu 11.04 主機已成功掛載mfs 目錄 ,各台主機皆為健康運作中

停用mfschunkserver(node1) service 

> /etc/init.d/mfschunksrver stop        #下圖中確定chunk1 node 不在線上,只剩下chunk2 node

 切換至Ubuntu 11.04 主機可以發現/mnt/hits 並未連線中斷,仍持續Work

 Then
 

>touch /mnt/hits/king2     #產生一個新data測試

 #下圖中存取讀寫仍ok...MooseFS 具 Fail Over HA功能(LAB目標達成)


[Lab 實作後感言]

Near: MooseFS 施作起來不難,但要構思如何發表在blog上花了不少時間

[Lab 操作時參考資料]

MooseFS 官方網站 http://www.moosefs.org/

田逸先生/MIS 實戰寶典

arrow
arrow
    全站熱搜

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()