CentOS x 64 MooseFS 學習

丶小炒肉發表於2016-05-31

一、MFS 簡介....

 MooseFS(Moose File System,mfs)是一種分散式檔案系統,它將資料分佈在網路中的

不同伺服器上,支援FUSE,客戶端可以作為一個 普通的Unix 檔案系統使用MooseFS。

 

MooseFS中共有四種角色:

1. 主控伺服器master server、 ( 主控伺服器負責各個儲存塊伺服器的管理、檔案讀寫排程、檔案空間回收以及恢復、多節點拷貝。)

2. 後設資料日誌伺服器metalogger server、( 後設資料日誌伺服器負責備份主控伺服器的後設資料、變化日誌檔案,檔案型別為changelog_ml.*.mfs,以便在主控伺服器出問題的時候可以恢復。)

3. 儲存塊伺服器chunkserver、( 儲存塊伺服器負責提供儲存空間,併為客戶提供資料傳輸。)

4. 客戶端client。( 客戶端則通過fuse掛接主控伺服器上所管理的儲存塊伺服器,可以像操作本地檔案一樣操作MooseFS中的檔案。)

 

二、環境架構 :   CentOS 5.8  x64   *   3

 

CentOS 5.8 x64   10.3.0.101   ---  主控伺服器 master server

CentOS 5.8 x64   10.3.0.102   ---  後設資料日誌伺服器metalogger server                                     ---  儲存塊伺服器chunkserver

                              ---   備份主控伺服器

CentOS 5.8 x64   10.3.0.103   ---  客戶端client。

Keepalived       10.3.0.110   ---  虛擬IP  ( VIP )

 

 

 

三、安裝配置MooseFS 

1、在http://www.moosefs.org/download.html下載軟體 Version: 1.6.26

wget http://pro.hit.gemius.pl/hitredir/id=p4CVHPOzkVa0JJIK.m0Ee6dyHZEgoQb1KaiPmVK29EX.M7/url=moosefs.org/tl_files/mfscode/mfs-1.6.26.tar.gz

2、安裝 MFS 所需的支援 fuse 開發包   

yum -y install fuse*

或者下載原始碼包安裝

http://sourceforge.net/projects/fuse/files/fuse-2.X/ )

 

3、在 主控、儲存塊伺服器、後設資料日誌伺服器安裝 MFS

建立使用者、組     

groupadd mfs    

useradd -g mfs mfs

tar xvf mfs-1.6.26.tar.gz

cd mfs-1.6.26

./configure --prefix=/opt/local/mfs --with-default-user=mfs --with-default-group=mfs

make && make install

 

 

 

4、客戶端MFS安裝

 

groupadd mfs    

useradd -g mfs mfs

tar xvf mfs-1.6.26.tar.gz

cd mfs-1.6.26

./configure --prefix=/opt/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount

make && make install

 

------------------------------------------------------------------------

(出現 configure: error: zlib development library not found ) 

在 http://zlib.net/  下載 zlib 編譯安裝

./configure   

make && make install 

 

-------------------------------------------------------------------------

 

 

 

5、 配置MFS  

 

5.1、 配置 啟動 主控服務 ( 10.3.0.101 )

主控伺服器、儲存塊伺服器、後設資料日誌伺服器分別使用不同的配置檔案。配置檔案預設存放目錄是安裝目錄下的etc目錄

cd /opt/local/mfs/etc

主控伺服器使用的配置檔案是mfsmaster.cfg, 將mfsmaster.cfg.dist改名

註釋掉的資訊是當前的預設值,使用這些預設值就可以正常執行。

cp mfsmaster.cfg.dist mfsmaster.cfg

 

 

 

主控伺服器也用到了mfsexports.cfg檔案,指定了哪些客戶端機器可以遠端掛載MooseFS檔案系統、具有什麼許可權。

cp mfsexports.cfg.dist mfsexports.cfg

vi mfsexports.cfg

只需要在在檔案裡,新增這一行

 

10.3.0.0/24 / rw,alldirs,maproot=0,password=123456

 

