Linux中的MFS分布式文件系统
目录
一、MFS分布式文件系统
1、MooseFS简介
2、Moose File System的体系结构
(1)MooseFS Master
(2)MooseFS Chunk Server
(3)MooseFS Metalogger
(4)MooseFS Client
(5)MooseFS CLI
二、MFS命令介绍
三、集群部署
四、Storage Classes
1、Storage Classes简介
2、 LABEL简介
3、示例:
五、Moose File System的pacemaker高可用
1、安装 Master Servers
2、pacemaker高可用
3、ISCSI
4、添加集群资源
5、应用
一、MFS分布式文件系统
1、MooseFS简介
MFS(Moose File System)是一个基于分布式网络文件系统的开源存储系统。MFS可以在多台计算机上组织文件并提供统一的文件系统访问。MFS的主要特点是高可用性、可靠性和扩展性。它使用存储在多个节点上的数据进行数据冗余,并使用快速而可靠的网络传输数据。MFS还支持在运行时动态添加和删除节点,以便随着系统需求的变化而进行快速和灵活的扩展。
2、Moose File System的体系结构
Moose File System是一个分布式文件系统,它由多个组件组成。
(1)MooseFS Master
MooseFS Master是一个开源的分布式文件系统管理器,它能够管理一个或多个MooseFS Chunk Servers,为客户端提供可靠的文件存储和访问服务。MooseFS Master使用Master-Slave架构,它可以处理超过数百个Chunk Server的集群,并且具有高可用性和可伸缩性。它支持多种数据备份策略,可以将数据备份到多个Chunk Server上,从而提高数据的可靠性和容错性。MooseFS Master还提供了Web界面和命令行工具,方便用户管理和监控文件系统的运行状态。
(2)MooseFS Chunk Server
MooseFS Chunk Server 是MooseFS 分布式文件系统中的组成部分之一,主要负责存储和管理文件系统中的文件数据块。每个 MooseFS Chunk Server 可以存储多个数据块,并与 MooseFS Master Server 进行通信以保持文件系统的一致性和可用性。MooseFS Chunk Server 可以在多台服务器上部署,因此 MooseFS 文件系统可以通过多个节点并行地处理文件的存储、访问和备份。
(3)MooseFS Metalogger
- MooseFS Metalogger是一个MooseFS集群的组件,它负责管理和记录MooseFS文件系统的元数据。它的作用是确保元数据的一致性和可靠性,以避免数据丢失或损坏的情况发生。
- MooseFS Metalogger可以运行在独立的服务器上,也可以与其他MooseFS组件一起运行在同一台服务器上。它使用特殊的协议与其他MooseFS组件进行通信,以确保数据和元数据的一致性。
- 在MooseFS集群中,Metalogger通常设置为主/备两个节点,以确保在主节点故障时备用节点能够接管并继续提供服务,从而实现高可用性。
(4)MooseFS Client
- MooseFS是一种开源的分布式文件系统,它允许用户在多台服务器之间共享数据。MooseFS Client是MooseFS文件系统的客户端,用户可以使用MooseFS Client来访问MooseFS文件系统中存储的数据。
- MooseFS Client提供了一个用户空间工具,它包括了一个命令行界面和一个文件系统挂载程序。使用MooseFS Client,用户可以将MooseFS文件系统挂载到本地文件系统中,就像挂载任何其他文件系统一样。这意味着用户可以直接在本地系统上访问MooseFS文件系统中的数据,而无需知道它实际上存储在哪个服务器上。
- MooseFS Client使用自身的协议来访问MooseFS服务器,这意味着它可以在不同的操作系统上运行,包括Linux、BSD、Solaris和Windows。此外,MooseFS Client还支持许多其他高级功能,例如安全访问、文件缓存、数据压缩和限制带宽等功能。
(5)MooseFS CLI
- MooseFS CLI是一个基于命令行界面的管理工具,用于管理MooseFS文件系统。它提供了一组命令,可用于查看和修改MooseFS中的文件、目录和元数据,以及监控系统性能和状况。
- MooseFS CLI可以通过SSH远程连接到MooseFS服务器,也可以在本地运行。它可以执行诸如创建、删除、重命名、移动和复制文件等基本操作,同时还可以进行更高级的操作,如设置文件ACL、挂载磁盘、调整容量限制等操作。
- MooseFS CLI还支持命令行自动补全和命令历史记录等功能,使得操作更加方便和高效。它是MooseFS系统中一个十分重要的管理工具,非常适合那些需要以命令行方式管理文件系统的用户。
这些组件共同协作,实现文件的存储和访问。MooseFS的设计使得它能够扩展到数百个节点,可以存储数PB的数据。
二、MFS命令介绍
-
mfsmount:将 MooseFS 挂载到本地文件系统。
-
mfsmetarestore:用于将备份中的元数据恢复到 MooseFS 文件系统中。
-
mfsbackup:用于对 MooseFS 文件系统创建备份。它可以备份整个文件系统或单个目录。
-
mfsmount.cfg:MooseFS Mount 配置文件。它包含有关如何将 MooseFS 文件系统挂载到本地文件系统的信息。
-
mfsgooglecache:使用 Google Cloud Storage 作为 MooseFS 缓存。它可以帮助用户提高 MooseFS 系统的性能。
-
mfshdd:硬盘诊断工具。它可以帮助检测 MooseFS 存储节点中硬盘的健康状态。
-
mfsgetgoal: 查看设置的副本数
-
mfssetgoal:设置副本数。(必须设置在 1 到 9 之间,建议不要使用 1)。如果设置的副本数高于 Chunkservers 的总数,则副本数为 Chunkservers 的总数。
-
mfsdirinfo:查看目录详细信息。
-
mfsfileinfo:查看文件详细信息。
-
mfsgettrashtime:查看已删除文件(垃圾)的保留时间(默认为 1天)。
-
mfssettrashtime:修改已删除文件(垃圾)的保留时间。
-
mfsscadmin:用于管理MoosesFS存储集群中的文件系统实例。行实例的创建、删除、添加和删除存储节点,以及设置哈希分片策略等操作。
-
mfssetsclass:用来设置一个或多个文件或目录的存储类别。存储类别确定了文件或目录在存储设备上的位置和使用的存储策略,例如,高速缓存、磁盘存储、或者归档存储。
mfssetsclass [-c class] [-s] [-r] [-d] [-f] file or directory ...等;
三、集群部署
| 主机 | ip | 角色 |
| mfs1 | 192.168.67.41 | Master Servers |
| mfs2 | 192.168.67.42 | Chunkservers |
| mfs3 | 192.168.67.43 | Chunkservers |
| mfs4 | 192.168.67.44 | Clients |
| mfs5 | 192.168.67.45 | Chunkservers |
软件安装(Master Servers):
软件仓库(所有节点)
curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
curl "http://repository.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo

