個人moosefs安裝手記

     在服務器較多,且服務器上硬盤剩餘空間較大的狀況下。爲了更充分的利用資源,咱們可使用分佈式的文件系統將這些空間整合起來。而在衆多的分佈的文件系統中,筆者通過反正的比較和嘗試最終選擇了moosefs(如下簡稱mfs).
爲何選擇mfs而不是其它的什麼系統呢?
    1. 安裝簡單方便(易用性)。這點是其它系統所不及的。你只須要像安裝普通的服務那樣安裝mfs,不須要修改內核!
    2. 擴容方便(高可靠性)mfs羣集啓動之後,你能夠很方便的向羣集裏添加或者刪除服務器而不用中止服務,且不影響服務的正常運行!
    3. 管理方便(可操做性)。你能夠很方便的動態調整集羣運行參數,即時生效而不用重啓服務!
 
如今來看一下mfs系統的組成部分吧:
    1.master master負責在整個系統中管理數據。是整個系統的維護者。可是它有個弱點就是master只有一個!也就是說若是master壞掉,整個系統將中止工做!不過這算不上致命弱點,由於咱們作好數據備份之後,恢復master是很簡單的事。
    2.chunkserver chunkservermfs系統中的數據存儲者。真正的用戶數據按照算法被分紅chunk,並分發到各個chunkserver上。這樣就保存了數據的安全性。
    3.client 。凡是使用mfs文件系統的機器均可以被稱爲clientclientmfs系統的使用者。當clientmfs文件系統掛載到本機之後,它能夠像使用一個普通的磁盤分區同樣,來使用mfs.
 
安裝fuse
    咱們首先 安裝fuse。爲何要安裝fuse呢?由於mfs的客戶端是基於fuse寫的,編譯客戶端工具的時候要用到它。因此,若是你打算在這臺機器使用mfs的客戶端。你必須先安裝fuse。另外,筆者在安裝mfs的時候,fuse的最新版本爲2.8,可是用了最新的版本之後modprobe fuse的時候提示找不到。最後用了2.7的版本纔沒問題,使用過程當中也很正常。因此咱們仍是基於2.7
    1. 下載
http://jaist.dl.sourceforge.net/project/fuse/fuse-2.X/ 2.7.4 /fuse-2.7.4.tar.gz
2. 解壓
tar zxvf fuse- 2.7.4 .tar.gz
3. 編譯安裝
cd fuse
./configure --prefix=/usr&&make &&make install
解釋一下: prefix指定目錄,咱們安裝到/usr下,這樣fuse的庫文件就自動安裝到了/usr/lib,免去了咱們手工指定連接庫的麻煩。
 
安裝mfs系統
mfs 系統的軟件包,總共才300k,對於一個用來完成分佈式文件系統的軟件來講只能用短小精悍來形容。
1. 下載
2. 解包
tar zxvf mfs- 1.5.12 .tar.gz
3. 建立用戶mfs,默認使用的用戶是nobody,同時也不建議使用root用戶來運行mfs系統,因此咱們添加一個普通用戶。
useradd mfs -M -s /sbin/nologin
4. 編譯安裝
cd mfs- 1.5.12
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount&&make&&make install
    解釋一下:prefix指定安裝的目錄;接下來指定的是運行mfs的用戶和組;--enable-mfsmount是強制編譯mfs的客戶端工具mfsmount;用這樣的編譯參數編出來的mfs系統,master,chunkserver,client三個工具都包含了。筆者我的比較偏好這種方式。固然若是你的服務器分工很明確,master只編譯master的包,chunkserver只編譯chunkserver的包也能夠:
--disabe-mfsmater 這樣就禁用了master;
--disable-mfschunkserver 就禁用了chunkserver;
--disable-mfsmount 這樣就強制禁用了mfsmount,默認狀況下是檢測到已經安裝fuse才自動安裝mfsmount
 
配置mfs系統
    mfs 系統配置起來特別簡單,下面就由我來向您展現一下mfs的神奇魅力。先簡單說一下mfs的目錄結構。若是您也和我使用同樣的編譯參數。那麼進入/usr/local/mfs你會發現bin,etc,sbin,share,var幾個簡潔的目錄。
bin:mfs 客戶端工具的目錄
sbin:mfs 服務端工具目錄
etc:mfs 配置文件所在的目錄包括masterchunkserver
share: 這個就不用說了,幫助文件目錄
var: 數據文件目錄。
    嘿嘿,目錄給人的感受就是清析明瞭。一下子再配置一下,你就會感受配置也是so easy。在開始配置之前我們說下實驗環境,免得咱們言之無物:
master:192.168.1.247
chunkserver1:192.168.1.248
chunkserver2:192.168.1.249
client: 三臺機器哪一個均可以了 J
mfs 並不嚴格要求你說masterchunkserver以及client不能跑在同一臺器,而實際狀況筆者也確實這樣試過沒啥問題。可是考慮的系統的安全穩定仍是建議master單獨跑一臺,並作好備份,chunkserverclient就能夠看具體需求了。
 