表明 10.3.0.0 ~10.3.0.255 網段的機器都可以掛載MooseFS檔案系統,具有讀寫、

掛載任意指定的子目錄許可權、自動對映為root使用者。

 

IP地址有幾種表現形式:所有ip,單個ip,IP網路地址/位數掩碼,IP網路地址/子網掩碼,ip段範圍。

 

許可權部分中:

ro 只讀模式共享,rw 讀寫方式共享;

alldirs 許掛載任何指定的子目錄;

maproot 對映為root或者其他的使用者;

password 指定客戶端密碼。

 

 

在預設資料目錄/opt/local/mfs/var/mfs下,安裝時會產生一個空的後設資料檔案metadata.mfs.empty,根據這個檔案複製出初始的後設資料檔案metadata.mfs:

cp metadata.mfs.empty  metadata.mfs

 

修改完以後,就可以啟動 主控服務 了.....

/opt/local/mfs/sbin/mfsmaster start  

-----------------------------------------------------------------------

 

working directory: /opt/local/mfs/var/mfs

lockfile created and locked

initializing mfsmaster modules ...

loading sessions ... ok

sessions file has been loaded

exports file has been loaded

mfstopology configuration file (/opt/local/mfs/etc/mfstopology.cfg) not found - using defaults

loading metadata ...

loading objects (files,directories,etc.) ... ok

loading names ... ok

loading deletion timestamps ... ok

loading chunks data ... ok

checking filesystem consistency ... ok

connecting files and chunks ... ok

all inodes: 1

directory inodes: 1

file inodes: 0

chunks: 0

metadata file has been loaded

stats file has been loaded

master <-> metaloggers module: listen on *:9419

master <-> chunkservers module: listen on *:9420

main master server module: listen on *:9421

mfsmaster daemon initialized properly

-----------------------------------------------------------------------

 

 

主控master服務執行後,會在資料目錄/opt/local/mfs/var/mfs 下產生後設資料備份檔案metadata.mfs.back、日誌檔案changelog.*.mfs、sessions.mfs檔案等,預設保留前50小時的日誌,即mfsexports.cfg中BACK_LOGS的設定的值。

主控master服務每小時會把changelog.*.mfs檔案合併到後設資料檔案中。

 

 

 

 

 

5.2、 配置 啟動 後設資料日誌服務 (10.3.0.102)  備份master

----------------------------------------------------------------------

將檔案修改

cp mfsmaster.cfg.dist mfsmaster.cfg

 

cp mfsexports.cfg.dist mfsexports.cfg

vi mfsexports.cfg

只需要在在檔案裡,新增這一行

10.3.0.0/24 / rw,alldirs,maproot=0,password=123456

----------------------------------------------------------------------

修改以上檔案,作為備份master 使用...

 

 

 

 

   後設資料日誌伺服器中使用的配置檔案是mfsmetalogger.cfg,可以將/opt/local/mfs /etc下的mfsmetalogger.cfg.dist改名,其中註釋掉的資訊是當前的預設值。要注意的是,其中的MASTER_HOST\MASTER_PORT指定了主控伺服器的位置、埠,需要修改為正確的。預設MASTER_HOST是mfsmaster。先修改/etc/hosts檔案,增加一行

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

10.3.0.110 mfsmaster

 

然後就可以啟動 metalogger服務 了..

/opt/local/mfs/sbin/mfsmetalogger start

------------------------------------------------------------------------

 

working directory: /opt/local/mfs/var/mfs

lockfile created and locked

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

------------------------------------------------------------------------

啟動後,可以看到預設資料目錄/opt/local/mfs/var/mfs下會複製主控伺服器的後設資料備份檔案metadata_ml.mfs.back、日誌檔案changelog_ml_back.*.mfs、sessions_ml.mfs檔案

 

另外,可以把mfsmetalogger.cfg檔案中的META_DOWNLOAD_FREQ設定成1,即每小時複製一次metadata.mfs.back檔案,減少恢復的延遲時間。