安装:
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli
systemctl enable --now moosefs-master.service
systemctl enable --now moosefs-cgiserv.service


添加解析

Chunkservers节点安装
yum install moosefs-chunkserver

修改配置:
cd /etc/mfs/
vim mfshdd.cfg
mkdir chunk1




三节点同上

Clients节点安装:
yum install moosefs-client

修改文件(挂载点)
cd /etc/mfs/
vim mfsmount.cfg
/mnt/mfscd /mnt
mkdir mfs
mfsmount



所有节点都要添加解析
测试
mkdir dir1
mkdir dir2
cd dir1
touch file1 vim file1 (文件不能为空)
mfsfileinfo file1mfsgetgoal -k dir2/
mfssetgoal -r 1 dir2/
cd dir2
touch file1
mfsfileinfo file1



四、Storage Classes
1、Storage Classes简介
MooseFS的Storage classes可以根据数据的需求来灵活的配置和选择不同的存储类型。它们可以根据应用需求来提供高性能的读写速度、数据的冗余备份和大规模的数据存储。
2、 LABEL简介
label是指对文件或目录进行标记,以便于对它们进行管理和区分。label可以是任何文本字符串,通常用于指示文件或目录的用途、状态或其他属性。例如,您可以为某个目录设置一个label,以指示它是用于存储备份文件,或者为某个文件设置一个label,以指示它是具有高优先级的任务数据。MooseFS使用label可以帮助用户更好地组织和管理文件系统中的数据。
3、示例:
同理扩容节点三

修改配置 添加标签


创建存储类及应用
(1)2S
mfsscadmin create 2S class 2s
cd dir1
mfssetsclass -r class 2s file1
mfsfileinfo file1

(2) A,B
mfsscadmin create A,B class_ab
mfssetsclass -r class ab file1
mfsfileinfo file1

(3)S,H
mkdir dir3
mfsscadmin create S,H class sh
touch file1
mfssetsclass -r class sh file1

(4)3S
mfssetgoal -r 3 dir3/
修改标签
mfsscadmin create 3S class 3s
mfssetsclass -r class 3s file1
mfsfileinfo file1



所以创建的存储类


