MooseFS安裝教程詳解
前言:
- MooseFS 在專用機器上的安裝過程
- Master server 的安裝
- Backup server(metalogger)的安裝
- chunk servers 的安裝
- 客戶端的安裝
- 單獨server上安裝MooseFS
- MooseFS的基本用法
- 停止MooseFS
概述
下面我們介紹在Linux平臺上一步一步安裝MooseFS系統的過程,我們假設系統使用mfs用戶運行并且mfs的所屬組也為mfs。將要使用FHS(文件系統層次標準)兼容路徑和源碼mfs-1.6.15.tar.gz并且把它放到/usr/src下。我們將要說明怎樣安裝MooseFS系統在不同的專用機上以及怎樣在一臺服務器上做一個測試安裝。
MooseFS的***穩定版下載地址:http://sourceforge.net/projects/moosefs/,并且在客戶端你將需要用到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 和 192.168.1.102
- Users'computer(客戶端): 192.168.2.x
#p#
Master server 安裝
當安裝master server時我們在./configure禁用chunk server的安裝(–disable-mfschunkserver)和客戶端的安裝(–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
示例配置文件將會建立在/etc下擴展名為.dist,我們使用這些作用我們最終的配置文件:
- #cd /etc
- #cp mfsmaster.cfg.dist mfsmaster.cfg
- #cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
- #cp mfsexports.cfg.dist mfsexports.cfg
如何我們想改變任意設置,應該取消該行的注釋然后寫一個不同的值.對于注釋掉的行,系統將使用內置的默認值.
mfsmaster.cfg 文件包含master server的設置,這里我們沒有做任何改變,你能在手冊頁(man mfsmaster.cfg)了解這個文件的更多信息
mfsexports.cfg文件指定哪個客戶端可以掛載MooseFS文件系統并且擁有什么權限.在我們的例子中指定僅僅192.168.2.x的機器能讀寫MooseFS的整個架構.該文件的***行,并有這行沒有注釋我們把星號(*)改變為192.168.2.0/24 因此像下面這樣:
- 192.168.2.0/24 / rw,alldirs,maproot=0
二進制metadata文件和changelog文本文件存放在一個文件夾,該文件夾是在編譯期間localstatedir所設置-在我們的例子中這個文件夾是:/var/lib/mfs.***安裝會建立一個名字為metadata.mfs.empty的空的metadata文件.我們把這個空文件改變成metadata.mfs:
- #cd /var/lib/mfs
- #cp metadata.mfs.empty metadata.mfs
我們也需要在/etc/hosts 指定主機名mfsmaster和主機IP地址192.168.1.1相對應(譯者注:為了在配置文件中用主機名mfsmaster代替IP,做了一次簡單DNS解析):
- 192.168.1.1 mfsmaster
現在可以運行master server(server將要使用安裝時給定的用戶運行,在我們的實例中它是mfs):
- #/usr/sbin/mfsmaster start
在生產環境中應該設置mfsmaster進程在操作系統啟動時自動運行
我們現在也可以運行CGI監控在瀏覽器中查看當前MooseFS系統的狀態:
- #/usr/sbin/mfscgiserv
現在可以在http://192.168.1.1:9425/看到一些信息(暫時還沒有關于chunk servers的數據)#p#
Backup server(metalogger) 的安裝
用來安裝metalogger 的主機,在性能上應該比master 強大(至少有更多的內存)。一旦主控服務器master 失效,只要導入changelogs 到元數據文件,備份服務器metalogger 將能接替發生故障的master,行使管理服務器的職能(關于這個的更多信息可以讀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
現在我們準備啟動backup server進程:
- #/usr/sbin/mfsmetalogger start
在生產環境中你應該設置mfsmetalogger自動啟動。#p#
Chunk servers 的安裝
我們用以下的命令在準備去安裝chunk 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-mfsmaster
- #make
- #make install
現在我們同樣準備chunk server的配置文件:
- #cd /etc/
- #cp mfschunkserver.cfg.dist mfschunkserver.cfg
- #cp mfshdd.cfg.dist mfshdd.cfg
因為我們的測試安裝我們沒有對mfschunkserver.cfg做任何改變;你能在手冊頁(man mfschunkserver.cfg)了解這個文件的更多信息。
在mfshdd.cfg文件我們指定具體位置,該位置已經被掛載在硬盤的根(/)分區,建議他們專門用于MooseFS-這是要適當管理空閑空間。
讓我們假設將要使用/mnt/mfschunks1 和 /mnt/mfschunks2,因此我們添加這兩行到mfshadd.cfg文件:
- /mnt/mfschunks1
- /mnt/mfschunks2
在開始運行chunk server之前我們需要確認用戶mfs有寫權限在這掛載的分區上(因為需要在這分區上建立.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
在MooseFS系統中,我們在想要存儲數據的每一個chunk server 上重復同樣的操作。
現在在http://192.168.1.1:9245可以看到系統的全部信息,包括master server和chunk server。#p#
客戶端的安裝
為了掛載基于MooseFS的文件系統,需要客戶端安裝FUSE包(版本至少是2.6,推薦>=2.7.2),如果FUSE不存在,你必須去安裝它.一種方法是從源碼編譯它-你能從這個網址得到它
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
在客戶端機器上假設我們掛載文件系統在/mnt/mfs文件夾.我們使用以下命令:
- #mkdir -p /mnt/mfs
- #/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
#p#
單獨server上安裝MooseFS
如果你想在單獨一臺機器上測試安裝MooseFS系統,你可以按照以下步驟,在這我們不安裝metalogger,假設server的IP地址為192.168.1.1
為了掛載基于MooseFS的文件系統,需要客戶端安裝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
重要的是***文件系統能被MooseFS chunks獨享,這樣能很好的管理空閑空間,MooseFS沒有考慮這樣的情形:對于MooseFS可用的空閑空間也能被其他數據使用。如果不能建立一個單獨的磁盤分區,用文件虛擬一個文件系統,對于這個測試安裝的需要,我們準備兩個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
在開始運行chunk server之前我們需要確認用戶mfs有寫權限在這掛載的分區上(因為需要在這分區上建立.lock文件):
- #chown -R mfs:mfs /mnt/mfschunks1
- #chown -R mfs:mfs /mnt/mfschunks2
示例配置文件將會建立在/etc下擴展名為.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的設置,mfschunkserver.cfg和mfshdd.cfg文件涉及chunk server的設置,mfsexports.cfg文件指定哪個客戶端可以掛載MooseFS文件系統并且擁有什么權限。在我們的例子中指定僅僅192.168.1.x的機器能讀寫MooseFS的整個架構,該文件的***行,并有這行沒有注釋我們把星號(*)改變為192.168.1.0/24 因此像下面這樣:
- 192.168.1.0/24 / rw,alldirs,maproot=0
在我們的示例中mfsmaster.cfg和mfschunkserver.cfg文件中的選項沒有做任何改變
二進制metadata文件和changelog文本文件存放在一個文件夾,該文件夾是在編譯期間localstatedir所設置-在我們的例子中這個文件夾是:/var/lib/mfs.***安裝會建立一個名字為metadata.mfs.empty的空的metadata文件.我們把這個空文件改變為metadata.mfs:
- #cd /var/lib/mfs
- #cp metadata.mfs.empty metadata.mfs
也把下面一行添加到/etc/hosts:
- 192.168.1.1 mfsmaster
此時可以運行master server,CGI monitor和chunk server的進程:
- #/usr/sbin/mfsmaster start
- #/usr/sbin/mfscgiserv
- #/usr/sbin/mfschunkserver start
可以在http://192.168.1.1:9425/看到關于MooseFS系統當前狀態的所有信息
現在掛載系統到/mnt/mfs:
- #mkdir -p /mnt/mfs
- #/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
#p#
MooseFS的基本用法
在/mnt/mfs下建立folder1,在這個文件夾存儲的文件有一個副本(setting goal=1):
- mkdir -p /mnt/mfs/folder1
建立folder2,在這個文件夾下存儲的文件有兩個副本(setting goal=2):
- mkdir -p /mnt/mfs/folder2
mfssetglal -r 命令設置文件夾的副本數:
- #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
復制一個文件到這兩個文件夾:
- 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 命令檢查指定文件存儲了幾份副本
foler1有一個副本存儲在一個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
附加說明.當所有的進程安裝在單獨的服務器上時,你會看到文件僅僅保存一個副本甚至在設置goal=2時-這是正確的因為盡管有兩個硬盤但是只有一個chunk server。
停止MooseFS
按以下步驟安全停止MooseFS集群:
在所有機器上用umount命令卸載文件系統(在我們的示例中是:umount /mnt/mfs):
- 停止chunk server進程: /usr/sbin/mfschunkserver stop
- 停止metalogger進程: /usr/sbin/mfsmetalogger stop
- 停止master server進程: /usr/sbin/mfsmaster stop