手把手教你部署MooseFS
目录
一.分布式文件系统——MooseFS
1.1简单介绍
MooseFS官方文档:
Chunkservers | MooseFS Documentation
https://docs.moosefs.com/installation/components/chunkservers/
1.说明:分布式文件系统是一个多线程、多核心的系统,主要存放海量小文件,支持多次读写,适合需要经常修改的文件存储。支持多操作系统,同时Moosefs很好扩容。而PB一般用于存放大数据文件(PB),且适合一写多读(一次写入多次读取),不适合经常修改。
2.核心组成:Master Server(管理服务器)、Chunkserver(数据存储服务器)、client(客户端)、Meltalogger Server(数据日志服务器)
1.Master Server:用于管理所有的元数据的存放位置,缓存元数据的变更记录,但它本身不会存储数据。当客户端需要访问元数据时,会先去访问Master,由Master指出元数据的存放位置。因此它并不需要多少存储空间,但它非常消耗内存,因为多个客户端访问,会消耗大量资源。
2.Chunk Server:真正的数据存储地,所有的复制数据都会存放在这里,用于保存。
3.Client:访问Moosefs的入口,通过挂载目录,远程访问moosefs
4.Meltalogger Server:Master的备份秘书,不断同步Master上的元数据同步记录。当Master发生故障时,可以通过Meltalogger的数据恢复集群

3.端口配置:
Master:9419—9421 ,9425(默认)
Chunk:9422(默认)
Client:9425(默认)
1.2部署MooseFS
1.安装配置:

2.设置域名解析

1.2.1准备工作
1.准备四台虚拟机并完成域名解析
组成:1台MasterServer,2台ChunkServer,1台Client
| 192.168.7.191 | server1,mfsmaster(DNS域名解析) | MasterServer |
| 192.168.7.192 | server2 | ChunkMaster |
| 192.168.7.193 | server3 | ChunkServer |
| 192.168.7.194 | server4 | Client |

2.四台虚拟机上都下载KEY和moosefs软件仓库
curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS #下载Key
curl "http://repository.moosefs.com/MooseFS-4-el8.repo" > /etc/yum.repos.d/MooseFS.repo #下载软件仓库

1.2.2完成MasterServer的相关服务配置
1.下载相关软件依赖
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli # For Master Servers
![]()
2.启动服务和GUI界面,查看端口号
systemctl enable --now moosefs-master
systemctl enable --now moosefs-gui
ss -ltp | grep :94

3.登录服务界面
Master_Server_IP:9425

1.2.3完成ChunkServer的相关服务配置
1.关闭虚拟机,新增一块新的NVMe类型的硬盘
poweroff #关闭虚拟机


NVMe:一般为企业运行的磁盘
fdisk -l #查看新建磁盘目录


2.为新磁盘分区,并完成初始化
fdisk /dev/nvme0n1 #创建分区(n->p->w)(新建->查看->写入)
mkxfs.xfs /dev/nvme0n1p1 #完成格式初始化


3.完成开机自动挂载
mkdir /mnt/ssd01 #创建挂载点

blkid #查看设备UUID

vim /etc/fstab #修改配置文件,完成开机自动挂载
systemctl daemon-reload #刷新systemctl服务配置
mount -a #刷新挂载
df #查看是否成功挂载


chown mfs.mfs /mnt/ssd01 #修改权限,确保挂载时权限正确

4.修改mfshdd.cfg配置文件,添加主机的挂载目录
vim /etc/mfs/mfshdd.cfg #尾行添加挂载目录


5.启动chunkserver服务
systemctl enable --now moosefs-chunkserver #启动chunkserver服务并设置开机自启

6.登录server端的GUI界面,查看chunkserver的状态
仅开启server2:

开启server2和server3;

1.2.4完成Client的相关服务配置
mkdir /mnt/mfs #创建挂载点
mfsmount /mnt/mfs -H mfsmaster #将MooseFS存储挂载到本地目录
![]()

1.2.5完整的界面

1.3基本语法
说明:所有语法都必须在挂载目录下完成,因为你需要通过挂载目录去访问Moosefs的远程存储。
1.mfslistsclass:查看类别
mfslistsclass #查看moosefs上的分类
2CP:数据备份两份,可以容忍一台存储器故障,所占空间是原始数据的两倍
3CP:数据备份三份,可以容忍两台存储器故障,所占空间是原始数据的三倍
EC4+1:数据切分成4部分,并生成一个校验码,所占空间是原始数据的1.25倍
EC8+1:数据切分成8部分,并生成一个校验码,所占空间是原始数据的1.125倍
CP与EC的不同:
CP:将数据完整的复制过来,所占空间与数据本身相同,例如复制两份就会占两份数据的空间
EC:将数据切分成多块,并生成校验码,只要丢失的部分不超过校验部分的数量,数据就可以被完整恢复,而且更节省空间开销,

