MFS分布式文件系统1-MFS介绍安装以及存储类的使用


前言

1、MFS介绍

1.1 MFS是什么

MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFS就相当于UNIX的文件系统。

1.2 MFS 特性

  1. Free(GPL)
  2. 通用文件系统,不需要修改上层应用就可以使用
  3. 可以在线扩容,体系架构可伸缩性极强。
  4. 部署简单。
  5. 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或
    写的性能,只会加速!)
  6. 可回收在指定时间内删除的文件( “ 回收站 ” 提供的是系统级别的服务,不怕误操作了,提供类
    似 oralce 的闪回等高级 dbms 的即时回滚特性!)
  7. 提供 netapp,emc,ibm 等商业存储的 snapshot 特性。(可以对整个文件甚至在正在写入的文
    件创建文件的快照)
  8. google filesystem 的一个 c 实现。
  9. 提供 web gui 监控接口。
  10. 提高随机读或写的效率。
  11. 提高海量小文件的读写效率。

可能的瓶颈:

  1. master 本身的性能瓶颈。mfs 系统 master 存在单点故障如何解决?moosefs+drbd+heartbeat
    来保证 master 单点问题?不过在使用过程中不可能完全不关机和间歇性的网络中断!
  2. 体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存中,文
    件越多,master 的内存消耗越大,8g 对应 2500w 的文件数,2 亿文件就得 64GB 内存 )。
    master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。

1.3 MFS 文件系统结构

包含 4 种角色:

  • 管理服务器 managing server (master)
  • 元数据日志服务器 Metalogger server(Metalogger)
  • 数据存储服务器 data servers (chunkservers)
  • 客户机挂载使用 client computers

在这里插入图片描述
各种角色作用:

  1. 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷
    贝。
  2. 元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为
    changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。
  3. 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数
    据传输。
  4. 客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文
    件系统和本地 unix 文件系统使用一样的效果。

1.4 MFS 读写原理

读数据原理图:
在这里插入图片描述
写数据原理图:
在这里插入图片描述

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

2、mfs部署

moosefs安装

在这里插入图片描述

2.1 安装

2.1.1 master端

下载.repo文件
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo   

编辑repo文件,修改gpgcheck=0
[root@mfs1 ~]# cd /etc/yum.repos.d/
[root@mfs1 yum.repos.d]# ls
haojin.repo  MooseFS.repo  redhat.repo
[root@mfs1 yum.repos.d]# cat MooseFS.repo 
[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=http://ppa.moosefs.com/moosefs-3/yum/el7
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1

master端安装
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y

在这里插入图片描述

2.1.2 Chunkservers端(mfs2和mfs3)

与master端的repo文件相同
安装数据存储服务
yum install moosefs-chunkserver -y

在这里插入图片描述

2.2 配置与默认启动

master默认配置并启动

1 编辑配置文件(不用动)
vim /etc//mfs/mfsmaster.cfg
此文件中凡是用'#'注释掉的变量均使用其默认值,基本不需要就可以工作:
#WORKING_USER 和 WORKING_GROUP:是运行 master server 的用户和组;
#SYSLOG_IDENT:是 master server 在 syslog 中的标识;
#LOCK_MEMORY:是否执行 mlockall()以避免 mfsmaster 进程溢出(默认为 0);
#NICE_LEVE:运行的优先级( 如果可以默认是 -19; 注意: 进程必须是用 root 启动);
#EXPORTS_FILENAME:被挂接目录及其权限控制文件的存放位置
#TOPOLOGY_FILENAME : 定义 MFS 网络拓扑结构的文件位置
#DATA_PATH:数据存放路径,此目录下大致有三类文件,changelog,sessions 和 stats;
#BACK_LOGS:metadata 的改变 log 文件数目( 默认是 50);
#BACK_META_KEEP_PREVIOUS:保存以前 mfs 元数据的文件数,默认值是 1;
#REPLICATIONS_DELAY_INIT:延迟复制的时间(默认是 300s);
#REPLICATIONS_DELAY_DISCONNECT:chunkserver 断开的复制延迟(默认是 3600);
# MATOML_LISTEN_HOST:metalogger 监听的 IP 地址(默认是*,代表任何 IP);
# MATOML_LISTEN_PORT:metalogger 监听的端口地址(默认是 9419);
# MATOCS_LISTEN_HOST:用于 chunkserver 连接的 IP 地址(默认是*,代表任何 IP);
# MATOCS_LISTEN_PORT:用于 chunkserver 连接的端口地址(默认是 9420);
# MATOCU_LISTEN_HOST/MATOCL_LISTEN_HOST:用于客户端挂接连接的 IP 地址(默认是*,
代表任何 IP);
# MATOCU_LISTEN_PORT/MATOCL_LISTEN_PORT:用于客户端挂接连接的端口地址(默认
是 9421);
#CHUNKS_LOOP_CPS:chunks 的回环每秒检查的块最大值,默认 100000;
# CHUNKS_LOOP_TIME :chunks 的回环频率(默认是:300 秒);
# CHUNKS_SOFT_DEL_LIMIT :一个 chunkserver 中可以删除 chunks 的最大数,软限 (默认:
10)
#CHUNKS_HARD_DEL_LIMIT:一个 chunkserver 中可以删除 chunks 的最大数,硬限 (默认:
25)
# REPLICATIONS_DELAY_DISCONNECT:chunkserver 断开后的复制延时(默认:3600 秒)
# CHUNKS_WRITE_REP_LIMIT:在一个循环里复制到一个 chunkserver 的最大 chunk 数目(默
认是 2)
# CHUNKS_READ_REP_LIMIT :在一个循环里从一个 chunkserver 复制的最大 chunk 数目(默
认是 10)
# REJECT_OLD_CLIENTS:弹出低于 1.6.0 的客户端挂接(0 或 1,默认是 0)
# deprecated:
# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead
# LOCK_FILE - lock system has been changed, and this option is used only to search for old
lockfile

