Moosef分布文件系统

Moosef分布文件系统,第1张

Moosef分布文件系统

目录

简介

角色

read

工作方式

write

 mfs分布式文件系统搭建

 master

chunk server

 client

找回元数据

大文件存储分块

扩容

​ 存储方式改变  标签

1.存储方式改变

2.修改标签及存储类别

3.对文件的保存和打包时间策略


简介

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

角色
  • MooseFS的文件系统结构体系可分为以下四种角色,分别对应不同的功能:
  • 1.管理服务器managing server (master)
  • 2.元数据日志服务器metalogger server(metalogger)
  • 3.数据存储服务器data servers (chunkservers)
  • 4.客户机挂载使用client computers
read

 

工作方式

如上图中 Master Server用三角形表示,Chunk Server用圆形表示,Client 用方形表示。整个读过程有以下四个步骤:

  1. 首先client客户端访问主服务器master,获取文件实体的位置等相关信息。
  2. 主服务器master查询缓存记录,把文件实体的位置等相关信息发给client客户端。
  3. Client客户端根据拿到的信息去访问对应的存储实体数据的服务器(data servers或者chunk servers)。
  4. 存储实体数据的服务器(data servers或者chunk servers)把对应的数据返回给Client客户端。

        我们还可以看出,当多个MFS客户端读数据的时候,master服务器充当路由为这些客户端分发指路的作用,而数据的返回时由不同的数据服务器直接返回给请求的客户端,这样的模式可以极大的减轻主服务器的系统及网络瓶颈,增加了整个系统的吞吐。

write

MooseFS文件系统写过成比读过成相对复杂的多,如上图:

  1. Client客户端访问主服务器master,请求写入数据。
  2. 主服务器master查询缓存记录,如果是新文件,则会联系后面的数据服务器创建对应的chunk对象准备存放文件。
  3. 数据服务器返回创建对应的chunk对象成功给主服务器。
  4. 主服务器master把文件实体的位置等相关信息发给client客户端。
  5. Client客户端访问对应的数据服务器写数据。
  6. 数据服务器之间进行数据同步,互相确认成功。
  7. 数据服务器返回成功写入信息给Client客户端。
  8. Client客户端回报给主服务器master写入结束
 mfs分布式文件系统搭建  master

下载网站https://moosefs.com/download/

vm1

curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli -y

报错,修改gpgcheck=0

vm2,vm3

yum install moosefs-chunkserver -y

配置

vm1

[root@vm1 yum.repos.d]# cd /etc/mfs/
[root@vm1 mfs]# ls
mfsexports.cfg         mfsmaster.cfg         mfstopology.cfg
mfsexports.cfg.sample  mfsmaster.cfg.sample  mfstopology.cfg.sample
[root@vm1 mfs]# vim mfsmaster.cfg   配置文件不修改
[root@vm1 mfs]# systemctl start moosefs-master
[root@vm1 mfs]# netstat -antlp
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      4355/mfsmaster      
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      4355/mfsmaster      
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      4355/mfsmaster      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3208/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3307/master         
tcp        0      0 172.25.7.5:22           172.25.7.250:41282      ESTABLISHED 4093/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      3208/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      3307/master         
[root@vm1 mfs]# systemctl start moosefs-cgiserv.service 
[root@vm1 mfs]# netstat -antlp
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      4355/mfsmaster      
tcp        0      0 0.0.0.0:9420            0.0.0.0:*               LISTEN      4355/mfsmaster      
tcp        0      0 0.0.0.0:9421            0.0.0.0:*               LISTEN      4355/mfsmaster      
tcp        0      0 0.0.0.0:9425            0.0.0.0:*               LISTEN      4456/python2        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3208/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      3307/master         
tcp        0      0 172.25.7.5:9420         172.25.7.6:36964        ESTABLISHED 4355/mfsmaster      
tcp        0      0 172.25.7.5:9420         172.25.7.7:42104        ESTABLISHED 4355/mfsmaster      
tcp        0      0 172.25.7.5:22           172.25.7.250:41282      ESTABLISHED 4093/sshd: root@pts 
tcp6       0      0 :::22                   :::*                    LISTEN      3208/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      3307/master         
chunk server

