电竞比分网-中国电竞赛事及体育赛事平台

分享

MooseFS的簡(jiǎn)介、部署及應(yīng)用

 huhuwoo 2015-10-12

MFS也像其他類unix文件系統(tǒng)一樣,包含了層級(jí)結(jié)構(gòu)(目錄樹),存儲(chǔ)著文件屬性(權(quán)限,最后訪問(wèn)和修改時(shí)間),可以創(chuàng)建特殊的文件(塊設(shè)備,字符設(shè)備,管道,套接字),符號(hào)鏈接,硬鏈接。

mooseFS簡(jiǎn)介

MooseFS正式的推出是在2008-05-30,到2009-10-12為止,最新的版本是1.5.12。

mooseFS是一款網(wǎng)絡(luò)分布式文件系統(tǒng)。它把數(shù)據(jù)分散在多臺(tái)服務(wù)器上,但對(duì)于用戶來(lái)講,看到的只是一個(gè)源。MFS也像其他類unix文件系統(tǒng)一樣,包含了層級(jí)結(jié)構(gòu)(目錄樹),存儲(chǔ)著文件屬性(權(quán)限,最后訪問(wèn)和修改時(shí)間),可以創(chuàng)建特殊的文件(塊設(shè)備,字符設(shè)備,管道,套接字),符號(hào)鏈接,硬鏈接。

mooseFS系統(tǒng)的組成

1.master(元數(shù)據(jù)服務(wù)器)

master負(fù)責(zé)在整個(gè)系統(tǒng)中管理數(shù)據(jù)。是整個(gè)系統(tǒng)的維護(hù)者。但是它有個(gè)弱點(diǎn)就是master只有一個(gè)!也就是說(shuō)如果master壞掉,整個(gè)系統(tǒng)將停止工作!不過(guò)這算不上致命弱點(diǎn),因?yàn)槲覀冏龊脭?shù)據(jù)備份以后,恢復(fù)master是很簡(jiǎn)單的事。

2.chunkserver(數(shù)據(jù)存儲(chǔ)服務(wù)器)

chunkserver是mfs系統(tǒng)中的數(shù)據(jù)存儲(chǔ)者。真正的用戶數(shù)據(jù)按照算法被分成chunk,并分發(fā)到各個(gè)chunkserver上。這樣就保證了數(shù)據(jù)的安全性。

3.client

凡是使用mfs文件系統(tǒng)的機(jī)器都可以被稱為client。client是mfs系統(tǒng)的使用者。當(dāng)client把mfs文件系統(tǒng)掛載到本機(jī)以后,它可以像使用一個(gè)普通的磁盤分區(qū)一樣,來(lái)使用mfs。

 

試驗(yàn)環(huán)境

本文只介紹moosefs的部署與應(yīng)用,出于試驗(yàn)的目的,并沒(méi)有考慮性能因素,因此所有的服務(wù)器均使用虛擬機(jī)來(lái)實(shí)現(xiàn)。以后有機(jī)會(huì)做單獨(dú)的物理服務(wù)器,然后對(duì)其性能進(jìn)行測(cè)試。

拓?fù)鋱D

備注:

(1) chunkserver1-4 均添加了一塊虛擬的磁盤sda(磁盤空間一定要大于1G,我這里設(shè)置了4G),掛載到系統(tǒng)的/data下。所有服務(wù)器均升級(jí)內(nèi)核為2.6.18-164本版,為什么要升級(jí)內(nèi)核,下文會(huì)有介紹。

(2) 所有服務(wù)器均安裝了完整版的mfs組件

安裝與配置

安裝mfs的前提條件

由于mfs的客戶端程序也就是加載mfs磁盤系統(tǒng)的命令是使用fuse編寫的,因此只要是想掛載mfs的服務(wù)器,必要的前提條件就是先安裝fuse,這樣編譯mfs的時(shí)候才能順利通過(guò)。另外一點(diǎn)需要注意:linux 2.6.18-164.e15 版本的linux內(nèi)核中已經(jīng)內(nèi)置了fuse模塊。但在該版本之前的linux內(nèi)核中是不包含這個(gè)模塊的。另fuse 從2.8.0-pre1 版本的源碼包中去掉了fuse系統(tǒng)模塊的源碼部分,原因就是上一點(diǎn)提到的。這樣我們?cè)诰幾g安裝當(dāng)前最新版本的fuse(2.8以上版本) 且正在使用的linux內(nèi)核版本低于2.6.18-164.e15版本,則系統(tǒng)中是不包含fuse模塊的。

解決的方法:

1、升級(jí)系統(tǒng)內(nèi)核為2.6.18-164版本

為了方便起見直接利用yum升級(jí)系統(tǒng)內(nèi)核即可。yum install kernel

安裝成功后需重啟系統(tǒng)

