概述:
MFS由三不分组成:
Master:元数据中心[元数据库服务器],相当于一个中心数据库,本身不保存文件数据。是一个单点故障。
chunkserver:数据存储服务器:master将文件按照块存储与数据存储服务器中。官方建议使用单独raid或dev来提供存储空间。
client:客户端,client连接到master ,挂载文件。
实验环境
master 192.168.0.82
chunkserver :192.168.0.101
chunkserver :192.168.0.102
client 192.168.0.88
client 192.168.0.120
安装步骤:
master
05 | useradd mfs -s /sbin/nologin |
06 | tar zxvf mfs-1.6.10. tar .gz |
08 | ./configure -prefix=/usr/ local /mfs -with-default-user=mfs -with-default-group=mfs |
12 | cp mfsmaster.cfg.dist mfsmaster.cfg |
13 | cp mfsmetalogger.cfg.dist mfsmetalogger.cfg |
14 | sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = 192.168.0.82/g' mfsmetalogger.cfg |
16 | chown -R mfs:mfs /var/run/mfs |
17 | cd /usr/ local /mfs/var/mfs |
18 | cp metadata.mfs.empty metadata.mfs |
19 | cd /usr/ local /mfs/sbin |
端口应用
9420用于连接chunkserver,监听来自chunkserver的连接,
9419用于连接client,监听来自client的连接。
管理:
启动:/usr/local/mfs/sbin/mfsmaster start
关闭:/usr/local/mfs/sbin/mfsmaster -s
故障恢复:/usr/local/mfs/sbin/mfsmetastore
数据端安装
05 | useradd mfs -s /sbin/nologin |
06 | tar zxvf mfs-1.6.10. tar .gz |
08 | ./configure -prefix=/usr/ local /mfs -with-default-user=mfs -with-default-group=mfs |
12 | cp mfschunkserver.cfg.dist mfschunkserver.cfg |
13 | cp mfshdd.cfg.dist mfshdd.cfg |
14 | echo "/data" >mfshdd.cfg |
15 | sed -i 's/# MASTER_HOST = mfsmaster/MASTER_HOST = 192.168.0.82/g' mfschunkserver.cfg |
17 | chown -R mfs:mfs /var/run/mfs |
19 | chown -R mfs:mfs /data |
20 | /usr/ local /mfs/sbin/mfschunkserver start |
端口应用
9422:用于chunkserver之间的连接,监听来自其他数据库服务器的连接。通常是数据复制。
与master连接会去连接master的9420端口
client
client需要安装mfs和fuse,fuse主要用来使用mfsmount(mfsmount依赖于fuse)
01 | useradd mfs -s /sbin/nologin |
06 | tar zxvf fuse-2.7.4. tar .gz |
11 | export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/ local /lib/pkgconfig |
18 | tar zxvf mfs-1.6.10. tar .gz |
20 | ./configure -prefix=/usr/ local /mfs -with-default-user=mfs -with-default-group=mfs - enable -mfsmount |
挂载
2 | /usr/ local /mfs/bin/mfsmount -h 192.168.0.82 /mnt |
提示权限问题,原因是1.6的版本问题,转用1.5的client
3 | tar zxvf mfs-1.5.12. tar .gz |
5 | export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/ local /lib/pkgconfig |
6 | ./configure -prefix=/usr/ local /mfs -with-default-user=mfs -with-default-group=mfs - enable -mfsmount |
1 | [root@localhost mfs-1.5.12] |
2 | /usr/ local /mfs/bin/mfsmount: error while loading shared libraries: libfuse.so.2: cannot open shared object file : No such file or directory |
做软连接
1 | ln -s /usr/ local /lib/libfuse.so.2 /usr/lib/ |
然后重新挂载,没有任何提示ok
1 | /usr/ local /mfs/bin/mfsmount -h 192.168.0.82 /mnt |
端口应用
连接master的9421端口
测试:
在client 120 /mnt/mfs/下写入68M文件
chunkserver 102 文件由1M变为14M
[root@localhost data]# du -sh /data
14M /data
chunkserver 102 文件由1M变为57M
[root@localhost data]# du -sh
57M
总增加为69M
再在client 120增加47M,总共为115M,此时:
102
[root@localhost data]# du -sh /data
116M /data
101
[root@localhost data]# du -sh /data
57M /data
运行原理:client与master通信,say要写入一个文件,master就让他与chunk(多台总的一台)进行直接的数据传输,
传输完成以后,master会更新自己的数据库
然后,多台chunk之间进行数据复制,前面上传的文件会被分成块(最大64M),通过给定的拷贝数量(可以自己制定)复制块到其他的chunkserver.
这样,任何一个文件都将在数据服务器上有一个完整的文件,然后有他的块在其他不同的数据服务器上。