2 启动master
[root@mfs1 ~]# systemctl enable --now  moosefs-master.service       #启动master服务
[root@mfs1 ~]# systemctl enable --now  moosefs-cgiserv.service 
# 启动后台ui平台,可以浏览器访问页面

[root@mfs1 ~]# netstat -antlp # 查看mfs端口
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9419            0.0.0.0:*               LISTEN      3550/mfsmaster      
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      3550/mfsmaster      
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      3550/mfsmaster      
tcp        0      0 0.0.0.0:9425            0.0.0.0:*               LISTEN      3581/python2        


在这里插入图片描述
在这里插入图片描述

使用本机IP的9425端口即可访问后台
在这里插入图片描述

2.3 Chunkservers配置(数据存储服务器)

2.3.1 给mfs新加一个挂载磁盘(如果不加,默认使用服务器根目录)

当使用服务器个根目录时要注意不要占满,否则该数据存储服务会死机

1)分盘
在这里插入图片描述

2)格式化,挂载
在这里插入图片描述
3)设置永久挂载

在这里插入图片描述

在这里插入图片描述

2.3.2 设置数据挂载目录并修改用户/用户组(否则没有读写权限)

[root@mfs2 mfs]# vim /etc/mfs/mfshdd.cfg
[root@mfs2 mfs]# mkdir /mnt/chunk1
[root@mfs2 mfs]# chown mfs.mfs /mnt/chunk1/
[root@mfs2 mfs]# systemctl restart moosefs-chunkserver

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.3.3 真机做客户端(我真机是红帽8.2系统,所以repo文件选择8系列)

[root@haojin ~]# curl "http://ppa.moosefs.com/MooseFS-3-el8.repo" > /etc/yum.repos.d/MooseFS.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   168  100   168    0     0     63      0  0:00:02  0:00:02 --:--:--    63

[root@haojin ~]# vim /etc/yum.repos.d/MooseFS.repo   # 修改gpgcheck=0
[root@haojin ~]# cat /etc/yum.repos.d/MooseFS.repo 
[MooseFS]
name=MooseFS $releasever - $basearch
baseurl=http://ppa.moosefs.com/moosefs-3/yum/el8
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
enabled=1


[root@haojin ~]# yum install moosefs-client -y 

挂载目录

[root@haojin ~]# cd /etc/mfs/
[root@haojin mfs]# vim mfsmount.cfg

[root@haojin mfs]# mkdir /mnt/mfs
[root@haojin mfs]# cd /mnt/mfs/
[root@haojin ~]# mfsmount     ## 挂载
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root

[root@haojin mfs]# mkdir dir1 dir2
[root@haojin mfs]# ls
dir1  dir2

在这里插入图片描述

设置复本数

查看复本数
[root@haojin mfs]# mfsgetgoal dir1
dir1: 2
[root@haojin mfs]# mfsgetgoal dir2
dir2: 2

