跳转至

MooseFS 2.x 分布式文件系统部署手册


2015-05-06 by dongnan

简介

MFS (MooseFS) is a fault tolerant, network distributed file system.

  • 官网地址: http://www.moosefs.org/
  • Repo地址: http://ppa.moosefs.com/stable/yum/

2.X 版本

2014年7月1日,分布式文件系统 moosefs 2.0 发布,分为CE(社区版)和Pro(专业版)。 此版本支持在多个规则中运行多个 Master 服务器。其中一个规则是"leader",是给 ChunkServer 和客户端使用。每个运行的系统不会超过一个 leader。

示例使用CE版

  • moosefs-ce-master
  • moosefs-ce-cli
  • moosefs-ce-chunkserver
  • moosefs-ce-metalogger
  • moosefs-ce-client

环境

操作系统: CentOS 6.6 amd64

配置

ChunkServer: 物理机 4Core CPU/16GB Mem/单磁盘 1TB/1GB NIC
Master: VM 4Core CPU/4GB Mem/100GB Disk/1GB NIC
Client: VM 4Core CPU/4GB Mem/50GB Disk/1GB NIC

IP

master: 172.27.244.69
client: 172.27.244.99
chunk1: 172.27.244.31
chunk2: 172.27.244.32
chunk3: 172.27.244.33

DNS

172.27.233.45 #可选

准备工作

配置 dns (可选)

添加私有域名 ".lan"

配置文件

# 编辑文件
vim named.conf

# 添加内容
zone "lan" {
                type master;
                file  "master/lan.db";
};

# 编辑文件
vim lan.db

# 添加内容
$TTL 600
@       IN      SOA     ns.lan root.lan. (
        2015042301
        3600
        600
        3600000
        1800 )
@               IN      NS      ns.lan.
@               IN      A       172.27.233.43
ns              IN      A       172.27.233.43
mfsmaster       IN      A       172.27.244.69    ;moosefs master1
mfsclient       IN      A       172.27.244.99    ;moosefs client1
chunk1          IN      A       172.27.244.31    ;moosefs chunk server1
chunk2          IN      A       172.27.244.32    ;moosefs chunk server1
chunk3          IN      A       172.27.244.33    ;moosefs chunk server1

全部机器均使用私有DNS (可选)

# 包括master,client,chunkserver

cat /etc/resolv.conf
nameserver 172.27.233.45

添加repo源

全部机器均需要添加:

# pki
wget http://ppa.moosefs.com/stable/yum/RPM-GPG-KEY-MooseFS -P /etc/pki/rpm-gpg/

# repo
wget http://ppa.moosefs.com/stable/yum/MooseFS.repo -P /etc/yum.repos.d/

关闭防火墙与selinux

全部机器均需要关闭:

# selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && sestatus

# iptables
/etc/init.d/iptables stop && mv /etc/sysconfig/iptables /tmp/

部署Master

安装

yum -y install moosefs-ce-master

配置

配置文件模板放在/etc/mfs目录中并以后缀.dist结尾,如果不想使用默认配置可以修改配置文件取消或修改影响参数的注释或值, 配置文件中被注释了的参数将会使用mfs内建的默认值。

  • mfsmaster.cfg 包含了 Master的设置,你可以通过 man pages 查看更多关于该文件的信息。
  • mfsexport.cfg 中指定了可以挂载文件系统的用户与权限。

默认配置文件与dist模板文件相同

diff mfsmaster.cfg mfsmaster.cfg.dist
diff mfsexports.cfg mfsexports.cfg.dist

mfsmaster.cfg

# 保持默认即可

mfsexports.cfg

# 编辑文件
vim /etc/mfsmfsexports.cfg

# 将  * / rw,alldirs,maproot=0 修改为类似如下:

172.27.244.0/24 / rw, alldirs, maproot=0

注意,指定只有 172.27.244.x可以使用 MooseFS 资源(/)的整个目录树权限为 read/write

启动Master

/etc/init.d/mfsmaster start

# 设置开机启动
chkconfig mfsmaster on

安装 MooseFS CGI

MooseFS CGI monitor 接口用于用户观察和分析当前 MooseFS状态, 只需要安装在第一个启动的 Master 服务器上。

yum -y install moosefs-ce-cgiserv moosefs-ce-cgi

启动 CGI Monitor 后,可以通过浏览器查看当前 MooseFS 的状态。

/etc/init.d/mfscgiserv start

访问 http://your-ip:9425 可以查看信息,当前还没有关于 ChunkServer 的数据。

