MFS分布式存储系统一

一.介绍

MFS是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
MFS的组成:
元数据服务器(Master),元数据日志服务器(MetaLogger),数据存储服务器(Chunk Server),客户端(Client)。

元数据服务器在整个体系中负责管理文件系统,维护元数据。所谓元数据记录的是整个分布式文件系统的变化,比如说记录文件存储在哪个主机,有多少个副本、每个文件大小多少、文件名字、文件被分成多少个块儿进行存储等信息,这些数据消耗的是服务器的内存资源,因此元数据不在于存储的数据有多大,而在于其数量。
元数据日志服务器(MetaLogger)备份Master服务器的变化日志文件,当master服务器损坏,可以从日志服务器中取得文件恢复。
数据存储服务器(Chunk Server)真正存储数据的服务器,服务器越多,容量就越大,可靠性越高,性能越好。
客户端(Client)可以像挂载NFS一样 挂载MFS文件系统

二.MFS的部署

1.下载

首先需要配置自己的yum 源:

[root@server1 yum.repos.d]# vim MooseFS.repo    
[MooseFS]
name=MooseFS
baseurl=http://ppa.moosefs.com/moosefs-3/yum/el7
gpgcheck=0
然后把yum 源传到三台虚拟机都有!
scp /etc/yum.repos.d/MooseFS.repo server2:/etc/yum.repos.d/


然后就可以直接下载所需要的包了:
[root@server1 yum.repos.d]# yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y 

在这里插入图片描述
下载不了的话,做解析。
vim /etc/resolv.conf
nameserver 114.114.114.114

在server2,3上只需要下载
yum install -y moosefs-chunkserver
在这里插入图片描述

2.master部署和启动

[root@server1 mfs]# vim /etc/hosts         
添加server1的解析  172.25.1.1 server1 mfsmaster
[root@server1 mfs]# scp /etc/hosts server2:/etc/     
[root@server1 mfs]# scp /etc/hosts server3:/etc/
[root@server1 mfs]# systemctl start moosefs-master.service       %启动服务
root@server1 mfs]# netstat -antulp        %查看开启的端口

[root@server1 mfs]# systemctl start moosefs-cgiserv.service      %开启相关cgi服务(提供可视化界面)
[root@server1 mfs]# netstat -antulp  

在这里插入图片描述

systemctl start moosefs-master.service
在这里插入图片描述

systemctl start moosefs-cgiserv.service
在这里插入图片描述

在这里插入图片描述
接着在网页访问:
172.25.1.1:9425
在这里插入图片描述

3.chunk server

前面说了,chunk server是真正存储数据的地方!
我们首先要划出来一个区域来提供存储
server2上操作:

添加一块儿10G的硬盘并设置分区、格式化文件系统,设置开机自动挂载
 fdisk /dev/vdb
 Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-20971519, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): 
Using default value 20971519
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): w
The partition table has been altered!

在这里插入图片描述

在这里插入图片描述

[root@server2 yum.repos.d]# mkfs.xfs /dev/vdb1          %格式化文件系统
[root@server2 yum.repos.d]# mkdir /mnt/chunk1           %创建挂载目录
[root@server2 yum.repos.d]# cd
[root@server2 ~]# chown mfs.mfs /mnt/chunk1/            %更改存储的用户及用户组
[root@server2 ~]# blkid                                 %查看设备uid,通过uid来设置开机自动挂载
[root@server2 ~]# vim /etc/fstab                %设置开机自动挂载
查到的id是多少就写多少
UUID=a18fbb2f-cb4b-4c51-a659-cb58503860f6    /mnt/chunk1  xfs     defaults    0 0

[root@server2 ~]# mount -a
[root@server2 ~]# df
[root@server2 ~]# systemctl start moosefs-chunkserver       %启动服务
[root@server2 mfs]# ls
mfschunkserver.cfg  mfschunkserver.cfg.sample  mfshdd.cfg  mfshdd.cfg.sample
[root@server2 mfs]# vim mfshdd.cfg         %编辑配置文件,指定mfs存储文件
/mnt/chunk1         %添加这行内容
[root@server2 mfs]# systemctl reload moosefs-chunkserver.service     %reload服务

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

刷新网页,查看:
在这里插入图片描述

在server3上

 mkdir /mnt/chunk2
 chown mfs.mfs /mnt/chunk2/ 
 systemctl start moosefs-chunkserver 
 cd /etc/mfs/
 vim mfshdd.cfg
 /mnt/chunk2       %添加这行内容
 systemctl reload moosefs-chunkserver.service

