分布式文件系统Moose FS的部署

近期随着云概念的热炒,什么都分布式。所谓分布式的文件系统就是把若干机器上的磁盘空间统一维护,成为一个逻辑上的独立空间,当然,还有对应的容错和压力分散解决方案。

这些天在研究分布式存储的东西,测试了比较出名的几个分布式文件系统。首先是淘宝的tfs,国人出品应该支持了,谁知TFS的支持库实在不敢恭维,换了几种操作系统,最终才在suse上安装成功。可作为一个绑死操作系统的应用,风险太大。接着是MogileFS,MogileFS是基于perl的,在安装了一系列的perl依赖包之后,MogileFS安装的很顺利,性能也能达到要求,问题就是在于我们实在不愿意去维护一个perl环境。最后剩下了MooseFS。

凡是分布式系统一般都会有中心和节点的概念,对应到mfs上就是master server和chunk servers。其中master 是运算消耗型,chunk是磁盘消耗型。整个系统是网络带宽消耗型。建议生产环境中使用千兆网络,并可以根据本站提供的信息建立bond

mfs还有自己的Backup server被称为metalogger在master出现故障时能够及时替换掉master的地位。硬件相同于master一致,至少拥有同样大小的内存。

MooseFS环境准备

作为测试环境,我准备了两台服务器,仅搭建Master和chunk各一台。没有metakogger。

192.168.1.1 master #Ubuntu 11.04

192.168.1.101 chunk #Ubuntu 11.04

192.168.1.201 客户端 #Ubuntu 11.04

由于需要编译,build-essential, pkg-config,  zlib1g-dev是必须的。

下载源码包 http://sourceforge.net/projects/moosefs/

MooseFS Master的安装

#groupadd mfs  #准备组/用户
#useradd -g mfs mfs

#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15

#./configure –prefix=/usr –sysconfdir=/etc/mfs –localstatedir=/var/lib –with-default-user=mfs–with-default-group=mfs –disable-mfschunkserver –disable-mfsmount
#make
#make install

需要注意的是,这次所有的./configure都是类似的,不要搞错!安装结束后/etc/mfs下会有几个dist结尾的配置文件,去掉.dist结尾。

其中 mfsmaster.cfg 文件是允许访问的主机权限,做过nfs的应该很清楚了。

cd /var/lib/mfs
cp metadata.mfs.empty metadata.mfs

mfsmaster start #启动服务器

mfscgiserv #启动webbase管理界面,通过http://192.168.1.1:9425可以看到一个相当不错的界面。

借此,master段配置完成

MooseFS Chunk的安装

与master差不多的过程,我直接贴了:

#groupadd mfs  #准备组/用户
#useradd -g mfs mfs

#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15

#./configure –prefix=/usr –sysconfdir=/etc/mfs –localstatedir=/var/lib –with-default-user=mfs–with-default-group=mfs –disable-mfsmaster

make && make install

同样,将/etc/mfs下的.dist文件改名,文件不大,我是直接新建的。

mfshdd.cfg 里面记录了你想要共享(事实上是存放文件信息的)的路径,我习惯上用了/data

mfschunckserver.cfg 加上两行:

MASTER_HOST = 192.168.1.1
MASTER_PORT = 9420

/data目录的权限要注意,mfs可写。

mfschunkserver start #启动chunk server。回头去看http://192.168.1.1:9425的disks选项卡,应该会多出一个记录。

MooseFS Client的安装

moosefs支持fuse的直接挂装,客户端先安装fuse.

apt-get install fuse-util

总算不用添加mfs用户组了!

#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15
#./configure –prefix=/usr –sysconfdir=/etc/mfs –localstatedir=/var/lib –with-default-user=mfs–with-default-group=mfs –disable-mfsmaster–disable-mfschunkserver #3个disable!

#make && make install

mfsmount /mnt -H 192.168.1.1 #Master 的IP

df -h | grep mnt结果

192.168.1.1:9421    4.6G     0  46G   0% /mnt

挂装成功!写个大文件看看:dd if=/dev/zero of=/mnt/bigfile bs=1024 count=1seek=$((20*1024*1024-1))

去http://192.168.1.1:9425,应该会有变化,但由于mfs是支持动态压缩的,磁盘占用不会像上面那条命令那么变态的20G。

当chunk写满后可以很方便的再添加一台chunk,这就是分布式的方便之处!

MooseFS 安装问题

在Ubuntu下异常的顺利,在redhat系下出了几个问题。

  1. 安装fuse后启动fuse系统提示error in fuse_mount
    出现在fuse2.8.x 的安装过程中,这是因为fuse2.8要求linux内核版本较高,使用2.7.6即可。不要忘记安装kernel-devel库
  2. 出现fuse library is too old or not installed – mfsmount needs version 2.6 or higher
    可以在fuse的./configure中prefix=/usr,或者 export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH更改默认路径即可!

MooseFS 的常用维护

  1. 察看文件保存状态:
    client:  mfsgetgoal -r FILENAME 或 mfsgetgoal -r FILENAME
  2. 备份meta状态:
    master: /var/lib/mfs下的metadata.mfs文件是当前的metadata,默认每小时都会更新,旧文件将会添加.back后缀备份即可,并同时增加changelog.*.log。当然,推荐使用moosefs metalogger
  3. 强行数据回写:
    master: mfsmetarestore -a
  4. 数据回滚:
    master: mfsmetarestore -m metadata.mfs.back -o metadata.mfs changelog.?.mfs

 

“分布式文件系统Moose FS的部署”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据