设为首页 收藏本站
查看: 2069|回复: 0

[经验分享] MFS分布式文件系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-11-18 11:22:30 | 显示全部楼层 |阅读模式
实验环境:  在公司内部通过nfs方式共享一个服务器的存储空间,使得nfs服务器不堪重负,经常出现超时问题,为了提高整个系统的性能,所以采用mfs分布式文件系统,mfs分布式文件系统是一个具有容错功能、高可用、可扩展的海量级分布式文件系统,mfs把数据分散在多台服务器中,但用户看到的只有一个源。
QQ截图20161118112203.png
实验原理:MFS读取数据的处理过程:
1.client向master请求读数据
2.master把所需数据存放的位置(chunk-server的ip及chunks编号)告知client
3.client向chunk-server请求发送数据
4.chunk-server给client发送数据
MFS写入数据的处理过程:
1.client向master发送写请求
2.master与chunk-server交互,确认能提供写入数据的chunk-server及其chunks编号
3.master将确认好的chunk-server的ip及chunks编号发给client
4.client将数据写入到chunk-server的chunks编号的磁盘上
5.chunk-server与其他chunk-server进行数据同步,成功后告知client写入成功
6.client告知master写入结束
实验步骤:1.搭建元数据服务器mster server:192.168.100.157
yum -y install zlib-devel                   安装依赖包
useradd -s /sbin/nologin mfs                   创建用户
wget ftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz           下载源码包
tar zxf mfs-1.6.27-5.tar.gz                      解压
cd mfs-1.6.27           
./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver--disable-mfsmount                编译安装
make &&make install
cd /usr/local/mfs/etc/mfs/                                   cd到配置文件目录
cp mfsmaster.cfg.dist mfsmaster.cfg                  复制主配置文件,无需更改
cp mfsexports.cfg.dist mfsexports.cfg                复制被挂载目录及权限配置文件
cp mfstopology.cfg.dist mfstopology.cfg                复制配置文件
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs               复制配置文件
ls
/usr/local/mfs/sbin/mfsmaster start                      启动masterserver
netstat -utpln |grep mfs                        查看其端口
##关闭mfsmaster使用/usr/local/mfs/sbin/mfsmaster -s       关闭masterserver


2.搭建元数据日志服务器metalogger:192.168.100.156
yum -y install zlib-devel                              
useradd -s /sbin/nologin mfs
wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz
tar zxf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver--disable-mfsmount
make &&make install
cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg           复制配置文件
sed -i '/mfsmaster/a MASTER_HOST =192.168.100.157' mfsmetalogger.cfg   修改masterserver服务器的地址
vim mfsmetalogger.cfg          ##验证修改
/usr/local/mfs/sbin/mfsmetalogger start           启动服务,关闭服务将start换成-s
ps aux |grep mfs                 查看进程

3.搭建数据存储服务器chunk-server:192.168.100.153-155
1)chunk1:192.168.100.155
yum -y install zlib-devel
useradd -s /sbin/nologin mfs
wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz
tar zxf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--disable-mfsmount
make &&make install
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.distmfschunkserver.cfg           复制主配置文件
cp mfshdd.cfg.dist mfshdd.cfg                复制挂载信息的配置文件
sed -i '/BIND_HOST/a MASTER_HOST =192.168.100.157' mfschunkserver.cfg        修改主配置文件中的masterserver
vim mfschunkserver.cfg                   验证
echo "/data" >>mfshdd.cfg                在挂载信息的配置文件中添加需要共享的目录,最好此目录是独立的磁盘或者分区
mkdir /data
chown -R mfs:mfs /data/         授权
/usr/local/mfs/sbin/mfschunkserverstart      启动服务,停止服务将start换成-s
ps aux |grep mfs                      查看进程
cd
编写脚本:方便别的数据存储服务器的配置
exit  ##重新登录
cat .bash_history>config_chunk_mfs.sh   ##将历史命令重定向到脚本中
vi config_chunk_mfs.sh   ##修改内容如下,注意删除两vim命令
#!/bin/bash
#by linuxfan.cn 2016.3.21
yum -y install zlib-devel
useradd -s /sbin/nologin mfs
wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz
tar zxf mfs-1.6.27-5.tar.gz
cd mfs-1.6.27
./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
make &&make install
cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.distmfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
sed -i '/BIND_HOST/a MASTER_HOST =192.168.100.157' mfschunkserver.cfg
echo "/data" >>mfshdd.cfg
mkdir /data
chown -R mfs:mfs /data/
/usr/local/mfs/sbin/mfschunkserver start
ps aux |grep mfs
cd
:wq
2)配置chunk2及chunk3:192.168.100.154-153
scp root@192.168.100.155:/root/config_chunk_mfs.sh  ./     下载chunk1的脚本到本地
sh -x config_chunk_mfs.sh          执行脚本