vi mfsmetalogger.cfg 

# META_DOWNLOAD_FREQ = 24 修改為

  META_DOWNLOAD_FREQ = 1 

然後重新啟動 /opt/local/mfs/sbin/mfsmetalogger restart

-----------------------------------------------------------------

 

working directory: /opt/local/mfs/var/mfs

sending SIGTERM to lock owner (pid:10259)

waiting for termination ... terminated

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

-------------------------------------------------------------------

 

5.3、配置 啟動 儲存塊服務 (10.3.0.102)

 

儲存塊伺服器中使用的配置檔案是mfschunkserver.cfg,將/opt/local/mfs/etc下的mfschunkserver.cfg.dist改名,其中註釋掉的資訊是當前的預設值。要注意的是,其中的MASTER_HOST\MASTER_PORT指定了主控伺服器的位置、埠,需要修改為正確的。預設MASTER_HOST是mfsmaster,先修改/etc/hosts檔案,增加一行

cp mfschunkserver.cfg.dist mfschunkserver.cfg

 

然後我們 建立一個用於存放資料的目錄,並授予許可權

mkdir -p /opt/data/mfschunk1

chown -R mfs:mfs /opt/data/mfs

另外,mfschunkserver.cfg中指定了共享硬碟使用的配置檔案mfshdd.cfg,修改/opt/local/mfs/etc下的mfshdd.cfg.dist名字。在裡面新增剛才配置的目錄

cp mfshdd.cfg.dist mfshdd.cfg

vi mfshdd.cfg  

新增

/opt/data/mfschunk1

 

 

儲存塊伺服器中共享的硬碟應當只供mfs使用,以便mfs能正確的管理它的自由空間。

更改完成以後就可以啟動儲存塊伺服器了

 

/opt/local/mfs/sbin/mfschunkserver start

 

-----------------------------------------------------------------------

 

working directory: /opt/local/mfs/var/mfs

lockfile created and locked

initializing mfschunkserver modules ...

hdd space manager: path to scan: /opt/data/mfs/

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

------------------------------------------------------------------------

 

 

 

 

 

5.4、配置 客戶端 ..(10.3.0.103)

 

 

修改/etc/hosts檔案,增加一行

vi /etc/hosts

10.3.0.110 mfsmaster

 

建立一個作為掛載點的目錄,使用mfsmount命令掛載,掛載到本地..

 

mkdir -p /opt/data/mfs

掛載

/opt/local/mfs/bin/mfsmount /opt/data/mfs -H mfsmaster

 

 

引數:

-H 為掛載整個mfs目錄

-P 指定實際使用的埠

-S 指定掛載的子目錄

 

 

 

5.5、安裝配置keepalived   主從災備切換( 10.3.0.110 ) 虛擬IP

   使用keepalived,監控主控伺服器,當主控伺服器10.3.0.101上的mfsmaster服務掛掉,伺服器當機時,自動切換到後設資料日誌伺服器10.3.0.102 上繼續服務。

在主控伺服器   與  後設資料日誌伺服器   下載 keepalived    

http://www.keepalived.org/download.html  下載最新版

wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

tar zxvf keepalived-1.2.7.tar.gz 

cd keepalived-1.2.7

./configure --prefix=/

make && make install

 

配置為系統服務,並且開機自動啟動.

---------------------------------------------------------------------

 

chmod +x /etc/rc.d/init.d/keepalived  

chkconfig --add keepalived  

chkconfig --level 21 keepalived on 

 

--------------------------------------------------------------------

 

配置檔案在/etc/keepalived/keepalived.conf

修改配置檔案 keeplived.conf

vi /etc/keepalived/keepalived.conf

主控伺服器10.3.0.101 上的配置檔案是,每兩秒鐘使用指令碼檢測mfsmaster執行情況,發現執行失敗,就停止keepaled服務。

-------------------------------------------------------------------------

 

! Configuration File for keepalived  

global_defs {  

   router_id LVS_STTD  

}  