然后刷新页面:
在这里插入图片描述

在这里插入图片描述

4.client

就是在自己的真机上操作:

[root@foundation1 mnt]# yum install -y moosefs-client-3.0.115-1.rhsystemd.x86_64.rpm   %先配置好源,然后下载相应rpm包
[root@foundation1 mnt]# vim /etc/hosts              %添加server1的mfsmaster解析
[root@foundation1 mnt]# cd /etc/mfs/
[root@foundation1 mfs]# ls
mfsmount.cfg  mfsmount.cfg.sample
[root@foundation1 mfs]# vim mfsmount.cfg       
  /mnt/mfs
[root@foundation1 mfs]# cd
[root@foundation1 ~]# mkdir /mnt/mfs -p
[root@foundation1 ~]# mfsmount                      %挂载mfs存储
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@foundation1 ~]# df

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.client端存储

[root@foundation1 ~]# cd /mnt/mfs/
[root@foundation1 mfs]# ls
[root@foundation1 mfs]# mkdir dir1
[root@foundation1 mfs]# mkdir dir2
[root@foundation1 mfs]# mfsgetgoal dir1          %因为有两个chunk server,因此默认存储的数据备份两份,server2和server3上各一份
dir1: 2
[root@foundation1 mfs]# mfsgetgoal dir2
dir2: 2
[root@foundation1 mfs]# mfsgetgoal dir1
dir1: 2
[root@foundation1 mfs]# mfssetgoal -r 1 dir1     %备份的份数可以自己设置
dir1:
 inodes with goal changed:                       1
 inodes with goal not changed:                   0
 inodes with permission denied:                  0
[root@foundation1 mfs]# mfsgetgoal dir1
dir1: 1
[root@foundation1 mfs]# cp /etc/passwd dir1/
[root@foundation1 mfs]# cp /etc/fstab dir2/
[root@foundation1 mfs]# cd dir1
[root@foundation1 dir1]# mfsfileinfo passwd      %查看文件的存储分配信息
[root@foundation1 dir1]# cd ..
[root@foundation1 mfs]# cd dir2
[root@foundation1 dir2]# ls
fstab
[root@foundation1 dir2]# mfsfileinfo fstab 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@server2 mfs]# systemctl stop moosefs-chunkserver

[root@foundation1 dir2]# mfsfileinfo fstab      %当某个存储节点down掉之后,另外一台节点上的存储不会收到影响
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.1.2:9422 (status:VALID)
[root@foundation1 dir2]# cd ..
[root@foundation1 mfs]# cd dir1
[root@foundation1 dir1]# mfsfileinfo passwd 
passwd:
	chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
		copy 1: 172.25.1.2:9422 (status:VALID)

当把server2服务停掉后,再次执行会发现fstab只会复制一份了!
在这里插入图片描述

在这里插入图片描述

注意,若是启动失败:

因为虚拟机同时挂了,导致脑裂!
启动服务失败,执行

mfsmaster -a
mfsmaster stop
systemctl start moosefs-master

三.文件问题

1.文件的写入

mfs默认的单个chunk大小为50M,如果写入文件大于50M,则mfs会为其分配多个chunk来存储

在真机上操作:
可以看到我们直接写入一个200M的文件,那么会自动分为四个来储存!

[root@foundation1 mnt]# cd /mnt/mfs/
[root@foundation1 mfs]# ls
dir1  dir2
[root@foundation1 mfs]# cd dir2/
[root@foundation1 dir2]# ls
fstab
[root@foundation1 dir2]# dd if=/dev/zero of=bigfile bs=1M count=200
[root@foundation1 dir2]# mfsfileinfo bigfile 

在这里插入图片描述

2.文件的恢复

[root@foundation1 mnt]# mkdir mfsmeta
[root@foundation1 mnt]# cd mfsmeta/
[root@foundation1 mfsmeta]# ls
[root@foundation1 mfsmeta]# mfsmount -m /mnt/mfsmeta/

在这里插入图片描述
再次查看垃圾箱中出现了文件!

[root@foundation1 mnt]# cd mfs
[root@foundation1 mfs]# cd dir1
[root@foundation1 dir1]# ls
passwd
[root@foundation1 dir1]# rm -rf passwd
[root@foundation1 mnt]# cd mfsmeta/
[root@foundation1 mfsmeta]# ls

在这里插入图片描述
撤销删除的文件:

