1. 程式人生 > >部署MooseFS分散式檔案系統

部署MooseFS分散式檔案系統

MooseFS是一個分散式檔案系統,其本身具有高可用性,高拓展性,開放原始碼,高容錯,等在資料的讀寫效能方面,通過dd測試,MooseFS也就是寫入的速度稍微好於NFS,讀上沒有差別.

MooseFS的檔案系統結構體系可分為以下四種角色,分別對應不同的功能:

1.管理伺服器managing server (master)
2.元資料日誌伺服器Metalogger server(Metalogger)
3.資料儲存伺服器data servers (chunkservers)
4.客戶機掛載使用client computers

下面我們分別編譯安裝MFS的每個元件,實現一個企業環境的分散式檔案系統。

實驗環境與IP分配

[主機型別]      [主機IP]      [主機作用]

Master-Server       192.168.22.195      主控伺服器

MetaLogger-Server   192.168.22.191      備份伺服器

Cunk-Server     192.168.22.192      儲存節點1
Cunk-Server     192.168.22.193      儲存節點2

Client          192.168.22.194      掛載客戶端


◆Master-Server配置◆

Master-Server相當於MFS的大腦,用於管理協調伺服器之間正常工作,此處也就是主控伺服器

1.伺服器上的/etc/hosts中新增下面指向,指明主伺服器IP

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.22.195 mfsmaster                #在原來的基礎上新增這一條即可

2.原始碼編譯安裝Master-Server

yum install -y gcc zlib zlib-devel                  #安裝依賴

groupadd mfs                                #建立使用者組

useradd -M -s /sbin/nologin -g mfs mfs                  #建立使用者並將其加入使用者組

tar –xzvf moosefs-3.0.99.tar.gz

cd moosefs-3.0.99/

./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfschunkserver \
--disable-mfsmount

------------------------------------------------------------------------------------------------
[引數解釋]

    --prefix=/usr                   #指定主目錄存放位置
    --sysconfdir=/etc               #指定配置檔案存放位置
    --localstatedir=/var/lib            #存放二進位制檔案metadata和文字檔案changelog
    --with-default-user=mfs             #指定使用者
    --with-default-group=mfs            #指定組
    --disable-mfschunkserver            #關閉chunk-server
    --disable-mfsmount              #關閉掛載
------------------------------------------------------------------------------------------------

make && make install

3.成功安裝 Master 以後,系統會在/etc/mfs目錄自動生成樣例配置檔案,我們需要將此配置檔案修改一下,去掉字尾.sample配置檔案才會生效

cd /etc/mfs/
cp -a mfsmaster.cfg.sample mfsmaster.cfg
cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
cp -a mfsexports.cfg.sample mfsexports.cfg

cd /var/lib/mfs
cp -a metadata.mfs.empty metadata.mfs

4.啟動Master-Server服務和CGI 監控服務

/usr/sbin/mfsmaster start                       #啟動Master-Server
/usr/sbin/mfscgiserv                            #啟動監控服務

5.設定Mfsmaster和mfscgiserv程序開機自啟動,此處將開機命令追加寫入/etc/profile系統每次開機都會執行這條指令,從而實現開機自啟動

echo "/usr/sbin/mfsmaster start" >> /etc/profile
echo "/usr/sbin/mfscgiserv" >> /etc/profile

6.現在我們來測試一下,使用瀏覽器訪問以下地址,成功的話會看到監控頁面

http://192.168.22.195:9425                      #檢視是否啟動成功


◆MetaLogger-Server配置◆

Metalogger server主要作用是主控伺服器的備份,他的作用是起到主控伺服器崩潰了它自動頂上,所以Metalogger server 的安裝和master server的安裝大體是一樣的,當然備份伺服器不安裝照樣能使用,但是就失去了備份的功能

1.伺服器上的/etc/hosts中新增下面指向,指向主伺服器IP(可選/如果不做第1步則要做第3步)

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.22.195 mfsmaster                #在原來的基礎上新增這一條即可

2.原始碼編譯安裝Masterlog-Server

yum install -y gcc zlib zlib-devel                  #安裝依賴

groupadd mfs                                #建立使用者組

useradd -M -s /sbin/nologin -g mfs mfs                  #建立使用者並將其加入使用者組

tar -xzvf moosefs-3.0.99.tar.gz

cd moosefs-3.0.99/

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib \
--with-default-user=mfs --with-default-group=mfs \
--disable-mfschunkserver --disable-mfsmount

