MFS文件系统

1. MFS概述


  • 角色功能分布
    在这里插入图片描述
  • 工作原理

    在这里插入图片描述

    在这里插入图片描述
    原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬 盘和网络的吞吐量越好,整个系统的性能也就会越好。

2. 环境部署


  • 先搭建单机版文件系统,测试性能
  • master、metalogger与chunkerser部署到同一台机器,client部署到另一台机器,启动并可以访问可视化监控页面。
  • 将一份大于100G的数据进行mfs文件系统的write与read,并记录其性能参数(如:读写速度、cpu消耗、内存等)

2.1 准备工作

  • 机器信息(操作系统均为centos7.6):

    ip角色
    172.20.117.34master、metalogger、chunkserver
    172.20.117.15client
  • 安装方式
    可以采用源码包编译安装,也可以使用yum仓库进行安装,本次测试是采用yum进行安装,点击查看安装文档

2.2 安装

根据官网文档,安装很简单…

Add the key:
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS

Add an appropriate repository entry:
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

# mfsmaster安装,web-gui也在master上安装
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli

# mfschunkserver安装
yum install moosefs-chunkserver

# mfsmetalogger安装
yum install moosefs-metalogger

# client客户端安装
yum install moosefs-client

2.3 配置

  • mfsmaster修改配置
[root@localhost ~]# grep -v '^#' /etc/mfs/mfsmaster.cfg |grep -v '^$'
#运行master server 的用户
WORKING_USER = mfs
#运行master server 的组
WORKING_GROUP = mfs
#master server 在syslog 中的标识,说明是由master serve 产生的
SYSLOG_IDENT = mfsmaster
#数据存放路径
DATA_PATH = /var/lib/mfs
#被挂接目录及其权限控制文件的存放位置
EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg


[root@localhost ~]# grep -v '^#' /etc/mfs/mfsexports.cfg|grep -v '^$'
#客户端IP        允许挂载的目录          客户端拥有的权限
*			/	rw,alldirs,admin,maproot=0:0
*			.	rw
=============================解释一下======================================
IP格式			说明
*			所有的ip 地址
n.n.n.n			单个ip 地址
n.n.n.n/b			IP 网络地址/位数掩码
n.n.n.n/m.m.m.m			IP 网络地址/子网掩码
f.f.f.f-t.t.t.t			IP 段
===============================解释一下====================================
权限			说明
ro			只读模式
rw			读写模式
alldirs		许挂载任何指定的子目录
maproot		映射为root,还是指定的用户
password	指定客户端密码
  • metalogger修改配置
[root@localhost ~]# grep -v '^#' /etc/mfs/mfsmetalogger.cfg|grep -v '^$'
WORKING_USER = mfs
SYSLOG_IDENT = mfsmetalogger
#数据目录,存放日志数据
DATA_PATH = /var/lib/mfs
BIND_HOST = 172.20.117.34
#做单机 ,MASTER_HOST 不能为localhost或127.0.0.1
MASTER_HOST = 172.20.117.34
#master对外监听的端口
MASTER_PORT = 9420
#元数据备份文件下载请求频率。\
默认为24小时,即每隔一天从元数据服务器(MASTER)下载一个metadata.mfs.back 文件。\
当元数据服务器关闭或者出故障时,matedata.mfs.back 文件将消失,那么要恢复整个mfs,则需从metalogger 服务器取得该文件。\
请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。
META_DOWNLOAD_FREQ = 24
  • chunkserver修改配置
[root@localhost ~]# grep -v '^#' /etc/mfs/mfsmetalogger.cfg|grep -v '^$'
WORKING_USER = mfs
SYSLOG_IDENT = mfsmetalogger
DATA_PATH = /var/lib/mfs
BIND_HOST = 172.20.117.34
#元数据服务器的名称或地址,可以是主机名,也可以是ip地址(做单机 ,MASTER_HOST 不能为localhost或127.0.0.1)
MASTER_HOST = 172.20.117.34
#为Matser中 MATOCS_LISTEN_PORT指定的端口
MASTER_PORT = 9420
[root@localhost ~]# vim /etc/mfs/mfschunkserver.cfg
[root@localhost ~]# grep -v '^#' /etc/mfs/mfschunkserver.cfg|grep -v '^$'
WORKING_USER = mfs
WORKING_GROUP = mfs
#数据存储服务器标识
SYSLOG_IDENT = mfschunkserver
DATA_PATH = /var/lib/mfs
#分配给MFS 使用的磁盘空间配置文件的位置
HDD_CONF_FILENAME = /etc/mfs/mfshdd.cfg
MASTER_HOST = mfsmaster
MASTER_PORT = 9420
这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制
CSSERV_LISTEN_PORT = 9422

#/data 是一个给mfs 的分区,最好是一个单独的硬盘或者一个raid 卷,最低要求是一个分区,本机是将一块磁盘挂接给/data1目录,作为数据存储。
[root@localhost ~]# grep -v '^#' /etc/mfs/mfshdd.cfg|grep -v '^$'
/data1
#没有这一操作,会出现写权限问题,因进程是用mfs运行的。
chown -R mfs:mfs /data1      

2.4 启动&停止服务

服务启动顺序依次为:master、metalogger、chunkserver
服务停止顺序依次为:chunkserver(一定要先卸载客户端挂载)、metalogger、master

