当前位置: 首页 > article >正文

超详解glusterfs部署

glusterfs部署

GlusterFS 是一个开源的分布式文件系统,旨在提供高性能、高可用性和可扩展性,适用于存储大量数据。它通过将多个存储节点组合成一个统一的文件系统,允许用户透明地访问分布在不同节点上的数据。

主要组件

  • 存储砖块(Bricks):存储砖块是 GlusterFS 的基本存储单元,通常是服务器上的一个目录或挂载点。
  • 卷(Volumes):卷是由一个或多个存储砖块组成的逻辑存储空间,用户通过卷来访问数据。
  • 客户端(Clients):客户端是访问 GlusterFS 卷的应用程序或系统,通过挂载卷来读写数据。
  • 管理节点(Glusterd):管理节点负责集群的管理和配置,运行glusterd 服务。

卷类型

  • 分布式卷(Distributed Volume):将数据分散存储在多个存储节点上,适合存储大量小文件,但没有数据冗余。
  • 复制卷(Replicate Volume):将数据复制到多个存储节点上,提供数据冗余和高可用性。
  • 条带卷(Stripe Volume):将数据分割成多个条带,分散存储在多个存储节点上,适合大文件的存储。
  • 分布式复制卷(Distributed Replicate Volume):结合了分布式卷和复制卷的特点,既提供数据冗余,又扩展存储容量。

工作原理及应用场景

  • 数据分布:GlusterFS 使用哈希算法将数据分布到不同的存储砖块上,确保数据的均匀分布。
  • 数据访问:客户端通过挂载卷来访问数据,GlusterFS 会透明地处理数据的分布和访问。
  • 故障恢复:在复制卷中,如果某个存储节点发生故障,GlusterFS 会自动从其他副本中恢复数据。
  1. 大数据存储:适用于存储和处理大量数据,如 Hadoop、Spark 等大数据平台。
  2. 云存储:作为云存储后端,提供可扩展的存储解决方案。
  3. 媒体存储:用于存储视频、音频等媒体文件,支持高带宽的数据访问。
  4. 企业存储:作为企业级存储解决方案,提供高性能和高可用性。

部署

存储空间配置
将ubuntu-vg-1下的所有空间都给lv-data,每台服务器都需要这样操作
lvcreate -l +100%FREE -n lv-data ubuntu-vg-1格式化
mkfs.ext4 /dev/ubuntu-vg-1/lv-data 创建文件夹
mkdir -p /gluster/data挂载
mount /dev/ubuntu-vg-1/lv-data /gluster/
echo '/dev/minio-vg-1/lv-data /gluster ext4 defaults 0 0' >> /etc/fstab
组成gluster集群
服务端下载
apt install -y glusterfs-server
systemctl start glusterd
systemctl enable glusterd
systemctl status glusterd客户端(可能之间提示已下载)
apt install -y glusterfs-client glusterfs-common
systemctl enable glusterd探测其他机器
sudo gluster peer probe 172.32.1.13
sudo gluster peer probe 172.32.1.15查看状态
gluster peer status创建卷(不能直接使用挂载点,需要挂载点下面创建一个文件夹,这里创建的分布式卷)
gluster volume create gv0  172.32.1.11:/gluster/data  172.32.1.13:/gluster/data 172.32.1.15:/gluster/data
启动配置
gluster volume start gv0查看状态
gluster volume info挂载(三台机器都需要,挂载到指定目录供设备使用)
mount -t glusterfs 172.32.1.11:/gv0 /data
echo '172.32.1.11:/gv0 /data ext4 defaults 0 0' >> /etc/fstab查看
df -hT
用户权限配置
三台机器都设置
groupadd -g 2000 glusterusers
chown root:glusterusers /data
chmod 775 /data
usermod -aG glusterusers server_01
usermod -aG glusterusers server_02
usermod -aG glusterusers server_03
glusterfs 删除空间
umount /data如果卸载失败,说明可能有进程正在使用,运行(一个节点umount就行):
fuser -vm /data
kill -9 <进程ID>
umount /data删除lv
lvremove /dev/ubuntu-vg2/lv-data查看
lvs删除gluster volume
sudo gluster volume delete gv0
sudo rm -rf /data/.glusterfs
sudo rm -rf /data/.trashcan

