开源分布式文件系统----mooseFS

MooseFS:mooseFS是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。

角色类型:
Master:运行mfsmaster守护进程,作为元数据服务器,管理整个存储网络。
Metalogger:运行mfsmetalogger守护进程,作为元数据备份服务器。
Chunkservers:运行mfschunkserver守护进程,作为后端存储服务器。 
Clients:mfsmount挂载存储,作为客户端。

1,安装
安装fuse lib:
yum install fuse-devel 

下载mfs:http://sourceforge.net/projects/moosefs/files/?source=navbar

安装mfs:
#groupadd mfs
#useradd -g mfs mfs
#tar -xvfz mfs-1.6.27-1.tar
#cd mfs-1.6.27
#./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs
配置选项:
--disable-mfsmaster 不编译master服务
--disable-mfschunkserver 不编译chunkserver服务
--disable-mfsmount 不编译mfsmount和 mfstools 
--enable-mfsmount 编译mfsmount 和 mfstools 
--prefix=DIRECTORY   安装到给定的前缀目录
--sysconfdir=DIRECTORY 配置文件目录
--localstatedir=DIRECTORY   数据目录 (元数据metadata.mfs,元数据日志changelog.*.mfs)
--with-default-user=USER 运行守护进程的用户名
--with-default-group=GROUP  运行守护进程的用户组
#make
#make install

2,配置:
配置模板文件:/etc/mfs/xxxxx.dist(注释行为默认值)

2.1,配置master:

cp mfsexports.cfg.dist mfsexports.cfg    #指定客户端可以挂载的目录,以及访问权限
cp mfsmaster.cfg.dist mfsmaster.cfg  #主控服务器配置文件
cp mfsmetalogger.cfg.dist mfsmatalogger.cfg #metalogger服务器配置文件

cp /var/lib/mfs/metadata.mfs.empty /var/lib/mfs/metadata.mfs #master的元数据文件(运行时为metadata.mfs.back)

主控服务器(master)配置文件:mfsexports.cfg  mfsmaster.cfg
添加一行共享:cat mfsexports.cfg
192.168.1.0/24 / rw,alldirs,maproot=0
(注:mfsexorts.cfg类似于nfs的export,格式为: [ip range] [path] [options] )

添加主机名:cat /etc/hosts
192.168.1.188 mfsmaster   #绑定主机名与ip地址
启动master:
mfsmaster start   #启动master守护进程
mfscgiserv   #启动master HTTP/CGI监控进程(客户可能过网页查看: 192.168.1.188:9125)

2.2,配置备份服务器Backup server(metalogger)安装
一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 
将能接替发生故障的master。

cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

添加主机名:cat /etc/hosts
192.168.1.188  mfsmaster

启动:
mfsmetalogger start

2.3,配置存储服务器(chunkserver):
cp mfschunkserver.cfg.dist mfschunkserver.cfg #存储服务器配置文件
cp mfshdd.cfg.dist mfshdd.cfg #指定挂载点(共享目录)

存储服务器(chunkserver)配置文件:mfschunkserver.cfg mfshdd.cfg
添加共享目录:cat mfshdd.cfg
/demo #共享文件系统之前已经挂载到此目录下
/demo2 #注意访问权限,chown -R mfs:mfs

添加主机名:cat /etc/hosts
192.168.1.188 mfsmaster

启动:
mfschunkserver start //启动chunkserver守护进程

2.3,客户端
编译安装:
#cd mfs-1.6.15
#./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs \
--with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
#make
#make install

添加主机名:cat /etc/hosts
192.168.1.188  mfsmaster

挂载:
mfsmount /mnt/mfstest -H mfsmaster

MooseFS基础用法:
mfssetgoal -r 2 /mnt/mfstest/folder2   #设定目录下副本的数目(goal=n)
mfsgetgoal /mnt/mfstest/folder2 #获得目录下副本数目
mfsdirinfo /mnt/mfstest/folder2 #目录下总信息(du -sh )
mfscheckfile /mnt/mfstest/folder2/test.txt #检查给定的文件有多少副本
mfsfileinfo /mnt/mfstest/folder2/test.txt #查看文件的存放信息

mfsgettrashtime /mnt/mfstest/folder2 #获取回收站的隔离时间
mfssettrashtime -r 604800 /mnt/mfstest/folder2 #设置回收站的隔离时间(1小时=3600s,1天=86400,1周=604800)

扩展属性:
mfsgeteattr
mfsseteattr
mfsdeleattr

快照:
mfsmakesnapshot source ... destination
mfsappendchunks destination-file source-file ...
运行:
运行master守护进程 :mfsmaster start
运行chunkserver守护进程:mfschunkserver start
运行metalogger守护进程:mfsmetalogger start
使用:mfsmount

停止:
客户端:umount 
mfschunkserver stop
mfsmetalogger stop
mfsmaster stop