#启动
[root@MiWiFi-R4CM-srv ~]# mfsmaster start
#如果报错:
can't find metadata.mfs - try using option '-a'
init: metadata manager failed !!!
error occurred during initialization - exiting
解决:[root@MiWiFi-R4CM-srv ~]# mfsmaster -a

[root@MiWiFi-R4CM-srv ~]# mfsmetalogger start

[root@MiWiFi-R4CM-srv ~]# mfschunkserver start
#如果报错:hdd space manager: can't create lock file '/data1/.lock': EACCES (Permission denied)
#解决:数据目录权限有误,chmod 755 /data1 ; chown -R mfs.mfs /data1
#停止服务时,按顺序进行,mfs** stop即可

2.5 客户端挂载

#配置yum源
[root@MiWiFi-R4CM-srv ~]# curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1796  100  1796    0     0   1624      0  0:00:01  0:00:01 --:--:--  1625
[root@MiWiFi-R4CM-srv ~]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   169  100   169    0     0    343      0 --:--:-- --:--:-- --:--:--   343
#yum下载客户端程序
yum install moosefs-client
#客户端/etc/hosts配置mfsmaster 192.168.31.207解析
#挂在mfs文件系统,记得先ping mfsmaster一下看通不通
[root@MiWiFi-R4CM-srv ~]# mfsmount -H mfsmaster /mfsdata/
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@MiWiFi-R4CM-srv ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
#显示已经挂载
mfsmaster:9421            28G  302M   28G   2% /mfsdata

2.6 mfs监控

地址:http://192.168.31.207:9425
在这里插入图片描述

3. MFS的性能测试

说明:测试本地磁盘以及mfs文件系统的io以及iops,并且测试,进行文件读写时的cpu内存使用率
关于iostat、vmstat请戳:

  • MFS文件系统的性能测试(测试前一定要检查磁盘容量,否则很容易撑爆磁盘)

    测试项命令数据
    大块文件写dd if=/dev/zero of=/mfsdata/10G.img bs=1M count=9000 oflag=direct26.6 MB/s

    [root@MiWiFi-R4CM-srv ~]# dd if=/dev/zero of=/mfsdata/10G.img bs=1M count=9000 oflag=direct
    9000+0 records in
    9000+0 records out
    9437184000 bytes (9.4 GB) copied, 355.118 s, 26.6 MB/s

    测试项命令数据
    大块文件读dd of=/dev/null if=/mfsdata/10G.img bs=1M count=9000 iflag=direct36.3 MB/s

    [root@MiWiFi-R4CM-srv ~]# dd of=/dev/null if=/mfsdata/10G.img bs=1M count=9000 iflag=direct
    9000+0 records in
    9000+0 records out
    9437184000 bytes (9.4 GB) copied, 260.053 s, 36.3 MB/s

    测试项命令数据
    4k小文件随机读(需要安装fio软件包)fio read4kiops:4148
    [root@MiWiFi-R4CM-srv test]# cat read4k 
    [global]
    randrepeat=1
    filename=/dev/sdb1
    #directory=/
    ioengine=libaio
    bs=4k
    ba=4k
    size=8G
    direct=1
    gtod_reduce=1
    norandommap
    iodepth=64
    runtime=100
    [read]
    rw=randread
    [root@MiWiFi-R4CM-srv test]# fio read4k 
    read: (g=0): rw=randread, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=64
    fio-2.2.8
    Starting 1 process
    ^Cbs: 1 (f=1): [r(1)] [11.0% done] [464KB/0KB/0KB /s] [116/0/0 iops] [eta 		01m:29s]  
    fio: terminating on signal 2
    Jobs: 1 (f=1): [r(1)] [12.0% done] [392KB/0KB/0KB /s] [98/0/0 iops] [eta 	01m:28s] 
    read: (groupid=0, jobs=1): err= 0: pid=8846: Sat Sep 21 00:14:59 2019
    read : io=199380KB, bw=16593KB/s, iops=4148, runt= 12016msec
    
    测试项命令数据
    4k小文件随机写(需要安装fio软件包)fio write4kiops:418
    [root@MiWiFi-R4CM-srv test]# cat write4k 
    [global]
    randrepeat=1
    filename=/dev/sdb1
    #directory=/
    ioengine=libaio
    bs=4k
    ba=4k
    size=8G
    direct=1
    gtod_reduce=1
    norandommap
    iodepth=64
    runtime=100
    [write]
    rw=randwrite
    [root@MiWiFi-R4CM-srv test]# fio write4k
    write: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, 	iodepth=64
    fio-2.2.8
    Starting 1 process
    Jobs: 1 (f=1): [w(1)] [2.3% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 	01h:21m:56s]   
    write: (groupid=0, jobs=1): err= 0: pid=8828: Sat Sep 21 00:08:38 2019
    write: io=197112KB, bw=1675.1KB/s, iops=418, runt=117613msec
    cpu          : usr=2.16%, sys=51.87%, ctx=5069, majf=1, minf=22
    IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=99.9%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued    : total=r=0/w=49278/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=64
    

4. MFS集群的维护

未完待续…

5. MFS的常见问题和建议对策

未完待续…

6. MFS的高级特性

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值