相关文章:

超详解glusterfs部署

glusterfs部署 GlusterFS 是一个开源的分布式文件系统&#xff0c;旨在提供高性能、高可用性和可扩展性&#xff0c;适用于存储大量数据。它通过将多个存储节点组合成一个统一的文件系统&#xff0c;允许用户透明地访问分布在不同节点上的数据。 主要组件 存储砖块&#xff…...

总结一下常见的EasyExcel面试题

说一下你了解的POI和EasyExcel POI&#xff08;Poor Obfuscation Implementation&#xff09;&#xff1a;它是 Apache 软件基金会的一个开源项目&#xff0c;为 Java 程序提供了读写 Microsoft Office 格式文件的功能&#xff0c;支持如 Excel、Word、PowerPoint 等多种文件格…...

【JAVA】十、基础知识“类和对象”干货分享~(三)

目录 1. 封装 1.1 封装的概念 1.2 访问限定符 public&#xff08;公开访问&#xff09; private&#xff08;私有访问&#xff09; 1.3 包 1.3.1 包的概念 1.3.2 导入包中的类 1.3.3 自定义包 2. static成员 2.1 static变量&#xff08;类变量&#xff09; 2.1.1 sta…...

DeepSeek+SpringAI家庭AI医生

文章目录 项目架构项目开发内容项目用户用例图项目地址开发环境大模型使用本地&#xff1a;Ollama部署DeepSeek离线与在线api大模型客户端使用 数据库脚本代码deepseek创建定制医生模型 内网互通原则云服务器类型 项目架构 项目开发内容 项目用户用例图 项目地址 FamilyAIDoct…...

PyTorch:解锁AI新时代的钥匙

&#xff08;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff09;。 揭开PyTorch面纱 对于许多刚开始接触人工智能领域的朋友来说&#xff0c;PyTorch这个名字或许既熟悉又陌生。…...

C++第14届蓝桥杯b组学习笔记

1. 日期统计 小蓝现在有一个长度为 100100 的数组&#xff0c;数组中的每个元素的值都在 00 到 99 的范围之内。数组中的元素从左至右如下所示&#xff1a; 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4…...

解锁工业通信:Profibus DP到ModbusTCP网关指南!

解锁工业通信&#xff1a;Profibus DP到ModbusTCP网关指南&#xff01; 在工业自动化领域&#xff0c;随着技术的不断进步和应用场景的日益复杂&#xff0c;不同设备和系统之间的通讯协议兼容性问题成为了工程师们面临的一大挑战。尤其是在Profibus DP和Modbus/TCP这两种广泛应…...

每日一题(小白)字符串娱乐篇16

分析题意可以了解到本题要求在一串字符串中找到所有组合起来排序递增的字符串。我们可以默认所有字符在字符串中的上升序列是1&#xff0c;从第一个字符开始找&#xff0c;如果后面的字符大于前面的字符就说明这是一个上序列那么后面字符所在的数组加一&#xff0c;如果连接不上…...

面试算法高频01

题目描述 验证回文串 给定一个字符串&#xff0c;验证它是否是回文串&#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true示例 2: 输入: "race a car" 输出: falseimport…...

如何深刻理解Reactor和Proactor

前言&#xff1a; 网络框架的设计离不开 I/O 线程模型&#xff0c;线程模型的优劣直接决定了系统的吞吐量、可扩展性、安全性等。目前主流的网络框架&#xff0c;在网络 IO 处理层面几乎都采用了I/O 多路复用方案(又以epoll为主)&#xff0c;这是服务端应对高并发的性能利器。 …...

java基础 数组Array的介绍