master 配置
    用到的文件etc下的mfsmaster.cfg,用到的工具sbin下的mfsmaster。先來看mfsmaster.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
 
# LOCK_FILE = /var/run/mfs/mfsmaster.pid
# DATA_PATH = /usr/local/mfs/var/mfs
# SYSLOG_IDENT = mfsmaster
 
# BACK_LOGS = 50
 
# REPLICATIONS_DELAY_INIT = 300
# REPLICATIONS_DELAY_DISCONNECT = 3600
 
# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420
 
# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421
 
# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_REP_LIMIT = 15
選項彷佛挺多,其實咱們第一次能夠只關注一句
# MATOCS_LISTEN_HOST = * 改爲MATOCS_LISTEN_HOST = 192.168.1.247
去掉#,*換成masterip,就這麼簡單,保存,退出就能夠了。
這裏順便說一下mfs的配置文件,雖然默認都加着#也就是說不起做用,可是未編輯過的配置文件裏記錄的參數,也是系統未配置時運行的默認參數,這點注意。
    啓動master
[root@lvs etc]#/usr/loca/mfs/sbin/ mfsmaster
就能夠了。能夠去系統日誌看下master的運行狀況。
中止master的指令
[root@lvs etc]#/usr/loca/mfs/sbin/ mfsmaster -s
小技巧:若是以爲每次都輸這麼長的命令麻煩的話,能夠把它加入到path:
export PATH=/usr/local/mfs/sbin:/usr/local/mfs/sbin:$PATH
    之後再控制master直接用mfsmaster或者mfsmaster -s是否是很方便?
 
chunkserver 配置
    用到的文件etc下的mfschunkserver.cfgmfshdd.cfg,用到的工具sbin下的mfschunkserver。先來看mfschunkserver.cfg
# WORKING_USER = mfs
# WORKING_GROUP = mfs
 
# DATA_PATH = /usr/local/mfs/var/mfs
# LOCK_FILE = /var/run/mfs/mfschunkserver.pid
# SYSLOG_IDENT = mfschunkserver
 
# BACK_LOGS = 50
 
# MASTER_RECONNECTION_DELAY = 30
 
# MASTER_HOST = mfsmaster
# MASTER_PORT = 9420
 
# MASTER_TIMEOUT = 60
 
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422
 
# CSSERV_TIMEOUT = 60
 
# CSTOCS_TIMEOUT = 60
 
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
    嘿嘿,選項比mfsmaster.cfg很多,不過不怕,咱們只關心下面一行。
# MASTER_HOST = mfsmaster 改爲MASTER_HOST = 192.168.1.247
    再來看mfshdd.cfg。顧名思義就是mfs的硬盤配置。
/mnt/hd1
/mnt/hd2
/mnt/hd3
/mnt/hd4
    把這四行都刪除了吧,由於在咱們機器上不存在。這裏我只寫了一行/data,這個分區在我機器上是一塊單獨的硬盤,專門用來存放數據的。記得從新定義一下/data的權限喲,要不mfs操做不了。
    [root@lvs etc]#chown -R mfs.mfs /data
    啓動chunkserver
    [root@lvs etc]#chunkserver
    中止chunkserver
[root@lvs etc]#chunkserver -s
你能夠去系統日誌看,chunkserver是否是正常起動。(一樣的方法配置第二臺機器)
OK, 這樣的話,咱們就成功啓動了一個由一個master和兩個chunkserver組成的分佈式系統。爲了達到這個系統的開機啓動咱們能夠把下面這兩條加到/etc/rc.local(根據實際狀況添喲)
/usr/local/mfs/sbin/mfsmaster
/usr/local/mfs/sbin/mfschunkserver
 
client 配置
    嘿嘿,客戶端嚴格來講,已經算不上配置了,充其量也就是一個應用。客戶端能夠是任意一臺須要使用分佈式系統,而且安裝了mfsmount的服務器。對於客戶端來講mfs只是掛載方式不同,掛載完了和普通的硬盤分區沒啥區別。到底怎麼掛載呢?
    用到的命令mfsmount,這個工具位於bin目錄下。
[root@web2 etc]# mkdir /mnt/mfs
[root@web2 etc]# /usr/local/mfs/bin/mfsmount -h 192.168.1.247
[root@web2 etc]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sdb1 on /data type ext3 (rw)
MFS on /mnt/mfs type fuse (rw,allow_other,default_permissions)
mfsmount 這個命令經常使用的參數就兩個:
-h 指定服務器。
-w 指定本地掛載目錄。默認用/mnt/mfs
 
 
之後就能夠對/mnt/mfs這個目錄進行正常的讀寫了,你所寫入的任何東東都會分佈到其它的機器上,以保證數據的安全性。在/usr/local/mfs/bin目錄還有一些其它的工具,幫你瞭解mfs運行狀況,並設定mfs,有時間必定要好好看看喲~
相關文章
相關標籤/搜索