MFS分布式文件系统(一) ——MFS简介+部署+使用
分布式文件系统简介
分布式文件系统是指文件系统管理的物理存储资源,不一定在本地节点上,而是通过网络与节点相连。
就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。
对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散在各个计算机上的。
分布式文件系统的好处是集中访问、简化操作、数据容灾,以及提高文件的存取性能。
MFS简介
MooseFS是一个具有容错性的网络分布式文件系统。
它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MFS的组成
元数据服务器Master | 在整个体系中负责管理文件系统,维护元数据。 |
---|---|
元数据日志服务器MetaLogger | 备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。当Master服务器数据丢失或者损坏时,可以从日志服务器中取得文件,进行修复。 |
数据存储服务器Chunk Server | 真正存储数据的服务器。存储文件时,会把文件分块保存,在数据服务器之间进行复制。数据服务器越多,能使用的“容量”就越大,可靠性就越高,性能也就越好。 |
客户端Client | 可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。 |
MFS的工作过程
MFS读取数据的处理过程
#客户端向元数据服务器发出读请求#元数据服务器把数据存放的位置
(Chunk Server的IP地址和Chunk编号)告知客户端
(一份大的数据会被分块,存储在不同的数据服务器上)#客户端向已知的Chunk Server请求发送数据#Chunk Server向客户端发送数据
分为create创建和update 修改文件:
#客户端向元数据服务器发送写入请求#元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Server告知元数据服务器操作成功。#元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据
(副本数是由master来维护的)#客户端向指定的Chunk Server写入数据#该Chunk Server与按照要求和其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功#客户端告知元数据服务器本次写入完毕
实验环境:
192.168.122.101 master 结点
192.168.122.1012数据结点1 (Chunk结点)
192.168.122.103 数据结点2
192.168.122.201真机 客户端
在每个节点上
1、添加键值
curl "https://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
2、添加YUM源
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
[root@mfs1 mfs]# 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 CurrentDload Upload Total Spent Left Speed
100 1796 100 1796 0 0 392 0 0:00:04 0:00:04 --:--:-- 531
[root@mfs1 mfs]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 168 100 168 0 0 121 0 0:00:01 0:00:01 --:--:-- 121
master上
3、安装MooseFS组件。
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y
4、编辑解析文件 /etc/hosts,并发送给其他节点。
5、安装完,可以看到MFS的配置文件 mfsmaster.cfg 和 mfsexports.cfg
mfsexports.cfg:被挂接目录及权限设置mfsmaster.cfg:主配置文件,凡是用#注释掉的变量均使用其默认值。
6、此时,启动moosefs-master和moosefs-cgiserv,查看端口发现开启了9419,9420,9421,9425端口。
systemctl start moosefs-master #启动MASTERsystemctl start moosefs-cgiserv #启动WEBUI监控服务
[root@mfs1 mfs]# netstat -antuple
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:9419 0.0.0.0:* LISTEN 997 26226 2425/mfsmaster
tcp 0 0 0.0.0.0:9420 0.0.0.0:* LISTEN 997 26227 2425/mfsmaster
tcp 0 0 0.0.0.0:9421 0.0.0.0:* LISTEN 997 26228 2425/mfsmaster
tcp 0 0 0.0.0.0:9425 0.0.0.0:* LISTEN 0 26317 2435/python2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 17434 1326/sshd
tcp 0 0 192.168.122.101:22 192.168.122.1:44176 ESTABLISHED 0 20120 1954/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 0 17443 1326/sshd
9419:metalogger监听的端口地址,和元数据服务器通信的,当master宕机,可以通过它的日志,接管master的服务
9420:用于chunkserver连接的端口地址
9421:用于客户端挂接连接的端口地址
9425:web界面监控各个分布节点的端口
输入master的主机名
此时还没有chunk server数据结点,所以server这里是空的
Chunk Server
8、在真正存储数据的节点安装moosefs-chunkserver
yum install moosefs-chunkserver -y
9、安装之后在两个节点都会生成一个mfs用户
[root@mfs2 ~]# id mfs
uid=997(mfs) gid=995(mfs) 组=995(mfs)
10、编辑配置文件mfshdd.cfg,写入mfs的分区/mnt/chunk1
mfshdd.cfg:空间配置文件
/mnt/chunk1 是一个给mfs 的分区,但在本机上是一个独立的目录,最好是一个单独的硬盘或者一个raid 卷,最低要求是一个分区。
11、更改目录/mnt/chunk 的权限,因为mfschunkserver进程是用mfs运行的
chown -R mfs:mfs /mnt/chunk1
[root@mfs2 mnt]# mkdir /mnt/chunk1
[root@mfs2 mnt]# chown -R mfs:mfs /mnt/chunk1
做解析
12、开启chunkserver
systemctl start moosefs-chunkserver
netstat -antlupe ##开通监控的端口9422
[root@mfs2 mfs]# netstat -antuple
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:9422 0.0.0.0:* LISTEN 997 26134 2566/mfschunkserver
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 16724 1063/sshd
tcp 0 0 192.168.122.102:22 192.168.122.1:53190 ESTABLISHED 0 18664 1951/sshd: root@pts
tcp 0 0 192.168.122.102:40370 192.168.122.101:9420 ESTABLISHED 997 26137 2566/mfschunkserver
tcp6 0 0 :::22 :::* LISTEN 0 16733 1063/sshd
13、此时就可以看到,mfsmaster与chunkserver建立了连接
[root@mfs1 mfs]# lsof -i :9420
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mfsmaster 2425 mfs 11u IPv4 26227 0t0 TCP *:9420 (LISTEN)
mfsmaster 2425 mfs 13u IPv4 26938 0t0 TCP mfs1:9420->mfs2:40370 (ESTABLISHED)
mfsmaster 2425 mfs 14u IPv4 26940 0t0 TCP mfs1:9420->mfs3:59054 (ESTABLISHED)
客户端结点:
[root@git1 ~]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 168 100 168 0 0 186 0 --:--:-- --:--:-- --:--:-- 186[root@git1 ~]# curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 168 100 168 0 0 186 0 --:--:-- --:--:-- --:--:-- 186
[root@git1 ~]# yum install moosefs-client -y
做解析
测试使用
在客户端创建空目录:
[root@git1 ~]# mkdir /mnt/mfs
[root@git1 ~]# cd /mnt/mfs/挂载
[root@git1 mfs]# mfsmount /mnt/mfs/
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root客户端和master通信使用的是master的9421端口
[root@git1 mfs]# mount
mfsmaster:9421 on /mnt/mfs type fuse.mfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
第一次创建时失败
[root@git1 mfs]# mkdir data1
[root@git1 mfs]# mfsgetgoal data1
data1: realpath error on (/mnt/mfs/data1): ENOENT (No such file or directory)
[root@git1 mfs]# ls
data1
[root@git1 mfs]# cd
[root@git1 ~]# cd /mnt/mfs/
[root@git1 mfs]# ls
[root@git1 mfs]#
再创建一次就好了
[root@git1 mfs]# mkdir data1
[root@git1 mfs]# mkdir data2
[root@git1 mfs]# ls
data1 data2
[root@git1 mfs]# mfsgetgoal data1
data1: 2
[root@git1 mfs]# mfsgetgoal data2
data2: 2
目标(goal),是指文件被拷贝的份数,设定了拷贝的份数后是可以通过mfsgetgoal ,mfscheckfile 和mfsfileinfo命令来证实的,也可以通过mfsrsetgoal 来改变设定。
mfssetgoal -r 份数 目录/文件
[root@git1 mfs]# mfssetgoal -r 1 data1
data1:inodes with goal changed: 1inodes with goal not changed: 0inodes with permission denied: 0
[root@git1 mfs]# cd data1
[root@git1 data1]# cp /etc/passwd .
[root@git1 data1]# ls
passwd
data2设置拷贝2份,并拷贝文件
[root@git1 mfs]# mfsgetgoal data2
data2: 2
[root@git1 mfs]# cd data2
[root@git1 data2]# cp /etc/fstab .
查看各自的信息
[root@git1 mfs]# mfsfileinfo data1/passwd
data1/passwd:chunk 0: 0000000000000001_00000001 / (id:1 ver:1)copy 1: 192.168.122.103:9422 (status:VALID)
[root@git1 mfs]# mfsfileinfo data2/fstab
data2/fstab:chunk 0: 0000000000000002_00000001 / (id:2 ver:1)copy 1: 192.168.122.102:9422 (status:VALID)copy 2: 192.168.122.103:9422 (status:VALID)
测试挂掉mfs3
[root@mfs3 mfs]# systemctl stop moosefs-chunkserver
[root@git1 mfs]# mfsfileinfo data1/passwd
data1/passwd:chunk 0: 0000000000000001_00000001 / (id:1 ver:1)no valid copies !!!
[root@git1 mfs]# cat data1/passwd
^C不影响data2的访问,因为它还有一个副本
[root@git1 mfs]# mfsfileinfo data2/fstab
data2/fstab:chunk 0: 0000000000000002_00000001 / (id:2 ver:1)copy 1: 192.168.122.102:9422 (status:VALID)
测试大文件会在数据结点上分开存储
[root@git1 data1]# dd if=/dev/zero of=bigoff bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB)已复制,9.78126 秒,10.7 MB/秒
[root@git1 data1]# ls
bigoff passwd
[root@git1 data1]# mfsfileinfo bigoff
bigoff:chunk 0: 0000000000000003_00000001 / (id:3 ver:1)copy 1: 192.168.122.103:9422 (status:VALID)chunk 1: 0000000000000004_00000001 / (id:4 ver:1)copy 1: 192.168.122.102:9422 (status:VALID)
在chunkserver中,文件是这样存储的
MFS分布式文件系统(一) ——MFS简介+部署+使用相关推荐
- MFS分布式文件系统的部署
目录 一.MFS分布式文件系统详述 分布式简介 MFS分布式文件系统的原理 MFS文件系统的组成 MFS文件系统的工作过程 二.MFS分布式文件系统的部署 实验环境 配置Master Server 配 ...
- MFS分布式文件系统的搭建
MFS分布式文件系统的搭建 一:介绍MFS MFS(MooseFS)是一个具有容错性的网络分布式文件系统.它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源. MFS也像其他类的 ...
- MFS分布式文件系统存储之文件的删除恢复
MFS分布式文件系统存储之文件的删除恢复 在MFS分布式集群中,Client 客户端的~/mfs/bin下具有很多的脚本命令,实现对master server虚拟共享目录的管理. 今天主要介绍的是其下 ...
- MFS分布式文件系统及监控
MFS分布式文件系统 文件系统:ext4.xfs.ext3 mooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类U ...
- MFS分布式文件系统2-master双机热备实现高可用
文章目录 前言 1.mfs1和mfs5做文件系统同步 1.1 将mfs5主机改为master主机 1.2 配置iscsi文件系统并同步元数据 1.2.1 删除moosefs2上的硬盘 1.2.2 配置 ...
- 分布式文件系统FastDFS架构辨析,分布式文件系统FastDFS_V4.06安装部署
FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过专有API对文件进行存取访问,不支持POSIX接口方式, ...
- SHELL脚本自动化部署MFS分布式文件系统
前言:在我们运维中,最常见的文件存储系统大概就是NFS了,但是随着网站压力不断增加,NFS渐渐不能满足企业数据增长需求,有木有自动扩展.高效.部署.实施方便快捷的分布式存储供我们使用呢?那我们来看一下 ...
- CentOS下MFS分布式文件系统搭建
MFS : 网络分布式文件系统中的一种 Project web site: http://www.moosefs.com/ Installation and using MooseFS: http:/ ...
- mfs 分布式文件系统
mfs权威指南(moosefs)分布式文件系统一站式解决方案(部署,性能测试)不断更新 http://bbs.chinaunix.net/thread-1644309-1-1.html 1. 我在性能 ...
最新文章
- java的工作原理你知道吗_每天用Mybatis,但是Mybatis的工作原理你真的知道吗?
- 3-自定义BI启动版是否隐藏CMS名称
- MySQL——复杂的多表查询——以超市交易数据为例
- ubuntu 定时执行php文件,Ubuntu crontab 定时执行php脚本文件
- Unity3D 人形血条制作小知识
- virsh 网络设置_KVM使用Network Filters进行虚拟机网络管理 | leon的博客
- Java中throws和throw的区别讲解
- xslt 定义表格html表格样式,使用 XSLT 作为 HTML 的样式表.doc
- LED显示驱动(五):视频设备显示驱动调试步骤总结
- 新风系统风速推荐表_实验室通风系统的设计和应用
- 微信小程序云开发教程-WXML入门-常用组件和属性
- Lucene的几种分词系统
- 处理App状态改变的策略
- Android源码下载repo以及repo init总结
- 关于@Vaild注解的使用
- TX2安装ubuntu18,ROS
- dya6小数据池、集合、编码、深浅copy
- 鱼眼图像畸变校正matlab,鱼眼镜头畸变校正算法的设计
- 前端优化系列:DNS预获取 dns-prefetch 提升页面载入速度
- 容器里有10升油,现在只有两个分别能装3升和7升油的瓶子,需要将10 升油等分成2 个5 升油。程序输出分油次数最少的详细操作过程