mfs分佈式文件系統部署過程

mfs分佈式文件系統


前言:爲什麼要使用mfs

1.1nfs已經滿足不了業務頻繁的請求,之前是三臺nginx公用一臺nfs服務器,這樣讀寫頻繁直接導致了io瓶頸,但是已經是線上業務,不能通過更換設備來解決當前io問題,所以選擇一套新的文件系統就提上了日程,構建高可用MFS分佈式文件存儲架構成了當務之急

角色角色作用

管理服務器

managingserver (master)

負責各個數據存儲服務器的管理,文件讀寫調

,文件空間回收以及恢復.多節點拷貝

元數據日誌服務器

MetaloggerserverMetalogger

負責備份master 服務器的變化日誌文件,文

件類型爲changelog_ml.*.mfs ,以便於在

master server 出問題的時候接替其進行工作

數據存儲服務器

dataservers (chunkservers)

負責連接管理服務器,聽從管理服務器調度,

提供存儲空間,併爲客戶提供數據傳輸.

客戶機掛載使用

client computers

通過fuse 內核接口掛接遠程管理服務器上所

管理的數據存儲服務器,.看起來共享的文件

系統和本地unix 文件系統使用一樣的效果.


1.4mfs之所以優於nfs

1.4 MooseFS優點

i. Free(GPL)

ii.通用文件系統,不需要修改上層應用就可以使用(那些需要專門apidfs好麻煩哦!)。

iii. 可以在線擴容,體系架構可伸縮性極強。(官方的case可以擴到70臺了!)

iv. 部署簡單。(sa們特別高興,領導們特別happy!)

v. 體系架構高可用,所有組件無單點故障。 (您還等什麼?)

vi.文件對象高可用,可設置任意的文件冗餘程度(提供比raid1+0更高的冗餘級別),而絕對不會影響讀或者寫

的性能,只會加速哦!)

vii. 提供Windows回收站的功能.(不怕誤操作了,提供類似oralce 的閃回等高級dbms的即時回滾特性,

oralce這些特性可是收費的哦!)

viii. 提供類似Java語言的 GC(垃圾回收)

ix.提供netappemcibm等商業存儲的snapshot特性。

x. google filesystem的一個c實現。(google在前面開路哦!)

xi.提供web gui監控接口。

xii. 提高隨機讀或寫的效率

xiii. 提高海量小文件的讀寫效率

2部署mfs分佈式文件系統

2.1部署mfs-master 管理服務器

2.1.1mfs-master安裝

wgethttp://ncu.dl.sourceforge.net/project/moosefs/moosefs/1.6.11/mfs-1.6.11.tar.gz (下載安裝包)

tar zxvf mfs-1.6.11.tar.gz (解壓安裝包)

cd mfs-1.6.11

useradd mfs -s /sbin/nologin (新建mfs用戶,用於編譯安裝)

./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs (編譯安裝)

make

make install

cd /usr/local/mfs/etc/ (進入mfs配置文件目錄)

cp mfsmaster.cfg.distmfsmaster.cfg (複製主配置文件)

cpmfsexports.cfg.dist mfsexports.cfg

vim mfsmaster.cfg

vim mfsexports.cfg

cd ..

cd var/

mfs/

cp metadata.mfs.emptymetadata.mfs

cat metadata.mfs

ln –s /usr/local/mfs/sbin/mfsmaster/etc/init.d/ mfsmaster

/usr/local/mfs/sbin/mfsmaster start

ps axu | grep mfsmaster

lsof -i

tail -f /var/log/messages

2.1.2啓動Master服務

/usr/local/mfs/sbin/mfsmaster start

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

lockfile created and locked

initializing mfsmaster modules ...

loading sessions ... ok

sessions file has been loaded

exports file has been loaded

loading metadata ...

create new empty filesystemmetadata filehas been loaded

no charts data file - initializing emptycharts

master <-> metaloggers module: listenon *:9419

master <-> chunkservers module:listen on *:9420

main master server module: listen on *:9421

mfsmaster daemon initialized properly

2.1.3停止Master服務

/usr/local/mfs/sbin/mfsmaster -s

2.1.4啓動和停止Web GUI

啓動:/usr/local/mfs/sbin/mfscgiserv

停止: kill/usr/local/mfs/sbin/mfscgiserv


2.1.5訪問Web GUI方式

mfs-master IP:9425

http://192.168.17.139:9425



2.1.6相關配置文件

vim mfsexports.cfg