说明:使用 -l 参数,查看详细信息




2.管理存储类别的创建和修改
旧版写法:
mfsscadmin create #创建一个新的存储类别
mfsscadmin modify #修改现有的存储类别
mfsscadmin delete #删除存储类别
mfsscadmin clone #克隆一个存储类别
mfsscadmin rename #重命名一个存储类别
mfsscadmin import #批量导入存储类别
新版写法:
mfscreatesclass #创建一个新的存储类别
mfsmodifysclass #修改现有的存储类别
mfsdeletesclass #删除存储类别
mfsclonesclass #克隆一个存储类别
mfsrenamesclass #重命名一个存储类别
mfsimportsclass #批量导入存储类别
说明:这里能够看出来,新旧写法的不同点就是新写法将旧版后面的create加入到了mfs后,并且将scadmin替换成了sclass。不过新旧写法都可使用
例子:
2.1创建一个类型为2CP的类别:
mfsscadmin create -K 2* 类别名

2.2创建一个类别为1CP的类别:
mfsscadmin create -K 1* 类别名 #建议在类别名的前或后加一个_1CP,用于区分

说明:1CP是指复制一份数据,建议在类别命名时加一个_1CP用于区分
2.3删除一个已有类别:
mfsdeletesclass 类别名 #新版写法
mfsscadmin delete 类别 #旧版写法

3.管理文件或目录的存储类别
旧版写法:
mfssclass get #查看文件或目录的存储类别
mfssclass set #修改文件或目录的存储类别
mfsfileinfo 文件名 #查看文件的详细信息
新版写法:
mfsgetsclass #查看文件或目录的存储类别
mfssetsclass #修改文件或目录的存储类别
mfsfileinfo 文件名 #查看文件的详细信息
例子:
3.1创建一个目录,查看数据的存放位置
mkdir dir2
cd dir2 #进入目录
mfssclass get . #查看当前新建目录的默认存储类别
说明:默认情况下,新建目录的存储类别为2CP


3.2进入目录,复制文件,查看文件备份地址
cp /etc/passwd . #复制文件到当前目录
mfsfileinfo passwd #查看文件的存放地址


说明:文件被复制成两份,分别存储在两台chunkserver上
3.3修改目录的存储类别,并完成数据迁移
3.3.1复制数据
mkdir dir1
cd dir1
cp /etc/passwd .
mfsfileinfo passwd



3.3.2修改目录的存储类别
mfssclass set host_1CP . #将当前目录存储类别设置为1CP
mfssclass get . #查看当前目录的存储类别



3.3.3完成旧数据的迁移
mfssclass set host_1CP -r . #完成旧数据的迁移
mfsfileinfo passwd


说明:根据3.3.2和3.3.3,我们能发现:目录在修改时不加-r参数,只会修改新进来文件的存储类别,而不会修改旧数据原本的类别。
4.设置标签
说明:通过之前的例子,我们简单了解了mfs的基本语法。同时,我们会发现,如果你备份的数量少于chunkserver时,它会给你随机存放到chunkserver中,这样不方便管理。因此,我们可以为不同的chunkserver设置不同的标签,从而做到精准存储
4.1修改mfschunkserver.cfg配置文件,并重启生效
vim /etc/mfs/mfschunkserver.cfg #修改配置文件
systemctl reload moosefs-chunkserver #重启生效
说明:这里我将server2的标签设为A,server3的标签设为B
注意:一个主机的标签不只可以设置一个,可以在原先标签的后面加上,或者空格,填入新的标签。同样地,一个标签也可以同时在多个主机上定义。当访问该标签时,会访问所有拥有该标签的主机。





4.2创建以标签为主的存储类别
mfsscadmin create -K A 1CP_A #创建一个名为1CP_A,数据仅存在含有A标签的主机上的存储类别
mfsscadmin create -K B 1CP_B #创建一个名为1CP_B,数据仅存在含有B标签的主机上的存储类别
mfslistsclass
说明:这里的标签,是指所有含有该标签的主机。例子:如果只有一台主机含有A标签,则数据只会备一份在这台含有A标签的主机上;如果有多个主机同时含有A标签,则数据会在所有含A标签的主机上备一份。



4.3设置dir1目录的存储类别为1CP_B
cd dir1
mfsfileinfo passwd #查看原先文件的存储地址
mfssclass set 1CP_B . #设置当前目录的存储类别为1CP_B,不修改旧数据
cp /etc/group . #传入新数据
mfsfileinfo * #查看所有文件的存储地址



4.3完成旧数据的迁移
mfssclass set 1CP_B . -r #修改全部数据到标签B的主机上存储
mfsfileinfo *
mfssclass set 1CP_A . -r #修改全部数据到标签A的主机上存储
mfsfileinfo *


openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)