安装 MooseFS CLI

MooseFS 命令行接口工具,可以查看 MooseFS 的状态信息。

该工具拥有多个选项可以使用命令行来查看所有能在 MooseFS CGI上查看的的信息。通过 -h--help 开关查看所有选项和帮助。

yum -y install moosefs-ce-cli

使用示例

mfscli -SIN -H localhost

命令帮助

mfscli --help
mfscli 的 -SIN 选项可以显示与 CGI

部署ChunkServer

安装

yum -y install moosefs-ce-chunkserver

配置

可以通过命令查看更多关于 chunkserver的信息(man mfschunkserver.cfg)。

如果修改了 Master 的主机名,则还需修改mfschunkserver.cfg 中的 MASTER_HOST 为相同的值。

配置目录

cd /etc/mfs

mfschunkserver.cfg 配置文件

# 编辑文件
vim mfschunkserver.cfg

# 更改类似如下
MASTER_HOST = 172.27.244.69
# MooseFS master host, IP is allowed only in single-master installations (default is mfsmaster)

mfshdd.cfg 配置文件

此文件你需要指定 MooseFS 存储 chunks 使用的磁盘或分区,建议使用专门的磁盘或分区这样方便 MooseFS 管理磁盘剩余空间。

假定现在使用 /mfs/chunk1 位置

df -Th | tail -n1
/dev/sda5      ext4   889G   72M  844G   1% /mfs/chunk1

如果没有则需要创建这个目录

mkdir -p /mfs/chunk1

# 编辑文件
vim mfshdd.cfg

# 更改类似如下    
/mfs/chunk1

# 在启动 chunkserver 之前,还需要确定 mfs 有权限对这些分区进行写操作(为了创建lock 文件)
chown -R mfs:mfs /mfs/chunk1

启动ChunkServer

/etc/init.d/mfschunkserver start

# 设置开机启动
chkconfig mfschunkserver on

MFS客户端

安装客户端之前,首先需要安装 FUSE package(最低版本 2.6,建议不低于 2.7.2)。

安装

yum install fuse moosefs-ce-client

挂载

假定挂载点为/mnt/mfs 目录

mkdir /mnt/mfs
mfsmount /mnt/mfs -H 172.27.244.69

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

验证

df -Th

Filesystem           Type      Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                     ext4      7.3G  1.3G  5.7G  19% /
tmpfs                tmpfs     1.9G     0  1.9G   0% /dev/shm
/dev/xvda1           ext4      477M   48M  404M  11% /boot
/dev/xvdb1           ext4       50G   52M   47G   1% /data
172.27.244.69:9421   fuse.mfs  2.7T     0  2.7T   0% /mnt/mfs

注意,fuse.mfs 关键字。

使用

创建目录 folder1 设置 goal=1 则该目录中存放1份文件拷贝

mkdir -p /mnt/mfs/folder1

创建目录 folder2 设置 goal=2 这样就可以在该目录中存放2份文件拷贝

mkdir -p /mnt/mfs/folder2

目录的拷贝数量设置命令

mfssetgoal -r 1 /mnt/mfs/folder1/

/mnt/mfs/folder1/:
inodes with goal changed:              0
inodes with goal not changed:          1    #因为只有一份拷贝
inodes with permission denied:         0


mfssetgoal -r 2 /mnt/mfs/folder2/

/mnt/mfs/folder2/:
inodes with goal changed:               2
inodes with goal not changed:           0
inodes with permission denied:          0

测试

创建一个文件

dd if=/dev/zero of=testfile bs=1M count=100

然后将同一份文件分别复制到两个目录中

cp testfile /mnt/mfs/folder1/
cp testfile /mnt/mfs/folder2/

通过 mfscheckfile 命令查看指定文件的拷贝数量

# folder1 中,在一个 chunk 中只有一个拷贝:
mfscheckfile /mnt/mfs/folder1/testfile

/mnt/mfs/folder1/testfile:
chunks with 1 copy:              2

# folder2 中,文件有两个拷贝
mfscheckfile /mnt/mfs/folder2/testfile

/mnt/mfs/folder2/testfile:
chunks with 2 copies:            2

注意事项

  • MFS的所有组件都运行在同一台设备上时,即使设置goal=2也只会保存一个文件拷贝。
  • 即使这台 ChunkServer上有两个磁盘,也会出现这种特有的情况。
  • 可以访问官网查看更多的使用和命令信息。
  • 建议访问常见问题FAQ。

参考

回到页面顶部