2、使用fuse 2.7x版本編譯安裝

該版本的fuse中包含了linux內(nèi)核需要的fuse模塊,配置編譯選項(xiàng)時(shí)指定 –enable-kernel-module 選項(xiàng),make的時(shí)候就會(huì)編譯相應(yīng)的fuse模塊,make intall會(huì)將fuse.ko復(fù)制到 /lib/modules/`uname -r`/kernel/fs/fuse/ 目錄下 安裝后利用

  1. # modprobe -l | grep fuse  
  2.  
  3. /lib/modules/2.6.18-128.el5xen/kernel/fs/fuse/fuse.ko 

查看是否正常安裝

3、利用yum安裝當(dāng)前內(nèi)核版本的fuse模塊

  1. yum install -y dkms-fuse dkms 

安裝fuse

如果只編譯元數(shù)據(jù)服務(wù)端或數(shù)據(jù)存儲(chǔ)服務(wù)端的話是沒(méi)有必要安裝fuse的。只有mfsmount需要fuse支持(編譯時(shí)需要fuse的開發(fā)包,使用mfsmount掛載時(shí)需要fuse.ko系統(tǒng)模塊)。可以使用源碼或yum兩種方式安裝fuse

1、源碼安裝

  1. # wget http://ncu.dl./project/fuse/fuse-2.X/2.8.1/fuse-2.8.1.tar.gz  
  2.  
  3. # tar -xvzf fuse-2.8.1.tar.gz  
  4.  
  5. # cd fuse-2.8.1  
  6.  
  7. # ./configure –prefix=/usr/ –libdir=/usr/lib64  
  8.  
  9. # make && make install 

由于我系統(tǒng)為64位,因此在編譯fuse時(shí)將lib目錄定為/usr/lib64。這樣在下面編譯安裝mfs時(shí)就不會(huì)因?yàn)檎也坏絝use的lib文件報(bào)錯(cuò)了。

2、yum安裝

  1. # yum install -y fuse fuse-devel 

安裝mfs

  1. # useradd mfs -s /sbin/nologin  
  2.  
  3. # ./configure –prefix=/usr/local/mfs –with-default-user=mfs –with-default-group=mfs –enable-mfsmount  
  4.  
  5. # make && make install 

查看安裝后目錄結(jié)構(gòu)

  1. # ll /usr/local/mfs/  
  2.  
  3. total 20  
  4.  
  5. drwxr-xr-x 2 root root 4096 Oct 14 15:14 bin  
  6.  
  7. drwxr-xr-x 2 root root 4096 Oct 14 12:13 etc  
  8.  
  9. drwxr-xr-x 2 root root 4096 Oct 14 15:14 sbin  
  10.  
  11. drwxr-xr-x 3 root root 4096 Oct 14 12:13 share  
  12.  
  13. drwxr-xr-x 3 root root 4096 Oct 14 12:13 var 

bin – 客戶端工具

etc – 元數(shù)據(jù)服務(wù)器,數(shù)據(jù)存儲(chǔ)服務(wù)器的配置文件都放在該目錄中

sbin – 元數(shù)據(jù)服務(wù)器端程序mfsmaster、數(shù)據(jù)存儲(chǔ)服務(wù)器端服務(wù)程序mfschunkserver

share – 文檔

var – 元數(shù)據(jù)目錄(可在配置文件中自定義到其他目錄)

配置master(元數(shù)據(jù)服務(wù)器)

IP:192.168.108.108

  1. [root@master~]#vi/usr/local/mfs/etc/mfsmaster.cfg
  2. #WORKING_USER=mfs
  3. #WORKING_GROUP=mfs
  4.  
  5. #LOCK_FILE=/var/run/mfs/mfsmaster.pid
  6. #DATA_PATH=/usr/local/mfs/var/mfs
  7. #SYSLOG_IDENT=mfsmaster
  8.  
  9. #BACK_LOGS=50
  10.  
  11. #REPLICATIONS_DELAY_INIT=300
  12. #REPLICATIONS_DELAY_DISCONNECT=3600
  13.  
  14. MATOCS_LISTEN_HOST=192.168.108.108
  15. #MATOCS_LISTEN_PORT=9420
  16.  
  17. #MATOCU_LISTEN_HOST=*
  18. #MATOCU_LISTEN_PORT=9421
  19.  
  20. #CHUNKS_LOOP_TIME=300
  21. #CHUNKS_DEL_LIMIT=100
  22. #CHUNKS_REP_LIMIT=15

注:這個(gè)配置文件中所有注掉的設(shè)置都是默認(rèn)的配置。在這里我只更改了MATOCS_LISTEN_HOST的值,也就是將它修改為本機(jī)的ip地址:192.168.108.108 。如果又需要還可以修改DATA_PATH的設(shè)置將元數(shù)據(jù)目錄存儲(chǔ)到其他的分區(qū)或磁盤。其他的參數(shù)都很簡(jiǎn)單根據(jù)需要調(diào)整即可。

