[Linux]-構建MFS分佈式文件系統

分佈式文件系統

分佈式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不必定直接鏈接在本地節點上,而是經過計算機網絡與節點相連。node

分佈式文件系統的設計基於客戶機/服務器模式。一個典型的網絡可能包括多個供多用戶訪問的服務器。另外,對等特性容許一些系統扮演客戶機和服務器的雙重角色。vim

 簡單一些來講就是把一些分散的共享文件夾(分佈在局域網內部的各個計算機上),集合到一個文件夾內部(虛擬共享文件夾),對於用戶來講,用戶訪問這個虛擬文件夾時,只要是打開這個虛擬文件夾,就能夠看到全部連接到這個虛擬文件夾的數據,可是用戶感受不到這些共享文件夾都是分散在各個計算機上的。服務器

分佈式文件系統的優勢就是集中訪問,簡化操做,數據容災,提升文件的存儲性能。網絡

MFS原理

 一、元組管理服務器(master server)session

    一臺管理整個文件系統的獨立主機,存儲着每一個文件的元數據(文件的大小、屬性、位置信息,包括全部很是規文件的全部信息,例如目錄、套接字、管道以及設備文件)
二、元數據存儲服務器羣(chunk servers)
    任意數目的商用服務器,用來存儲文件數據並在彼此之間同步(若是某個文件有超過一個備份的話)
三、元數據備份日誌服務器(metalogger server)
    任意數量的服務器,用來存儲元數據變化日誌並週期性下載主要元數據文件,以便用於管理服務器意外中止時好接替其位置。
四、訪問mfs的客戶端
    任意數量的主機,能夠經過mfsmount進程與管理服務器(接收和更改元數據)和數據服務器(改變實際文件數據)進行交流。
MFS讀取數據的過程
 
1.客戶端向元組管理服務器發出讀(r)的請求
2.元數據服務器把所需數據存放的位置(chunk servers的IP地址和編號)告訴客戶端
3.客戶端向已知的chunk servers請求發送數據
4.chunk server向客戶端發送數據
 

實驗環境

 master server    192.168.1.1/24    CentOS6.5    mfs-1.6.27-5.tar.gztcp

metalogger server   192.168.1.2/24    CentOS6.5    mfs-1.6.27-5.tar.gz分佈式

chunk server      192.168.1.3/24    CentOS6.5    mfs-1.6.27-5.tar.gzide

chunk server      192.168.1.4/24    CentOS6.5    mfs-1.6.27-5.tar.gz性能

chunk server      192.168.1.5/24    CentOS6.5    mfs-1.6.27-5.tar.gzui

 client         192.168.1.6/24    CentOS6.5    mfs-1.6.27-5.tar.gz   fuse-2.9.2.tar.gz

案例步驟(大部分的步驟是同樣的)

 1、搭建Master server