cd trash/
ls
find -name *passwd*
cd 004/
ls
mv 00000004\|dir1\|passwd undel/
 cd /mnt/mfs/dir1/
 ls

在这里插入图片描述

四.存储类

master内存的开销主要取决于整个分布式文件系统中文件的数量而不是大小,cpu的消耗主要来源于用户的操作。为了更合理的利用系统资源,我们需要来创建存储类来对存储进行管理

1.添加chunk server节点e

和前面配置一样!

[root@server4 mfs]# yum install -y moosefs-chunkserver.x86_64
[root@server4 mfs]# vim mfshdd.cfg
[root@server4 mfs]# mkdir /mnt/chunk3
[root@server4 mfs]# vim /etc/hosts
[root@server4 mfs]# chown mfs.mfs /mnt/chunk3
[root@server4 mfs]# systemctl start moosefs-chunkserver

vim mfschunkserver.cfg
改为如下A

然后再server3上修改:

[root@server3 mfs]# vim mfschunkserver.cfg

在这里插入图片描述然后再server2上修改:
[root@server2 mfs]# vim mfschunkserver.cfg
在这里插入图片描述
重启服务
systemctl reload moosefs-chunkserver
网页上查看

在这里插入图片描述

接着在真机上操作:

[root@foundation1 mfs]# cd dir2
[root@foundation1 dir2]# ls
[root@foundation1 dir2]# mfsscadmin create 2A class_2A  %创建存储类,2A表示存两份,两份都在有标签A的节点上
[root@foundation1 dir2]# mfsscadmin create AB class_AB  %AB表示存一份,在具有A和B标签的节点上
[root@foundation1 dir2]# mfsfileinfo fstab %查看文件的存储信息
[root@foundation1 dir2]# mfssetsclass class_2A fstab   %设置文件的存储类
[root@foundation1 dir2]# mfsfileinfo bigfile 
[root@foundation1 dir2]# mfssetsclass class_AB bigfile  %设置文件的存储类
[root@foundation1 dir2]# mfsscadmin create A,B classAB %A,B表示存两份,一份在具有标签A的节点上,一份在具有标签B的节点上
[root@foundation1 dir2]# mfssetsclass classAB bigfile %设置文件的存储类



在这里插入图片描述

在这里插入图片描述

访问网页查看:
在这里插入图片描述

删除节点

[root@foundation1 dir2]#  mfsscadmin delete class_AB

在这里插入图片描述

在server2,3,4上:

[root@server2 mfs]# vim mfschunkserver.cfg
LABELS = A S   %更改标签
[root@server2 mfs]# systemctl reload moosefs-chunkserver.service 

server3上:
[root@server3 mfs]# vim mfschunkserver.cfg
LABELS = A B S H  %更改标签
[root@server3 mfs]# systemctl reload moosefs-chunkserver.service

server4上:
[root@server4 ~]# vim /etc/mfs/mfschunkserver.cfg
LABELS = A H   %更改标签
[root@server4 ~]# systemctl reload moosefs-chunkserver.service

客户端:
[root@foundation1 dir2]# mfsscadmin create AS,BS class_ASBS         %创建存储类
storage class make class_ASBS: ok
[root@foundation1 dir2]# ls
bigfile  fstab
[root@foundation1 dir2]# mfssetsclass class_ASBS fstab              %设置文件以指定存储类型存储
fstab: storage class: 'class_ASBS'
[root@foundation1 dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.1.2:9422 (status:VALID)
		copy 2: 172.25.1.3:9422 (status:VALID)
[root@foundation1 dir2]# mfsscadmin create BS,2A[S+H] class4
storage class make class4: ok
[root@foundation1 dir2]# mfssetsclass class4 fstab 
fstab: storage class: 'class4'
[root@foundation1 dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.1.2:9422 (status:VALID)
		copy 2: 172.25.1.3:9422 (status:VALID)
		copy 3: 172.25.1.4:9422 (status:VALID)
[root@foundation1 dir2]# mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 30 class5   %表示创建一个存储类class5,存储两份,在AS上,-K参数指定数据保留在AS和BS上各一份,-d指定30天后,-A指定迁移到AH和BH上
storage class make class5: ok
[root@foundation1 dir2]# mfssetsclass class5 fstab 
fstab: storage class: 'class5'
[root@foundation1 dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.1.2:9422 (status:VALID)
		copy 2: 172.25.1.3:9422 (status:VALID)

在这里插入图片描述

在这里插入图片描述

刷新网页访问:
在这里插入图片描述

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudududu--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值