分佈式文件系統MFS(moosefs)實現存儲共享(第二版)

分佈式文件系統MFS(moosefs)實現存儲共享(第二版)

作者:田逸([email protected])

由於用戶數量的不斷攀升,我對訪問量大的應用實現了可擴展、高可靠的集羣部署(即lvs+keepalived的方式),但仍然有用戶反饋訪問慢的問題。通過排查個服務器的情況,發現問題的根源在於共享存儲服務器NFS。在我這個網絡環境裏,N個服務器通過nfs方式共享一個服務器的存儲空間,使得NFS服務器不堪重負。察看系統日誌,全是nfs服務超時之類的報錯。一般情況下,當nfs客戶端數目較小的時候,NFS性能不會出現問題;一旦NFS服務器數目過多,並且是那種讀寫都比較頻繁的操作,所得到的結果就不是我們所期待的。下面是某個集羣使用nfs共享的示意圖:

mfs

這種架構除了性能問題而外,還存在單點故障,一旦這個NFS服務器發生故障,所有靠共享提供數據的應用就不再可用,儘管用rsync方式同步數據到另外一個服務器上做nfs服務的備份,但這對提高整個系統的性能毫無幫助。基於這樣一種需求,我們需要對nfs服務器進行優化或採取別的解決方案,然而優化並不能對應對日益增多的客戶端的性能要求,因此唯一的選擇只能是採取別的解決方案了;通過調研,分佈式文件系統是一個比較合適的選擇。採用分佈式文件系統後,服務器之間的數據訪問不再是一對多的關係(1個NFS服務器,多個NFS客戶端),而是多對多的關係,這樣一來,性能大幅提升毫無問題。

到目前爲止,有數十種以上的分佈式文件系統解決方案可供選擇,如lustre,hadoop,Pnfs等等。我嘗試了PVFS,hadoop,moosefs這三種應用,參看了lustre、KFS等諸多技術實施方法,最後我選擇了moosefs(以下簡稱MFS)這種分佈式文件系統來作爲我的共享存儲服務器。爲什麼要選它呢?我來說說我的一些看法:

1、 實施起來簡單。MFS的安裝、部署、配置相對於其他幾種工具來說,要簡單和容易得多。看看lustre 700多頁的pdf文檔,讓人頭昏吧。

2、 不停服務擴容。MFS框架做好後,隨時增加服務器擴充容量;擴充和減少容量皆不會影響現有的服務。注:hadoop也實現了這個功能。

3、 恢復服務容易。除了MFS本身具備高可用特性外,手動恢復服務也是非常快捷的,原因參照第1條。

4、 我在實驗過程中得到作者的幫助,這讓我很是感激。

MFS特性(根據官方網站翻譯)

★ 高可靠性(數據能被分成幾個副本存儲在不同的計算機裏)

clip_image004

★ 通過增加計算機或增加新的硬盤動態擴充可用磁盤空間

★ 可以設置刪除文件的空間回收時間

[root@mysql-bk serydir]# mfsgettrashtime bind-9.4.0.tar.gz

bind-9.4.0.tar.gz: 600

文件被刪除10分鐘後(600秒),才真正刪除文件,回收磁盤空間。

★ 爲文件創建快照

MFS文件系統的組成

1、 元數據服務器。在整個體系中負責管理管理文件系統,目前MFS只支持一個元數據服務器master,這是一個單點故障,需要一個性能穩定的服務器來充當。希望今後MFS能支持多個master服務器,進一步提高系統的可靠性。

2、 元數據日誌服務器。備份master服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs。當元數據服務器數據丟失或者損毀,可從日誌服務器取得文件進行恢復。

3、 數據存儲服務器chunkserver。真正存儲用戶數據的服務器。存儲文件時,首先把文件分成塊,然後這些塊在數據服務器chunkserver之間複製(複製份數可以手工指定,建議設置副本數爲3)。數據服務器可以是多個,並且數量越多,可使用的“磁盤空間”越大,可靠性也越高。

4、 客戶端。使用MFS文件系統來存儲和訪問的主機稱爲MFS的客戶端,成功掛接MFS文件系統以後,就可以像以前使用NFS一樣共享這個虛擬性的存儲了。

元數據服務器安裝和配置