Array 数组定义一维数组多维数组动态数组常见方法Arrays排序1.sort() 排序 2.parallelSort() 排序 查找&#xff1a;binarySearch()填充&#xff1a;fill()比较&#xff1a;equals() 和 deepEquals()复制&#xff1a;copyOf() 和 copyOfRange()转换为列表&#xff1a;asList()转…...

Elixir语言的函数定义

Elixir语言的函数定义 Elixir是一种基于Erlang虚拟机&#xff08;BEAM&#xff09;的函数式编程语言&#xff0c;因其并发特性及可扩展性而受到广泛欢迎。在Elixir中&#xff0c;函数是程序的基本构建块&#xff0c;了解如何定义和使用函数对于掌握这门语言至关重要。本文将深…...

我的NISP二级之路-02

目录 一.数据库 二.TCP/IP协议 分层结构 三.STRIDE模型 四.检查评估与自评估 检查评估 自评估 五.信息安全应急响应过程 六.系统工程 七.SSE-CMM 八.CC标准 九.九项重点工作 记背: 一.数据库 关于数据库恢复技术&#xff0c;下列说法不正确的是&#xff1a…...

k8s1.24升级1.28

0、简介 这里只用3台服务器来做一个简单的集群&#xff0c;当前版本是1.24.17目标升级到1.28.17 地址主机名192.168.160.40kuber-master-1192.168.160.41kuber-master-2192.168.160.42kuber-node-1 因为1.24已经更换过了容器运行时&#xff0c;所以之后的升级相对就会简单&am…...

常见的微信个人号二次开发功能

一、常见开发功能 1. 好友管理 好友列表维护 添加/删除好友 修改好友信息&#xff08;备注、标签等&#xff09; 分组管理 创建/编辑/删除标签 好友分类与筛选 2. 消息管理 信息发送 支持多类型内容&#xff1a;文本、图片、视频、文件、小程序、名片、URL链接等 附加功…...

unity的dots中instantiate克隆对象后,对象会在原位置闪现的原因和解决

原因 在Entity中有两个位置信息&#xff0c;一个是local transform。一个是local to world 其中local transform负责具体位置&#xff0c;local to world 负责渲染位置&#xff0c;即图像的渲染的位置是根据local to world的。 local to world 的更新是引擎自己控制的&#x…...

去中心化固定利率协议

核心机制与分类 协议类型&#xff1a; 借贷协议&#xff08;如Yield、Notional&#xff09;&#xff1a;通过零息债券模型&#xff08;如fyDai、fCash&#xff09;锁定固定利率。 收益聚合器&#xff08;如Saffron、BarnBridge&#xff09;&#xff1a;通过风险分级或博弈论…...

Java面试黄金宝典31

1. 什么是封锁协议 定义&#xff1a;封锁协议是在运用封锁机制时&#xff0c;为了保证事务的一致性和隔离性&#xff0c;对何时申请封锁、持锁时间以及何时释放封锁等问题制定的规则。它可防止并发操作引发的数据不一致问题&#xff0c;如丢失修改、不可重复读和读 “脏” 数据…...

R语言——绘制生命曲线图(细胞因子IL5)

绘制生命曲线图&#xff08;根据细胞因子&#xff09; 说明流程代码加载包读取Excel文件清理数据重命名列名处理IL-5中的"<"符号 - 替换为检测下限的一半首先找出所有包含"<"的值检查缺失移除缺失值根据IL-5中位数将患者分为高低两组 创建生存对象拟…...

在内网环境中为 Gogs 配置 HTTPS 访问

在内网环境中为 Gogs 配置 HTTPS 访问&#xff0c;虽然不需要公网域名&#xff0c;但仍需通过自签名证书或私有证书实现加密。以下是详细步骤和方案&#xff1a; 一、核心方案选择 方案适用场景优点缺点自签名证书快速测试、临时使用无需域名&#xff0c;快速生成浏览器提示“…...

神马系统8.5搭建过程,附源码数据库

