MFS分佈式文件系統

目前開源的幾種分佈式文件系統 :

1、 MooseFS易用,穩定,對小文件很高效。 

2、 MogileFS 據說對於 Web 2.0 應用存儲圖片啥的很好。 

3、 GlusterFS 感覺廣告宣傳做的比產品本身好。 

4、 OpenAFS/Coda 是很有特色的東西。 

5、 Lustre 複雜,高效,適合大型集羣。 

6、 PVFS2 搭配定製應用會很好,據說曙光的並行文件系統就是基於 PVFS。 

以上評價,非個人評價,是從CHINAUNIX中,一些人總結的。在此借鑑一下。 

簡單介紹MOOSEFS工作原理:

1.1 MFS文件系統結構 

管理服務器 

managing server (master) 

負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝 

元數據日誌服務器 

Metalogger server(Metalogger) 

負責備份master 服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs ,以便於在master server 出問題的時候接替其進行工作 

數據存儲服務器 

data servers (chunkservers) 

負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸. 

客戶機掛載使用 

client computers 

通過fuse 內核接口掛接遠程管理服務器上所管理的數據存儲服務器,.看起來共享的文件系統和本地unix 文件系統使用一樣的效果.

1.2 MFS基礎網絡拓撲圖 

mfs拓撲

 

 

實驗環境 

 

 

本次實驗均在VMWARE虛擬機下進行實驗
1、 機器配置
內存:256M
CPU:單核
2、 虛擬機數量 4臺
3、 操作系統:RedHat 5.4 內核版本:2.6.18
4、 MFS版本: mfs-1.6.10
5、使用其他補丁的版本: fuse-2.8.3

 

安裝流程 

MFS-MASTER安裝 

1、 MFS-MASTER安裝 

a) 下載源碼包 

wget http://pro.hit.gemius.pl/hitredir/id=1007_2OM3IJvULucytAjEoZifZuFnMc7hqxV5WTnaEn.P7/url=moosefs.com/tl_files/mfscode/mfs-1.6.14.tar.gz 

b) tar zxvf mfs-1.6.14.tar.gz 
c) useradd mfs -s /sbin/nologin 
d) ./configure --prefix=/usr/local/mfs --with-default-user=mfs 
--with-default-group=mfs 
e) make ; make install 
f) cd /usr/local/mfs/etc 
g) cp mfsmaster.cfg.dist mfsmaster.cfg 
h) cp mfsexports.cfg.dist mfsexports.cfg 
2、MFS-MASTER配置 
a) 默認配置文件不做任何修改,即可以啓動MFS-MASTER端 
b) 簡單介紹配置文件的具體參數 
WORKING_USER = mfs 運行master server 的用戶 
WORKING_GROUP = mfs 運行master server 的用戶組 
SYSLOG_IDENT = mfsmaster master server 在syslog中的標識,說明是由master serve 產生的 
LOCK_MEMORY = 0 是否執行mlockall()以避免mfsmaster 進程溢出(默認爲0) 
NICE_LEVEL = -19 運行的優先級(如果可以默認是-19; 注意: 進程必須是用root啓動 
EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg 被掛接目錄權限配置文件 
DATA_PATH = /usr/local/mfs/var/mfs 數據存放路徑,此目錄下大致有三類文件,changelog,sessions和stats; 
BACK_LOGS = 50 metadata 的改變log 文件數目(默認是50) 
REPLICATIONS_DELAY_INIT = 300 延遲複製的時間(默認是300s); 
REPLICATIONS_DELAY_DISCONNECT = 3600 chunkserver 斷開的複製延遲(默認是3600); 
MATOML_LISTEN_HOST = * metalogger 監聽的IP 地址(默認是*,代表任何IP); 
MATOML_LISTEN_PORT = 9419 metalogger 監聽的端口地址(默認是9419); 
MATOCS_LISTEN_HOST = * 用於chunkserver 連接的IP 地址(默認是*,代表任何IP); 
MATOCS_LISTEN_PORT = 9420 用於chunkserver 連接的端口地址(默認是9420); 
MATOCU_LISTEN_HOST = * 用於客戶端掛接連接的IP 地址(默認是*,代表任何IP); 
MATOCU_LISTEN_PORT = 9421 用於客戶端掛接連接的端口地址(默認是9421); 
CHUNKS_LOOP_TIME = 300 chunks 的迴環頻率(默認是:300 秒); 
原文:在幾秒鐘內循環次數 
CHUNKS_DEL_LIMIT = 100 在一個loop設備中可以刪除chunks的最大數 (默認:100) 
CHUNKS_WRITE_REP_LIMIT = 1 在一個循環裏複製到一個chunkserver 的最大chunk數目(默認是1) 
CHUNKS_READ_REP_LIMIT = 5 在一個循環裏從一個chunkserver 複製的最大chunk數目(默認是5) 
REJECT_OLD_CLIENTS = 0 彈出低於1.6.0 的客戶端掛接(0 或1,默認是0) 
注意mfsexports 訪問控制對於那些老客戶是沒用的 
LOCK_FILE=/var/run/mfs/mfsmaster.lock 避免啓動多次啓動同一個守護進程.
c) vi mfsexports.cfg 
192.168.198.0/24 / rw 
192.168.1.0/24 / rw,alldirs,maproot=0,password=passcode 
10.0.0.0-10.0.0.5 /test rw,maproot=nobody,password=test
第一部分:客戶端的ip 地址 
第二部分:被掛接的目錄 
第三部分:客戶端擁有的權限
第二部分說明 :/ 標識MooseFS 根 
第三部分詳細說明 :
ro 只讀模式共享 ,rw 讀寫的方式共享 ,alldirs 允許掛載任何指定的子目錄 ,maproot映射爲root,還是指定的用戶(0表示ROOT),password 指定客戶端密碼
d) 啓動MFS-MASTER 
/usr/local/mfs/sbin/mfsmaster start 
關閉MFS-MASTER 
/usr/local/mfs/sbin/mfsmaster -s 
e) 首次啓動會提示缺少元數據 解決: 
cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs 
f) 再次啓動MFSMASTER 
g) 檢查是否啓動成功 
 netstat –nlp 
 ps –ef|grep mfs 
