MFS部署详解

本文算是我学习MFS的笔记吧, 备忘

没有使用FastDFS的原因是它所有的操作都要调用api, 不能指定命名格式, 或许它更适合网盘类?;
虽然现在已经有nginx和apache模块了, 虽然性能要比mfs好点, 考虑得到易用性, 工作量(系统已经成型, 有着自己的命名规范)的问题还是选择了mfs

需要用到的软件, 最新下载地址:

<a href="http://sourceforge.net/projects/moosefs/"
target="_blank">http://sourceforge.net/projects/moosefs/ <a
href="http://sourceforge.net/projects/fuse/"
target="_blank">http://sourceforge.net/projects/fuse/

这里我使用的版本为:

mfs-1.6.20-2.tar.gz
fuse-2.8.5.tar.gz

安装详解商定如下:
首先全部关闭防火墙, 或者让9425, 9421, 9420通过

主控服务器 Master:             192.168.1.160
备份服务器 Metalogger:         192.168.1.161
存储服务器1 Chunk Servers 1:   192.168.1.162
存储服务器2 Chunk Servers 2:   192.168.1.163

路径:
编译路径 /opt/soft
安装路径 /opt/mfs
日志路径 /data/mfs
数据路径 /mnt/mfschunks

用户和组:
组 mfs
用户 mfs

安装顺序为:

master -> metalogger -> chunk server -> client
在安装成功后, 我们再统一来修改配置, 启动, 使用服务器.

安装之前创建用户组和目录, 并赋予权限:

groupadd mfs
useradd mfs -g mfs -s /sbin/nologin
mkdir -p /opt/soft /data /mnt/mfschunks
chown -R mfs:mfs /mnt/mfschunks

首先, master:

cd /opt
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make && make install
cd /opt/mfs/etc
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg
cd /data/mfs && cp metadata.mfs.empty metadata.mfs

然后是metalogger, metalogger和mester类似:

cd /opt
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make && make install
cd /opt/mfs/etc
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

然后是两台chunk server:

cd /opt
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure --prefix=/opt/mfs --sysconfdir=/opt/mfs/etc --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
make && make install
cd /opt/mfs/etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

最后是client, 就是要使用mfs的机器:

cd /opt
tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure --localstatedir=/data --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount

centos用户可以使用yum, 命令如下:
yum install fuse.i386 fuse-devel.i386 fuse-libs.i386 zlib-devel.i386
make && make install

没问题的话, 应该已经完成安装, 下面开始简单的配置:
master:

vi /opt/mfs/etc/mfsexports.cfg
第二行的"*"为指定允许挂载的ip, 我们以让192.168.1.1-255允许挂载为例:
192.168.1.0/24 / rw,alldirs,maproot=0

chunk server:

vi /opt/mfs/etc/mfshdd.cfg
加入如下, 指定客服端产生的数据存储位置:
/mnt/mfschunks

然后分别依次启动他们, 记得启动和停止都是有顺序的, 在此之前先分别在每台服务器的hosts加入如下

vi /etc/hosts
192.168.1.160 mfsmaster

启动如下:

master:
/opt/mfs/sbin/mfsmaster start
/opt/mfs/sbin/mfscgiserv #这个提供web的方式来查看master的状态, 访问地址为http://ip(master):9425

metalogger:
/opt/mfs/sbin/mfsmetalogger start

chunk server:
/opt/mfs/sbin/mfschunkserver start

客户端的使用方法:

假如我们要挂载到/mnt/mfs目录
mkdir -p /mnt/mfs
/usr/local/bin/mfsmount /mnt/mfs/ -H mfsmaster
挂载后需要改变文件夹属组为使用者:
chown -R user:group /mnt/mfs
df -h就可以查看到mfsmaster已经被挂载了, 还有mfs的使用情况

关闭如下, 客户端首先卸载文件系统:

umount /mnt/mfs
/opt/mfs/sbin/mfschunkserver stop
/opt/mfs/sbin/mfsmetalogger stop
/opt/mfs/sbin/mfsmaster stop

启动和关闭一定要按顺序来, 同时也可以把他们写入自动启动, 或者做成系统服务.

具体的配置信息可以自己搜索下, 配置一些比如副本数量, 删除回收时间等

标签: mfs, unix, moosefs, fastdfs

已有 3 条评论

  1. 写的非常棒,学习了,楼主能把mfsmaster宕机恢复的操作写出来更棒了~

    1. mfs有个metalogger, 一般宕机的时候是先切换到它, 再想办法修复master, 至于怎么切换, 这个baidu, google还是很多的, 不过需要停机, 显然不行的

      master的单点故障的确是个问题, 有人说用mfs+drbd+heartbeat方案, 可以试试看

      1. keepalived也行

添加新评论