首页 > 代码库 > MFS分布式文件系统
MFS分布式文件系统
MFS分布式文件系统
实验环境:
在公司内部通过nfs方式共享一个服务器的存储空间,使得nfs服务器不堪重负,经常出现超时问题,为了提高整个系统的性能,所以采用mfs分布式文件系统,mfs分布式文件系统是一个具有容错功能、高可用、可扩展的海量级分布式文件系统,mfs把数据分散在多台服务器中,但用户看到的只有一个源。
实验原理:
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
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;
扩展:
http://www.open-open.com/lib/view/open1375192526108.html 对比文件系统的区别
自主学习:
1.模拟一台数据存储服务器宕机,测试mfs文件系统;
2.实时增加一台数据存储服务器,验证mfs扩容结果;
3.模拟master发生故障,从metalogger中恢复master;
本文出自 “11628832” 博客,谢绝转载!
MFS分布式文件系统