【LizardFS】的安装使用

来源:互联网 发布:telnet测试端口问题 编辑:程序博客网 时间:2024/06/07 07:50

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
最主要的HA方面是通过提供shadow master功能,可以在线手动切换成master,与MooseFS的结构相比,大致就是多了Shadow master的这个新的角色示。
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的信息,等等。比较简单,直接看帮助即可