[root@bogon ~]# rpm -q zlib-devel     //須要插件依賴
zlib-devel-1.2.3-29.el6.x86_64
[root@bogon ~]# useradd -M -s /sbin/nologin mfs //建立應用用戶不指定家目錄,並不容許登陸
[root@bogon ~]# tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/
[root@bogon ~]# cd /usr/src/mfs-1.6.27/
[root@bogon mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs 
--disable-mfschunkserver --disable-mfsmount //指定路徑,默認用戶,默認組,禁用mfs存儲,禁用掛載 [root@bogon mfs-1.6.27]# make && make install
[root@bogon mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/
[root@bogon mfs]# ls
mfsexports.cfg.dist  mfsmaster.cfg.dist  mfsmetalogger.cfg.dist  mfstopology.cfg.dist
[root@bogon mfs]# cp mfsmaster.cfg.dist mfsmaster.cfg
[root@bogon mfs]# cp mfsexports.cfg.dist mfsexports.cfg
[root@bogon mfs]# cp mfstopology.cfg.dist mfstopology.cfg    //*.dist是備份參考配置文件,*.cfg是纔會識別的文件
[root@bogon mfs]# cd /usr/local/mfs/var/mfs/
[root@bogon mfs]# ls
metadata.mfs.empty
[root@bogon mfs]# cp metadata.mfs.empty metadata.mfs
[root@bogon mfs]# /usr/local/mfs/sbin/mfsmaster start       //啓動mfsmaster
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmaster modules ...
loading sessions ... file not found
if it is not fresh installation then you have to restart all active mounts !!!
exports file has been loaded
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 7
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 22
mfstopology: incomplete definition in line: 28
mfstopology: incomplete definition in line: 28
topology file has been loaded
loading metadata ...
create new empty filesystemmetadata file has been loaded
no charts data file - initializing empty charts
master <-> metaloggers module: listen on *:9419
master <-> chunkservers module: listen on *:9420
main master server module: listen on *:9421
mfsmaster daemon initialized properly
[root@bogon mfs]# netstat -anpt | grep mfs    //過濾出mfs的信息
tcp        0      0 0.0.0.0:9419                0.0.0.0:*                   LISTEN      80808/mfsmaster     
tcp        0      0 0.0.0.0:9420                0.0.0.0:*                   LISTEN      80808/mfsmaster     
tcp        0      0 0.0.0.0:9421                0.0.0.0:*                   LISTEN      80808/mfsmaster

2、Metalogger

[root@bogon mfs-1.6.27]# useradd -M -s /sbin/nologin mfs    //建立用戶
[root@bogon ~]# tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ [root@bogon ~]# cd /usr/src/mfs-1.6.27/ [root@bogon mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount [root@bogon mfs-1.6.27]# make && make install [root@bogon ~]# cd /usr/local/mfs/etc/mfs/ [root@bogon ~]# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg [root@bogon ~]# vim /usr/local/mfs/etc/mfs/mfsmetalogger.cfg 修改: MASTER_HOST = 192.168.1.1 //這裏的IP指向mfsmaster
端口號註釋去掉
[root@bogon ~]# /usr/local/mfs/sbin/mfsmetalogger restart  //啓動
[root@bogon ~]# netstat -anpt | grep mfs
tcp        0      0 192.168.1.2:36637           192.168.1.1:9419            ESTABLISHED 77862/mfsmetalogger

 3、三臺chunk server同樣

[root@bogon ~]# useradd -M -s /sbin/nologin mfs
[root@bogon ~]# tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/
[root@bogon ~]# cd /usr/src/mfs-1.6.27/
[root@bogon mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs 
--with-default-group=mfs --disable-mfsmaster --disable-mfsmount [root@bogon mfs-1.6.27]# make && make install
[root@bogon ~]# cd /usr/local/mfs/etc/mfs/
[root@bogon mfs]# cp mfschunkserver.cfg.dist mfschunkserver.cfg
[root@bogon mfs]# cp mfshdd.cfg.dist mfshdd.cfg
[root@bogon ~]# vim /usr/local/mfs/etc/mfs/mfschunkserver.cfg
添加:
MASTER_HOST = 192.168.1.1
[root@bogon ~]# mkdir /data
[root@bogon ~]# vim /usr/local/mfs/etc/mfs/mfshdd.cfg 添加: /data
[root@bogon
~]# mkdir /data
[root@bogon
~]# /usr/local/mfs/sbin/mfschunkserver restart //啓動服務
[root@bogon
~]# netstat -anpt | grep mfs
[root@bogon mfs]# netstat -anpt | grep mfs
tcp        0      0 0.0.0.0:9422                0.0.0.0:*                   LISTEN      15593/mfschunkserve
tcp        0      0 192.168.1.4:49182           192.168.1.1:9420            ESTABLISHED 15593/mfschunkserve

 4、client

安裝fuse

[root@bogon ~]# tar -zxvf fuse-2.9.2.tar.gz -C /usr/src/
[root@bogon ~]# cd /usr/src/fuse-2.9.2/
[root@bogon fuse-2.9.2]# ls
aclocal.m4  config.guess  configure.in  doc          fuse.pc.in  lib          Makefile.in  README.NFS
AUTHORS     config.rpath  COPYING       example      include     ltmain.sh    missing      util
ChangeLog   config.sub    COPYING.LIB   FAQ          INSTALL     m4           NEWS
compile     configure     depcomp       Filesystems  install-sh  Makefile.am  README
[root@bogon fuse-2.9.2]# ./configure && make && make install
[root@bogon fuse-2.9.2]# vim /etc/profile      //更改環境變量
添加:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH    
[root@bogon fuse-2.9.2]# source /etc/profile   //重啓生效

 安裝mfs

[root@bogon ~]# useradd -M -s /sbin/nologin mfs
[root@bogon ~]# tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ [root@bogon ~]# cd /usr/src/mfs-1.6.27/ [root@bogon mfs-1.6.27]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs
--with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount [root@bogon mfs-1.6.27]# make && make install
[root@bogon mfs-1.6.27]# modprobe fuse      //模塊導入到內核
[root@bogon mfs-1.6.27]# mkdir /list        //建立掛載點
[root@bogon mfs-1.6.27]# /usr/local/mfs/bin/mfsmount /list -H 192.168.1.1   //指定主服務器掛載MFS
[root@bogon mfs-1.6.27]# mount
/dev/sda3 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
none on /sys/kernel/config type configfs (rw)
/dev/sr0 on /media/CentOS_6.5_Final type iso9660 (ro,nosuid,nodev,uhelper=udisks,uid=0,gid=0,iocharset=utf8,mode=0400,dmode=0500)
gvfs-fuse-daemon on /root/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev)
/dev/sr0 on /mnt type iso9660 (ro)
192.168.1.1:9421 on /info type fuse.mfs (rw,nosuid,nodev,allow_other,default_permissions)
返回信息
1 [root@bogon mfs-1.6.27]# df -hT      //查看磁盤空間狀態
2 Filesystem       Type      Size  Used Avail Use% Mounted on
3 /dev/sda3        ext4       57G   17G   37G  32% /
4 tmpfs            tmpfs     491M  224K  491M   1% /dev/shm
5 /dev/sda1        ext4     1008M   62M  896M   7% /boot
6 /dev/sr0         iso9660   4.2G  4.2G     0 100% /media/CentOS_6.5_Final
7 /dev/sr0         iso9660   4.2G  4.2G     0 100% /mnt
8 192.168.1.1:9421 fuse.mfs   83G     0   83G   0% /info
[root@bogon ~]# vim /etc/profile
添加:
export PATH=/usr/locla/mfs/bin:$PATH
[root@bogon ~]# source /etc/profile
[root@bogon mfs-1.6.27]# ln -s /usr/local/mfs/bin/* /usr/local/bin

 

 5、客戶機裏面驗證

[root@bogon mfs-1.6.27]# mfsgetgoal -r /list
/info:
 directories with goal  1 :          1

 mfsgetgoal命令用來查詢文件被複制的份數,用-r能夠對整個目錄進行遞歸,goal是文件被複制的份數

[root@bogon ~]# mfsgetgoal -r /info
[root@bogon ~]# mfssetgoal -r 3 /info
注意:生產環境Chunk Server節點數應至少大於2,文件的副本數應小於小於等於Chunk Server服務器數
[root@bogon ~]# touch /data/mfs/info_1
[root@bogon ~]# mfsgetgoal /data/mfs/info_1

 

能夠看懂chunk server的data文件夾下都是一些大小爲4.0K的數據存儲單元,最大是64M,三個服務都是

在客戶端的/list下我存放大文件,chunk server就在使用空間

我貼出來了一個完整的給你們看看

[root@bogon ~]# du -sh /data/*
4.0K    /data/00
4.3M    /data/01
380K    /data/02
4.0K    /data/03
296K    /data/04
72K    /data/05
4.0K    /data/06
2.1M    /data/07
24K    /data/08
4.0K    /data/09
108K    /data/0A
1.1M    /data/0B
4.0K    /data/0C
216K    /data/0D
84K    /data/0E
4.0K    /data/0F
68K    /data/10
76K    /data/11
4.0K    /data/12
52K    /data/13
1.3M    /data/14
4.0K    /data/15
28K    /data/16
84K    /data/17
4.0K    /data/18
800K    /data/19
104K    /data/1A
4.0K    /data/1B
40K    /data/1C
64K    /data/1D
4.0K    /data/1E
80K    /data/1F
16K    /data/20
4.0K    /data/21
11M    /data/22
28K    /data/23
4.0K    /data/24
652K    /data/25
76K    /data/26
4.0K    /data/27
148K    /data/28
92K    /data/29
4.0K    /data/2A
452K    /data/2B
100K    /data/2C
4.0K    /data/2D
40K    /data/2E
48K    /data/2F
4.0K    /data/30
11M    /data/31
164K    /data/32
4.0K    /data/33
72K    /data/34
220K    /data/35
4.0K    /data/36
24K    /data/37
28K    /data/38
4.0K    /data/39
396K    /data/3A
2.7M    /data/3B
4.0K    /data/3C
36K    /data/3D
72K    /data/3E
4.0K    /data/3F
232K    /data/40
64K    /data/41
4.0K    /data/42
72K    /data/43
48K    /data/44
4.0K    /data/45
20K    /data/46
132K    /data/47
4.0K    /data/48
104K    /data/49
280K    /data/4A
4.0K    /data/4B
36K    /data/4C
52K    /data/4D
4.0K    /data/4E
28K    /data/4F
20K    /data/50
4.0K    /data/51
44K    /data/52
32K    /data/53
4.0K    /data/54
904K    /data/55
228K    /data/56
4.0K    /data/57
104K    /data/58
168K    /data/59
4.0K    /data/5A
736K    /data/5B
2.3M    /data/5C
4.0K    /data/5D
32K    /data/5E
40K    /data/5F
4.0K    /data/60
1.4M    /data/61
60K    /data/62
4.0K    /data/63
448K    /data/64
128K    /data/65
4.0K    /data/66
432K    /data/67
764K    /data/68
4.0K    /data/69
184K    /data/6A
32K    /data/6B
4.0K    /data/6C
100K    /data/6D
1.3M    /data/6E
4.0K    /data/6F
508K    /data/70
372K    /data/71
4.0K    /data/72
124K    /data/73
11M    /data/74
4.0K    /data/75
2.5M    /data/76
2.1M    /data/77
4.0K    /data/78
20K    /data/79
128K    /data/7A
4.0K    /data/7B
80K    /data/7C
132K    /data/7D
4.0K    /data/7E
196K    /data/7F
32K    /data/80
4.0K    /data/81
160K    /data/82
1.3M    /data/83
4.0K    /data/84
36K    /data/85
24K    /data/86
4.0K    /data/87
236K    /data/88
440K    /data/89
4.0K    /data/8A
112K    /data/8B
72K    /data/8C
4.0K    /data/8D
52K    /data/8E
60K    /data/8F
4.0K    /data/90
5.1M    /data/91
1.4M    /data/92
4.0K    /data/93
88K    /data/94
52K    /data/95
4.0K    /data/96
84K    /data/97
508K    /data/98
4.0K    /data/99
3.3M    /data/9A
36K    /data/9B
4.0K    /data/9C
52K    /data/9D
176K    /data/9E
4.0K    /data/9F
344K    /data/A0
56K    /data/A1
4.0K    /data/A2
36K    /data/A3
40K    /data/A4
4.0K    /data/A5
2.3M    /data/A6
188K    /data/A7
4.0K    /data/A8
16K    /data/A9
16K    /data/AA
4.0K    /data/AB
880K    /data/AC
1.7M    /data/AD
4.0K    /data/AE
132K    /data/AF
136K    /data/B0
4.0K    /data/B1
832K    /data/B2
80K    /data/B3
4.0K    /data/B4
64K    /data/B5
1.2M    /data/B6
4.0K    /data/B7
68K    /data/B8
120K    /data/B9
4.0K    /data/BA
76K    /data/BB
1016K    /data/BC
4.0K    /data/BD
40K    /data/BE
32K    /data/BF
4.0K    /data/C0
120K    /data/C1
856K    /data/C2
4.0K    /data/C3
48K    /data/C4
1.1M    /data/C5
4.0K    /data/C6
136K    /data/C7
96K    /data/C8
4.0K    /data/C9
24K    /data/CA
11M    /data/CB
4.0K    /data/CC
92K    /data/CD
24K    /data/CE
4.0K    /data/CF
404K    /data/D0
184K    /data/D1
4.0K    /data/D2
1.1M    /data/D3
72K    /data/D4
4.0K    /data/D5
972K    /data/D6
672K    /data/D7
4.0K    /data/D8
196K    /data/D9
1.2M    /data/DA
4.0K    /data/DB
28K    /data/DC
5.4M    /data/DD
4.0K    /data/DE
128K    /data/DF
824K    /data/E0
4.0K    /data/E1
24K    /data/E2
936K    /data/E3
4.0K    /data/E4
1.2M    /data/E5
208K    /data/E6
4.0K    /data/E7
148K    /data/E8
52K    /data/E9
4.0K    /data/EA
128K    /data/EB
1.8M    /data/EC
4.0K    /data/ED
4.1M    /data/EE
108K    /data/EF
4.0K    /data/F0
52K    /data/F1
2.0M    /data/F2
4.0K    /data/F3
216K    /data/F4
836K    /data/F5
4.0K    /data/F6
104K    /data/F7
56K    /data/F8
4.0K    /data/F9
12M    /data/FA
192K    /data/FB
4.0K    /data/FC
8.3M    /data/FD
168K    /data/FE
4.0K    /data/FF
View Code

這樣就達到了分佈式存儲數據文件的效果

MFS監控

1)Master中:
[root@bogon ~]# /usr/local/mfs/sbin/mfscgiserv restart  //啓動監控的服務
2)Client中:
[root@bogon ~]# firefox http://192.168.1.1:9425 &  //訪問,在9425端口

查看服務器的一些狀態存儲信息

 

 MFS的維護和災難恢復1)MFS集羣的啓動順序2)MFS集羣的中止順序3)MFS災難恢復

相關文章
相關標籤/搜索