MooseFS安裝教程詳解
前言:
- MooseFS 在專(zhuān)用機(jī)器上的安裝過(guò)程
- Master server 的安裝
- Backup server(metalogger)的安裝
- chunk servers 的安裝
- 客戶(hù)端的安裝
- 單獨(dú)server上安裝MooseFS
- MooseFS的基本用法
- 停止MooseFS
概述
下面我們介紹在Linux平臺(tái)上一步一步安裝MooseFS系統(tǒng)的過(guò)程,我們假設(shè)系統(tǒng)使用mfs用戶(hù)運(yùn)行并且mfs的所屬組也為mfs。將要使用FHS(文件系統(tǒng)層次標(biāo)準(zhǔn))兼容路徑和源碼mfs-1.6.15.tar.gz并且把它放到/usr/src下。我們將要說(shuō)明怎樣安裝MooseFS系統(tǒng)在不同的專(zhuān)用機(jī)上以及怎樣在一臺(tái)服務(wù)器上做一個(gè)測(cè)試安裝。
MooseFS的***穩(wěn)定版下載地址:http://sourceforge.net/projects/moosefs/,并且在客戶(hù)端你將需要用到FUSE 包,這個(gè)包從以下地址下載:http://sourceforge.net/projects/fuse/.
MooseFS在專(zhuān)用機(jī)器上的安裝過(guò)程,我們假設(shè)我們的機(jī)器使用以下的IP地址:
- Master server: 192.168.1.1
- Metalogger server: 192.168.1.2
- Chunk servers: 192.168.1.101 和 192.168.1.102
- Users'computer(客戶(hù)端): 192.168.2.x
#p#
Master server 安裝
當(dāng)安裝master server時(shí)我們?cè)?/configure禁用chunk server的安裝(–disable-mfschunkserver)和客戶(hù)端的安裝(–disable-mfsmount).我們按以下步驟做:
- #groupadd mfs
- #useradd -g mfs mfs
- #cd /usr/src
- #tar -zxvf mfs-1.6.15.tar.gz
- #cd mfs-1.6.15
- #./configure --prefix=/usr --sysconfdir=/etc
- --localstatedir=/var/lib --with-default-user=mfs
- --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
- #make
- #make install
示例配置文件將會(huì)建立在/etc下擴(kuò)展名為.dist,我們使用這些作用我們最終的配置文件:
- #cd /etc
- #cp mfsmaster.cfg.dist mfsmaster.cfg
- #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
- #cp mfsexports.cfg.dist mfsexports.cfg
如何我們想改變?nèi)我庠O(shè)置,應(yīng)該取消該行的注釋然后寫(xiě)一個(gè)不同的值.對(duì)于注釋掉的行,系統(tǒng)將使用內(nèi)置的默認(rèn)值.
mfsmaster.cfg 文件包含master server的設(shè)置,這里我們沒(méi)有做任何改變,你能在手冊(cè)頁(yè)(man mfsmaster.cfg)了解這個(gè)文件的更多信息
mfsexports.cfg文件指定哪個(gè)客戶(hù)端可以?huà)燧dMooseFS文件系統(tǒng)并且擁有什么權(quán)限.在我們的例子中指定僅僅192.168.2.x的機(jī)器能讀寫(xiě)MooseFS的整個(gè)架構(gòu).該文件的***行,并有這行沒(méi)有注釋我們把星號(hào)(*)改變?yōu)?92.168.2.0/24 因此像下面這樣:
- 192.168.2.0/24 / rw,alldirs,maproot=0
二進(jìn)制metadata文件和changelog文本文件存放在一個(gè)文件夾,該文件夾是在編譯期間localstatedir所設(shè)置-在我們的例子中這個(gè)文件夾是:/var/lib/mfs.***安裝會(huì)建立一個(gè)名字為metadata.mfs.empty的空的metadata文件.我們把這個(gè)空文件改變成metadata.mfs:
- #cd /var/lib/mfs
- #cp metadata.mfs.empty metadata.mfs
我們也需要在/etc/hosts 指定主機(jī)名mfsmaster和主機(jī)IP地址192.168.1.1相對(duì)應(yīng)(譯者注:為了在配置文件中用主機(jī)名mfsmaster代替IP,做了一次簡(jiǎn)單DNS解析):
- 192.168.1.1 mfsmaster
現(xiàn)在可以運(yùn)行master server(server將要使用安裝時(shí)給定的用戶(hù)運(yùn)行,在我們的實(shí)例中它是mfs):
- #/usr/sbin/mfsmaster start
在生產(chǎn)環(huán)境中應(yīng)該設(shè)置mfsmaster進(jìn)程在操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行
我們現(xiàn)在也可以運(yùn)行CGI監(jiān)控在瀏覽器中查看當(dāng)前MooseFS系統(tǒng)的狀態(tài):
- #/usr/sbin/mfscgiserv
現(xiàn)在可以在http://192.168.1.1:9425/看到一些信息(暫時(shí)還沒(méi)有關(guān)于chunk servers的數(shù)據(jù))#p#
Backup server(metalogger) 的安裝
用來(lái)安裝metalogger 的主機(jī),在性能上應(yīng)該比master 強(qiáng)大(至少有更多的內(nèi)存)。一旦主控服務(wù)器master 失效,只要導(dǎo)入changelogs 到元數(shù)據(jù)文件,備份服務(wù)器metalogger 將能接替發(fā)生故障的master,行使管理服務(wù)器的職能(關(guān)于這個(gè)的更多信息可以讀http://www.moosefs.org/mini-howtos.html#redundant-master)
Metalogger 的安裝和master server的安裝是非常相似的,我們用以下命令:
- #groupadd mfs
- #useradd -g mfs mfs
- #cd /usr/src
- #tar -zxvf mfs-1.6.15.tar.gz
- #cd mfs-1.6.15
- #./configure --prefix=/usr --sysconfdir=/etc
- --localstatedir=/var/lib --with-default-user=mfs
- --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
- #make
- #make install
- #cd /etc
- #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
同樣,在/etc/hosts添加:
- 192.168.1.1 mfsmaster
現(xiàn)在我們準(zhǔn)備啟動(dòng)backup server進(jìn)程:
- #/usr/sbin/mfsmetalogger start
在生產(chǎn)環(huán)境中你應(yīng)該設(shè)置mfsmetalogger自動(dòng)啟動(dòng)。#p#
Chunk servers 的安裝
我們用以下的命令在準(zhǔn)備去安裝chunk server的機(jī)器上:
- #groupadd mfs
- #useradd -g mfs mfs
- #cd /usr/src
- #tar -zxvf mfs-1.6.15.tar.gz
- #cd mfs-1.6.15
- #./configure --prefix=/usr --sysconfdir=/etc
- --localstatedir=/var/lib --with-default-user=mfs
- --with-default-group=mfs --disable-mfsmaster
- #make
- #make install
現(xiàn)在我們同樣準(zhǔn)備chunk server的配置文件:
- #cd /etc/
- #cp mfschunkserver.cfg.dist mfschunkserver.cfg
- #cp mfshdd.cfg.dist mfshdd.cfg
因?yàn)槲覀兊臏y(cè)試安裝我們沒(méi)有對(duì)mfschunkserver.cfg做任何改變;你能在手冊(cè)頁(yè)(man mfschunkserver.cfg)了解這個(gè)文件的更多信息。
在mfshdd.cfg文件我們指定具體位置,該位置已經(jīng)被掛載在硬盤(pán)的根(/)分區(qū),建議他們專(zhuān)門(mén)用于MooseFS-這是要適當(dāng)管理空閑空間。
讓我們假設(shè)將要使用/mnt/mfschunks1 和 /mnt/mfschunks2,因此我們添加這兩行到mfshadd.cfg文件:
- /mnt/mfschunks1
- /mnt/mfschunks2
在開(kāi)始運(yùn)行chunk server之前我們需要確認(rèn)用戶(hù)mfs有寫(xiě)權(quán)限在這掛載的分區(qū)上(因?yàn)樾枰谶@分區(qū)上建立.lock文件):
- #chown -R mfs:mfs /mnt/mfschunks1
- #chown -R mfs:mfs /mnt/mfschunks2
同樣我們添加下面這行在/etc/hosts:
- 192.168.1.1 mfsmaster
現(xiàn)在我們準(zhǔn)備去開(kāi)始chunk server:
- #/usr/sbin/mfschunkserver start
在MooseFS系統(tǒng)中,我們?cè)谙胍鎯?chǔ)數(shù)據(jù)的每一個(gè)chunk server 上重復(fù)同樣的操作。
現(xiàn)在在http://192.168.1.1:9245可以看到系統(tǒng)的全部信息,包括master server和chunk server。#p#
客戶(hù)端的安裝
為了掛載基于MooseFS的文件系統(tǒng),需要客戶(hù)端安裝FUSE包(版本至少是2.6,推薦>=2.7.2),如果FUSE不存在,你必須去安裝它.一種方法是從源碼編譯它-你能從這個(gè)網(wǎng)址得到它
http://sourceforge.net/projects/fuse/:
- #cd /usr/src
- #tar -zxvf fuse-2.8.3.tar.gz
- #cd fuse-2.8.3
- #./configure
- #make
- #make install
安裝mfsmount包我做以下步驟:
- #tar -zxvf mfs-1.6.15.tar.gz
- #cd mfs-1.6.15
- #./configure --prefix=/usr --sysconfdir=/etc
- --localstatedir=/var/lib --with-default-user=mfs
- --with-default-group=mfs --disable-mfsmaster
- --disable-mfschunkserver
- #make
- #make install
在/etc/hosts文件添加一行:
- 192.168.1.1 mfsmaster
在客戶(hù)端機(jī)器上假設(shè)我們掛載文件系統(tǒng)在/mnt/mfs文件夾.我們使用以下命令:
- #mkdir -p /mnt/mfs
- #/usr/bin/mfsmount /mnt/mfs -H mfsmaster
現(xiàn)在我們執(zhí)行df -h | grep mfs 命令以后可以得到類(lèi)似以下這個(gè)信息:
- /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
#p#
單獨(dú)server上安裝MooseFS
如果你想在單獨(dú)一臺(tái)機(jī)器上測(cè)試安裝MooseFS系統(tǒng),你可以按照以下步驟,在這我們不安裝metalogger,假設(shè)server的IP地址為192.168.1.1
為了掛載基于MooseFS的文件系統(tǒng),需要客戶(hù)端安裝FUSE包(版本至少是2.6,推薦>=2.7.2),如果FUSE不存在,你必須去安裝它.一種方法是從源碼編譯它。
- #cd /usr/src
- #tar -zxvf fuse-2.8.3.tar.gz
- #cd fuse-2.8.3
- #./configure
- #make
- #make install
安裝MooseFS:
- #groupadd mfs
- #useradd -g mfs mfs
- #cd /usr/src
- #tar -zxvf mfs-1.6.15.tar.gz
- #cd mfs-1.6.15
- #./configure --prefix=/usr --sysconfdir=/etc
- --localstatedir=/var/lib --with-default-user=mfs
- --with-default-group=mfs
- #make
- #make install
重要的是***文件系統(tǒng)能被MooseFS chunks獨(dú)享,這樣能很好的管理空閑空間,MooseFS沒(méi)有考慮這樣的情形:對(duì)于MooseFS可用的空閑空間也能被其他數(shù)據(jù)使用。如果不能建立一個(gè)單獨(dú)的磁盤(pán)分區(qū),用文件虛擬一個(gè)文件系統(tǒng),對(duì)于這個(gè)測(cè)試安裝的需要,我們準(zhǔn)備兩個(gè)2GB的文件(位置在/storage/mfschunks),格式化為ext3格式,并且分別掛載在 /mnt/mfschunks1 和 /mnt/mfschunks2。
- #mkdir -p /storage/mfschunks
- #dd if=/dev/zero of=/storage/mfschunks/mfschunks1 bs=1024 count=1
- seek=$((2*1024*1024-1))
- #mkfs -t ext3 /storage/mfschunks/mfschunks1
- #mkdir -p /mnt/mfschunks1
- #mount -t ext3 -o loop /storage/mfschunks/mfschunks1 /mnt/mfschunks1
- #dd if=/dev/zero of=/storage/mfschunks/mfschunks2 bs=1024 count=1
- seek=$((2*1024*1024-1))
- #mkfs -t ext3 /storage/mfschunks/mfschunks2
- #mkdir -p /mnt/mfschunks2
- #mount -t ext3 -o loop /storage/mfschunks/mfschunks2 /mnt/mfschunks2
在開(kāi)始運(yùn)行chunk server之前我們需要確認(rèn)用戶(hù)mfs有寫(xiě)權(quán)限在這掛載的分區(qū)上(因?yàn)樾枰谶@分區(qū)上建立.lock文件):
- #chown -R mfs:mfs /mnt/mfschunks1
- #chown -R mfs:mfs /mnt/mfschunks2
示例配置文件將會(huì)建立在/etc下擴(kuò)展名為.dist,我們使用這些作用我們最終的配置文件:
- #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 server的設(shè)置,mfschunkserver.cfg和mfshdd.cfg文件涉及chunk server的設(shè)置,mfsexports.cfg文件指定哪個(gè)客戶(hù)端可以?huà)燧dMooseFS文件系統(tǒng)并且擁有什么權(quán)限。在我們的例子中指定僅僅192.168.1.x的機(jī)器能讀寫(xiě)MooseFS的整個(gè)架構(gòu),該文件的***行,并有這行沒(méi)有注釋我們把星號(hào)(*)改變?yōu)?92.168.1.0/24 因此像下面這樣:
- 192.168.1.0/24 / rw,alldirs,maproot=0
在我們的示例中mfsmaster.cfg和mfschunkserver.cfg文件中的選項(xiàng)沒(méi)有做任何改變
二進(jìn)制metadata文件和changelog文本文件存放在一個(gè)文件夾,該文件夾是在編譯期間localstatedir所設(shè)置-在我們的例子中這個(gè)文件夾是:/var/lib/mfs.***安裝會(huì)建立一個(gè)名字為metadata.mfs.empty的空的metadata文件.我們把這個(gè)空文件改變?yōu)閙etadata.mfs:
- #cd /var/lib/mfs
- #cp metadata.mfs.empty metadata.mfs
也把下面一行添加到/etc/hosts:
- 192.168.1.1 mfsmaster
此時(shí)可以運(yùn)行master server,CGI monitor和chunk server的進(jìn)程:
- #/usr/sbin/mfsmaster start
- #/usr/sbin/mfscgiserv
- #/usr/sbin/mfschunkserver start
可以在http://192.168.1.1:9425/看到關(guān)于MooseFS系統(tǒng)當(dāng)前狀態(tài)的所有信息
現(xiàn)在掛載系統(tǒng)到/mnt/mfs:
- #mkdir -p /mnt/mfs
- #/usr/bin/mfsmount /mnt/mfs -H mfsmaster
執(zhí)行df -h | grep mfs 命令以后,我們可以看到類(lèi)似下面的信息:
- /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
#p#
MooseFS的基本用法
在/mnt/mfs下建立folder1,在這個(gè)文件夾存儲(chǔ)的文件有一個(gè)副本(setting goal=1):
- mkdir -p /mnt/mfs/folder1
建立folder2,在這個(gè)文件夾下存儲(chǔ)的文件有兩個(gè)副本(setting goal=2):
- mkdir -p /mnt/mfs/folder2
mfssetglal -r 命令設(shè)置文件夾的副本數(shù):
- #mfssetgoal -r 1 /mnt/mfs/folder1
- /mnt/mfs/folder1:
- inodes with goal changed: 0
- inodes with goal not changed: 1
- inodes with permission denied:
- #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
復(fù)制一個(gè)文件到這兩個(gè)文件夾:
- cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder1
- cp /usr/src/mfs-1.6.15.tar.gz /mnt/mfs/folder2
mfscheckfile 命令檢查指定文件存儲(chǔ)了幾份副本
foler1有一個(gè)副本存儲(chǔ)在一個(gè)chuk:
- #mfscheckfile /mnt/mfs/folder1/mfs-1.6.15.tar.gz
- /mnt/mfs/folder1/mfs-1.6.15.tar.gz:
- 1 copies: 1 chunks
在foler2的文件mfs-1.6.15.tar.gz 保存兩份副本:
- #mfscheckfile /mnt/mfs/folder2/mfs-1.6.15.tar.gz
- /mnt/mfs/folder2/mfs-1.6.15.tar.gz:
- 2 copies: 1 chunks
附加說(shuō)明.當(dāng)所有的進(jìn)程安裝在單獨(dú)的服務(wù)器上時(shí),你會(huì)看到文件僅僅保存一個(gè)副本甚至在設(shè)置goal=2時(shí)-這是正確的因?yàn)楸M管有兩個(gè)硬盤(pán)但是只有一個(gè)chunk server。
停止MooseFS
按以下步驟安全停止MooseFS集群:
在所有機(jī)器上用umount命令卸載文件系統(tǒng)(在我們的示例中是:umount /mnt/mfs):
- 停止chunk server進(jìn)程: /usr/sbin/mfschunkserver stop
- 停止metalogger進(jìn)程: /usr/sbin/mfsmetalogger stop
- 停止master server進(jìn)程: /usr/sbin/mfsmaster stop