目录

一.分布式文件系统——MooseFS

1.1简单介绍

1.2部署MooseFS

1.2.1准备工作

1.2.2完成MasterServer的相关服务配置

1.2.3完成ChunkServer的相关服务配置

1.2.4完成Client的相关服务配置

1.2.5完整的界面

1.3基本语法

1.mfslistsclass:查看类别

2.管理存储类别的创建和修改

3.管理文件或目录的存储类别

4.设置标签


一.分布式文件系统——MooseFS

1.1简单介绍

MooseFS官方文档:

Chunkservers | MooseFS Documentationhttps://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 *

Logo

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

更多推荐