设置复本数
[root@haojin mfs]# mfssetgoal -r 1 dir1

测试
[root@haojin mfs]# cd dir1
[root@haojin dir1]# cp /etc/passwd .
[root@haojin dir1]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		copy 1: 172.25.200.23:9422 (status:VALID)

[root@haojin mfs]# cd dir2
[root@haojin dir2]# cp /etc/fstab .
[root@haojin dir2]# mfsfileinfo fstab
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.200.22:9422 (status:VALID)
		copy 2: 172.25.200.23:9422 (status:VALID)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.4 删除恢复

[root@haojin ~]# mkdir /mnt/mfsmeta
[root@haojin ~]# mfsmount -m /mnt/mfsmeta
mfsmaster accepted connection with parameters: read-write,restricted_ip
[root@haojin ~]# cd /mnt/mfsmeta/
[root@haojin mfsmeta]# cd trash/
[root@haojin trash]# find -name *fstab*
./005/00000005|dir2|fstab
[root@haojin trash]# cd /005
[root@haojin 005]# mv '00000005|dir2|fstab' undel/

在这里插入图片描述

3、存储类(Storage Classes)

参考官方用户手册

3.1 存储类介绍

3.1.1 什么是存储类(官方文档的解释)

Since MooseFS 3.0 goal has been extended to Storage Class. Storage Classes allow you to specify on which Chunkservers copies of files should be stored. Storage Classes are defined using label expressions.
To maintain compatibility with standard goal semantics, there are predefined Storage Classes from 1 to 9 that, unless changed behave like goals from MooseFS 2.0 or 1.6 (see Subsection” Predefined Storage Classes” of Section 4.3.1: MooseFS Storage Class administration tool – mfsscadmin of this manual or man mfsscadmin). Goal tools simply work only on these classes.

3.1.2 什么是标签

Labels are letters (A-Z – 26 letters) that can be assigned to Chunkservers. Each chunkserver can have multiple (up to 26) labels.

Labels expression is a set of subexpressions separated by commas, each subexpression specifies the storage schema of one copy of a file. Subexpression can be: an asterisk or a label schema.

Label schema can be one label or an expression with sums, multiplications and brackets. Sum means a file can be stored on any chunkserver matching any element of the sum (logical or).Multiplication means a file can be stored only on a chunkserver matching all elements (logicaland). Asterisk means any chunkserver.

Identical subexpressions can be shortened by adding a number in front of one instead of repeatingit a number of times.

3. 2 存储类使用

3.2.1 机器配置

增加mfs4-5节点做存储优化

3.2.2 给Chunkservers添加标签(这里只添加一个,也可以添加多个)

mfs2 mfs3改LABLES = A; mfs4 mfs5改LABLES = B
[root@mfs3 ~]# vim /etc/mfs/mfschunkserver.cfg
[root@mfs3 ~]# systemctl  reload moosefs-chunkserver.service 

在这里插入图片描述
在这里插入图片描述

3.2.3 创建一个存储类(此时chunkserver只有一个标签)

[root@haojin ~]# cd /mnt/mfs
[root@haojin mfs]# mfsscadmin create 2A sclass1   
## 2A表示创建2个复本和并在A标签的chunkserver上执行
storage class make sclass1: ok
[root@haojin mfs]# mfsscadmin list
1
2
3
4
5
6
7
8
9
sclass1

设置标签
[root@haojin mfs]# cd dir2/
[root@haojin dir2]# ls
bigfile  fstab
[root@haojin dir2]# mfssetsclass sclass1 fstab    ##给文件设置标签
fstab: storage class: 'sclass1'
[root@haojin dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.13.2:9422 (status:VALID)
		copy 2: 172.25.13.4:9422 (status:VALID)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.2.4 给chunkserver创建多个标签(CKA设置)

vim /etc/mfs/mfschunkserver.cfg
systemctl restart moosefs-chunkserver
mfs2主机设置标签A S H(S表示固态存储,H表示机械硬盘存储)
mfs3主机设置标签B S H
mfs4主机设置标签B S 
mfs5主机设置标签B H

[root@haojin dir2]# mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 30 sclass2  ##C创建,K保持,A打包,d表示打包之后的过期时间
storage class make sclass2: ok
[root@haojin dir2]# mfssetsclass sclass2 fstab 
fstab: storage class: 'sclass2'
[root@haojin dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.13.2:9422 (status:VALID)
		copy 2: 172.25.13.4:9422 (status:VALID)


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值