------------------------------------------------------------------------------------------------
[引數解釋]

    --prefix=/usr                   #指定主目錄存放位置
    --sysconfdir=/etc               #指定配置檔案存放位置
    --localstatedir=/var/lib            #存放二進位制檔案metadata和文字檔案changelog
    --with-default-user=mfs             #指定使用者
    --with-default-group=mfs            #指定組
    --disable-mfschunkserver            #關閉chunk-server
    --disable-mfsmount              #關閉掛載
------------------------------------------------------------------------------------------------

make && make install

3.Masterlog-Server修改主配置檔案,指定主伺服器IP

[開啟配置檔案]
------------------------------------------------------------------------------------------------
cd /etc/mfs

cp -a mfsmetalogger.cfg.sample mfsmetalogger.cfg
------------------------------------------------------------------------------------------------

[配置引數]
------------------------------------------------------------------------------------------------
vim /etc/mfs/mfsmetalogger.cfg

META_DOWNLOAD_FREQ = 2                      #元資料備份檔案下載請求頻率(預設24小時)
MASTER_HOST = 192.168.22.195                #指定Master-Server地址(主控地址)
------------------------------------------------------------------------------------------------

4.啟動Metalogger server備用伺服器程序,並設定開機自啟動

/usr/sbin/mfsmetalogger start
echo "/usr/sbin/mfsmetalogger start" >> /etc/profile

5.檢查從伺服器是否啟動成功並同步了資料

cd /var/lib/mfs                     #檢視是否有檔案產生(產生了檔案說明成功)
lsof -i :9419                       #檢查埠是否開啟


◆Cunk-Server配置◆

真正儲存資料的節點,擴建它增加容量,可以多臺每個檔案可能在不同伺服器間拷貝

1.Cunk-server伺服器上的/etc/hosts中新增下面指向,指明主伺服器IP

(可選/如果不做第1步則要做第3步)

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.22.195 mfsmaster                #在原來的基礎上新增這一條即可

2.原始碼編譯安裝Cunk-Server

yum install -y gcc zlib zlib-devel                  #安裝依賴

groupadd mfs                                #建立使用者組

useradd -M -s /sbin/nologin -g mfs mfs                  #建立使用者並將其加入使用者組

tar -xzvf moosefs-3.0.99.tar.gz

cd moosefs-3.0.99/

./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster

------------------------------------------------------------------------------------------------
[引數解釋]

    --prefix=/usr                   #指定主目錄存放位置
    --sysconfdir=/etc               #指定配置檔案存放位置
    --localstatedir=/var/lib            #存放二進位制檔案metadata和文字檔案changelog
    --with-default-user=mfs             #指定使用者
    --with-default-group=mfs            #指定組
    --disable-mfschunkserver            #關閉chunk-server
    --disable-mfsmount              #關閉掛載
------------------------------------------------------------------------------------------------

make && make install

3.拷貝 Chunk-Server 服務所需的配置檔案(開啟配置檔案),去掉.sample字尾開啟

------------------------------------------------------------------------------------------------
cd /etc/mfs

cp -a mfschunkserver.cfg.sample mfschunkserver.cfg
cp -a mfshdd.cfg.sample mfshdd.cfg
------------------------------------------------------------------------------------------------

4.修改Chunk-Server 配置檔案,指定伺服器地址,埠,和共享的磁碟

vim /etc/mfs/mfschunkserver.cfg 

MASTER_HOST = 192.168.22.195                        #指明Master-Server伺服器地址
MASTER_PORT = 9420                              #指明Master-Server埠
HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg             #指明哪個配置檔案來配置共享磁碟的

5.編輯/etc/mfs/mfshdd.cfg,在最後面新增下面的文字行,並建立相應掛載目錄

在配置檔案 mfshdd.cfg 中我們給出了用於客戶端掛接 MooseFS 分散式檔案系統根分割槽所使用的共享空間位置.
建議在Chunk-Server上劃分單獨的空間給 MooseFS 使用,這樣做的好處是便於管理剩餘空間.
此處我們假定要使用一個共享點/mnt/mfschunk(如果沒有,請先建立共享點).

------------------------------------------------------------------------------------------------
[寫入配置]

vim /etc/mfs/mfshdd.cfg

/mnt/mfschunk                               #Chunk-Server共享的目錄
------------------------------------------------------------------------------------------------
[建立共享目錄]

