MFS分布式文件系统(三) ——Storage class 存储类

什么是storage class

在moosefs中,storage class允许指定文件的chunks存放在哪些chunkservers上

storage class使用label进行表达。

为了与早起的版本的goal功能兼容,moosefs 3.0以上会自动在系统中建立1~9 storage class。goal工具将默认在对应的storage class下进行工作。

重新开机后,原本客户端这里就没有内容了,上传到chunkserver

[root@git1 ~]# cd /mnt/mfs
[root@git1 mfs]# ls
data1  data2
[root@git1 mfs]# cd data2/
[root@git1 data2]# ls   

重新挂载
在这里插入图片描述

数据出现
在这里插入图片描述

[root@git1 mfs]# mfsscadmin list
1
2
3
4
5
6
7
8
9

在这里插入图片描述
什么是label

label是可以被分配给chunkserver的字母(a~z,26个字母可选),每个chunkserver可以被打上多个标签(即标记上多个字母,但最多可以打26个label)

完整的label表达式可以由多个子表达式构成,每个子标签之间用逗号分隔。 每个子表达式特指文件副本的一种存储模式。子表达式可以为星号*或一个label schema。

label schema可以是一个label或由加法、乘法和括号构成的复杂表达式。

==加法是逻辑“或”的含义,即文件的副本可以被存放在任意含有加法元素label的chunkserver上。==例如,一个文件的storage class是a+b+c,那么任何含有a、b或c标签的chunkserver都可以用来存储该文件的副本。

==乘法是逻辑“与”的含义,即文件的副本仅可以存放在包含所有label的chunkserver上。==例如,一个文件的storage class是abc,那么只有当一台chunkserver同时含有abc三个标签时,它才能用于存放该文件的副本。

相同的子表达式可以通过在表达式前加数字的方式来表示,而不用重复显示声明多次。

实验过程

关闭selinux 和firewalld

为了实验效果,应该再多加两台chunkserevr,但是由于硬件原因,这里没有加

之前存储文件时,只控制文件的副本数,没有控制文件存储在那个chunkserver中

存储类的作用:将数据存放在合适的数据节点上

1.在chunkserver上打标签

[root@mfs2 ~]# vim /etc/mfs/mfschunkserver.cfg
[root@mfs2 ~]# systemctl reload moosefs-chunkserver

在这里插入图片描述

[root@mfs3 ~]# vim /etc/mfs/mfschunkserver.cfg
[root@mfs3 ~]# systemctl reload moosefs-chunkserver

在这里插入图片描述
在这里插入图片描述
在客户端创建存储类
在这里插入图片描述
2A表示A标签创建两个副本,class2A是存储类的名称

[root@git1 mfs]# cd data2/
[root@git1 data2]# ls
fstab
[root@git1 data2]# mfsgetgoal fstab 
fstab: 2
[root@git1 data2]# mfsgetgoal .
.: 2

[root@git1 data2]# mfsfileinfo fstab 
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)

现在设置数据保存在mfs2上

为当前目录添加存储类

[root@git1 data2]# mfssetsclass -r class2A .
.:
 inodes with storage class changed:              2
 inodes with storage class not changed:          0
 inodes with permission denied:                  0

-r表示第归

[root@git1 data2]# echo wetsos >> fstab ##触发
[root@git1 data2]# mfsfileinfo fstab 
fstab:
	chunk 0: 0000000000000002_00000002 / (id:2 ver:2)
		copy 1: 192.168.122.102:9422 (status:VALID)
		copy 2: 192.168.122.103:9422 (status:VALID)

如果chunkserver是4台,两台A两台B标签的话,此时应该是两台A标签的chunkserevr被选择存储数据,但是由于现在chunkserevr是2台,每个标签只有一台,因此mfs会将数据存储在两个节点,忽略存储类的标签

新建一份大文件:

[root@git1 data2]# mfsfileinfo gibfile 
gibfile:
	chunk 0: 0000000000000005_00000001 / (id:5 ver:1)
		copy 1: 192.168.122.102:9422 (status:VALID)
		copy 2: 192.168.122.103:9422 (status:VALID)
	chunk 1: 0000000000000006_00000001 / (id:6 ver:1)
		copy 1: 192.168.122.102:9422 (status:VALID)
		copy 2: 192.168.122.103:9422 (status:VALID)

两份冗余

利用storage class对存储介质,固态盘和机械盘,进行选择和分配。s表示固态盘,h表示机械盘。

[root@mfs2 ~]# vim /etc/mfs/mfschunkserver.cfg
[root@mfs2 ~]# systemctl reload moosefs-chunkserver

在这里插入图片描述

[root@mfs3 ~]# vim /etc/mfs/mfschunkserver.cfg
[root@mfs3 ~]# systemctl reload moosefs-chunkserver

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

[root@git1 mfs]# mfsscadmin  create S classS
storage class make classS: ok
[root@git1 mfs]# mfsxchgsclass -r class2A classS data2/  #将存储类改为classS
data2/:
 inodes with storage class changed:              3
 inodes with storage class not changed:          0
 inodes with permission denied:                  0
[root@git1 mfs]# cd data2/
[root@git1 data2]# mfsfileinfo fstab  #设置了数据的存储介质为固态盘,只能存储在mfs2
fstab:
	chunk 0: 0000000000000002_00000002 / (id:2 ver:2)
		copy 1: 192.168.122.102:9422 (status:VALID)

数据放两份

[root@git1 data2]# mfsscadmin create AS,BH classASBH
storage class make classASBH: ok
[root@git1 data2]# cd ..
[root@git1 mfs]# mkdir data3
[root@git1 mfs]# cd data3/
[root@git1 data3]# cp /etc/passwd .
[root@git1 data3]# mfsfileinfo  passwd 
passwd:
	chunk 0: 0000000000000007_00000001 / (id:7 ver:1)
		copy 1: 192.168.122.102:9422 (status:VALID)
		copy 2: 192.168.122.103:9422 (status:VALID)

打包和移动数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值