- 論壇徽章:
- 0
|
分布式文件系統(tǒng)MFS(moosefs)實(shí)現(xiàn)存儲共享
作者:田逸(
sery@163.com
) from http://net.it168.com/a2009/0403/270/000000270867.shtml
由于用戶數(shù)量的不斷攀升,我對訪問量大的應(yīng)用實(shí)現(xiàn)了可擴(kuò)展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用戶反饋訪問慢的問題。通過排查個(gè)服務(wù)器的情況,發(fā)現(xiàn)問題的根源在于共享存儲服務(wù)器NFS。在我這個(gè)網(wǎng)絡(luò)環(huán)境里,N個(gè)服務(wù)器通過nfs方式共享一個(gè)服務(wù)器的存儲空間,使得NFS服務(wù)器不堪重負(fù)。察看系統(tǒng)日志,全是nfs服務(wù)超時(shí)之類的報(bào)錯(cuò)。一般情況下,當(dāng)nfs客戶端數(shù)目較小的時(shí)候,NFS性能不會出現(xiàn)問題;一旦NFS服務(wù)器數(shù)目過多,并且是那種讀寫都比較頻繁的操作,所得到的結(jié)果就不是我們所期待的。下面是某個(gè)集群使用nfs共享的示意圖:
![]()
這種架構(gòu)除了性能問題而外,還存在單點(diǎn)故障,一旦這個(gè)NFS服務(wù)器發(fā)生故障,所有靠共享提供數(shù)據(jù)的應(yīng)用就不再可用,盡管用rsync方式同步數(shù)據(jù)到另外一個(gè)服務(wù)器上做nfs服務(wù)的備份,但這對提高整個(gè)系統(tǒng)的性能毫無幫助;谶@樣一種需求,我們需要對nfs服務(wù)器進(jìn)行優(yōu)化或采取別的解決方案,然而優(yōu)化并不能對應(yīng)對日益增多的客戶端的性能要求,因此唯一的選擇只能是采取別的解決方案了;通過調(diào)研,分布式文件系統(tǒng)是一個(gè)比較合適的選擇。采用分布式文件系統(tǒng)后,服務(wù)器之間的數(shù)據(jù)訪問不再是一對多的關(guān)系(1個(gè)NFS服務(wù)器,多個(gè)NFS客戶端),而是多對多的關(guān)系,這樣一來,性能大幅提升毫無問題。
到目前為止,有數(shù)十種以上的分布式文件系統(tǒng)解決方案可供選擇,如lustre,hadoop,Pnfs等等。我嘗試了PVFS,hadoop,moosefs這三種應(yīng)用,參看了lustre、KFS等諸多技術(shù)實(shí)施方法,最后我選擇了moosefs(以下簡稱MFS)這種分布式文件系統(tǒng)來作為我的共享存儲服務(wù)器。為什么要選它呢?我來說說我的一些看法:
1、 實(shí)施起來簡單。MFS的安裝、部署、配置相對于其他幾種工具來說,要簡單和容易得多?纯磍ustre 700多頁的pdf文檔,讓人頭昏吧。
2、 不停服務(wù)擴(kuò)容。MFS框架做好后,隨時(shí)增加服務(wù)器擴(kuò)充容量;擴(kuò)充和減少容量皆不會影響現(xiàn)有的服務(wù)。注:hadoop也實(shí)現(xiàn)了這個(gè)功能。
3、 恢復(fù)服務(wù)容易。除了MFS本身具備高可用特性外,手動恢復(fù)服務(wù)也是非?旖莸模騾⒄盏1條。
4、 我在實(shí)驗(yàn)過程中得到作者的幫助,這讓我很是感激。
MFS特性(根據(jù)官方網(wǎng)站翻譯)
★ 高可靠性(數(shù)據(jù)能被分成幾個(gè)副本存儲在不同的計(jì)算機(jī)里)
![]()
★ 通過增加計(jì)算機(jī)或增加新的硬盤動態(tài)擴(kuò)充可用磁盤空間
★ 可以設(shè)置刪除文件的空間回收時(shí)間
[root@mysql-bk serydir]# mfsgettrashtime bind-9.4.0.tar.gz
bind-9.4.0.tar.gz: 600
文件被刪除10分鐘后(600秒),才真正刪除文件,回收磁盤空間。
★ 為文件創(chuàng)建快照
MFS文件系統(tǒng)的組成
1、 元數(shù)據(jù)服務(wù)器。在整個(gè)體系中負(fù)責(zé)管理管理文件系統(tǒng),目前MFS只支持一個(gè)元數(shù)據(jù)服務(wù)器master,這是一個(gè)單點(diǎn)故障,需要一個(gè)性能穩(wěn)定的服務(wù)器來充當(dāng)。希望今后MFS能支持多個(gè)master服務(wù)器,進(jìn)一步提高系統(tǒng)的可靠性。
2、 數(shù)據(jù)存儲服務(wù)器chunkserver。真正存儲用戶數(shù)據(jù)的服務(wù)器。存儲文件時(shí),首先把文件分成塊,然后這些塊在數(shù)據(jù)服務(wù)器chunkserver之間復(fù)制(復(fù)制份數(shù)可以手工指定,建議設(shè)置副本數(shù)為3)。數(shù)據(jù)服務(wù)器可以是多個(gè),并且數(shù)量越多,可使用的“磁盤空間”越大,可靠性也越高。
3、 客戶端。使用MFS文件系統(tǒng)來存儲和訪問的主機(jī)稱為MFS的客戶端,成功掛接MFS文件系統(tǒng)以后,就可以像以前使用NFS一樣共享這個(gè)虛擬性的存儲了。
元數(shù)據(jù)服務(wù)器安裝和配置
元數(shù)據(jù)服務(wù)器可以是linux,也可以是unix,你可以根據(jù)自己的使用習(xí)慣選擇操作系統(tǒng),在我的環(huán)境里,我是用freebsd做為MFS元數(shù)據(jù)的運(yùn)行平臺。GNU源碼,在各種類unix平臺的安裝都基本一致。
(一) 安裝元數(shù)據(jù)服務(wù)
1、下載GNU源碼 wget
http://www.moosefs.com/files/mfs-1.5.12.tar.gz
2、解包 tar zxvf mfs-1.5.12.tar.gz
3、切換目錄 cd mfs-1.5.12
4、創(chuàng)建用戶 useradd mfs –s /sbin/nologin
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
6、編譯安裝 make ; make install
(二) 配置元數(shù)據(jù)服務(wù)
元數(shù)據(jù)服務(wù)器的配置文件是mfsmaster.cfg,我在安裝MFS時(shí)指定了前綴,因此這個(gè)文件的位置在/usr/local/mfs/etc/mfsmaster.cfg.我們打開這個(gè)配置文件,看看都有哪些內(nèi)容:
# WORKING_USER = mfs
# WORKING_GROUP = mfs
# LOCK_FILE = /var/run/mfs/mfsmaster.pid
# DATA_PATH = /usr/local/mfs/var/mfs
# SYSLOG_IDENT = mfsmaster
# BACK_LOGS = 50
# REPLICATIONS_DELAY_INIT = 300
# REPLICATIONS_DELAY_DISCONNECT = 3600
# MATOCS_LISTEN_HOST = *
# MATOCS_LISTEN_PORT = 9420
# MATOCU_LISTEN_HOST = *
# MATOCU_LISTEN_PORT = 9421
# CHUNKS_LOOP_TIME = 300
# CHUNKS_DEL_LIMIT = 100
# CHUNKS_REP_LIMIT = 15
盡管每行都被注釋掉了,但它們卻是配置文件的默認(rèn)值,要改變這些值,需要取消注釋,然后明確指定其取值。接下來說明一下其中一些項(xiàng)目的含義。
◆ LOCK_FILE = /var/run/mfs/mfsmaster.pid 文件鎖所在的位置,它的功能是避免啟動多次啟動同一個(gè)守護(hù)進(jìn)程。由于系統(tǒng)中本來不存在目錄 /var/run/mfs,因此需要手動創(chuàng)建 mkdir /var/run/mfs,然后更改其屬主 chown –R mfs:mfs /var/run/mfs 這樣MFS 服務(wù)就能對這個(gè)目錄有創(chuàng)建/寫入 mfsmaster.pid 文件的權(quán)限了。
◆ DATA_PATH = /usr/local/mfs/var/mfs 數(shù)據(jù)存放路徑,只元數(shù)據(jù)的存放路徑。那么這些數(shù)據(jù)都包括哪些呢?進(jìn)目錄看看,大致分3種類型的文件:
![]()
這些文件也同樣要存儲在其他數(shù)據(jù)存儲服務(wù)器的相關(guān)目錄。
◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元數(shù)據(jù)服務(wù)器使用9420這個(gè)監(jiān)聽端口來接受數(shù)據(jù)存儲服務(wù)器chunkserver端的連接。
◆ MATOCU_LISTEN_PORT = 9421 元數(shù)據(jù)服務(wù)器在9421端口監(jiān)聽,用以接受客戶端對MFS進(jìn)行遠(yuǎn)程掛接(客戶端以mfsmount掛接MFS)
◆ 其他部分看字面意思都不難理解。還有幾個(gè)與時(shí)間有關(guān)的數(shù)值,其單位是秒。
這個(gè)配置文件,不必做修改就能工作了。
(三) 元數(shù)據(jù)服務(wù)器master啟動
元數(shù)據(jù)服務(wù)器可以單獨(dú)啟動,即使沒有任何數(shù)據(jù)存儲服務(wù)器(chunkserver)也是能正常工作的,因此當(dāng)我們安裝配置完MFS后,即可啟動它。執(zhí)行命令 /usr/local/mfs/sbin/mfsmaster start ,如果沒有意外,元數(shù)據(jù)庫服務(wù)器就應(yīng)該作為一個(gè)守護(hù)進(jìn)程運(yùn)行起來,F(xiàn)在我們可以通過3個(gè)方面來檢查一下MFS master的運(yùn)行狀況:
1、 檢查進(jìn)程
2、 檢查網(wǎng)絡(luò)狀態(tài)
3、 檢查系統(tǒng)日志
MFS的日志會直接寫入系統(tǒng)日志。當(dāng)我們增加數(shù)據(jù)存儲服務(wù)器(chunkserver)或數(shù)據(jù)存儲服務(wù)器(chunkserver)處故障時(shí),都能在系統(tǒng)日志找到這些記錄。注意,這個(gè)日志跟元數(shù)據(jù)變化日志不是一回事情。
(四)、關(guān)閉元數(shù)據(jù)服務(wù)器
關(guān)閉元數(shù)據(jù)服務(wù)器,務(wù)必使用 /usr/local/mfs/sbin/mfsmaster –s 這種方式,如果直接使用kill殺死進(jìn)程,將導(dǎo)致下次啟動時(shí)出現(xiàn)找不到相關(guān)文件,而不能正常啟動服務(wù)器。這個(gè)一定要謹(jǐn)慎。當(dāng)然,如果發(fā)生了這個(gè)事情,還是可以通過 mfsmetastore 來恢復(fù)的。
數(shù)據(jù)存儲chunkserver服務(wù)器的安裝配置
數(shù)據(jù)存儲服務(wù)器chunkserver也是可以運(yùn)行在各種類unix平臺的,因此不再多說。一個(gè)MFS環(huán)境到底能集群多少服務(wù)器,作者的說法是上PB容量,個(gè)人建議,最好3臺以上;并且專門用來做存儲,不要把它跟master搞到一個(gè)機(jī)器(理論上沒問題,實(shí)現(xiàn)也是可以的,但這不是一個(gè)好策略)。因?yàn)槊總(gè)數(shù)據(jù)存儲服務(wù)器的安裝和配置都是相同的,所以只需按照一個(gè)服務(wù)器的操作就可以了。
(一)、安裝數(shù)據(jù)存儲服務(wù)器 chunkserver
1、下載GNU源碼 wget
http://www.moosefs.com/files/mfs-1.5.12.tar.gz
2、解包 tar zxvf mfs-1.5.12.tar.gz
3、切換目錄 cd mfs-1.5.12
4、創(chuàng)建用戶 useradd mfs –s /sbin/nologin
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
6、編譯安裝 make ; make install
(二)配置數(shù)據(jù)存儲服務(wù)器chunkserver
數(shù)據(jù)存儲服務(wù)器有2個(gè)配置服務(wù)器需要修改,一個(gè)是主配置文件 mfschunkserver.cfg ,另一個(gè)配置文件是 mfshdd.cfg。每個(gè)服務(wù)器用來分配給 MFS使用的空間最好是一個(gè)單獨(dú)的硬盤或者一個(gè)raid卷,最低要求是一個(gè)分區(qū)。作者舉的例子是創(chuàng)建一個(gè)大文件,然后掛接在本地,這不好,只能用來做實(shí)驗(yàn)了。
1、修改配置文件 /usr/local/mfs/etc/mfschunkserver.cfg。下面是修改了的配置文件:
#WORKING_USER = mfs
#WORKING_GROUP = mfs
# DATA_PATH = /usr/local/mfs/var/mfs
# LOCK_FILE = /var/run/mfs/mfschunkserver.pid
# SYSLOG_IDENT = mfschunkserver
# BACK_LOGS = 50
# MASTER_RECONNECTION_DELAY = 30
MASTER_HOST = 192.168.0.19
MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# CSSERV_LISTEN_HOST = *
# CSSERV_LISTEN_PORT = 9422
# CSSERV_TIMEOUT = 60
# CSTOCS_TIMEOUT = 60
# HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg
這個(gè)配置文件里,沒有注釋符號“#”就是被修改過的項(xiàng)了,接下來是里面某些項(xiàng)的含義說明:
◆ MASTER_HOST = 192.168.0.19 元數(shù)據(jù)服務(wù)器的名稱或地址,可以是主機(jī)名,也可以是ip地址,只要數(shù)據(jù)存儲服務(wù)器能訪問到元數(shù)據(jù)服務(wù)器就行。
◆ LOCK_FILE = /var/run/mfs/mfschunkserver.pid 與元數(shù)據(jù)服務(wù)器master的處理完全相同.
◆ CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,這個(gè)監(jiān)聽端口用于與其它數(shù)據(jù)存儲服務(wù)器間的連接,通常是數(shù)據(jù)復(fù)制。
◆ HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配給MFS使用的磁盤空間配置文件的位置。
2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服務(wù)器上,只有一個(gè)1T的SATA硬盤,分了一個(gè)800G容量的分區(qū)來做為MFS存儲服務(wù)的組成部分。為了使mfs擁有寫目錄的權(quán)限,需要修改目錄的屬主。我的服務(wù)器的分區(qū)掛接點(diǎn)是 /data , 用 chown –R mfs:mfs /data 把屬主改變。因?yàn)槲业拿總(gè)服務(wù)器只需貢獻(xiàn)一個(gè)分區(qū)做為MFS,因此配置文件只需要如下一行內(nèi)容就可以了:
/data
這個(gè)文件默認(rèn)情況下有好幾行,我們最好把它刪掉,因?yàn)榘闯R?guī)情況用注釋符號“#”好像不起作用。
(三)啟動數(shù)據(jù)存儲服務(wù)器chunkserver
在數(shù)據(jù)存儲服務(wù)器chunkserver執(zhí)行命令 /usr/local/mfs/sbin/mfschunkserver start 啟動數(shù)據(jù)存儲守護(hù)進(jìn)程.通過以下幾種方式來檢查chunkserver的運(yùn)行狀態(tài).
1、 查看進(jìn)程 ps aux | grep mfschunkserver
2、 查看網(wǎng)絡(luò)狀態(tài),正常情況下應(yīng)該看見9422處于監(jiān)聽狀態(tài),如果有其他數(shù)據(jù)存儲服務(wù)器chunkserver在同一個(gè)元數(shù)據(jù)服務(wù)器master管理下運(yùn)行的話,應(yīng)該能看見其他chunkserver跟本機(jī)的連接情況:
3、 查看元數(shù)據(jù)服務(wù)器的系統(tǒng)日志,可以看見新增的數(shù)據(jù)存儲服務(wù)器chunkserver被加入。
tail -f /var/log/messages
Mar 27 14:28:00 mfs-ctrl mfsmaster[29647]: server 3 (192.168.0.71): usedspace: 65827913728 (61 GB), totalspace: 879283101696 (818 GB), usage: 7.49%
(四) 關(guān)閉數(shù)據(jù)存儲服務(wù)器
跟元數(shù)據(jù)服務(wù)器master相似,執(zhí)行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服務(wù)就停下來了。為了使系統(tǒng)重啟過程能自動啟動chunkserver 服務(wù),可以通過在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 來達(dá)到這個(gè)目的(master的自動重啟處理也可同樣處理)。
MFS客戶端的安裝及配置
我的生產(chǎn)環(huán)境,只有centos和freebsd兩種環(huán)境,因此下面的描述,只有centos及freebsd掛接MFS文件系統(tǒng)的情形,其他類型的unix系統(tǒng),待日后嘗試。對比前面的操作過程,客戶端掛接后使用MFS集群文件系統(tǒng)才是最費(fèi)時(shí)的事情。
一、centos作為MFS的客戶端。
(一) 安裝MFS客戶端
◆Mfsmount需要依賴FUSE,因此需要先安裝好fuse,這里我選用 fuse-2.7.4.tar.gz。
1、解包 tar zxvf fuse-2.7.4.tar.gz
2、切換目錄 cd fuse-2.7.4.
3、配置 ./configure
4、編譯安裝 make;make install
如果系統(tǒng)已經(jīng)安裝了fuse,則跳過這個(gè)步驟。
◆安裝MFS客戶端程序
1、修改環(huán)境變量文件/etc/profile ,追加下面的行,然后再執(zhí)行命令source /etc/profile使修改生效。
export KG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
如果不執(zhí)行這個(gè)操作,在后面安裝MFS的過程中,執(zhí)行命令
./configure --enable-mfsmount時(shí)可能出現(xiàn)"checking for FUSE... no configure: error: mfsmount build was forced, but fuse development package is not installed"這樣的錯(cuò)誤,而不能正確安裝MFS客戶端程序。
2、解包 tar zxvf mfs-1.5.12.tar.gz
3、切換目錄 cd mfs-1.5.12
4、創(chuàng)建用戶 useradd mfs –s /sbin/nologin
5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
6、編譯安裝 make ; make install
◆檢查MFS客戶端安裝的結(jié)果。通過查看目錄/usr/local/mfs/bin目錄的文件,應(yīng)該發(fā)現(xiàn)如下文件:
(二)掛接和使用MFS文件系統(tǒng)
1、創(chuàng)建掛接點(diǎn) mkdir /mnt/mfs
2、掛接MFS /usr/local/mfs/bin/mfsmount –h 192.168.0.19 .注意,所有的MFS都是掛接同一個(gè)元數(shù)據(jù)服務(wù)器master,而不是其他數(shù)據(jù)存儲服務(wù)器chunkserver !
3、通過查看磁盤使用情況來檢查是否被掛接成功。
[root@mysql-bk ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 19G 2.7G 16G 15% /
/dev/hda7 51G 180M 48G 1% /backup
/dev/hdc1 145G 6.4G 131G 5% /data
/dev/hda5 19G 173M 18G 1% /home
/dev/hda3 24G 217M 23G 1% /var
/dev/hda2 29G 1.6G 26G 6% /usr
tmpfs 1.7G 0 1.7G 0% /dev/shm
MFS 2.5T 256G 2.2T 11% /mnt/mfs
4、 進(jìn)入目錄/mnt/mfs,上傳一個(gè)文件,看是否正常?接著在手動用touch 創(chuàng)建一個(gè)文件,然后再刪除它們,看是否可以正常操作。
5、 設(shè)置文件副本數(shù)量,建議以3份為佳。
設(shè)置副本數(shù)目
mfsrsetgoal 3 /mnt/mfs
查看設(shè)置是否如我所愿
mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz
/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3
6、設(shè)置刪除文件后空間回收時(shí)間。默認(rèn)的回收時(shí)間為7天(604800秒)
修改回收時(shí)間為10分鐘
mfsrsettrashtime 600 /mnt/mfs
6、 把掛接命令追加到文件/etc/rc.local,可實(shí)現(xiàn)開機(jī)自動啟動掛接MFS.
二、freebsd作為MFS客戶端
Freebsd安裝和掛接MFS集群文件系統(tǒng),比centos操作起來要復(fù)雜一些.mfsmount需要依賴fuse,并且需要在內(nèi)核中加載fusefs模塊。
(一)安裝fuse
1、解包 tar zxvf fuse-2.7.4.tar.gz
2、切換目錄 cd fuse-2.7.4.
3、配置 ./configure
4、編譯安裝 make;make install
如果系統(tǒng)已經(jīng)安裝了fuse,則跳過這個(gè)步驟。
(二) 安裝內(nèi)核模塊fusefs-kmod
1、執(zhí)行系統(tǒng)命令sysinstall
2、光標(biāo)選定Configure,進(jìn)入下一步。
3、選擇“Packages”,進(jìn)入下一步。
4、選擇“FTP”作為安裝源,進(jìn)入下一步。
5、選擇“kld”后,回車執(zhí)行默認(rèn)動作“[OK]”,進(jìn)入下一步選軟件包。
6、選擇“fusefs-kmod-0.3.9.p1_2”,按[OK]返回到第“4”步出現(xiàn)的那個(gè)操作界面。這時(shí)我們用“Tab”鍵選中底部右邊的“Install”,完成安裝后,會出現(xiàn)一個(gè)安裝成功的提示,然后瞬間消失。
◆ 加載fusefs模塊 kldload /usr/local/modules/fuse.ko .如果加載不成功,請檢查是否存在模塊文件fuse.ko.
◆ 檢查fusefs模塊是否被加載到內(nèi)核:
如果沒有類似上面館的輸出,就表明fusefs模塊沒有加載成功。
(三)安裝包 pkg-config:
1、cd /usr/ports/devel/pkg-config
2、make install clean
(四)安裝MFS客戶端
1、解包 tar zxvf mfs-1.5.12.tar.gz
2、切換目錄 cd mfs-1.5.12
3、創(chuàng)建用戶 pw useradd mfs –s /sbin/nologin
4、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
5、編譯安裝 make ; make install
◆檢查MFS客戶端安裝的結(jié)果。通過查看目錄/usr/local/mfs/bin目錄的文件,應(yīng)該發(fā)現(xiàn)如下文件:
(五)掛接和使用MFS文件系統(tǒng)
1、創(chuàng)建掛接點(diǎn) mkdir /mnt/mfs
2、掛接MFS /usr/local/mfs/bin/mfsmount –h 192.168.0.19 .注意,所有的MFS都是掛接同一個(gè)元數(shù)據(jù)服務(wù)器master,而不是其他數(shù)據(jù)存儲服務(wù)器chunkserver !
3、通過查看磁盤使用情況來檢查是否被掛接成功。
[root@mysql-bk ~]# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/ad4s1a 26G 570M 24G 2% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/ad4s1g 356G 157G 170G 48% /data
/dev/ad4s1f 17G 215M 15G 1% /home
/dev/ad4s1d 28G 1.1G 25G 4% /usr
/dev/ad4s1e 24G 362M 21G 2% /var
/dev/fuse0 2.5T 256G 2.2T 11% /mnt/mfs
4、 進(jìn)入目錄/mnt/mfs,我們可以看見前面步驟用centos 上傳到分布式文件系統(tǒng)MFS里的文件。
5、 設(shè)置文件副本數(shù)量,建議以3份為佳。
設(shè)置副本數(shù)目
mfsrsetgoal 3 /mnt/mfs
查看設(shè)置是否如我所愿
mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz
/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3
6、設(shè)置刪除文件后空間回收時(shí)間。默認(rèn)的回收時(shí)間為7天(604800秒)
修改回收時(shí)間為10分鐘
mfsrsettrashtime 600 /mnt/mfs
(六)自動掛接MFS
創(chuàng)建文件/etc/rc.local,加入如下內(nèi)容:.
#!/bin/sh
/sbin/kldload /usr/local/modules/fuse.ko
/usr/local/mfs/bin/mfsmount -h 192.168.0.19
就能實(shí)現(xiàn)開機(jī)或重啟系統(tǒng)自動掛接MFS文件系統(tǒng)。
破壞性測試
一、測試數(shù)據(jù)存儲服務(wù)器
我用5個(gè)服務(wù)器組成了MFS的存儲平臺,其中一個(gè)是master,其余四個(gè)服務(wù)器是chunkserver.先停止一個(gè)chunkserver服務(wù),然后在某個(gè)MFS客戶端往掛接點(diǎn)的目錄(/mnt/mfs)里復(fù)制數(shù)據(jù)或者創(chuàng)建目錄/文件、或者讀取文件、或者刪除文件,觀察操作是否能正常進(jìn)行。再停止第2個(gè)chunkserver,重復(fù)執(zhí)行上述操作;然后再停止第3個(gè)服務(wù)器,執(zhí)行類似的文件讀些操作。減少chunkserver試驗(yàn)后,我們再來逐步增加chunkserver服務(wù)器,然后對MFS執(zhí)行讀寫等相關(guān)訪問操作,檢驗(yàn)其正確性。
通過增減chunkserver服務(wù)器的測試,服務(wù)的可靠性確實(shí)不錯(cuò),哪怕只剩下最后一個(gè)服務(wù)器,也能正常提供存儲訪問服務(wù)。
二、測試元數(shù)據(jù)服務(wù)器
元數(shù)據(jù)服務(wù)器最重要的文件在目錄 /usr/local/mfs/var/mfs ,MFS每一個(gè)數(shù)據(jù)的變化,都被記錄在這個(gè)目錄的文件里,我們可以通過備份這個(gè)目錄的全部文件,來保障整個(gè)MFS文件系統(tǒng)的可靠性.在正常情況下,元數(shù)據(jù)服務(wù)器的改變?nèi)罩疚募?changelogs) 實(shí)時(shí)地、自動地復(fù)制到所有的數(shù)據(jù)存儲服務(wù)器,并且以changelog_csback.*.mfs的形式命名。換句換說,即使元數(shù)據(jù)服務(wù)器報(bào)廢了,也能再部署一個(gè)元數(shù)據(jù)服務(wù)器,然后從數(shù)據(jù)存儲服務(wù)器chunkserver取得恢復(fù)所需要的文件。
(一)本地測試
1、停止元數(shù)據(jù)服務(wù) /usr/local/mfs/sbin/mfsmaster
2、備份元數(shù)據(jù)服務(wù)器數(shù)據(jù) cd /usr/local/mfs/var; tar czvf mfs.tgz mfs
3、刪除目錄 mv mfs mfs.bk 或 rm –rf mfs
4、啟動元數(shù)據(jù)服務(wù) ../sbin/mfsmaster start 啟動失敗,提示不能初始化數(shù)據(jù)。
5、解包 tar zxvf mfs.tgz
6、執(zhí)行恢復(fù)操作 .. /sbin/mfsmetarestore –a
7、啟動元數(shù)據(jù)服務(wù) ../sbin/mfsmaster start
8、在MFS客戶端檢查MFS存儲的數(shù)據(jù)是否跟恢復(fù)前一致?能否正常訪問等等。
(二) 遷移測試
1、 安裝新的MFS元數(shù)據(jù)服務(wù)器。
2、 復(fù)制元數(shù)據(jù)服務(wù)器數(shù)據(jù)目錄(/usr/local/mfs/var/mfs)到這個(gè)新的元數(shù)據(jù)服務(wù)器。
3、 停止原先的那個(gè)元數(shù)據(jù)服務(wù)器(關(guān)閉計(jì)算機(jī)或停止它的網(wǎng)絡(luò)服務(wù))。
4、 更改新的元數(shù)據(jù)服務(wù)器的ip為原來那個(gè)服務(wù)器的ip.
5、 啟動新的元數(shù)據(jù)服務(wù) /usr/local/mfs/sbin/mfsmaster start
6、 在MFS客戶端檢查MFS存儲的數(shù)據(jù)是否跟恢復(fù)前一致?能否正常訪問等等。
感謝Pawel Kalinowski (mfs作者)提供幫助!
2009/3/30
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u1/40131/showart_1895203.html |
|