MooseFS分散式檔案系統安裝精靈
概述Overview下面我們以step-by-step的方式,介紹在linux平台安裝MooseFS檔案系統的基本過程。我們假定您將以MFS用戶和mfs組來運行MooseFS。同時,我們推薦使用FHS(檔案系統層次結構標準FileSystemHierarchyStandard)兼容路徑,並且把歸檔檔案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地址分配如下:
•主控伺服器Masterserver:192.168.1.1
•主控備份伺服器Metaloggerserver:192.168.1.2
•存儲塊伺服器Chunkservers:192.168.1.101and192.168.1.102
•客戶端主機(clients):192.168.2.x
主控伺服器Masterserver安裝
當我們安裝主控伺服器時,在配置過程中(./configure),可以取消安裝chunkserver
(--disable-mfschunkserver)以及MooseFS客戶端(--disable-mfsmount).安裝主控伺服器master的具體步驟為:
1、添加mfs組
#groupaddmfs
2、新增系統用戶mfs
#useradd-gmfsmfs
3、切換目錄
#cd/usr/src
4、解包歸檔檔案
#tar-zxvfmfs-1.6.17.tar.gz
5、進入安裝目錄
#cdmfs-1.6.17
6、配置
#./configure--prefix=/usr--sysconfdir=/etc\
--localstatedir=/var/lib--with-default-user=mfs\
--with-default-group=mfs--disable-mfschunkserver--disable-mfsmount
7、編譯並安裝
#make
#makeinstall
成功安裝master以後,系統會在/etc目錄自動生成樣例配置檔案,這些樣例檔案是以.dist
後綴命名。這裡我們將借用這些樣例檔案作為MooseFS主控伺服器的目標配置檔案:
1、切換目錄
#cd/etc
2、複製樣例檔案,以得到master所需的配置檔案
#cpmfsmaster.cfg.distmfsmaster.cfg
#cpmfsmetalogger.cfg.distmfsmetalogger.cfg
#cpmfsexports.cfg.distmfsexports.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,該檔案是空的。MooseFSmaster運行必須有檔案metadata.mfs,這個檔案是從metadata.mfs.empty改名而來:
1、切換目錄
#cd/var/lib/mfs
2、重命名檔案
#cpmetadata.mfs.emptymetadata.mfs
[譯者注]MooseFSmaster運行以後,metadata.mfs檔案大小將發生變化,肯定不會是空檔案了。
修改/etc/hosts檔案,以綁定主機名mfsmaster與ip地址192.168.1.1:
192.168.1.1mfsmaster
這個時候,我們可以試著運行master服務(服務將以安裝配置configure指定的用戶運行,這我們的案例里,它是mfs):
#/usr/sbin/mfsmasterstart
在一個生產環境裡,我們應當設定自動啟動腳本,以便作業系統重新啟動時,MooseFSmaster
也能自動運行。
為了監控MooseFS當前運行狀態,我們可以運行CGI監控服務,這樣就可以用瀏覽器查看整個MooseFS的運行情況:
#/usr/sbin/mfscgiserv
現在,我們在瀏覽器地址欄輸入http://192.168.1.1:9425即可查看master的運行情況(這個時候,是不能看見chunkserver的數據)。
備份伺服器Backupserver(metalogger)安裝
用來安裝metalogger的主機,在性能上應該比master強大(至少有更多的記憶體)。一旦主控伺服器master失效,只要導入changelogs到元數據檔案,備份伺服器metalogger將能接替發生故障的master,行使管理伺服器的職能(更多細節請參看http://www.moosefs.org/minihowtos.html#redundant-master)。
備份伺服器Metalogger安裝跟主控伺服器master安裝非常類似。其安裝命令如下:
1、創建組mfs
#groupaddmfs
2、創建用戶mfs
#useradd-gmfsmfs
3、切換目錄
#cd/usr/src
4、解包歸檔檔案
#tar-zxvfmfs-1.6.17.tar.gz
5、切換目錄
#cdmfs-1.6.17
6、配置
#./configure--prefix=/usr--sysconfdir=/etc\
--localstatedir=/var/lib--with-default-user=mfs\
--with-default-group=mfs--disable-mfschunkserver--disable-mfsmount
7、編譯及安裝
#make
#makeinstall
8、產生配置檔案
#cd/etc
#cpmfsmetalogger.cfg.distmfsmetalogger.cfg
類似地,修改/etc/hosts檔案,增加下面的行:
192.168.1.1mfsmaster
現在,我們來試著運行備份服務mfsmetaloger:
#/usr/sbin/mfsmetaloggerstart
在一個生產環境裡,我們應當設定自動啟動腳本,以便作業系統重新啟動時,MooseFS
mfsmetalogger服務也能自動運行。
存儲塊伺服器Chunkservers安裝
在每個chunkserver主機上執行下面的命令:
#groupaddmfs
#useradd-gmfsmfs
#cd/usr/src
#tar-zxvfmfs-1.6.17.tar.gz
#cdmfs-1.6.17
#./configure--prefix=/usr--sysconfdir=/etc\
--localstatedir=/var/lib--with-default-user=mfs\
--with-default-group=mfs--disable-mfsmaster
#make
#makeinstall
準備chunkserver服務所需的配置檔案:
#cd/etc/
#cpmfschunkserver.cfg.distmfschunkserver.cfg
#cpmfshdd.cfg.distmfshdd.cfg
為了測試這個安裝,我們保留mfschunkserver.cfg檔案不做任何改動;如果讀者想了解配置檔案mfschunkserver.cfg更詳細的信息,請查看手冊頁(man
mfschunkserver.cfg)。
在配置檔案mfshdd.cfg中,我們給出了用於客戶端掛接MooseFS分散式檔案系統根分區所使用的共享空間位置。建議在chunkserver上劃分單獨的空間給MooseFS使用,這樣做的好處是便於管理剩餘空間。此處我們假定要使用兩個共享點/mnt/mfschunks1和/mnt/mfschunks2,為此,我們在mfshdd.cfg加入下面的文本行:
/mnt/mfschunks1
/mnt/mfschunks2
在啟動chunkserver前,需確保用戶mfs有許可權讀寫將要被掛接的分區(因為chunkserver運行時要在此創建一個.lock的檔案):
#chown-Rmfs:mfs/mnt/mfschunks1
#chown-Rmfs:mfs/mnt/mfschunks2
類似地,修改/etc/hosts檔案,增加下面的行:
192.168.1.1mfsmaster
開始啟動chunkserver:
#/usr/sbin/mfschunkserverstart
現在再通過瀏覽器訪問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-zxvffuse-2.8.4.tar.gz
#cdfuse-2.8.4
#./configure--prefix=/usr
#make
#makeinstall
設定fuse啟動時自動裝載,在/etc/rc.d/rc.local檔案的後面增加如下一行:
modprobefuse
安裝客戶端軟體mfsmount的步驟:
#cd/usr/src
#tar-zxvfmfs-1.6.17.tar.gz
#cdmfs-1.6.17
#./configure--prefix=/usr--sysconfdir=/etc\
--localstatedir=/var/lib--with-default-user=mfs\
--with-default-group=mfs--disable-mfsmaster\
--disable-mfschunkserver
#make
#makeinstall
修改檔案/etc/hosts,增加如下的文本行:
192.168.1.1mfsmaster
假定客戶端的掛接點是/mnt/mfs,我們將以下面的指令來使用MooseFS分散式已分享檔案系統:
1、創建掛接點
#mkdir-p/mnt/mfs
2、開始掛接操作
#/usr/bin/mfsmount/mnt/mfs-Hmfsmaster
執行命令df–h|grepmfs檢查分區情況,可能的輸出如下:
/storage/mfschunks/mfschunks1
2.0G69M1.9G4%/mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G69M1.9G4%/mnt/mfschunks2
mfs#mfsmaster:94213.2G03.2G0%/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-zxvffuse-2.8.4.tar.gz
#cdfuse-2.8.4
#./configure--prefix=/usr
#make
#makeinstall
安裝MooseFS:
#groupaddmfs
#useradd-gmfsmfs
#cd/usr/src
#tar-zxvfmfs-1.6.17.tar.gz
#cdmfs-1.6.17
#./configure--prefix=/usr--sysconfdir=/etc\
--localstatedir=/var/lib--with-default-user=mfs\
--with-default-group=mfs
#make
#makeinstall
MooseFSchunk以獨占方式使用專門磁碟分區是非常必要的--這樣做的好處是便於管理剩餘空間。MooseFS並不考慮其剩餘空間能被另作他用。如果沒有單獨創建檔案系統的條件,可以在檔案中創建一個檔案系統。為了完成測試,我們準備兩個2GB的檔案(檔案位於目錄/storage/mfschunks),並在其上創建檔案系統。把他們格式化為ext3,分別掛接在/mnt/mfschunks1和/mnt/mfschunks2。以下是具體操作步驟:
一、掛接第一個檔案系統
1、創建目錄
#mkdir-p/storage/mfschunks
2、創建鏡像檔案mfschunks1
#ddif=/dev/zeroof=/storage/mfschunks/mfschunks1bs=1024ount=1\
seek=$((2*1024*1024-1))
3、創建檔案系統
#mkfs-text3/storage/mfschunks/mfschunks1
4、創建掛接點
#mkdir-p/mnt/mfschunks1
5、掛接檔案系統
#mount-text3-oloop/storage/mfschunks/mfschunks1\
/mnt/mfschunks1
二、掛接第二個檔案系統
1、創建第二個鏡像檔案
#ddif=/dev/zeroof=/storage/mfschunks/mfschunks2bs=1024ount=1\
seek=$((2*1024*1024-1))
2、創建檔案系統
#mkfs-text3/storage/mfschunks/mfschunks2
3、創建掛接點
#mkdir-p/mnt/mfschunks2
4、掛接檔案系統
#mount-text3-oloop/storage/mfschunks/mfschunks2\
/mnt/mfschunks2
在啟動chunkserver前,需確保用戶mfs有許可權讀寫將要被掛接的分區(因為chunkserver運
行時要在此創建一個.lock的檔案):
#chown-Rmfs:mfs/mnt/mfschunks1
#chown-Rmfs:mfs/mnt/mfschunks2
/etc目錄自動生成樣例配置檔案,這些樣例檔案是以.dist後綴命名。這裡我們將借用這些樣例檔案作為MooseFS的目標配置檔案:
#cd/etc
#cpmfsexports.cfg.distmfsexports.cfg
#cpmfsmaster.cfg.distmfsmaster.cfg
#cpmfschunkserver.cfg.distmfschunkserver.cfg
#cpmfshdd.cfg.distmfshdd.cfg
mfsexports.cfg與mfsmaster.cfg為主控服務master配置檔案,
mfschunkserver.cfg與mfshdd.cfg為chunkserver配置檔案.
配置檔案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,該檔案是空的。MooseFSmaster運必須有檔案metadata.mfs,這個檔案是從metadata.mfs.empty改名而來:
#cd/var/lib/mfs
#cpmetadata.mfs.emptymetadata.mfs
修改檔案/etc/hosts,新增如下的文本行:
192.168.1.1mfsmaster
運行masterserver,CGI監控以及chunkserver:
#/usr/sbin/mfsmasterstart
#/usr/sbin/mfscgiserv
#/usr/sbin/mfschunkserverstart
MooseFS當前運行狀態可以在瀏覽器中地址欄輸入http://192.168.1.1:9425/獲得。
掛接MooseFS檔案系統到掛接點/mnt/mfs:
1、建立掛接點
#mkdir-p/mnt/mfs
2、掛接操作
#/usr/bin/mfsmount/mnt/mfs-Hmfsmaster
3、查看掛接情況
#df-h|grepmfs:
/storage/mfschunks/mfschunks1
2.0G69M1.9G4%/mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G69M1.9G4%/mnt/mfschunks2
mfs#mfsmaster:94213.2G03.2G0%/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-r1/mnt/mfs/folder1
/mnt/mfs/folder1:
inodeswithgoalchanged:0
inodeswithgoalnotchanged:1
inodeswithpermissiondenied:0
2、副本數為2
#mfssetgoal-r2/mnt/mfs/folder2
/mnt/mfs/folder2:
inodeswithgoalchanged:0
inodeswithgoalnotchanged:1
inodeswithpermissiondenied: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:
1copies:1chunks
而在目錄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:
2copies:1chunks
附加信息。當所有的組件被安裝到同一個物理主機的時候,即便設定了goal=2來到達保存兩個副本的目的,但你可能看到的只是一個副本而已—這是合理的,儘管有兩個磁碟,但它只是一個chunkserver啊!
更多關於MooseFS命令的使用方法,可以在這裡找到:
http://www.moosefs.org/reference-guide.html#using-moosefs
我們推薦你閱讀FAQ頁面內容:
http://www.moosefs.org/moosefs-faq.html
啟動MooseFS
為了安全啟動MooseFS集群,建議執行如下的步驟:
•啟動主控masterserver進程:/usr/sbin/mfsmasterstart
啟動CGI監控進程:/usr/sbin/mfscgiserv
•啟動metalogger進程:/usr/sbin/mfsmetaloggerstart
•啟動chunkserver進程:/usr/sbin/mfschunkserverstart
•在所有客戶端用mfsmount命令裝載檔案系統(本例將是:mfsmount/mnt/mfs–Hmfsmaster)
為了在啟動作業系統時,讓集群自動啟動,可以在/etc/rc.d/rc.local檔案後面增加上述相應啟動命令。但在啟動作業系統時,要按上述命令的啟動順序來啟動。例如,在/etc/rc.d/rc.local檔案後面增加如下二行:
/usr/sbin/mfsmasterstart
/usr/sbin/mfscgiserv
停止MooseFS
為了安全停止MooseFS集群,建議執行如下的步驟:
•在所有客戶端用Unmount命令先卸載檔案系統(本例將是:umount/mnt/mfs)
•停止chunkserver進程:/usr/sbin/mfschunkserverstop
•停止metalogger進程:/usr/sbin/mfsmetaloggerstop
•停止主控masterserver進程:/usr/sbin/mfsmasterstop