各种组合都可以有
五、Moose File System的pacemaker高可用
| 主机 | ip | 角色 |
| mfs1 | 192.168.67.41 | Master Servers + pacemaker + ISCSI(Client) |
| mfs2 | 192.168.67.42 | Chunkservers |
| mfs3 | 192.168.67.43 | Chunkservers |
| mfs4 | 192.168.67.44 | Clients + ISCSI(Server) |
| mfs5 | 192.168.67.45 | Chunkservers |
| mfs6 | 192.168.67.46 | Master Servers + pacemaker + ISCSI(Client) |
1、安装 Master Servers
防止两台高可用主机mfs用户id不同
curl "https://repository.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
curl "http://repository.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli
systemctl enable --now moosefs-master.service
systemctl enable --now moosefs-cgiserv.service

查看id

2、pacemaker高可用
配置软件仓库
vim /etc/yum.repo.d/yyl.repo[HighAvailability]
name=rhel7.6 HighAvailability
baseurl=file:///media/addons/HighAvailability
gpgcheck=0

安装高可用
yum install -y pacemaker pcs psmisc policycoreutils-python

启动pcsd服务 设置用户密码 节点认证
systemctl enable --now pcsd.service
ssh mfs6 systemctl enable --now pcsd.serviceecho westos | passwd --stdin hacluster
ssh mfs6 'echo westos | passwd --stdin hacluster'pcs cluster auth mfs1 mfs6

创建集群
pcs cluster auth mfs1 mfs6
启动集群
pcs cluster start--all
pcs cluster enable --all

禁用stonith
pcs property set stonith-enabled=false

3、ISCSI
服务端配置:
在mfs4上添加一块硬盘

yum install targetcli -y
systemctl enable --now target

配置
/backstores/block create yyl:storage /dev/sdb1
/iscsi create iqn.2023-11.org.yyl:storage
/iscsi/iqn.2023-11.org.yyl:storage/tpg1/luns create /backstores/block/yyl:storage
/iscsi/iqn.2023-11.org.yyl:storage/tpg1/acls create iqn.2023-11.org.yyl:yylkey1

在高可用集群做客户端(mfs1,mfs6)
安装客户端:
yum install iscsi-initiator-utils.x86_64 -y
编辑认证文件
vim /etc/iscsi/initiatorname.iscsi
systemctl restart iscsid

客户端测试
iscsiadm -m discovery -t st -p 192.168.67.44
iscsiadm -m node -T iqn.2023-11.org.yyl:storage -p 192.168.67.44 -l

在服务端创建分区 格式化:
fdisk /dev/sdb
mkfs.xfs /dev/sdb1


测试挂载





应用:
在mfs文件系统
修改权限 可以启动就表示成功
取消挂载
4、添加集群资源
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.67.200 op monitor interval=30s
pcs resource create mfs ocf:heartbeat:Filesystem device=/dev/sdb1 directory=/var/lib/mfs fstype=xfs
pcs resource create mfs-master systemd:moosefs-master op monitor interval=60s
pcs resource group add groupmfs vip mfs mfs-master
5、应用
在集群所有节点添加解析

测试:





