MooseFS是一個具備冗余容錯功能的分布式網絡文件系統,它將數據分別存放在多個物理服務器或單獨磁盤或分區上,確保一份數據有多個備份副本。對于訪問的客戶端或者用戶來說,整個分布式網絡文件系統集群看起來就像一個資源一樣。從其對文件操作的情況看,MooseFS就相當于一個類UNIX文件系統。
基本介紹
MooseFS分布式文件系統安裝向導
概述Overview
下面我們以step-by-step?的方式,介紹在linux?平臺安裝MooseFS?文件系統的基本過程。我們假定您將以MFS?用戶和mfs?組來運行MooseFS。同時,我們推薦使用FHS(文件系統層次結構標準FileSystem?Hierarchy?Standard)兼容路徑,并且把歸檔文件mfs-1.6.17.tar.gz?放置在/USR/src?目錄里。本文旨在向讀者介紹怎樣在多個專用服務器安裝MooseFS?分布式文件系統以及在單個服務器安裝Moosefs?文件系統用于測試這樣的場景。
最新的MooseFS?穩定發行版本可以從http://SourceForge.net/projects/moosefs/?取得,在安裝MooseFS?系統客戶端時,應當確保系統已經安裝了正確的fuse?版本,如果沒有fuse?被安裝,您可以從http://sourceforge.net/projects/fuse/下載并安裝它。
在專用服務器安裝MooseFS?基本步驟
我們假定使用的主機ip?地址分配如下:
??主控服務器Master?server:?192.168.1.1
??主控備份服務器Metalogger?server:?192.168.1.2
??存儲塊服務器Chunk?servers:?192.168.1.101?and?192.168.1.102
??客戶端主機?(clients):?192.168.2.x
主控服務器Master?server?安裝
當我們安裝主控服務器時,在配置過程中(./configure),可以取消安裝chunk?server
(--disable-mfschunkserver)以及MooseFS?客戶端(--disable-mfsmount).?安裝主控服務器master?的具體步驟為:
1、添加mfs?組
#groupadd?馬方綜合征
2、新增系統用戶mfs
#useradd?-g?mfs?mfs
3、切換目錄
#cd?/usr/src
4、解包歸檔文件
#tar?-zxvf?mfs-1.6.17.tar.gz
5、進入安裝目錄
#cd?mfs-1.6.17
6、配置
#./configure?--prefix=/usr?--sysconfdir=/etc?\
--localstatedir=/var/天秤座?--with-default-user=mfs?\
--with-default-group=mfs?--disable-mfschunkserver?--disable-mfsmount
7、編譯并安裝
#make
#make?install
成功安裝master?以后,系統會在/etc?目錄自動生成樣例配置文件,這些樣例文件是以.dist
后綴命名。這里我們將借用這些樣例文件作為MooseFS?主控服務器的目標配置文件:
1、切換目錄
#cd?/etc
2、復制樣例文件,以得到master?所需的配置文件
#cp?mfsmaster.cfg.dist?mfsmaster.cfg
#cp?mfsmetalogger.cfg.dist?mfsmetalogger.cfg
#cp?mfsexports.cfg.dist?mfsexports.cfg
如果我們打算更改這些配置文件中的某些項目的值,則需要打開特定配置文件相關文本行前的注釋,然后修改跟隨其后的值。因為被注釋掉的行,即是MooseFS?內置的缺省值。
Mfsmaster.cfg?配置文件包含主控服務器master?相關的設置,在這里我們暫時不打算對其進行修改。如果你想知道關于該配置文件更多的信息,請查看它的手冊頁(使用命令man
mfsmaster.cfg)。
配置文件mfsexports.cfg?指定那些客戶端主機可以遠程掛接MooseFS?文件系統,以及授予掛接客戶端什么樣的訪問權限。例如,我們指定只有192.168.2.x?網段的主機可以以讀寫模式訪問MooseFS?的整個共享結構資源(/)。在配置文件mfsexports.cfg?文件的第一行,先取消注釋,然后把星號(*)改成192.168.2.0/24,以便我們可以得到下面的文本行:
192.168.2.0/24?/?rw,alldirs,maproot=0
二進制文件metadata?和文本文件changelog?將被保存在目錄/var/lib/mfs,這是因為我們安裝過程的configure?步驟使用了選項?--localstatedir=/var/lib?。首次安裝master?時,會自動生成一個名為metadata.mfs.empty?的元數據文件metadata,該文件是空的。MooseFS?master?運行必須有文件metadata.mfs,這個文件是從metadata.mfs.empty?改名而來:
1、切換目錄
#cd?/var/天秤座/mfs
2、重命名文件
#cp?metadata.mfs.empty?metadata.mfs
[譯者注]MooseFS?master?運行以后,metadata.mfs?文件大小將發生變化,肯定不會是空文件了。
修改/etc/hosts?文件,以綁定主機名mfsmaster?與ip?地址192.168.1.1:
192.168.1.1?mfsmaster
這個時候,我們可以試著運行master?服務(服務將以安裝配置configure?指定的用戶運行,這我們的案例里,它是mfs):
#/usr/sbin/mfsmaster?start
在一個生產環境里,我們應當設置自動啟動腳本,以便操作系統重新啟動時,MooseFS?master
也能自動運行。
為了監控MooseFS?當前運行狀態,我們可以運行CGI?監控服務,這樣就可以用瀏覽器查看整個MooseFS?的運行情況:
#/usr/sbin/mfscgiserv
現在,我們在瀏覽器地址欄輸入http://192.168.1.1:9425?即可查看master?的運行情況(這個時候,是不能看見chunk?server?的數據)。
備份服務器Backup?server?(metalogger)?安裝
用來安裝metalogger?的主機,在性能上應該比master?強大(至少有更多的內存)。一旦主控服務器master?失效,只要導入changelogs?到元數據文件,備份服務器metalogger?將能接替發生故障的master,行使管理服務器的職能(更多細節請參看http://www.moosefs.org/minihowtos.HTML#redundant-master)。
備份服務器Metalogger?安裝跟主控服務器master?安裝非常類似。其安裝命令如下:
1、創建組mfs
#groupadd?馬方綜合征
2、創建用戶mfs
#useradd?-g?mfs?mfs
3、切換目錄
#cd?/usr/src
4、解包歸檔文件
#tar?-zxvf?mfs-1.6.17.tar.gz
5、切換目錄
#cd?mfs-1.6.17
6、配置
#./configure?--prefix=/usr?--sysconfdir=/etc?\
--localstatedir=/var/天秤座?--with-default-user=mfs?\
--with-default-group=mfs?--disable-mfschunkserver?--disable-mfsmount
7、編譯及安裝
#make
#make?install
8、產生配置文件
#cd?/etc
#cp?mfsmetalogger.cfg.dist?mfsmetalogger.cfg
類似地,修改/etc/hosts?文件,增加下面的行:
192.168.1.1?mfsmaster
現在,我們來試著運行備份服務mfsmetaloger:
#/usr/sbin/mfsmetalogger?start
在一個生產環境里,我們應當設置自動啟動腳本,以便操作系統重新啟動時,MooseFS
mfsmetalogger?服務也能自動運行。
存儲塊服務器Chunk?servers?安裝
在每個chunk?server?主機上執行下面的命令:
#groupadd?馬方綜合征
#useradd?-g?mfs?mfs
#cd?/usr/src
#tar?-zxvf?mfs-1.6.17.tar.gz
#cd?mfs-1.6.17
#./configure?--prefix=/usr?--sysconfdir=/etc?\
--localstatedir=/var/天秤座?--with-default-user=mfs?\
--with-default-group=mfs?--disable-mfsmaster
#make
#make?install
準備chunk?server?服務所需的配置文件:
#cd?/etc/
#cp?mfschunkserver.cfg.dist?mfschunkserver.cfg
#cp?mfshdd.cfg.dist?mfshdd.cfg
為了測試這個安裝,我們保留mfschunkserver.cfg?文件不做任何改動;如果讀者想了解配置文件mfschunkserver.cfg?更詳細的信息,請查看手冊頁?(man
mfschunkserver.cfg)。
在配置文件mfshdd.cfg?中,我們給出了用于客戶端掛接MooseFS?分布式文件系統根分區所使用的共享空間位置。建議在chunk?server?上劃分單獨的空間給?MooseFS?使用,這樣做的好處是便于管理剩余空間。此處我們假定要使用兩個共享點/mnt/mfschunks1?和/mnt/mfschunks2,為此,我們在mfshdd.cfg?加入下面的文本行:
/mnt/mfschunks1
/mnt/mfschunks2
在啟動chunk?server?前,需確保用戶mfs?有權限讀寫將要被掛接的分區(因為chunk?server?運行時要在此創建一個.lock?的文件):
#chown?-R?mfs:mfs?/mnt/mfschunks1
#chown?-R?mfs:mfs?/mnt/mfschunks2
類似地,修改/etc/hosts?文件,增加下面的行:
192.168.1.1?mfsmaster
開始啟動chunk?server:
#/usr/sbin/mfschunkserver?start
現在再通過瀏覽器訪問?http://192.168.1.1:9425/?應該可以看見這個MooseFS?系統的全部信息,包括主控master?和存儲服務chunkserver?。
客戶端Users’?computers?安裝
為了掛接基于MooseFS?分布式文件,客戶端主機必須安裝FUSE?軟件包(?fuse?版本號至少2.6,推薦使用版本號大于2.7.2?的fuse)。如果系統沒有安裝fuse,你必須手動對其進行安裝。一種常見的安裝方式是從源碼進行編譯安裝-我們可以從http://sourceforge.net/projects/fuse/取得安裝源碼:
#cd?/usr/src
#tar?-zxvf?fuse-2.8.4.tar.gz
#cd?fuse-2.8.4
#./configure?--prefix=/usr
#make
#make?install
設置fuse啟動時自動裝載,在/etc/rc.d/rc.local文件的后面增加如下一行:
modprobefuse
安裝客戶端軟件?mfsmount?的步驟:
#cd?/usr/src
#tar?-zxvf?mfs-1.6.17.tar.gz
#cd?mfs-1.6.17
#./configure?--prefix=/usr?--sysconfdir=/etc?\
--localstatedir=/var/天秤座?--with-default-user=mfs?\
--with-default-group=mfs?--disable-mfsmaster?\
--disable-mfschunkserver
#make
#make?install
修改文件/etc/hosts?,增加如下的文本行:
192.168.1.1?mfsmaster
假定客戶端的掛接點是/mnt/mfs,我們將以下面的指令來使用MooseFS?分布式共享文件系統:
1、創建掛接點
#mkdir?-p?/mnt/mfs
2、開始掛接操作
#/usr/bin/mfsmount?/mnt/mfs?-H?mfsmaster
執行命令df?–h?|?grep?mfs?檢查分區情況,可能的輸出如下:
/storage/mfschunks/mfschunks1
2.0G?69M?1.9G?4%?/mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G?69M?1.9G?4%?/mnt/mfschunks2
mfs#mfsmaster:9421?3.2G?0?3.2G?0%?/mnt/mfs
安裝?MooseFS?在同一個主機
如果為測試目的,可以把MooseFS?安裝在同一個物理主機上。在這里,我們不推薦您把備份服務也安裝在這個主機上。同樣,我們假定主機的ip?地址為192.168.1.1。
為了掛接基于MooseFS?分布式文件,客戶端主機必須安裝FUSE?軟件包(?fuse?版本號至少2.6,推薦使用版本號大于2.7.2?的fuse)。如果系統沒有安裝fuse,你必須手動對其進行安裝。
一種常見的安裝方式是從源碼進行編譯安裝-我們可以從http://sourceforge.net/projects/fuse/取得安裝源碼:
#cd?/usr/src
#tar?-zxvf?fuse-2.8.4.tar.gz
#cd?fuse-2.8.4
#./configure?--prefix=/usr
#make
#make?install
安裝?MooseFS:
#groupadd?馬方綜合征
#useradd?-g?mfs?mfs
#cd?/usr/src
#tar?-zxvf?mfs-1.6.17.tar.gz
#cd?mfs-1.6.17
#./configure?--prefix=/usr?--sysconfdir=/etc?\
--localstatedir=/var/天秤座?--with-default-user=mfs?\
--with-default-group=mfs
#make
#make?install
MooseFS?chunk?以獨占方式使用專門磁盤分區是非常必要的--這樣做的好處是便于管理剩余空間。MooseFS?并不考慮其剩余空間能被另作他用。如果沒有單獨創建文件系統的條件,可以在文件中創建一個文件系統。為了完成測試,我們準備兩個2GB?的文件(文件位于目錄/storage/mfschunks),并在其上創建文件系統。把他們格式化為ext3,分別掛接在/mnt/mfschunks1?和/mnt/mfschunks2。以下是具體操作步驟:
一、掛接第一個文件系統
1、創建目錄
#mkdir?-p?/storage/mfschunks
2、創建鏡像文件mfschunks1
#dd?if=/dev/zero?of=/storage/mfschunks/mfschunks1?bs=1024?ount=1\
seek=$((2*1024*1024-1))
3、創建文件系統
#mkfs?-t?ext3?/storage/mfschunks/mfschunks1
4、創建掛接點
#mkdir?-p?/mnt/mfschunks1
5、掛接文件系統
#mount?-t?ext3?-o?loop?/storage/mfschunks/mfschunks1\
/mnt/mfschunks1
二、掛接第二個文件系統
1、創建第二個鏡像文件
#dd?if=/dev/zero?of=/storage/mfschunks/mfschunks2?bs=1024?ount=1\
seek=$((2*1024*1024-1))
2、創建文件系統
#mkfs?-t?ext3?/storage/mfschunks/mfschunks2
3、創建掛接點
#mkdir?-p?/mnt/mfschunks2
4、掛接文件系統
#mount?-t?ext3?-o?loop?/storage/mfschunks/mfschunks2?\
/mnt/mfschunks2
在啟動chunk?server?前,需確保用戶mfs?有權限讀寫將要被掛接的分區(因為chunk?server?運
行時要在此創建一個.lock?的文件):
#chown?-R?mfs:mfs?/mnt/mfschunks1
#chown?-R?mfs:mfs?/mnt/mfschunks2
/etc?目錄自動生成樣例配置文件,這些樣例文件是以.dist?后綴命名。這里我們將借用這些樣例文件作為MooseFS?的目標配置文件:
#cd?/etc
#cp?mfsexports.cfg.dist?mfsexports.cfg
#cp?mfsmaster.cfg.dist?mfsmaster.cfg
#cp?mfschunkserver.cfg.dist?mfschunkserver.cfg
#cp?mfshdd.cfg.dist?mfshdd.cfg
mfsexports.cfg?與?mfsmaster.cfg?為主控服務?master?配置文件,
mfschunkserver.cfg?與?mfshdd.cfg?為chunk?server?配置文件.
配置文件mfsexports.cfg?指定那些客戶端主機可以遠程掛接MooseFS?文件系統,以及授予掛接客戶端什么樣的訪問權限。例如,我們指定只有192.168.2.x?網段的主機可以以讀寫模式訪問MooseFS?的整個共享結構資源(/)。在配置文件mfsexports.cfg?文件的第一行,先取消注釋,然后把星號(*)改成192.168.1.0/24,以便我們可以得到下面的文本行:
192.168.1.0/24?/?rw,alldirs,maproot=0修改配置文件mfshdd.cfg?,使其內容為:
/mnt/mfschunks1
/mnt/mfschunks2
作為測試的例子,我們不打算修改?mfsmaster.cfg?和?mfschunkserver.cfg?配置文件的其他選項。
二進制文件metadata?和文本文件changelog?將被保存在目錄/var/lib/mfs,這是因為我們安裝過程的configure?步驟使用了選項?--localstatedir=/var/lib?。首次安裝master?時,會自動生成一個名為metadata.mfs.empty?的元數據文件metadata,該文件是空的。MooseFS?master?運必須有文件metadata.mfs,這個文件是從metadata.mfs.empty?改名而來:
#cd?/var/天秤座/mfs
#cp?metadata.mfs.empty?metadata.mfs
修改文件/etc/hosts,新增如下的文本行:
192.168.1.1?mfsmaster
運行?master?server,?CGI?監控以及?chunk?server:
#/usr/sbin/mfsmaster?start
#/usr/sbin/mfscgiserv
#/usr/sbin/mfschunkserver?start
MooseFS?當前運行狀態可以在瀏覽器中地址欄輸入http://192.168.1.1:9425/?獲得。
掛接MooseFS?文件系統到掛接點?/mnt/mfs?:
1、建立掛接點
#mkdir?-p?/mnt/mfs
2、掛接操作
#/usr/bin/mfsmount?/mnt/mfs?-H?mfsmaster
3、查看掛接情況
#?df?-h?|?grep?mfs:
/storage/mfschunks/mfschunks1
2.0G?69M?1.9G?4%?/mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G?69M?1.9G?4%?/mnt/mfschunks2
mfs#mfsmaster:9421?3.2G?0?3.2G?0%?/mnt/mfs
MooseFS?基礎用法
在MooseFS?掛接點下創建目錄folder1,?在該目錄,我們將以一個副本的方式存放文件?(設置goal=1):
#mkdir?-p?/mnt/mfs/folder1
再在掛接點創建第2?個目錄?folder2,?在該目錄,我們將以兩個個副本的方式存放文件(設置goal=2):
#mkdir?-p?/mnt/mfs/folder2
使用命令mfssetgoal?–r?設定目錄里文件的副本數:
1、副本數為1
#mfssetgoal?-r?1?/mnt/mfs/folder1
/mnt/mfs/folder1:
inodes?with?goal?changed:?0
inodes?with?goal?not?changed:?1
inodes?with?permission?denied:?0
2、副本數為2
#mfssetgoal?-r?2?/mnt/mfs/folder2
/mnt/mfs/folder2:
inodes?with?goal?changed:?0
inodes?with?goal?not?changed:?1
inodes?with?permission?denied:?0
拷貝同一個文件到兩個目錄:
cp?/usr/src/mfs-1.6.17.tar.gz?/mnt/mfs/folder1
cp?/usr/src/mfs-1.6.17.tar.gz?/mnt/mfs/folder2
命令mfschunkfile?用來檢查給定的文件以多少副本數來存儲。對應目錄folder1?來說,有一個副本存儲在一個chunk?里:
#mfscheckfile?/mnt/mfs/folder1/mfs-1.6.17.tar.gz
/mnt/mfs/folder1/mfs-1.6.17.tar.gz:
1?copies:?1?chunks
而在目錄folder2?中,文件?mfs-1.6.17.tar.gz?是以兩個副本保存的:
#mfscheckfile?/mnt/mfs/folder2/mfs-1.6.17.tar.gz
/mnt/mfs/folder2/mfs-1.6.17.tar.gz:
2?copies:?1?chunks
附加信息。當所有的組件被安裝到同一個物理主機的時候,即便設定了goal=2?來到達保存兩個副本的目的,但你可能看到的只是一個副本而已—這是合理的,盡管有兩個磁盤,但它只是一個chunk?server?啊!
更多關于MooseFS?命令的使用方法,可以在這里找到:
http://www.moosefs.org/reference-guide.HTML#using-moosefs
我們推薦你閱讀?FAQ?頁面內容:
http://www.moosefs.org/moosefs-faq.html
啟動?MooseFS
為了安全啟動MooseFS?集群,建議執行如下的步驟:
??啟動主控?master?server?進程:?/usr/sbin/mfsmaster?start
啟動CGI監控進程:/usr/sbin/mfscgiserv
??啟動?metalogger?進程:?/usr/sbin/mfsmetalogger?start???
??啟動chunk?server?進程:?/usr/sbin/mfschunkserver?start
??在所有客戶端用mfsmount?命令裝載文件系統(本例將是:?mfsmount?/mnt/mfs?–H?mfsmaster)
為了在啟動操作系統時,讓集群自動啟動,可以在/etc/rc.d/rc.local文件后面增加上述相應啟動命令。但在啟動操作系統時,要按上述命令的啟動順序來啟動。例如,在/etc/rc.d/rc.local文件后面增加如下二行:
/usr/sbin/mfsmaster?start
/usr/sbin/mfscgiserv
停止?MooseFS
為了安全停止MooseFS?集群,建議執行如下的步驟:
??在所有客戶端用Unmount?命令先卸載文件系統(本例將是:?umount?/mnt/mfs)
??停止chunk?server?進程:?/usr/sbin/mfschunkserver?stop
??停止?metalogger?進程:?/usr/sbin/mfsmetalogger?stop
??停止主控?master?server?進程:?/usr/sbin/mfsmaster?stop
參考資料 >