文章目录
1. MFS概述
- 角色功能分布
- 工作原理
读
写
原始的读/写速度很明显是主要取决于所使用的硬盘的性能、网络的容量和拓扑结构的,使用的硬 盘和网络的吞吐量越好,整个系统的性能也就会越好。
2. 环境部署
- 先搭建单机版文件系统,测试性能
- master、metalogger与chunkerser部署到同一台机器,client部署到另一台机器,启动并可以访问可视化监控页面。
- 将一份大于100G的数据进行mfs文件系统的write与read,并记录其性能参数(如:读写速度、cpu消耗、内存等)
2.1 准备工作
-
机器信息(操作系统均为centos7.6):
ip 角色 172.20.117.34 master、metalogger、chunkserver 172.20.117.15 client -
安装方式
可以采用源码包编译安装,也可以使用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=direct 26.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=direct 36.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 read4k iops: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 write4k iops: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的高级特性
未完待续…