vm2,3

[root@vm3 ~]# cd /etc/mfs/
[root@vm3 mfs]# ls
mfschunkserver.cfg  mfschunkserver.cfg.sample  mfshdd.cfg  mfshdd.cfg.sample
[root@vm3 mfs]# vim mfschunkserver.cfg  配置文件不修改
[root@vm3 mfs]# vim /etc/hosts 所有节点都要有
[root@vm3 mfs]# scp /etc/hosts vm1:/etc/hosts  
   
[root@vm3 mfs]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.25.254.7 www.students72.nodec.org
172.25.7.250 students72.nodec.org
172.25.7.1    server1    
172.25.7.2    server2                 
172.25.7.3    server3                  
172.25.7.4    server4                 
172.25.7.5    vm1  mfsmaster
172.25.7.6    vm2
172.25.7.7    vm3  
172.25.7.8    vm4
172.25.7.9    vm5
[root@vm3 mfs]# systemctl start moosefs-chunkserver

http://172.25.7.5:9425访问浏览器

 把vm2加进去

[root@vm2 yum.repos.d]# cd /etc/mfs/
[root@vm2 mfs]# ls
mfschunkserver.cfg  mfschunkserver.cfg.sample  mfshdd.cfg  mfshdd.cfg.sample
[root@vm2 mfs]# mkdir /mnt/chunk1
[root@vm2 mfs]# chown mfs.mfs /mnt/chunk1
[root@vm2 mfs]# ll -d /mnt/chunk1
drwxr-xr-x 2 mfs mfs 6 Dec 27 11:34 /mnt/chunk1
          
[root@vm2 mfs]# systemctl restart moosefs-chunkserver


               vim mfshdd.cfg  将/mnt/chunk1写进去
             最好挂载磁盘

 vm3

[root@vm3 mfs]# systemctl start moosefs-chunkserver
[root@vm3 mfs]# cd /etc/mfs/
[root@vm3 mfs]# mkdir /mnt/chunk2
[root@vm3 mfs]# chown mfs.mfs /mnt/chunk2/
[root@vm3 mfs]# ll -d /mnt/chunk2/
drwxr-xr-x 2 mfs mfs 6 Dec 27 11:41 /mnt/chunk2/
[root@vm3 mfs]# ls
mfschunkserver.cfg  mfschunkserver.cfg.sample  mfshdd.cfg  mfshdd.cfg.sample
[root@vm3 mfs]# vim  mfshdd.cfg
[root@vm3 mfs]# vim  mfshdd.cfg
[root@vm3 mfs]# systemctl restart moosefs-chunkserver
[root@vm3 mfs]#

 used%都有值

 client

用本机rhel8.2安装client

[root@students72 ~]# 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     89      0  0:00:01  0:00:01 --:--:--    89
[root@students72 ~]# cd /etc/yum.repos.d/

[root@students72 yum.repos.d]# ls
MooseFS.repo  redhat.repo  rhel7.6.repo  westos.repo

[root@students72 yum.repos.d]# vim MooseFS.repo  修改grgcheck=0
[root@students72 yum.repos.d]# yum install moosefs-client -y


vim /etc/hosts   mfsmaster 本地解析