i) 日誌觀察 
 tail –f /var/log/message
mfsmetalogger的安裝 
1、 mfsmetalogger的安裝 
a) ./configure --prefix=/usr/local/mfs --with-default-user=mfs 
--with-default-group=mfs 
b) make ; make install 
c) useradd mfs -s /sbin/nologin 
d) cd /usr/local/mfs/etc 
e) cp mfsmetalogger.cfg.dist mfsmetalogger.cfg 
2、 配置mfsmetalogger 
a) vi mfsmetalogger.cfg 
WORKING_USER =mfs 運行master server 的用戶 
WORKING_GROUP = mfs 運行master server 的用戶組 
SYSLOG_IDENT =mfsmetalogger mfsmetalogger在syslog中的標識,說明是mfsmetalogger 產生的 
LOCK_MEMORY = 0 是否執行mlockall()以避免mfsmaster 進程溢出(默認爲0) 
NICE_LEVEL = -19 運行的優先級(如果可以默認是-19; 注意: 進程必須是用root啓動 
DATA_PATH= /usr/local/mfs/var/mfs 數據存放路徑 
BACK_LOGS = 50 metadata 的改變log 文件數目(默認是50) 
META_DOWNLOAD_FREQ = 24 元數據備份文件下載請求頻率。默認爲24小時,即每隔一天從元數據服務器 (MASTER)下載一個metadata.mfs.back 文件。當元數據服務器關閉或者出故障時,matedata.mfs.back 文件將消失,那麼要恢復整個mfs,則需從metalogger 服務器取得該文件。請特別注意這個文件,它與日誌文件一起,才能夠恢復整個被損壞的分佈式文件系統。 
MASTER_RECONNECTION_DELAY = 5 
MASTER_HOST = 192.168.198.60 MFS-MASTER的IP 
MASTER_PORT = 9419 MFS-MASTER的端口 
MASTER_TIMEOUT = 60 可能是用於下載文件超時的重試時間 
LOCK_FILE = /var/run/mfs/mfsmetalogger.lock 避免啓動多次啓動同一個守護進程 
b) 啓動mfsmetalogger 
/usr/local/mfs/sbin/mfsmetalogger start 
關閉MFS-METALOGGER 
/usr/local/mfs/sbin/mfsmetalogger -s 
c) 檢查是否啓動成功 
 netstat –nlp 
 ps –ef|grep mfs 