问题:
master元数据包括两部分:
a.主元数据文件,metadata.mfs(运行时叫metadata.mfs.back)
b,元数据日志文件,metadata.*.mfs,存储最后n小时(由BACK_LOGS配置)
master恢复:
从日志恢复元数据文件:mfsmetarestore -a 
从备份恢复:mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog.*.mfs


VRRP协议: virtual router redundancy protocol(虚拟路由冗余协议)。
HSRP协议: hot standby router protocol(热备路由协议)。
CARP协议: common address redundancy protocol(通用地址冗余协议)。
CARP:(现只能在FreeBSD内核中使用)允许在同一网络中多台主机使用相同的地址(错误故障转移),pfsyncd用于接管时同步状态
CARP在设定的过期时间(period)内发送公告(advertisements),此公告可以用SHA1 HMAL保护(设置一个密码),公告中包含有虚拟主机ID(vhid). slave在过期时间内没收到公告时就接管成为master

指定包过滤传输规则:
pass out on eth1 proto carp keep state  #eth1为CARP通信的物理接口

CARP配置:
ifconfig carpN create #创见一个CARP虚拟网口

ifconfig carpN vhid vhid [pass password] [carpdev carpdev] \
   [advbase advbase] [advskew advskew] [state state] [group|-group group] \
   ipaddress netmask mask
   
   carpN:虚拟接口名,N为一个整数(如10)
   vhid:虚拟主机ID.
   password:同一冗余组内的认证密码。
   carpdev:(可选)指定同一冗余组中物理接口。
   advbase:(可选)指定公告发送的频率,以秒为单位(1-255,默认为1)
   advskew:(可选)master选择的优先级(0-254,默认为0),越小级别越高
   state:强制CARP接口进入给定的状态(init,backup,master)
   group,-group:添加或删除一个CARP接口到一个给定的接口组
   ipaddress: 冗余组的共享IP地址
   mask:冗余组中共享IP地址的子网掩码
 sysctl控制:  
 net.inet.carp.allow:是否允许接受CARP包,默认为1(yes)
 net.inet.carp.preempt:允许master变换
 net.inet.carp.log:记录日志的级别(0-7,对应于syslog),默认为2(只记录状态变化)
例:
# sysctl -w net.inet.carp.allow=1 #使能CARP包的接收
# ifconfig carp1 create #创建CARP接口
# ifconfig carp1 vhid 1 pass mekmitasdigoat carpdev eth0 \
    advskew 100 10.0.0.1 netmask 255.255.255.0

pfsync:监听网络状态变化

ifconfig pfsyncN syncdev syncdev [syncpeer syncpeer] [defer|-defer]
pfsyncN: pfsync接口名
syncdev: 要使用的物理接口名
syncpeer: (可选)指定单播IP地址
defer: 廷迟标志
例:
ifconfig pfsync0 syncdev eth1 up

CARP与pfsync搭配:
CARP:错误故障自动转移
pfsync:同步状态变化
配置如下:
 +----| WAN/Internet |----+ 
         |                        |
   em2|                                |em2   
      +-----+                  +-----+
      | fw1 |-em1----------em1-| fw2 |
      +-----+                  +-----+
      em0|                        |em0
         |                             | 
   ---+-------Shared LAN-------+---
fw1 em0: 172.16.0.1
fw1 em1: 10.10.10.1
fw1 em2: 192.0.2.1
fw2 em0: 172.16.0.2
fw2 em1: 10.10.10.2
fw2 em2: 192.0.2.2
LAN shared IP: 172.16.0.100
WAN/Internet shared IP: 192.0.2.100


配置fw1:作为首选master
! enable preemption and group interface failover
# sysctl -w net.inet.carp.preempt=1


! configure pfsync
# ifconfig em1 10.10.10.1 netmask 255.255.255.0
# ifconfig pfsync0 syncdev em1
# ifconfig pfsync0 up


! configure CARP on the LAN side
# ifconfig carp1 create
# ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd \
     172.16.0.100 netmask 255.255.255.0


! configure CARP on the WAN/Internet side
# ifconfig carp2 create
# ifconfig carp2 vhid 2 carpdev em2 pass netpasswd \
    192.0.2.100 netmask 255.255.255.0
配置FW2:
! enable preemption and group interface failover
# sysctl -w net.inet.carp.preempt=1


! configure pfsync
# ifconfig em1 10.10.10.2 netmask 255.255.255.0
# ifconfig pfsync0 syncdev em1
# ifconfig pfsync0 up


! configure CARP on the LAN side
# ifconfig carp1 create
# ifconfig carp1 vhid 1 carpdev em0 pass lanpasswd \
     advskew 128 172.16.0.100 netmask 255.255.255.0


! configure CARP on the WAN/Internet side
# ifconfig carp2 create
# ifconfig carp2 vhid 2 carpdev em2 pass netpasswd \
    advskew 128 192.0.2.100 netmask 255.255.255.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值