mkdir -p /mnt/mfschunk
chown -R mfs:mfs /mnt/mfschunk
------------------------------------------------------------------------------------------------

6.啟動 Cunk-Server 服務,並設定開機自啟動

/usr/sbin/mfschunkserver start
echo "/usr/sbin/mfschunkserver start" >> /etc/profile

7.現在通過瀏覽器訪問,主控地址

網頁中,應該可以看見這個 MooseFS 系統的全部資訊(包括主控 master和儲存服務 chunkserver)
在Disks上可以看到我們的掛載/ghost目錄了

◆Client客戶端配置◆

實際的使用節點,例如:每臺Apache都掛載上共享目錄,即可實現所有Apache伺服器全部共享一個目錄

1.在/etc/hosts中新增下面指向,指明主伺服器IP(可選/不指定則要通過IP掛載)

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.22.195 mfsmaster                #在原來的基礎上新增這一條即可

2.為了掛載基於MooseFS的檔案系統,需要所有客戶端安裝FUSE包

tar -xzvf fuse-2.9.3.tar.gz

cd fuse-2.9.3/

./configure

make && make install

3.Linux下執行下面命令,不然編譯mfsmount會報Fuse不存在的錯

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

4.編譯安裝客戶端軟體mfsmount

yum install -y gcc zlib zlib-devel                  #安裝依賴

groupadd mfs                                #建立使用者組

useradd -M -s /sbin/nologin -g mfs mfs                  #建立使用者並將其加入使用者組

tar -xzvf moosefs-3.0.99.tar.gz

cd moosefs-3.0.99/

./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster \
--disable-mfschunkserver

------------------------------------------------------------------------------------------------
[引數解釋]

    --prefix=/usr                   #指定主目錄存放位置
    --sysconfdir=/etc               #指定配置檔案存放位置
    --localstatedir=/var/lib            #存放二進位制檔案metadata和文字檔案changelog
    --with-default-user=mfs             #指定使用者
    --with-default-group=mfs            #指定組
    --disable-mfschunkserver            #關閉chunk-server
    --disable-mfsmount              #關閉掛載
------------------------------------------------------------------------------------------------

make && make install

5.假定客戶端的掛接點是 /media,我們將以下面的指令來使用 MooseFS 分散式系統

/usr/bin/mfsmount/mfsmount /media -H mfsmaster          #不指定掛接地址

/usr/bin/mfsmount/mfsmount /media -H 192.168.1.12       #掛接地址掛載(指定主儲存IP)

#上面的解釋,用/usr/bin/mfsmount將192.168.22.195的資源掛載到本地/media下

#掛載成功後,執行命令 df -h 檢視分割槽情況

6.應該寫入配置檔案/etc/fstab或者/etc/profile開機自動掛載

echo "/usr/bin/mfsmount /media -H 192.168.22.195" >> /etc/profile


◆MooseFS常用功能◆

1.資料誤刪除恢復操作,垃圾回收站機制

mfssettrashtime  64800  /ghost/l1.txt               #給1.txt設定一個儲存時間
mkdir /back
chown mfs.mfs /back
mfsmount -m /back -H 192.168.22.195             #指定伺服器IP

find . -name *1.txt*                        #搜尋刪除的1.txt
mv 002/00000002\|1.txt  /back/trash/undel/          #拿到undel佇列裡,就恢復了

2.快照功能(提取資料)

mkdir  /back
chown  mfs.mfs  back/
mfsmakesnapshot  1.txt  back/                   #拷貝1.txt的源資訊到back/目錄下
cd back/                            #拷貝出來的資料

3.冗餘 goal 設定(自定義備份個數)

mfsgetgoal      /ghost/1.txt                #檢視1.txt的冗餘數
mfsfileinfo         /ghost/1.txt                #檢視1.txt的冗餘分佈在那幾臺機器上
mfssetgoal  3   /ghost/1.txt                #設定1.txt的冗餘個數 (要備份幾份)

4.還原 master資料(主伺服器的宕機/資料丟失/恢復資料)

我們要去從伺服器,將從裡的資料拷貝到主上,並重新建立檔案索引,即可恢復丟失檔案

scp /usr/local/mfs/var/mfs/*  [email protected]:/usr/local/mfs/var/mfs

mfsmaster -a                            #自動恢復重新建立索引

netstat -an |grep "9419"                    #檢查是否開啟成功