元數據服務器可以是linux,也可以是unix,你可以根據自己的使用習慣選擇操作系統,在我的環境裏,我是用freebsd做爲MFS元數據的運行平臺。GNU源碼,在各種類unix平臺的安裝都基本一致。

(一) 安裝元數據服務

1、下載GNU源碼

wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz

2、解包 tar zxvf mfs-1.6.11.tar.gz

3、切換目錄 cd mfs-1.6.11

4、創建用戶 useradd mfs –s /sbin/nologin

5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

6、編譯安裝 make ; make install

(二) 配置元數據服務

元數據服務器的配置文件被放置於安裝目錄/usr/local/mfs/etc。與mfs-1.5.12版本不同的是:mfs-1.6.x版安裝完成只有模版文件,其後綴形如mfsmaster.cfg.dist。爲了使mfs master正常工作,需要兩個配置文件mfsmaster.cfg及mfsexports.cfg,前者爲主配置文件,後者爲權限控制文件(mfs客戶端掛接時使用)。

(1)主配置文件mfsmaster.cfg,可直接從模版文件拷貝而來,打開這個配置文件/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些內容:

# WORKING_USER = mfs

# WORKING_GROUP = mfs

# SYSLOG_IDENT = mfsmaster

# LOCK_MEMORY = 0

# NICE_LEVEL = -19

# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg

# DATA_PATH = /usr/local/mfs/var/mfs

# BACK_LOGS = 50

# REPLICATIONS_DELAY_INIT = 300

# REPLICATIONS_DELAY_DISCONNECT = 3600

# MATOML_LISTEN_HOST = *

# MATOML_LISTEN_PORT = 9419

# MATOCS_LISTEN_HOST = *

# MATOCS_LISTEN_PORT = 9420

# MATOCU_LISTEN_HOST = *

# MATOCU_LISTEN_PORT = 9421

# CHUNKS_LOOP_TIME = 300

# CHUNKS_DEL_LIMIT = 100

# CHUNKS_WRITE_REP_LIMIT = 1

# CHUNKS_READ_REP_LIMIT = 5

# REJECT_OLD_CLIENTS = 0

# deprecated, to be removed in MooseFS 1.7

# LOCK_FILE = /var/run/mfs/mfsmaster.lock

儘管每行都被註釋掉了,但它們卻是配置文件的默認值,要改變這些值,需要取消註釋,然後明確指定其取值。接下來說明一下其中一些項目的含義。

◆ EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 權限控制文件的存放位置。

◆ DATA_PATH = /usr/local/mfs/var/mfs 數據存放路徑,只元數據的存放路徑。那麼這些數據都包括哪些呢?進目錄看看,大致分3種類型的文件:

clip_image006

這些文件也同樣要存儲在其他數據存儲服務器的相關目錄。

◆ MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver,即元數據服務器使用9420這個監聽端口來接受數據存儲服務器chunkserver端的連接。

◆ MATOML_LISTEN_PORT = 9419 MATOML---master to metalogger,用於備份元數據服務器的變化日誌。注:Mfs-1.5.12以前的版本沒有這個項目。

◆ MATOCU_LISTEN_PORT = 9421 元數據服務器在9421端口監聽,用以接受客戶端對MFS進行遠程掛接(客戶端以mfsmount掛接MFS)

◆ 其他部分看字面意思都不難理解。還有幾個與時間有關的數值,其單位是秒。

這個配置文件,不必做修改就能工作了。