项目介绍 神马系统是多年来流行的一款电视端应用&#xff0c;历经多年的发展&#xff0c;在稳定性和易用性方面都比较友好。 十多年前当家里的第一台智能电视买回家&#xff0c;就泡在某论坛&#xff0c;找了很多APP安装在电视上&#xff0c;其中这个神马系统就是用得很久的一…...

大模型论文:Improving Language Understanding by Generative Pre-Training

大模型论文&#xff1a;Improving Language Understanding by Generative Pre-Training OpenAI2018 文章地址&#xff1a;https://www.mikecaptain.com/resources/pdf/GPT-1.pdf 摘要 自然语言理解包括各种各样的任务&#xff0c;如文本蕴涵、问题回答、语义相似性评估和文…...

SDL视频显示函数

文章目录 1. **`SDL_Init()`**2. **`SDL_CreateWindow()`**3. **`SDL_CreateRenderer()`**4. **`SDL_CreateTexture()`**5. **`SDL_UpdateTexture()`**6. **`SDL_RenderCopy()`**7. **`SDL_RenderPresent()`**8. **`SDL_Delay()`**9. **`SDL_Quit()`**总结示例代码:代码说明:…...

[ctfshow web入门] web18

前置知识 js(javascript)语言用于前台控制&#xff0c;不需要知道他的语法是什么&#xff0c;以高级语言的阅读方式也能看懂个大概。 在JavaScript中&#xff0c;confirm()是一个用于显示确认对话框的内置函数&#xff0c;不用知道怎么使用。 信息收集 提示&#xff1a;不要…...

基于 docker 的 Xinference 全流程部署指南

Xorbits Inference (Xinference) 是一个开源平台&#xff0c;用于简化各种 AI 模型的运行和集成。借助 Xinference&#xff0c;您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理&#xff0c;并创建强大的 AI 应用。 一、下载代码 请在控制台下面执行…...

Vue组件化开发深度解析:Element UI与Ant Design Vue对比实践

一、Vue组件化开发的核心优势 1.1 组件化架构的天然优势 Vue的组件系统是其最核心的特性之一&#xff0c;采用单文件组件&#xff08;.vue&#xff09;形式&#xff0c;将HTML、CSS和JavaScript组合在同一个文件中&#xff0c;形成高内聚、低耦合的代码单元。这种设计显著提升…...

SQL Server查询性能下降:执行计划不稳定与索引优化

问题现象&#xff1a; SQL Server 2022 中某些关键查询性能突然下降&#xff0c;执行时间从毫秒级增至数秒&#xff0c;日志中未报错&#xff0c;但查询计划显示低效的索引扫描或键查找。 快速诊断 捕获实际执行计划&#xff1a; -- 启用实际执行计划 SET STATISTICS XML, TIME…...

【学Rust写CAD】31 muldiv255函数(muldiv255.rs,已经取消)

源码 // Calculates floor(a*b/255 0.5) #[inline] pub fn muldiv255(a: u32, b: u32) -> u32 {// The deriviation for this formula can be// found in "Three Wrongs Make a Right" by Jim Blinn.let tmp a * b 128;(tmp (tmp >> 8)) >> 8 }代…...

`uia.WindowControl` 是什么:获取窗口文字是基于系统的 UI 自动化接口,而非 OCR 方式

uia.WindowControl 是什么:获取窗口文字是基于系统的 UI 自动化接口,而非 OCR 方式 uia.WindowControl 通常是基于 Windows 系统的 UI 自动化框架(如 pywinauto 中的 uia 模块)里用于表示窗口控件的类。在 Windows 操作系统中,每个应用程序的窗口都可以看作是一个控件,ui…...

vue3 处理文字 根据文字单独添加class

下面写的是根据后端返回的html 提取我需要的标签和字 将他们单独添加样式 后端返回的数据 大概类似于<h1>2024年“双11”购物节网络零售监测报告</h1><p>表1 “双11” 期间网络零售热销品类TOP10</p> function checkfun(newList){if (newList) {let …...