master會(huì)打開9420端口等待 mfschunkserver 連接

啟動(dòng)mfsmaster

  1. [root@master~]#/usr/local/mfs/sbin/mfsmaster
  2. [root@master~]#ps-ef|grepmfsmaster|grep-vgrep
  3. mfs101321017:37?00:00:00/usr/local/mfs/sbin/mfsmaster
  4. [root@master~]#netstat-tulnp|grepmfsmaster
  5. tcp00192.168.108.108:94200.0.0.0:*LISTEN10132/mfsmaster
  6. tcp000.0.0.0:94210.0.0.0:*LISTEN10132/mfsmaster

查看系統(tǒng)日志

  1. [root@master~]#tail-f/var/log/messages
  2. Oct1417:37:35mastermfsmaster:config:usingdefaultvalueforoption‘SYSLOG_IDENT’–‘mfsmaster’
  3. Oct1417:37:35mastermfsmaster[10130]:config:usingdefaultvalueforoption‘WORKING_USER’–‘mfs’
  4. Oct1417:37:35mastermfsmaster[10130]:config:usingdefaultvalueforoption‘WORKING_GROUP’–‘mfs’
  5. Oct1417:37:35mastermfsmaster[10132]:config:usingdefaultvalueforoption‘CHUNKS_LOOP_TIME’–’300′

# 以上日志內(nèi)容省略的很多,主要是程序讀取配置的過(guò)程。

# 下面的部分為檢查元數(shù)據(jù)和檢查數(shù)據(jù)存儲(chǔ)服務(wù)器的情況(每1分鐘檢查一次)。

# 由于我這里還沒(méi)有啟動(dòng)chunkservers 因此在chunkservers status:的顯示結(jié)果為空。total: usedspace: 的結(jié)果也為空。

  1. Oct1417:38:00mastermfsmaster[10132]:inodes:45
  2. Oct1417:38:00mastermfsmaster[10132]:dirnodes:3
  3. Oct1417:38:00mastermfsmaster[10132]:filenodes:42
  4. Oct1417:38:00mastermfsmaster[10132]:chunks:14
  5. Oct1417:38:00mastermfsmaster[10132]:chunkstodelete:0
  6. Oct1417:38:00mastermfsmaster[10132]:chunkserversstatus:
  7. Oct1417:38:00mastermfsmaster[10132]:total:usedspace:0(0GB),totalspace:0(0GB),usage:0.00%

設(shè)置服務(wù)隨系統(tǒng)啟動(dòng)

  1. [root@master~]#echo“/usr/local/mfs/sbin/mfsmaster”>>/etc/rc.local

配置chunkserver(數(shù)據(jù)存儲(chǔ)服務(wù)器)

IP:192.168.108.161~164

  1. [root@chunkserver-1~]#vi/usr/local/mfs/etc/mfschunkserver.cfg
  2. #WORKING_USER=mfs
  3. #WORKING_GROUP=mfs
  4.  
  5. #DATA_PATH=/usr/local/mfs/var/mfs
  6. #LOCK_FILE=/var/run/mfs/mfschunkserver.pid
  7. #SYSLOG_IDENT=mfschunkserver
  8.  
  9. #BACK_LOGS=50
  10.  
  11. #MASTER_RECONNECTION_DELAY=30
  12.  
  13. MASTER_HOST=192.168.108.108
  14. #MASTER_PORT=9420
  15.  
  16. #MASTER_TIMEOUT=60
  17.  
  18. #CSSERV_LISTEN_HOST=*
  19. #CSSERV_LISTEN_PORT=9422
  20.  
  21. #CSSERV_TIMEOUT=60
  22.  
  23. #CSTOCS_TIMEOUT=60
  24.  
  25. #HDD_CONF_FILENAME=/usr/local/mfs/etc/mfshdd.cfg

配置存儲(chǔ)分區(qū)

  1. [root@chunkserver-1~]#vi/usr/local/mfs/etc/mfshdd.cfg
  2. 刪除
  3. /mnt/hd1
  4. /mnt/hd2
  5. /mnt/hd3
  6. /mnt/hd4

添加獨(dú)立的分區(qū)

/data

修改分區(qū)所有者為mfs

  1. [root@chunkserver-1~]#chownmfs.mfs/data

注:mfschunkserver 服務(wù)器的主配置很簡(jiǎn)單,沒(méi)有特殊要求只需要修改MASTER_HOST的地址即可。存儲(chǔ)分區(qū)的配置選擇一個(gè)獨(dú)立的磁盤分區(qū)(分區(qū)必須大于1G)。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多