MooseFS在今年推出了v2.0版本,分为社区版本和专业版本,不过和v1版本相比较,增强了一些功能特性( quotas, extended attributes, ACL support, MFS CLI tool, better memory management.)目前可以通过v1版本进行源代码的研究分析,最新的是v1.6.27-5。国内百度有基于MooseFS的深度二次开发,叫Shadow-MFS(https://github.com/ops-baidu/shadow-mfs)。
而我近日发现了一个国外的一个基于MooseFS的分支版本,叫做LizardFS(http://lizardfs.com/),代码也有放在Github上。在实际安装使用后,感觉还是不错的。MooseFS v2.0的CE版本中加入的一些特性,其实在LizardFS里也有得到了支持。这里主要介绍下自己从MooseFS升级到LizardFS的一些实际操作经历,供大家参考。
一、LizardFS介绍
LizardFS是MooseFS的一个分支版本
官网:http://lizardfs.com
Github源镜像:https://github.com/lizardfs/lizardfs
主要增加了以下这些功能:
- High availability //提供shadow master功能
- Quotas //磁盘配额管理
- POSIX Access Control Lists
- POSIX Extended Attributes
- I/O bandwidth limiting //限制带宽
- Command line monitoring tool //命令行的监控查询方式
- High performance CRC checksum implementation
- Reduced overhead of hourly metadata backups
Shadow master可以定期自动从master那获取changelog,metadata和sessions等数据。
二、LizardFS升级安装
我是直接从原先的MooseFS v1.6.27-5升级到LizardFS v2.5.1,系统环境是Redhat EL 6.5 x86_64。
1. 下载安装包
LizardFS v2.5.0源码包:https://github.com/lizardfs/lizardfs/archive/v2.5.0.tar.gz
Git源:https://github.com/lizardfs/lizardfs.git
2. 准备工作
升级gcc到v4.8.1(需要支持c++11):
tar xvf gcc-4.8.1.tar.bz2
cd gcc-4.8.1
./contrib/download_prerequisites
cd ..
mkdir build_gcc-4.8.1
cd build_gcc-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j16
make install
cd ..
rm -rf build_gcc-4.8.1 gcc-4.8.1 gcc-4.8.1.tar.gz
mv /usr/bin/c++ /usr/bin/c++-4.4.7
update-alternatives --install /usr/bin/c++ c++ /usr/local/bin/c++ 40
mv /usr/bin/g++ /usr/bin/g++-4.4.7
update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 40
mv /usr/bin/gcc /usr/bin/gcc-4.4.7
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 40
卸载Boost v1.41旧版本
yum remove boost-devel-1.41.0-18.el6.x86_64
以下操作可选:用于安装新版本boost
yum install p7zip
7za x boost_1_56_0.7z
cd boost_1_56_0
./bootstrap.sh
./bjam
./bjam install
ln -s /usr/local/include/boost /usr/include/boost
3. 安装LizardFS
我使用最新的开发版代码,稳定版本可以使用v2.5
git clone https://github.com/lizardfs/lizardfs.git
cd lizardfs
./configure
注意:
如果只使用正常的fuse功能挂载,就可以忽略这里缺少Polonaise和Thrift等的提示。可以直接下一步make看能否通过。
make
make install
为了能够运行lizardfs,需要使用到libstdc++.so.6的高版本,所以做了链接:
cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64/
rm /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.18 /usr/lib64/libstdc++.so.6
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig
至此,已经顺利从MooseFS升级到了LizardFS,完全可以按照以前的MooseFS的使用方式操作。
三、LizardFS新功能使用
1. Shadow master
先对/etc/mfs/mfsmaster.cfg进行配置
设置PERSONALITY = shadow //指定master属性为shadow master
从master服务器那获得现有mfsexports.cfg
然后启动mfsmaster
备注:
可以有多个shadow master服务器运行,同时可以与metalogger server,chunk server都部署在同一台物理服务器上。在监控页面上可以看到shadow master与metalogger server都是列在Metadata Backup列表上。
Master出故障掉线后的处理:
a) 将shadow master上的IP改为master的IP
b) 修改mfsmaster.cfg中的PERSONALITY为master
c) mfsmaster reload重载配置
d) 修复master的工作:
修改mfsmaster.cfg中的PERSONALITY为shadow
mfsmetarestore -a 用于清除metadata.mfs.lock
启动mfsmaster作为shadow
2. 磁盘配额管理
提供工具:mfssetquota, mfsrepquota
3. 带宽限制
增加了master上的配置文件(/etc/mfs/)用于限制全局和本地节点的流量带宽,似乎是通过cgroups来实现的。
功能启用,需要在mfsmaster.cfg中加入GLOBALIOLIMITS_*方面的设置,例如:
GLOBALIOLIMITS_FILENAME = /etc/mfs/globaliolimits.cfg
GLOBALIOLIMITS_RENEGOTIATION_PERIOD_SECONDS = 0.1
GLOBALIOLIMITS_ACCUMULATE_MS = 250
然后分别设置设置全局和本地的配置文件globaliolimits和iolimits.cfg
4 监控工具lizardfs-probe
通过在终端下运行命令行,从master获取信息,包括整个系统的统计信息,chunk server的信息,等等。比较简单,直接看帮助即可