192.168.200.0/24 . rw (允許192.168.200.0訪問所有)

192.168.17.0/24 / rw  (允許192.168.17.0訪問/目錄)

2.1.7添加/usr/local/mfs/sbin/mfsmaster 軟鏈接

ln -s /usr/local/mfs/sbin/mfsmaster/etc/init.d/mfsmaster

/etc/init.d/mfsmaster restart  (啓動mfs-master )

/etc/init.d/mfsmaster stop    (關閉mfs-master)


2.2部署mfs-chunk 存儲服務器

2.2.1從塊設備創建本地文件系統

fdisk -l

mkfs.ext3 /dev/sdb

mkdir /data

chown mfs:mfs /data

mount -t ext3 /dev/sdb /data

df -ah

/dev/sdb 133G 188M 126G 1% /data

2.2.2創建110GLoopDevice文件

/dev/sdb1掛載到/data1 data1目錄下生成文件10G mfs.img  

fdisk /dev/sdb (磁盤分區)

mkdir /mfs

mount /dev/sdb1  /mfs (掛載/dev/sdb1分區給/mfs

cd  /mfs

dd if=/dev/zero of=mfs.img bs=1M count=10000 (創建mfs.img鏡像)

mkfs.ext3 mfs.img (格式化鏡像mfs.img文件)

losetup /dev/loop2 mfs.img (把mfs.img鏡像分配給/dev/loop2虛擬分區)

mkfs.ext3 /dev/loop2 (格式化虛擬分區)

mkdir –p /opt/mfs (創建分區掛載目錄)

chown mfs:mfs /opt/mfs (目錄權限修改)

mount –o loop /dev/loop2 /opt/mfs (把虛擬分區分配給/opt/mfs

2.2.3安裝Chunk Server

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

tar zxvf mfs-1.6.11.tar.gz

cd mfs-1.6.11

useradd mfs -s /sbin/nologin

./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs

make

make install

cd /usr/local/mfs/etc/

cp mfschunkserver.cfg.distmfschunkserver.cfg

cp mfshdd.cfg.dist mfshdd.cfg

修改配置文件

cd /usr/local/mfs/etc/

2.2.4修改配置文件

vi mfsadd.cfg (添加分區掛載目錄)


vi mfschunkserver.cfg (修改chunk主配置文件指向服務器IP和端口)


2.2.5啓動Chunk Server

啓動方法一 #/usr/local/mfs/sbin/mfschunkserverstart

#ln –s /usr/local/mfs/sbin/mfschunkserve/etc/init.d/mfschunkserver

啓動方法二#/etc/init.d/mfschunkserverrestart

ps axu |grep mfs

tail -f /var/log/messages

登錄Web GUI  http://192.168.17.138:9425發現disk+設備





2.2.6停止Chunk Server

/usr/local/mfs/sbin/mfschunkserver stop

2.2.7添加/usr/local/mfs/sbin/mfschunkserver軟鏈接

ln -s /usr/local/mfs/sbin/mfschunkserver/etc/init.d/mfschunkserver

       /etc/init.d/mfschunkserverrestart

2.3部署Metaloggerserver 元日誌服務器

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

2.3.1安裝元數據日誌服務

mfsmetalogger.cfg的配置

該服務只有一個配置文件,那就是mfsmetalogger.cfg

[root@nas etc]# ps -ef|grep mfs

mfs 12327 1 0 08:38 ? 00:00:00/usr/local/mfs/sbin/mfsmaster start

創建用戶

useradd mfs s /sbin/nolog in

安裝

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

tar zxvf mfs-1.6.11.tar.gz

./configure prefix=/usr/local/mfs with-default-user=mfs with-default-group=mfs

make ; make install

文中的大多數變量不難理解,類似於mfsmaster.cfg 中的變量,其中:

這個文件中需要修改的是MASTER_HOST 變量,這個變量的值是master server IP 地址

2.3.2啓動metalogger服務

這說明metalogger 服務正常啓動了。利用命令檢查:

通過進程:

通過檢查端口:

[root@mail etc]# vi mfsmetalogger.cfg (修改配置文件MASTER_HOST

# 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 元數據備份文件下載請求頻率。默認爲24小時,即每隔一天從元數據服務器

(MASTER)下載一個metadata.mfs.back 文件。當元數據服務器關閉或者出故障時,matedata.mfs.back 文件將消失,那麼

要恢復整個mfs,則需從metalogger 服務器取得該文件。請特別注意這個文件,它與日誌文件一起,才能夠恢復整個被

損壞的分佈式文件系統。

# MASTER_RECONNECTION_DELAY = 5

MASTER_HOST = 192.168.17.139

# MASTER_PORT = 9419

# MASTER_TIMEOUT = 60

# deprecated, to be removed in MooseFS 1.7

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

[root@mail sbin]# ./mfsmetalogger start 啓動mstalogger元日誌服務器)

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

lockfile created and locked

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

[root@mail sbin]# ps -ef |grepmfs

mfs 12254 1 0 15:25 ? 00:00:00 ./mfschunkserver start

[root@mail sbin]# lsof -i:9419

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

mfsmetalo 12292 mfs 7u IPv4 1395372 TCPmail.tt.com:52456->192.168.3.34:9419 (ESTABLISHED)

查看日誌服務器的工作目錄

這是運行18 小時後:

2.3.3停止metalogger服務

如果沒有啓動metalogger 服務,在master server 則會有如下提示信息產生:

[root@mail mfs]# pwd

/usr/local/mfs/var/mfs

[root@mail mfs]# ll

total 8

-rw-r----- 1 mfs mfs 249 Jan 13 15:39 changelog_ml.1.mfs

-rw-r----- 1 mfs mfs 519 Jan 13 15:40 sessions_ml.mfs

[root@mail mfs]# ll

total 1808

-rw-r----- 1 mfs mfs 0 Jan 14 08:40 changelog_ml.0.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 23:39 changelog_ml.10.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 22:39 changelog_ml.11.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 21:39 changelog_ml.12.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 20:39 changelog_ml.13.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 19:39 changelog_ml.14.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 18:39 changelog_ml.15.mfs

-rw-r----- 1 mfs mfs 4692 Jan 13 17:39 changelog_ml.16.mfs

-rw-r----- 1 mfs mfs 4722 Jan 13 16:39 changelog_ml.17.mfs

-rw-r----- 1 mfs mfs 249 Jan 13 15:39 changelog_ml.18.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 08:39 changelog_ml.1.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 07:39 changelog_ml.2.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 06:39 changelog_ml.3.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 05:39 changelog_ml.4.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 04:39 changelog_ml.5.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 03:39 changelog_ml.6.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 02:39 changelog_ml.7.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 01:39 changelog_ml.8.mfs

-rw-r----- 1 mfs mfs 4692 Jan 14 00:39 changelog_ml.9.mfs

-rw-r----- 1 mfs mfs 915016 Jan 14 09:00 csstats.mfs

-rw-r----- 1 mfs mfs 777640 Jan 14 08:10 metadata_ml.mfs.back

-rw-r----- 1 mfs mfs 519 Jan 14 09:16 sessions_ml.mfs

[root@mail sbin]# ./mfsmetalogger –s  (停止mstalogger元日誌服務器)

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

sending SIGTERM to lock owner (pid:12284)

waiting for termination ... terminated

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

安裝數據存儲服務

配置文件位於安裝目錄/usr/local/mfs/etc ,需要的配置文件有兩個: mfschunkserver.cfg

mfshdd.cfgmfschunkserver.cf 是主配置文件,mfshdd.cfg 是服務器用來分配給MFS 使用的空間,最

好是一個單獨的硬盤或者一個raid 卷,最低要求是一個分區。

mfschunkserver.cfg的配置

文中的大多數變量不難理解,類似於mfsmaster.cfg 中的變量

tail -f /var/log/messages

Dec 30 16:53:00 nas mfsmaster[14291]: no meta loggers connected !!!



2.4mfs- Client的安裝

2.4.1安裝fuse

yuminstall kernel.x86_64 kernel-devel.x86_64 kernel-headers.x86_64

###rebootserver####

yuminstall fuse.x86_64 fuse-devel.x86_64 fuse-libs.x86_64

modprobefuse

2.3.2安裝MooseFS Client

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

tarzxvf mfs-1.6.11.tar.gz

cdmfs-1.6.11

useraddmfs -s /sbin/nologin

./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs

--enable-mfsmount

make

makeinstall

2.4.2掛載文件系統

cd/mnt/

mkdirmfs

/usr/local/mfs/bin/mfsmount/mnt/mfs/ -H 192.168.17.138

mkdirmfsmeta

/usr/local/mfs/bin/mfsmount-m /mnt/mfsmeta/ -H 192.168.17.138


df-ah



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