d) 日誌觀察 
 tail –f /var/log/messag 
chunkserver的安裝 
1、chunkserver的編譯安裝 
a) ./configure --prefix=/usr/local/mfs --with-default-user=mfs 
--with-default-group=mfs 
b) make ; make install 
c) useradd mfs -s /sbin/nologin 
d) cd /usr/local/mfs/etc 
e) cp mfschunkserver.cfg.dist mfschunkserver.cfg 
f) cp mfshdd.cfg.dist mfshdd.cfg 
2、 配置chunkserver 
a) vi mfschunkserver.cfg 
WORKING_USER = mfs 運行master server 的用戶 
WORKING_GROUP = mfs 運行master server 的用戶組 
DATA_PATH = /usr/local/mfs/var/mfs 數據存放路徑 
LOCK_FILE = /var/run/mfs/mfschunkserver.lock 避免啓動多次啓動同一個守護進程 
SYSLOG_IDENT = mfschunkserver chunkserver在syslog中的標識,說明是chunkserver 產生 
#BACK_LOGS = 50 
MASTER_RECONNECTION_DELAY = 30 重新連接延時30秒 
MASTER_HOST = 192.168.198.60 元數據服務器的名稱或地址,可以是主機名,也可以是ip 地址 
MASTER_PORT = 9420 MFS-MASTER的端口 
MASTER_TIMEOUT = 60 連接MASTER的超時時間 
CSSERV_LISTEN_HOST = * 數據複製服務器地址 
CSSERV_LISTEN_PORT = 9422 這個監聽端口用於與其它數據存儲服務器間的連接,通常是數據複製 
CSSERV_TIMEOUT = 60 數據複製的超時時間 
HDD_CONF_FILENAME = /usr/local/mfs/etc/mfshdd.cfg 分配給MFS 使用的磁盤空間配置文件的位置 
b) vi mfshdd.cfg   /hdd 在chunkserver端掛載點,就是chunkserver這個機器真實存在的目錄 
c) 啓動mfschunkserver 
/usr/local/mfs/sbin/mfschunkserver start 
關閉MFS-METALOGGER 
/usr/local/mfs/sbin/mfschunkserver –s 
d) 檢查是否啓動成功 
 netstat –nlp || ps –ef|grep mfs 
e) 日誌觀察 
 tail –f /var/log/messag 
MFS-CLIENT的安裝 
1、 MFS-CLIENT的安裝 
client必須安裝FUSE,全稱filesystem-userspace.
tar xzf fuse-2.8.3.tar.gz 
 ./configure && make && make install
vi /etc/profile 添加
export KG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile
useradd mfs -s /sbin/nologin 
a) 編譯安裝 
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount && make && make install
b) 配置掛載點 
 mkdir /mnt/mfs 
 chown –R mfs:mfs /mnt/mfs 
 /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.198.60 -p 
 mfsmount參數說明 
 -H master的IP地址 
 -p master用於與客戶端連接的端口 
  -S 掛載MASTER端根目錄下的子目錄,前提是必須通過掛載根目錄後,創建相應的子目錄,纔可以掛載 
 c) 掛載時,默認提示輸入密碼,沒有密碼直接回車即可; 
 d) 驗證是否成功
df -h 
   mfs#192.168.198.60:9421   14G     0   14G   0% /mnt/mfs
從垃圾箱恢復意外刪除的文件 
通過-m這個參數掛載mfsmeta文件系統時,必須在MASTER端的mfsexports.cfg裏,必須
打開如下內容的註釋: 
* . rw 
客戶端直接執行 
/usr/local/mfs/bin/mfsmount /mnt/mfsmeta -H 192.168.198.60 / -p –m 
注: 
a) /mnt/mfsmeta這個目錄不需要執行chown –R mfs.mfs,直接在ROOT下創建該
目錄 
b) 在這個目錄下進行恢復意外刪除文件的時候,必須使用ROOT賬戶進行操作 
c) 原來的位置下不能有一個已存在的與被刪文件同名的文件,否則恢復不會成功。 