[root@students72 mfs]# mkdir /mnt/mfs
[root@students72 mfs]# vim /etc/mfs/mfsmount.cfg
[root@students72 mfs]# mfsmount   自动读取挂载
mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
[root@students72 mfs]# df
Filesystem         1K-blocks      Used Available Use% Mounted on
devtmpfs             3669344         0   3669344   0% /dev
tmpfs                3697640    176564   3521076   5% /dev/shm
tmpfs                3697640    119220   3578420   4% /run
tmpfs                3697640         0   3697640   0% /sys/fs/cgroup
/dev/nvme0n1p4     490819428 104072228 386747200  22% /
/dev/nvme0n1p2       1038336    226824    811512  22% /boot
/dev/nvme0n1p1        306584     32688    273896  11% /boot/efi
/dev/loop0           8238560   8238560         0 100% /var/www/html/westosir
/dev/loop1           4391278   4391278         0 100% /var/www/html/rhel7.6
tmpfs                 739528        16    739512   1% /run/user/42
tmpfs                 739528       184    739344   1% /run/user/1000
mfs#mfsmaster:9421  56579072   2858176  53720896   6% /mnt/mfs

[root@students72 mfs]# cd /mnt/mfs/
[root@students72 mfs]# mkdir dir1
[root@students72 mfs]# mkdir dir2
[root@students72 mfs]# cd dir1/
[root@students72 dir1]# cp /etc/passwd .
[root@students72 dir1]# cd ..
[root@students72 mfs]# ll
total 978
drwxr-xr-x. 2 root root 1000280 Dec 28 01:07 dir1
drwxr-xr-x. 2 root root       1 Dec 28 01:06 dir2
[root@students72 mfs]# 


[root@students72 mfs]# mfsgetgoal dir1 一般默认为3
dir1: 2
[root@students72 mfs]# mfsgetgoal dir2
dir2: 2

 修改副本

mfssetgoal -r 1 dir1/

 查看件信息

 把vm2的服务停掉

dir1中没有副本了

dir2中只有一个副本

 重新开启恢复

[root@students72 dir1]# mfsgettrashtime passwd 

回收时间

找回元数据

master允许数据读写

 元数据目录挂载

mkdir /mnt/mfsmeta
mfsmount -m /mnt/mfsmeta/

mount查看

 进入回收站

[root@students72 mfsmeta]# cd /mnt/mfsmeta/
[root@students72 mfsmeta]# ls
sustained  trash
[root@students72 mfsmeta]# cd trash/
[root@students72 trash]# ls

find -name *passwd*  查找源数据
ls -id .. undel/  硬连接

 恢复数据

 mv 00000004|dir1|passwd undel/

大文件存储分块
 dd if=/dev/zero of=bigfile bs=1M count=100  制作100K文件
大文件分成区块存储

 

扩容

增加新的节点

vim /etc/hosts
yum install moosefs-chunkserver -y
mkdir /mnt/chunk3
 
 cd /etc/mfs/
 ls
 vim mfshdd.cfg
 chown mfs.mfs /mnt/chunk3
 systemctl start moosefs-chunkserver
存储方式改变  标签 1.存储方式改变
vim /etc/mfs/mfschunkserver.cfg
systemctl reload moosefs-chunkserver.service 

 

 3.4也修改标签

 

 修改存储地

client

mfsscadmin create A,B AB_class 创建存储方式
mfsscadmin list
mfssetsclass AB_class fstab  生效

 对比前后存储方式发生了改变

2.修改标签及存储类别

 vim /etc/mfs/mfschunkserver.cfg

vm2

 vm3

 vm4

重启chunck 服务

 如图标签已经被修改

mfsscadmin create AS,2H[A+B] 2s_class
mfssetsclass -r 2s_class fstab
mfsfileinfo fstab 

 

3.对文件的保存和打包时间策略

vm3

 重启服务

[root@students72 dir2]# mfsscadmin create -C 2AS -K AS,BS -A AH,BH -d 7 3s_class
storage class make 3s_class: ok
[root@students72 dir2]# mfssetsclass -r 3s_class fstab 
fstab:
 inodes with storage class changed:              1
 inodes with storage class not changed:          0
 inodes with permission denied:                  0
[root@students72 dir2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000001 / (id:2 ver:1)
		copy 1: 172.25.7.6:9422 (status:VALID)
		copy 2: 172.25.7.7:9422 (status:VALID)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5685664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存