MooseFS文件系统介绍

MooseFS是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:

1 、管理服务器managingserver (master)

负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复多节点拷贝

2 、元数据日志服务器MetaloggerserverMetalogger

负责备份master服务器的变化志文件,文件类型为changelog_ml.*.mfs,以便于在masterserver出问题的时候接替其进行工作。

3 、数据存储服务器dataservers (chunkservers)

负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。

4 、客户机挂载使用

client通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,.看起来共享的文件系统和本地unix文件系统使用一样的效果。

 

安装:MFS

===============================================================================

小贴士:编译mfs的时候不论你安装的是什么角色可以一样编译不需要开启或关闭指定角色

只是客户端安装时加上--enable-mfsmount即可。这样方便你在服务器上随时调整角色。

===============================================================================

master server: 

# yum install -y zlib-devel

# useradd mfs -s /sbin/nologin

# tar zxvf 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

# make && make install

 

# cd /usr/local/mfs/etc

# cp mfsmaster.cfg.dist mfsmaster.cfg          //主配置文件

# mv mfsexports.cfg.dist mfsexports.cfg              //权限控制文件(MFS客户端挂载时使用)

# cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs

==================================

/usr/local/mfs/etc/mfs/mfsmaster.cfg 主配置文件示例

       EXPORTS_FILENAME= /usr/local/mfs/etc/mfs/mfsexports.cfg  //权限控制文件的存储位置

       DATA_PATH =/usr/local/mfs/var/mfs                  //指定元数据的存储路径

       MATOCS_LISTEN_PORT= 9420                        //Masterto Chunk Server 即使用9420/TCP端口监听Chunk Server端的连接

       MATOML_LISTEN_PORT= 9419                         //Masterto Meta Logger

       MATOCU_LISTEN_PORT= 9421                        //客户端挂载MFS时连接的端口

      

/usr/local/mfs/etc/mfs/mfsexports.cfg

       192.168.2.0/24         /      rw,alldirs,mapall=mfs

==================================

# /usr/local/mfs/sbin/mfsmaster  start

# /usr/local/mfs/sbin/mfscgiserv           //开启http cgi 服务器监控mfs

starting simple cgi server (host: any , port: 9425 , rootpath:/usr/local/mfs/share/mfscgi)

可以通过浏览器访问http://Master_IP:9425 

 

 

matelogger server:

==================================

# yum install -y zlib-devel

# useradd mfs -s /sbin/nologin

# tar zxvf 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

# make && make install 

 

# cd /usr/local/mfs/etc

# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

==================================

/usr/local/mfs/etc/mfs/mfsmetalogger.cfg

       MASTER_HOST =192.168.2.101                 //去掉前面的#    //指定Master服务器

       MASTER_PORT =9419

       DATA_PATH =/usr/local/mfs/var/mfs           //Master抓回文件,然后进行存放的路径

       BACK_LOGS = 50                                            //超过50个备份日志则轮转

       META_DOWNLOAD_FREQ= 24                  //元数据备份文件下载的频率,默认24小时

      

==================================

# /usr/local/mfs/sbin/mfsmetalogger start 

working directory: /usr/local/mfs/var/mfs

lockfile created and locked

initializing mfsmetalogger modules ...

mfsmetalogger daemon initialized properly

 

chunk server:

==================================

# yum install -y zlib-devel

# useradd mfs -s /sbin/nologin

# tar zxvf 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

# make && make install 

 

# cd /usr/local/mfs/etc/mfs

# mv mfschunkserver.cfg.dist  mfschunkserver.cfg

# mv mfshdd.cfg.dist mfshdd.cfg

# fdisk /dev/sda                                                 //准备存储(贡献一个分区)

# partx -a /dev/sda                        //让内核刷新分区表 RHEL5还可以使用 #partprobe

# mkfs.ext4 /dev/sda6

# mkdir /mfs/share

# mount /dev/sda6 /mfs/share

# chown -R mfs:mfs /mfs/share

==================================

/usr/local/mfs/etc/mfs/mfschunkserver.cfg 

       MASTER_HOST =192.168.2.101

 

/usr/local/mfs/etc/mfs/mfshdd.cfg

       /mfs/share                              //分区的挂载点

==================================

MFS用户没有权限的启动报错

# /usr/local/mfs/sbin/mfschunkserver  start 

working directory: /usr/local/mfs/var/mfs

lockfile created and locked

initializing mfschunkserver modules ...

hdd space manager: can't create lock file '/mfsdir/.lock'(errno:13)

init: hdd space manager failed !!!

error occured during initialization - exiting

 

Chunk Server正常启动

# /usr/local/mfs/sbin/mfschunkserver  start 

working directory: /usr/local/mfs/var/mfs

lockfile created and locked

initializing mfschunkserver modules ...

hdd space manager: scanning folder /mfsdir/ ...

hdd space manager: /mfsdir/: 0 chunks found

hdd space manager: scanning complete

main server module: listen on *:9422

no charts data file - initializing empty charts

mfschunkserver daemon initialized properly


mfs client:

==================================

# yum install -y zlib-devel

# useradd mfs -s /sbin/nologin

# yum -y install fuse*    (user space filesystem extend)

# tar zxvf 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 --enable-mfsmount

# make && make install

 

# /usr/local/mfs/bin/mfsmount -H 192.168.2.101  /mfs/share

mfsmaster accepted connection with parameters:read-write,restricted_ip ; root mapped to root:root

 

 

MFS的使用

谈到使用我这里是指客户端了:

1、配置环境变量

# vi /etc/profile

PATH=$PATH:/usr/local/mfs/bin/


2、MFS命令

mfssetgoal可以设置文件保存的份数

用法:mfssetgoal  3  /mnt/share/test1                (对文件)

      mfssetgoal  -r  3  /mnt/share/test_dir/        (对目录递归)

mfsgetgoal可以查看文件保存的份数

mfssettrashtime可以设置文件被删除后保存的时间(垃圾箱设置)

用法:mfssettrashtime  0  /mnt/mfs-test/test1

0代表时间,单位秒,可按要求自行配置,也可对目录进行-r的递归操作)

mfsgettrashtime可以查看文件被删除后的隔离时间

 

3、垃圾箱

MFS还有一个挂在点,是用来恢复误删文件的挂载点,需要df命令加上-a的参数查看

用法:mfsmount –H master_ip  /挂载点 –m

示例:mfsmount –H 192.168.1.118  /mnt/metadata –m

之后进入到这个目录 你会发现有trash的目录,trash目录中有一个undel的目录和你删除的文件(被删除的文件由mfs自己定义名字,可以grep删除的原文件名找到它)

#pwd

/mnt/metadata                           //恢复文件的隐藏挂载点,需要手动挂载

#ls

reserved  trash

#ls trash/

undel                                   //此目录用来还原文件使用

 

#mfsfileinfo /mnt/share/test1/passwd

/mnt/share/test1/passwd:

        chunk 0: 0000000000000055_00000001 /(id:85 ver:1)           //保存了一个chunk

                copy 1: 192.168.1.117:9422                          //一个chunk保存了两份

                copy 2: 192.168.1.118:9422

#mfsgettrashtime /mnt/share/test1/passwd

/mnt/share/test1/passwd:86400                               //保存86400秒后真正删除

#rm  /mnt/share/test1/passwd                                //mfs保存文件的挂在点/mnt/share

#ls |grep passwd

00000002|test1|passwd

此时如果想还原此文件可以执行mv操作

#mv 00000002\|test1\|passwd undel/

#ls

undel

#ls /mnt/share/test1/

passwd