恢復流程: 
a) ./reserved ./trash 出現這兩個目錄 
b) ./trash下,有一個./undel的目錄,還有一些被刪除的以8位16進制命名的
目錄,並且以"|"作爲目錄符號,再加上被刪除文件名字。(如果文件名字大於
系統支持的255最大長度時,將從左到右進行裁剪,直到滿足255) 
規則:00000009|1,1代表刪除的文件。 
0000002E|123|tst 代表123目錄下tst文件,如果123目錄被一起刪除,
恢復的時候123這個目錄也會被一同恢復出來。 
c) 如果想恢復文件,把00000009|1該文件移動到/mnt/mfsmeta/trash/undel下,
文件即可恢復。 
d) ./reserved這個目錄的作用是針對那些已被徹底刪除但目前正被打開着的文
件。 
3、 垃圾箱相關設定 
垃圾箱文件保留期默認是1天,86400秒 
查看垃圾箱保留期時間 
/usr/local/mfs/bin/mfsgettrashtime /mnt/mfs 
執行效果: 
/mnt/mfs: 86400 
/usr/local/mfs/bin/mfssettrashtime 
設置垃圾箱保留期 
/usr/local/mfs/bin/mfssettrashtime 3600 /mnt/mfs 
執行效果: 
/mnt/mfs: 
inodes with trashtime changed: 3 
inodes with trashtime not changed: 0 
inodes with permission denied: 0 
參數說明: 
-r 表示遞歸修改這個目錄下所有文件屬性,不帶-r表示修改本級目錄。 
如果將時間設置爲0,表示不啓用垃圾箱功能。 
4、 設置文件拷貝份數 
查看文件設置拷貝份數 
/usr/local/mfs/bin/mfsgetgoal /mnt/mfs/123/123 
執行效果 
/mnt/mfs/123/123: 2 
查看文件拷貝具體信息 
/usr/local/mfs/bin/mfscheckfile /mnt/mfs/123/123 
執行效果 
/mnt/mfs/123/123: 
2 copies: 1 chunks 
查看文件拷貝具體信息 
/usr/local/mfs/bin/mfsfileinfo /mnt/mfs/123/123 
執行效果 
/mnt/mfs/123/123: 
 chunk 0: 000000000000001D_00000001 / (id:29 ver:1) 
 copy 1: 192.168.198.62:9422 
 copy 2: 192.168.198.64:9422 
注: 
a) 一個文件數據長度爲零,並且也沒有對此文件設置爲0份拷貝的時候,這
個文件查看拷貝信息的時候,會出現如下:/mnt/mfs/123/123:(通俗一點
說,就是空文件無法獲取到信息的。 
查看目錄具體信息,等同於du -s 
/usr/local/mfs/bin/mfsdirinfo /mnt/mfs 
執行效果 
/mnt/mfs: 
 inodes: 3 文件總數 
 directories: 2 目錄數 
 files: 1 文件數 
 chunks: 1 塊數 
 length: 31 文件大小總和 
 size: 70656 塊長度總和 
 realsize: 141312 磁盤空間的使用包括所有的拷貝 
設置文件拷貝份數 
 /usr/local/mfs/bin/mfssetgoal 2 /mnt/mfs 
 執行效果 
 /mnt/mfs: 
 inodes with goal changed: 3 
 inodes with goal not changed: 0 
 inodes with permission denied: 0 
參數說明 
 -r 表示遞歸修改這個目錄下所有文件屬性,不帶-r表示修改本級目錄。
注:
a) 拷貝份數儘量和chunkserver這個服務的數量保持一致,比較易於管理,數據
額安全性也得到保障。 
b) 上面這個命令產生的效果是:改變當前目錄的屬性,如果當前目錄下已經存在
一些文件,這些已存在文件的拷貝屬性不會發生變化,只有新建的文件纔會按
照新的拷貝屬性進行復制。 
c) 遞歸修改這個目錄下所有文件的拷貝份數屬性後,所有文件的拷貝份數的變化
需要一定的時間纔會發生變化。 

 

 

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