分佈式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不必定直接鏈接在本地節點上,而是經過計算機網絡與節點相連。node
分佈式文件系統的設計基於客戶機/服務器模式。一個典型的網絡可能包括多個供多用戶訪問的服務器。另外,對等特性容許一些系統扮演客戶機和服務器的雙重角色。vim
簡單一些來講就是把一些分散的共享文件夾(分佈在局域網內部的各個計算機上),集合到一個文件夾內部(虛擬共享文件夾),對於用戶來講,用戶訪問這個虛擬文件夾時,只要是打開這個虛擬文件夾,就能夠看到全部連接到這個虛擬文件夾的數據,可是用戶感受不到這些共享文件夾都是分散在各個計算機上的。服務器
分佈式文件系統的優勢就是集中訪問,簡化操做,數據容災,提升文件的存儲性能。網絡
一、元組管理服務器(master server)session
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
這樣就達到了分佈式存儲數據文件的效果
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災難恢復