概述
文章目录
- 前言
- 1、MFS介绍
- 1.1 MFS是什么
- 1.2 MFS 特性
- 1.3 MFS 文件系统结构
- 1.4 MFS 读写原理
- 2、mfs部署
- 2.1 安装
- 2.1.1 master端
- 2.1.2 Chunkservers端(mfs2和mfs3)
- 2.2 配置与默认启动
- 2.3 Chunkservers配置(数据存储服务器)
- 2.3.1 给mfs新加一个挂载磁盘(如果不加,默认使用服务器根目录)
- 2.3.2 设置数据挂载目录并修改用户/用户组(否则没有读写权限)
- 2.3.3 真机做客户端(我真机是红帽8.2系统,所以repo文件选择8系列)
- 2.4 删除恢复
- 3、存储类(Storage Classes)
- 3.1 存储类介绍
- 3.1.1 什么是存储类(官方文档的解释)
- 3.1.2 什么是标签
- 3. 2 存储类使用
- 3.2.1 机器配置
- 3.2.2 给Chunkservers添加标签(这里只添加一个,也可以添加多个)
- 3.2.3 创建一个存储类(此时chunkserver只有一个标签)
- 3.2.4 给chunkserver创建多个标签(CKA设置)
前言
1、MFS介绍
1.1 MFS是什么
MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者用户来说,整个分布式网络文件系统集群看起来就像一个资源一样,从其对文件系统的情况看MooseFS就相当于UNIX的文件系统。
1.2 MFS 特性
- Free(GPL)
- 通用文件系统,不需要修改上层应用就可以使用
- 可以在线扩容,体系架构可伸缩性极强。
- 部署简单。
- 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或
写的性能,只会加速!) - 可回收在指定时间内删除的文件( “ 回收站 ” 提供的是系统级别的服务,不怕误操作了,提供类
似 oralce 的闪回等高级 dbms 的即时回滚特性!) - 提供 netapp,emc,ibm 等商业存储的 snapshot 特性。(可以对整个文件甚至在正在写入的文
件创建文件的快照) - google filesystem 的一个 c 实现。
- 提供 web gui 监控接口。
- 提高随机读或写的效率。
- 提高海量小文件的读写效率。
可能的瓶颈:
- master 本身的性能瓶颈。mfs 系统 master 存在单点故障如何解决?moosefs+drbd+heartbeat
来保证 master 单点问题?不过在使用过程中不可能完全不关机和间歇性的网络中断! - 体系架构存储文件总数的可遇见的上限。(mfs 把文件系统的结构缓存到 master 的内存中,文
件越多,master 的内存消耗越大,8g 对应 2500w 的文件数,2 亿文件就得 64GB 内存 )。
master 服务器 CPU 负载取决于操作的次数,内存的使用取决于文件和文件夹的个数。
1.3 MFS 文件系统结构
包含 4 种角色:
- 管理服务器 managing server (master)
- 元数据日志服务器 Metalogger server(Metalogger)
- 数据存储服务器 data servers (chunkservers)
- 客户机挂载使用 client computers
各种角色作用:
- 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷
贝。 - 元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为
changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。 - 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数
据传输。 - 客户端: 通过 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)
最后
以上就是背后大山为你收集整理的MFS分布式文件系统1-MFS介绍安装以及存储类的使用前言1、MFS介绍2、mfs部署3、存储类(Storage Classes)的全部内容,希望文章能够帮你解决MFS分布式文件系统1-MFS介绍安装以及存储类的使用前言1、MFS介绍2、mfs部署3、存储类(Storage Classes)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复