vrrp_script check_run {  

   script "/opt/local/mfs/keepalived_check_mfsmaster.sh"  

   interval 2  

}  

vrrp_sync_group VG1 {  

    group {  

          VI_1  

    }  

}  

vrrp_instance VI_1 {  

    state MASTER  

    interface eth0  

    virtual_router_id 88  

    priority 100  

    advert_int 1  

    nopreempt  

    authentication {  

        auth_type PASS  

        auth_pass 1111  

    }  

    track_script {  

        check_run  

    }  

    virtual_ipaddress {  

        10.3.0.110 

    }  

}  

-------------------------------------------------------------------------

 

/opt/local/mfs/keepalived_check_mfsmaster.sh  

#指令碼,如mfsmaster未執行,則停止keepalived服務  

vi /opt/local/mfs/keepalived_check_mfsmaster.sh

-------------------------------------------------------------------------

#!/bin/sh  

CHECK_TIME=2 

mfspath=" /opt/local/mfs/sbin/mfsmaster" 

function check_mfsmaster () {  

ps -ef | grep mfsmaster | grep "/opt/local/mfs/sbin/mfsmaster" | grep -v "grep"  

    if [ $? = 0 ] ;then  

        MFS_OK=1 

    else  

        MFS_OK=0 

    fi  

    return $MFS_OK  

}  

while [ $CHECK_TIME -ne 0 ]  

do  

        let "CHECK_TIME -= 1"  

        check_mfsmaster  

        if [ $MFS_OK = 1 ] ; then  

                CHECK_TIME=0 

                exit 0  

        fi  

 

        if [ $MFS_OK -eq 0 ] &&  [ $CHECK_TIME -eq 0 ] ;then  

                /etc/init.d/keepalived stop  

                exit 1  

        fi  

done 

 

------------------------------------------------------------------------

 

授權..

chmod +x /opt/local/mfs/keepalived_check_mfsmaster.sh

 

 

 

後設資料日誌伺服器 10.3.0.102 上keepalved配置

vi /etc/keepalived/keepalived.conf

-------------------------------------------------------------------------

 

! Configuration File for keepalived  

global_defs {  

   router_id LVS_STTD  

}  

vrrp_sync_group VG1 {  

    group {  

          VI_1  

    }  

notify_master "/opt/local/mfs/keepalived_notify.sh master"  

notify_backup "/opt/local/mfs/keepalived_notify.sh backup"  

}  

vrrp_instance VI_1 {  

    state BACKUP  

    interface eth0  

    virtual_router_id 88  

    priority 80  

    advert_int 1  

    authentication {  

        auth_type PASS  

        auth_pass 1111  

    }  

    virtual_ipaddress {  

        10.3.0.110 

    }  

}  

-------------------------------------------------------------------------

 

建立指令碼檔案 /opt/local/mfs/keepalived_notify.sh

vi /opt/local/mfs/keepalived_notify.sh

------------------------------------------------------------------------

 

#!/bin/bash  

MFS_HOME=/opt/local/mfs  

MFSMARSTER=${MFS_HOME}/sbin/mfsmaster  

MFSMETARESTORE=${MFS_HOME}/sbin/mfsmetarestore  

MFS_DATA_PATH=${MFS_HOME}/var/mfs  

function backup2master(){  

$MFSMETARESTORE -m ${MFS_DATA_PATH}/metadata.mfs.back -o ${MFS_DATA_PATH}/metadata.mfs $MFS_DATA_PATH/changelog_ml*.mfs  

$MFSMARSTER start  

}  

function master2backup(){  

$MFSMARSTER stop  

/opt/local/mfs/sbin/mfsmetalogger start  

}  

function ERROR(){  

echo "USAGE: keepalived_notify.sh master|backup "  

}  

case $1 in  

        master)  

        backup2master  

        ;;  

        backup)  

        master2backup  

        ;;  

        *)  

        ERROR  

        ;;  

esac 

------------------------------------------------------------------------

 

 

授權 

chmod +x /opt/local/mfs/keepalived_notify.sh 

相關文章