(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接從模版文件複製而來。這個文件的內容,十分類似NFS服務器的exports文件.實際配置時,可參照這個文件的默認行來修改以滿足自己的應用需求.我的mfsexports.cfg文件的內容爲:

192.168.93.0/24 / rw

(3)複製文件

cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs

這是一個8字節的文件,爲mfs-1.6.x新增項目。

(三) 元數據服務器master啓動

元數據服務器可以單獨啓動,即使沒有任何數據存儲服務器(chunkserver)也是能正常工作的,因此當我們安裝配置完MFS後,即可啓動它。執行命令 /usr/local/mfs/sbin/mfsmaster start ,如果沒有意外,元數據庫服務器就應該作爲一個守護進程運行起來。現在我們可以通過3個方面來檢查一下MFS master的運行狀況:

1、 檢查進程

clip_image008

2、 檢查網絡狀態

clip_image010

3、 檢查系統日誌

clip_image012

MFS的日誌會直接寫入系統日誌。當我們增加數據存儲服務器(chunkserver)或數據存儲服務器(chunkserver)處故障時,都能在系統日誌找到這些記錄。注意,這個日誌跟元數據變化日誌不是一回事情。

(四)、關閉元數據服務器

關閉元數據服務器,務必使用 /usr/local/mfs/sbin/mfsmaster –s 這種方式,如果直接使用kill殺死進程,將導致下次啓動時出現找不到相關文件,而不能正常啓動服務器。這個一定要謹慎。當然,如果發生了這個事情,還是可以通過 mfsmetastore 來恢復的。

元數據日誌服務器安裝和配置

元數據日誌服務爲mfs 1.6以後版本新增的服務,即可以把元數據日誌保留在元數據服務器,也可以單獨存儲。爲保證其可靠性,最好單獨放置。需要注意的是,源數據日誌守護進程跟元數據服務器(master)在同一個服務器上,備份元數據日誌的服務器作爲它的客戶端,從元數據服務器取得日誌文件進行備份。

(一)安裝元數據日誌服務器metalogger

1、下載GNU源碼

wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz

2、解包 tar zxvf mfs-1.6.11.tar.gz

3、切換目錄 cd mfs-1.6.11

4、創建用戶 useradd mfs –s /sbin/nologin

5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

6、編譯安裝 make ; make install

(二)元數據日誌服務(metalogger)配置

該服務僅需要一個配置文件,這裏我們只需要從模板文件複製一個,然後稍微加以修改即可,下面是我的某個metalogger 的配置文件:

[root@hynfs-2 etc]# more mfsmetalogger.cfg

# WORKING_USER = mfs

# WORKING_GROUP = mfs

# SYSLOG_IDENT = mfsmetalogger

# LOCK_MEMORY = 0

# NICE_LEVEL = -19

# DATA_PATH = /usr/local/mfs/var/mfs

# BACK_LOGS = 50

# META_DOWNLOAD_FREQ = 24

# MASTER_RECONNECTION_DELAY = 5

MASTER_HOST = 192.168.93.18

MASTER_PORT = 9419

# MASTER_TIMEOUT = 60

# deprecated, to be removed in MooseFS 1.7

# LOCK_FILE = /var/run/mfs/mfsmetalogger.lock

這個配置文件,唯一需要修改的地方就是MASTER_HOST,它的值必須是元數據服務器的主機名或者ip地址。另外,爲方便大家進一步理解,我把配置文件裏其他幾個項目簡單的說明一下:

(1)SYSLOG_IDENT = mfsmetalogger 元數據日誌服務運行時,在系統日誌輸出的標識,下面給出一段系統日誌:

clip_image014

(2)DATA_PATH = /usr/local/mfs/var/mfs 從元數據服務器(master)抓回文件,然後進行存放的路徑。

(3)BACK_LOGS = 50 存放備份日誌的總個數爲50,超出50則輪轉。在做元數據恢復時,僅僅需要最近的那個日誌文件備份,因此默認的日誌個數就足夠了,這也保證了日誌備份不會寫滿整個分區。

(4)META_DOWNLOAD_FREQ = 24 元數據備份文件下載請求頻率。默認爲24小時,即每隔一天從元數據服務器(MASTER)下載一個metadata.mfs.back文件。當元數據服務器關閉或者出故障時,matedata.mfs.back文件將消失,那麼要恢復整個mfs,則需從metalogger服務器取得該文件。請特別注意這個文件,它與日誌文件一起,才能夠恢復整個被損壞的分佈式文件系統。

(三)元數據日誌服務(metalogger)運行及關閉

1、啓動過程爲:

/usr/local/mfs/sbin/mfsmetalogger start

working directory: /usr/local/mfs/var/mfs

lockfile created and locked

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

啓動過程如果不能跟元數據服務器進行通信的話,系統會給出錯誤信息。

2、關閉服務,執行命令 /usr/local/mfs/sbin/mfsmetalogger stop

3、檢查服務的運行狀況。從兩個方面看,一個是元數據服務器,另一個是本身的數據生成情況。

◆察看元數據服務器網絡連接,可以看見日誌服務器連接到元數據服務器的tcp 9419端口。

◆查看日誌服務器的工作目錄,正常情況應該看見已經有文件生成了(從元數據服務器獲取過來的)。可以手動從元數據服務器複製一個日誌文件過來比較文件的內容。

數據存儲chunkserver服務器的安裝配置

數據存儲服務器chunkserver也是可以運行在各種類unix平臺的,因此不再多說。一個MFS環境到底能集羣多少服務器,作者的說法是上PB容量,個人建議,最好3臺以上;並且專門用來做存儲,不要把它跟master搞到一個機器(理論上沒問題,實現也是可以的,但這不是一個好策略)。因爲每個數據存儲服務器的安裝和配置都是相同的,所以只需按照一個服務器的操作就可以了。

(一)、安裝數據存儲服務器 chunkserver

1、下載GNU源碼

wget http://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz

2、解包 tar zxvf mfs-1.6.11.tar.gz

3、切換目錄 cd mfs-1.6.11

4、創建用戶 useradd mfs –s /sbin/nologin

5、配置 ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

6、編譯安裝 make ; make install

(二)配置數據存儲服務器chunkserver

數據存儲服務器有2個配置服務器需要修改,一個是主配置文件 mfschunkserver.cfg ,另一個配置文件是 mfshdd.cfg。每個服務器用來分配給 MFS使用的空間最好是一個單獨的硬盤或者一個raid卷,最低要求是一個分區。作者舉的例子是創建一個大文件,然後掛接在本地,這不是個好主意,只能用來做實驗了。

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

這個配置文件裏,沒有註釋符號“#”就是被修改過的項了,接下來是裏面某些項的含義說明:

◆ MASTER_HOST = 192.168.0.19 元數據服務器的名稱或地址,可以是主機名,也可以是ip地址,只要數據存儲服務器能訪問到元數據服務器就行。

◆ LOCK_FILE = /var/run/mfs/mfschunkserver.pid 與元數據服務器master的處理完全相同.

◆ CSSERV_LISTEN_PORT = 9422 CSSERV—chunkserver,這個監聽端口用於與其它數據存儲服務器間的連接,通常是數據複製。

◆ HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配給MFS使用的磁盤空間配置文件的位置。

2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。在我的服務器上,只有一個1T的SATA硬盤,分了一個800G容量的分區來做爲MFS存儲服務的組成部分。爲了使mfs擁有寫目錄的權限,需要修改目錄的屬主。我的服務器的分區掛接點是 /data , 用 chown –R mfs:mfs /data 把屬主改變。因爲我的每個服務器只需貢獻一個分區做爲MFS,因此配置文件只需要如下一行內容就可以了:

/data

這個文件默認情況下有好幾行,我們最好把它刪掉,因爲按常規情況用註釋符號“#”好像不起作用。

(三)啓動數據存儲服務器chunkserver

在數據存儲服務器chunkserver執行命令 /usr/local/mfs/sbin/mfschunkserver start 啓動數據存儲守護進程.通過以下幾種方式來檢查chunkserver的運行狀態.

1、 查看進程 ps aux | grep mfschunkserver

2、 查看網絡狀態,正常情況下應該看見9422處於監聽狀態,如果有其他數據存儲服務器chunkserver在同一個元數據服務器master管理下運行的話,應該能看見其他chunkserver跟本機的連接情況:

clip_image016

3、 查看元數據服務器的系統日誌,可以看見新增的數據存儲服務器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%

(四) 關閉數據存儲服務器

跟元數據服務器master相似,執行命令 /usr/local/mfs/sbin/mfschunkserver –s , chunkserver服務就停下來了。爲了使系統重啓過程能自動啓動chunkserver 服務,可以通過在/etc/rc.local文件追加行 /usr/local/mfs/sbin/mfschunkserver start 來達到這個目的(master的自動重啓處理也可同樣處理)。

MFS客戶端的安裝及配置

我的生產環境,只有centos和freebsd兩種環境,因此下面的描述,只有centos及freebsd掛接MFS文件系統的情形,其他類型的unix系統,待日後嘗試。對比前面的操作過程,客戶端掛接後使用MFS集羣文件系統纔是最費時的事情。

一、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

如果系統已經安裝了fuse,則跳過這個步驟。

◆安裝MFS客戶端程序

1、修改環境變量文件/etc/profile ,追加下面的行,然後再執行命令source /etc/profile使修改生效。

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

如果不執行這個操作,在後面安裝MFS的過程中,執行命令

./configure --enable-mfsmount時可能出現"checking for FUSE... no  configure: error: mfsmount build was forced, but fuse development package is not installed"這樣的錯誤,而不能正確安裝MFS客戶端程序。

2、解包 tar zxvf mfs-1.6.11.tar.gz

3、切換目錄 cd mfs-1.6.11

4、創建用戶 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客戶端安裝的結果。通過查看目錄/usr/local/mfs/bin目錄的文件,應該發現如下文件:

clip_image018

(二)掛接和使用MFS文件系統

1、創建掛接點 mkdir /mnt/mfs

2、掛接MFS /usr/local/mfs/bin/mfsmount /mnt/mfs –H 192.168.0.19 .注意,所有的MFS都是掛接同一個元數據服務器master,而不是其他數據存儲服務器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#192.168.0.19:9421 2.5T 256G 2.2T 11% /mnt/mfs

4、 進入目錄/mnt/mfs,上傳一個文件,看是否正常?接着在手動用touch 創建一個文件,然後再刪除它們,看是否可以正常操作。

5、 設置文件副本數量,建議以3份爲佳。

設置副本數目

mfsrsetgoal 3 /mnt/mfs

查看設置是否如我所願

mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz

/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3

6、設置刪除文件後空間回收時間。默認的回收時間爲7天(604800秒)

修改回收時間爲10分鐘

mfsrsettrashtime 600 /mnt/mfs

6、 把掛接命令追加到文件/etc/rc.local,可實現開機自動啓動掛接MFS.

二、freebsd作爲MFS客戶端

Freebsd安裝和掛接MFS集羣文件系統,比centos操作起來要複雜一些.mfsmount需要依賴fuse,並且需要在內核中加載fusefs模塊。

(一)安裝fuse

1、解包 tar zxvf fuse-2.7.4.tar.gz

2、切換目錄 cd fuse-2.7.4.

3、配置 ./configure

4、編譯安裝 make;make install

如果系統已經安裝了fuse,則跳過這個步驟。

(二) 安裝內核模塊fusefs-kmod

1、執行系統命令sysinstall

clip_image020

2、光標選定Configure,進入下一步。

clip_image022

3、選擇“Packages”,進入下一步。

clip_image024

4、選擇“FTP”作爲安裝源,進入下一步。

clip_image026

5、選擇“kld”後,回車執行默認動作“[OK]”,進入下一步選軟件包。

clip_image028

6、選擇“fusefs-kmod-0.3.9.p1_2”,按[OK]返回到第“4”步出現的那個操作界面。這時我們用“Tab”鍵選中底部右邊的“Install”,完成安裝後,會出現一個安裝成功的提示,然後瞬間消失。

◆ 加載fusefs模塊 kldload /usr/local/modules/fuse.ko .如果加載不成功,請檢查是否存在模塊文件fuse.ko.

◆ 檢查fusefs模塊是否被加載到內核:

clip_image030

如果沒有類似上面館的輸出,就表明fusefs模塊沒有加載成功。

(三)安裝包 pkg-config:

1、cd /usr/ports/devel/pkg-config

2、make install clean

(四)安裝MFS客戶端

1、解包 tar zxvf mfs-1.6.11.tar.gz

2、切換目錄 cd mfs-1.6.11

3、創建用戶 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客戶端安裝的結果。通過查看目錄/usr/local/mfs/bin目錄的文件,應該發現如下文件:

clip_image018[1]

(五)掛接和使用MFS文件系統

1、創建掛接點 mkdir /mnt/mfs

2、掛接MFS /usr/local/mfs/bin/mfsmount /mnt/mfs –H 192.168.0.19 .注意,所有的MFS都是掛接同一個元數據服務器master,而不是其他數據存儲服務器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

5、 進入目錄/mnt/mfs,我們可以看見前面步驟用centos 上傳到分佈式文件系統MFS裏的文件。

6、 設置文件副本數量,建議以3份爲佳。

設置副本數目

mfsrsetgoal 3 /mnt/mfs

查看設置是否如我所願

mfsgetgoal /mnt/mfs/serydir/bind-9.4.0.tar.gz

/mnt/mfs/serydir/bind-9.4.0.tar.gz: 3

6、設置刪除文件後空間回收時間。默認的回收時間爲7天(604800秒)

修改回收時間爲10分鐘

mfsrsettrashtime 600 /mnt/mfs

(六)自動掛接MFS

創建文件/etc/rc.local,加入如下內容:.

#!/bin/sh

/sbin/kldload /usr/local/modules/fuse.ko

/usr/local/mfs/bin/mfsmount -h 192.168.0.19

就能實現開機或重啓系統自動掛接MFS文件系統。

破壞性測試

、測試數據存儲服務器

我用5個服務器組成了MFS的存儲平臺,其中一個是master,其餘四個服務器是chunkserver.先停止一個chunkserver服務,然後在某個MFS客戶端往掛接點的目錄(/mnt/mfs)裏複製數據或者創建目錄/文件、或者讀取文件、或者刪除文件,觀察操作是否能正常進行。再停止第2個chunkserver,重複執行上述操作;然後再停止第3個服務器,執行類似的文件讀些操作。減少chunkserver試驗後,我們再來逐步增加chunkserver服務器,然後對MFS執行讀寫等相關訪問操作,檢驗其正確性。

通過增減chunkserver服務器的測試,服務的可靠性確實不錯,哪怕只剩下最後一個服務器,也能正常提供存儲訪問服務。

二、測試元數據服務器

元數據服務器最重要的文件在目錄 /usr/local/mfs/var/mfs ,MFS每一個數據的變化,都被記錄在這個目錄的文件裏,我們可以通過備份這個目錄的全部文件,來保障整個MFS文件系統的可靠性.在正常情況下,元數據服務器的改變日誌文件(changelogs) 實時地、自動地複製到所有的數據存儲服務器,並且以changelog_csback.*.mfs的形式命名。換句換說,即使元數據服務器報廢了,也能再部署一個元數據服務器,然後從數據存儲服務器chunkserver取得恢復所需要的文件。

(一)本地測試

1、停止元數據服務 /usr/local/mfs/sbin/mfsmaster

2、備份元數據服務器數據 cd /usr/local/mfs/var; tar czvf mfs.tgz mfs

3、刪除目錄 mv mfs mfs.bk 或 rm –rf mfs

4、啓動元數據服務 ../sbin/mfsmaster start 啓動失敗,提示不能初始化數據。

5、解包 tar zxvf mfs.tgz

6、執行恢復操作 .. /sbin/mfsmetarestore –a

7、啓動元數據服務 ../sbin/mfsmaster start

8、在MFS客戶端檢查MFS存儲的數據是否跟恢復前一致?能否正常訪問等等。

(二) 遷移測試

1、 安裝新的MFS元數據服務器。

2、 從當前的元數據服器(master)或日誌備份服務器(mfsmetalogger)複製備份文件 metadata.mfs.back/metadate_ml.mfs.back到新的元服務器目錄(metadata.mfs.back需要定時用crontab備份).

3、 從當前的元數據服器(master)或日誌備份服務器(mfsmetalogger)複製元數據服務器數據目錄(/usr/local/mfs/var/mfs)到這個新的元數據服務器。

4、 停止原先的那個元數據服務器(關閉計算機或停止它的網絡服務)。

5、 更改新的元數據服務器的ip爲原來那個服務器的ip.

6、 執行數據恢復操作,其命令爲:mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog_ml.*.mfs 恢復成功後再執行啓動新的元數據服務操作。

7、 啓動新的元數據服務 /usr/local/mfs/sbin/mfsmaster start

8、 在MFS客戶端檢查MFS存儲的數據是否跟恢復前一致?能否正常訪問等等。

感謝Pawel Kalinowski (mfs作者)提供幫助!

2010/1/11

 

附軟件作者來信:

Hi!

Thank you very much for promoting MooseFS in Chinese language! Please feel
free to use our images of architecture I sent you before. If you need any
help please tell us.


Kind regards
Michał Borychowski

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章