相关文章:
Linux中的MFS分布式文件系统
目录 一、MFS分布式文件系统 1、MooseFS简介 2、Moose File System的体系结构 (1)MooseFS Master (2)MooseFS Chunk Server (3)MooseFS Metalogger (4)MooseFS Client &…...
气相色谱质谱仪样品传输装置中电动针阀和微泄漏阀的解决方案
标题 摘要:针对目前国内外各种质谱仪压差法进样装置无法准确控制进气流量,且无相应配套产品的问题,本文提出了相应的解决方案和配套部件。解决方案主要解决了制作更小流量毛细管和毛细管进气端真空压力精密控制问题,微流量毛细管的…...
ArkTS基础知识
ArkTS基础知识 ArkUI开发框架 ArkTS声明式开发范式 装饰器: 用来装饰类,结构体,方法及变量。如: Entry:入口组件 Component :表示自定义组件 State 都是装饰器:组件中的状态变量,该…...
Kotlin学习(二)
2.kotlin学习(二) 1.条件控制 package com.simon.secondfun main(args: Array<String>) {//ifvar a 1var b 2var max:Intif (a > b){max a}else{max b}//作为表达式结果赋值给max1 感觉这个简单啊var max1 if(a>b)a else bprintln(ma…...
LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
根据图片生成推广文案, 用的HuggingFace中的image-caption模型 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数…...
QFontDialog开发详解
QFontDialog 类是 Qt 框架中用于选择字体的对话框类。它允许用户选择字体的各种属性,如字体名称、字号、粗体、斜体等。以下是 QFontDialog 的一些常见用法和详解: 一、QFontDialog基本用法 #include <QApplication> #include <QFontDialog> #include <QMes…...
【C++进阶之路】第七篇:异常
文章目录 一、C语言传统的处理错误的方式二、 C异常概念三、异常的使用1.异常的抛出和捕获2.异常的重新抛出3.异常安全4.异常规范 四、自定义异常体系五、C标准库的异常体系(了解)六、异常的优缺点 一、C语言传统的处理错误的方式 传统的错误处理机制&am…...
shell 判断文件是否存在(csh bash)
文章目录 前言1. -e 判断文件是否存在2. -f 判断文件是否存在且为普通文件3. -d 判断文件是否存在且为目录3. -s 判断文件是否存在且不为空4. -r 判断文件是否存在且可读5. -w 判断文件是否存在且可写6. -x 判断文件是否存在且可执行 前言 Shell 编程能提升我们工作效率&#…...
第六年到第十年是分水岭
我今年懈怠了,觉得就这样了,看到知乎上有个大神的帖子,深受触动,前五年都差不多,第六年到第十年才是分水岭,是否愿意继续努力,才是关键。拷贝如下: 作者:技术王 来源&…...
关于标准库中的string类 - c++
目录 关于string类 string类的常用接口 string类常用接口的简单模拟实现 关于string类 string类在cplusplus.com的文档介绍 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 3. string在…...
Chrome添加扩展程序
Crx4Chrome 下载crx 打开扩展程序 如果拖动crx文件到扩展程序提示只能通过Chrome应用商店添加此项内容 修改crx文件后缀为zip并解压,再拖动到扩展程序 Vue.js devtools...
C++单调向量算法:132模式枚举1简洁版
本题不同解法 包括题目及代码C二分查找算法:132 模式解法一枚举3C二分查找算法:132 模式解法二枚举2代码简洁C二分查找算法:132 模式解法三枚举1性能最佳C单调向量算法:132 模式解法三枚举1代码更简洁C二分查找算法:1…...
【ARFoundation学习笔记】2D图像检测跟踪
写在前面的话 本系列笔记旨在记录作者在学习Unity中的AR开发过程中需要记录的问题和知识点。主要目的是为了加深记忆。其中难免出现纰漏,更多详细内容请阅读原文以及官方文档。 汪老师博客 文章目录 2D图像检测创建一个图像检测工程图像追踪的禁用和启用多图像追踪…...
计算机算法分析与设计(24)---分支限界章节复习
文章目录 一、分支界限法介绍二、旅行商问题应用三、装载问题应用3.1 问题介绍与分析3.2 例题 四、0-1背包问题应用4.1 问题介绍与分析4.2 例题 一、分支界限法介绍 二、旅行商问题应用 三、装载问题应用 3.1 问题介绍与分析 3.2 例题 四、0-1背包问题应用 4.1 问题介绍与分析…...
二十三种设计模式-解密状态模式:优雅地管理对象状态
在软件开发中,经常会遇到需要根据对象的状态来改变其行为的情况。传统的实现方式可能涉及到大量的条件语句或者使用标志位来跟踪状态,导致代码复杂、难以维护。 而状态模式(State Pattern)可以提供一种优雅且灵活的解决方案&#…...
git常常用命令
这篇文章中,一些简单的,大家都知道的git 命令我就不再赘述,我只写出来最近在项目中常用到的一些命令。这些命令可以帮助我更好的开发。 git stash 请大家设想下面的场景,你的本地有两个分支,develop,fix分支…...
C语言中的大端字节序和小端字节序是什么?如何进行字节序的转换?
C语言中的大端字节序和小端字节序以及字节序的转换 引言 在计算机科学中,字节序是指多字节数据在存储或传输过程中字节的排列顺序。在C语言中,特别是在涉及二进制数据的处理、网络通信以及硬件相关的编程中,了解大端字节序和小端字节序的概…...
Flutter dio Http请求之Cookie管理
在应用开发过程中,我们进行Http通讯时会使用Cookie进行验证,今天我们就着重讲解Flutter 网络请求插件dio的cookie使用。 首先,我们要进行插件引用 # HTTP 请求 dio: ^5.1.1 cookie_jar: ^4.0.8 dio_cookie_manager: ^3.0.0# 获取沙盒路径 p…...
计算机网络的标准化工作及相关组织
一、国际化组织 计算机网络的标准化工作由一些主要的组织来进行管理和推动。以下是几个主要的计算机网络标准化的国际组织及其相关的标准: 1. 国际标准化组织(ISO):国际标准化组织负责制定各种行业的标准,包括计算机…...
智能座舱架构与芯片- (11) 软件篇 上
一、智能汽车基础软件平台分类 汽车软件主要分为应用软件和基础软件。应用软件和业务形态高度关联,不同控制器的应用软件之间差异较大。基础软件介于应用软件和硬件之间,用于屏蔽硬件特性、支撑应用软件。可有效地实现应用软件与硬件之间解耦࿰…...
保姆级教程:用C++从零实现SGM立体匹配的代价计算(附OpenCV 4.8+代码)
从零实现SGM立体匹配的代价计算:C与OpenCV实战指南 立体视觉是计算机视觉领域的核心技术之一,而半全局匹配(Semi-Global Matching, SGM)算法因其在精度和效率间的平衡成为工业界首选方案。本文将带您深入SGM算法的核心环节——代价计算,通过C…...
API集成:企业数字化的隐秘动脉
于企业的IT范畴之内,数据如同血液那般流动,然而则API乃是连接器官的血管。当一家公司同时运用ERP、CRM、WMS、HRM等数十个系统之际,要是没有高效的集成方式,那么这些系统就会变成互不相通的信息孤岛,财务部的数据需手动…...
macOS自动化运维:OpenClaw与Telegram的可靠通信与自愈技能包实践
1. 项目概述:一个为macOS上的OpenClaw打造的自动化守护技能如果你在macOS上运行OpenClaw,并且重度依赖Telegram作为任务通知和状态同步的核心渠道,那么你大概率遇到过这样的场景:某个关键的自动化任务执行完毕,需要向T…...
使用Deno Deploy部署Azure OpenAI代理,无缝兼容开源ChatGPT客户端
1. 项目概述与核心价值 如果你正在使用一些开源的 ChatGPT 客户端,比如 ChatGPT-Next-Web、LobeChat 或者 OpenCat,但苦于 OpenAI 的 API 访问不稳定或者费用较高,那么将后端切换到微软 Azure OpenAI 服务是一个相当靠谱的选择。Azure 的服务…...
享界 S9 座椅险夹小孩引热议,鸿蒙智行紧急回应:未达防夹触发阈值
最近有用户在体验享界 S9 展车时,语音开启了“零重力座椅”模式,但当时副驾上还坐着一名体重较轻的小女孩。由于系统压力传感器未能识别到孩子的存在(未达到防夹触发阈值),座椅继续执行了折叠动作,家长情急…...
特斯拉Model 3/Y CAN总线DBC文件:3步掌握汽车数据解析的终极指南
特斯拉Model 3/Y CAN总线DBC文件:3步掌握汽车数据解析的终极指南 【免费下载链接】model3dbc DBC file for Tesla Model 3 CAN messages 项目地址: https://gitcode.com/gh_mirrors/mo/model3dbc 特斯拉Model 3/Y的CAN总线通讯协议是汽车电子开发者和技术爱好…...
开发智能客服系统时如何利用 Taotoken 实现模型的热切换与降级
开发智能客服系统时如何利用 Taotoken 实现模型的热切换与降级 在构建面向真实用户的智能客服系统时,服务的连续性与稳定性至关重要。单一依赖某个大模型服务,可能会因服务方临时的延迟波动、配额耗尽或计划外维护而导致用户体验下降甚至服务中断。将 T…...
保姆级图解:AMBA CHI协议Link层握手与Credit机制(附信号时序)
深入解析AMBA CHI协议Link层:从握手到Credit流控的实战指南 在复杂的SoC设计中,AMBA CHI协议作为新一代高性能互连标准,其Link层的握手与Credit机制往往是工程师们最先遇到的技术门槛。想象一下,当你面对LINKACTIVEREQ/ACK信号跳变…...
QueryExcel:终极Excel批量搜索工具,100个文件秒级查找
QueryExcel:终极Excel批量搜索工具,100个文件秒级查找 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 还在为在几十个Excel文件中查找数据而加班到深夜吗?还在为核对…...
Godot引擎集成MCP协议:AI智能体如何直接操作游戏开发项目
1. 项目概述:当游戏引擎遇见AI智能体如果你是一位游戏开发者,或者对AI应用开发感兴趣,最近可能已经注意到了“MCP”(Model Context Protocol)这个词。它正在成为连接AI模型与外部工具、数据源的新兴标准协议。而youich…...