4.配置client端口:192.168.100.152
yum -y install zlib-devel            
wgetftp://ftp.linuxfan.cn/tools/fuse-2.9.2.tar.gz                     mfs客户端依赖于FUSE
wgetftp://ftp.linuxfan.cn/tools/mfs-1.6.27-5.tar.gz
tar zxf fuse-2.9.2.tar.gz                   编译安装fuse
cd fuse-2.9.2
./configure &&make &&makeinstall
cd
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH">>/etc/profile 设置环境变量
source /etc/profile        加载环境变量
echo $PKG_CONFIG_PATH              查看环境变量
useradd -s /sbin/nologin mfs       创建用户
tar xf mfs-1.6.27-5.tar.gz      编译安装mfs
cd mfs-1.6.27
./configure --prefix=/usr/local/mfs--with-default-user=mfs --with-default-group=mfs --disable-mfsmaster--disable-mfschunkserver --enable-mfsmount
make &&make install
cd
mkdir /mnt/mfs      创建挂载点
modprobe fuse       加载fuse模块到内核
lsmod |grep fuse      查看模块
/usr/local/mfs/bin/mfsmount /mnt/mfs -H192.168.100.157     挂载mfs
df -h       查看挂载情况
echo "exportPATH=/usr/local/mfs/bin:$PATH" >>/etc/profile                  客户端安装完毕后,会生成/usr/local/mfs/bin/目录,为了方便使用mfs的命令,需要将其加入到环境变量中
source /etc/profile      加载环境变量
echo $PATH         查看环境变量

5.启用MFS监控:192.168.100.157
mfscgiserv是用python编写的web服务,监听端口9425:
/usr/local/mfs/sbin/mfscgiserv         启动
netstat -utpln |grep 9425       查看端口
使用浏览器访问:http://192.168.100.157:9425
QQ截图20161118112210.png

6.MFS-client客户端的使用:
sed -i '47aMANPATH  /usr/local/mfs/share/man'/etc/man.config   ##为mfs的命令添加man帮助
man mfsmount   ##查看帮助
mfsgetgoal -r /mnt/mfs/        查看文件在存储服务器复制的份数, -r 表示递归
mfssetgoal -r 2 /mnt/mfs/   ##设置文件复制的份数,份数必须小于等于存储服务器的数量
cd /mnt/mfs/                   cd到挂载点
touch test                创建测试文件
mfsgetgoal test               查看测试文件复制几份

7.维护MFS及灾难恢复:
1)MFS集群的启动与停止:
MFS的启动顺序:master元数据服务器-->chunkserver存储服务器-->metalogger元数据日志服务器-->client客户端
MFS停止的顺序:client(umount)客户端-->chunkserver(-s)存储服务器-->metalogger(-s)元数据日志服务器-->master(-s)元数据服务器
2)恢复master:新安装mfsmaster同样配置-->复制metalogger的配置文件-->合并元数据changelogs
scproot@192.168.100.156:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
/usr/local/mfs/sbin/mfsmetarestore -mmetadata_ml.mfs.back -o metadata.mfs chagelog_ml.*.mfs
注:若更换master元数据服务器,存储服务器和客户端需要重新更改master服务器的ip地址
3)若直接断电可能导致master有可能无法启动,可以在master上执行/usr/local/mfs/sbin/mfsmetarestore-a进行修复

重点:
  • mfs是一个具有容错性的网络分布式文件系统,他把数据分布在多台物理服务器中,而呈现给用户的则是一个源;
  • mfs文件系统的组成包括元数据服务器master、元数据日志服务器metalogger、数据存储服务器chunk server、客户端client;
  • 元数据服务器master需要用到的配置文件有两个,分别是mfsmaster.cfg和mfsexports.cfg;
  • 在元数据服务器master发生故障时,可以从metalogger日志服务器中恢复master;
  • 可以使用keepalived双机热备实现master服务器的高可用;
  • 注意在客户端在挂载点创建文件时,可以设置此文件在存储服务器的复制份数,若有两台存储服务器(每台的共享目录容量为10G),客户端数据复制两份,那么这两个存储服务器都会存在客户端创建的文件,此时两台存储服务器的容量就是10G;三台10G存储服务器时,客户端文件复制两份,那么存储的总容量就是20G;

扩展: 对比文件系统的区别
自主学习:1.模拟一台数据存储服务器宕机,测试mfs文件系统;
2.实时增加一台数据存储服务器,验证mfs扩容结果;
3.模拟master发生故障,从metalogger中恢复master;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302091-1-1.html 上篇帖子: Moosefs分布式存储 下篇帖子: MFS分布式文件系统 return
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表