GlusterFS 分布式文件系统 搭建及使用

一、GlusterFS

GlusterFS 是一个开源的分布式文件系统,旨在提供高性能、可扩展性和可靠性,适用于现代数据中心和云环境。它以横向扩展的方式设计,可以在多台服务器之间共享文件系统,为应用程序提供统一的文件存储服务。

GlusterFS 的核心理念是将多台普通的服务器组合成一个高性能的分布式存储系统。它采用了分布式哈希表来管理数据存储和访问,通过将文件划分为小块并存储在不同服务器上,实现了数据的分布式存储和负载均衡。这种分布式存储模式不仅提高了存储容量和性能,还提高了系统的可靠性,因为数据的冗余备份可以在服务器故障时保证数据的可用性。

GlusterFS 提供了简单而灵活的管理接口,使得管理员可以轻松地管理存储集群并对其进行扩展。它支持多种存储协议,包括标准的网络文件系统(NFS)、Server Message BlockSMB)和本地 POSIX 文件系统,使得应用程序可以通过不同的协议访问存储集群。

由于其高性能、可扩展性和易用性,GlusterFS 在大规模的数据存储和处理场景中被广泛应用,包括云计算、大数据分析、内容交付网络(CDN)等领域。它是一个强大而灵活的分布式文件系统解决方案,可以帮助用户构建可靠的存储基础设施,满足不断增长的存储需求。

GlusterFS的总体架构如下:

在这里插入图片描述

GlusterFS 比较核心的是存储卷,支持 7 种卷类型,即 分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷、分布式条带复制卷,每种卷的特点如下:

分布式卷(Distributed Volume):分布式卷根据hash算法将数据均匀地分布在不同服务器上,每个文件被分割成固定大小的块,然后分别存储在不同的服务器上。这种分布式存储方式可以提高存储容量和性能,因为数据可以并行地从多个服务器上读取和写入。适用于需要大容量和高性能存储的场景,如大规模数据存储、内容交付网络(CDN)等。缺点是文件没有冗余副本,一旦某台服务宕机,其中存储的数据无法读取。

复制卷(Replicated Volume):复制卷在多个服务器之间复制数据,以提高数据的可靠性和容错能力。每个文件会被复制到多个服务器上,当某个服务器发生故障时,数据仍然可用。但是需要注意的是,由于数据被复制,这会增加存储开销。适用于对数据可靠性要求较高的场景,如数据备份、关键业务应用等。

条带化卷(Striped Volume):条带化卷将文件分割成固定大小的块,并将这些块分别存储在不同的服务器上。这样可以提高读写性能,因为数据可以并行地从多个服务器上读取和写入。适用于需要高吞吐量和低延迟的场景,如大规模数据处理、科学计算等。

分布式复制卷(Distributed Replicated Volume):分布式复制卷结合了分布式卷和复制卷的特点,既实现了数据的横向扩展和负载均衡,又提高了数据的可靠性和容错能力。每个文件会被分割成固定大小的块,并复制到多个服务器上。适用于需要兼顾数据容量、性能和可靠性的场景,如大规模数据存储和分析、虚拟化环境等。

分布式条带化卷(Distributed Striped Volume):分布式条带化卷结合了分布式卷和条带化卷的特点,既实现了数据的横向扩展和负载均衡,又提高了读写性能。每个文件会被分割成固定大小的块,并分别存储在多个服务器上。适用于需要高性能和横向扩展的场景,如大规模并行计算、大数据处理等。

分布式复制条带化卷(Distributed Replicated Striped Volume):结合了分布式卷、复制卷和条带化卷的特点,既实现了数据的横向扩展、可靠性和读写性能。每个文件会被分割成固定大小的块,并复制到多个服务器上,然后分别存储在不同的服务器上。适用于需要高性能、高可靠性和横向扩展的场景,如大规模数据处理和存储、分布式文件系统等。

分布式条带化复制卷(Distributed Striped Replicated Volume):结合了分布式卷、条带化卷和复制卷的特点,既实现了数据的横向扩展、读写性能和可靠性。每个文件会被分割成固定大小的块,并分别存储在多个服务器上,然后在每个服务器上进行数据复制。适用于需要高性能、高可靠性和横向扩展的场景,如大规模并行计算、分布式存储系统等。

二、GlusterFS 搭建

部署规划:

ip别名用途
11.0.1.129node1glusterfs-server
11.0.1.130node2glusterfs-server
11.0.1.131node3glusterfs-server
11.0.1.132clientglusterfs-client

在四台机器上配置 hosts 增加映射:

vi /etc/hosts
11.0.1.129   node1
11.0.1.130   node2
11.0.1.131   node3

在这里插入图片描述

1. glusterfs-server 端部署

在三台服务端机器上安装 glusterfs-server :

yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuseglusterfs-rdma --skip-broken

启动 glusterFS

systemctl start glusterd.service

设置开机自启:

systemctl enable glusterd.service

查看启动状态:

systemctl status glusterd.service

在这里插入图片描述

状态为 running 为正常。

可以在任意一台中,将另两个节点加入集群,下面示例在 node1 节点上操作:

gluster peer probe node2
gluster peer probe node3

然后可以在任意一台中查看集群状态:

gluster peer status

在这里插入图片描述

如果在node2查看就是 node1node3 的信息:

在这里插入图片描述

查看 volume 状态:

gluster volume info

在这里插入图片描述

由于此时没有创建任何 volume ,所以查看为空。

创建分布式卷

在三台机器上分别创建文件存储目录:

mkdir -p /data/gluster/distributed

在其中一个节点下创建分布式卷。

gluster 默认情况下就是分布式卷,所以可以直接创建:

gluster volume create distributedVolume node1:/data/gluster/distributed node2:/data/gluster/distributed node3:/data/gluster/distributed force

其中:

  • distributedVolume 是卷的名称。
  • node1:/data/gluster、node2:/data/gluster 和 node3:/data/gluster 分别指定了每个节点上存储卷数据的路径。
  • force: 强制创建卷,即使存在相同名称的卷也会被覆盖。

在这里插入图片描述

启动该存储卷:

gluster volume start distributedVolume 

在这里插入图片描述

查看 volume 状态:

gluster volume info

在这里插入图片描述

创建复制卷

在三台机器上分别创建文件存储目录:

mkdir -p /data/gluster/replicated

创建复制卷,副本数为 3 ,也就是会在每个节点上存一份:

gluster volume create replicatedVolume replica 3 node1:/data/gluster/replicated node2:/data/gluster/replicated node3:/data/gluster/replicated force

其中:

  • replicatedVolume 是卷的名称。
  • replica 3:指定副本的数量。
  • node1:/data/gluster1、node2:/data/gluster1 和 node3:/data/gluster1 分别指定了每个节点上存储卷数据的路径。
  • force: 强制创建卷,即使存在相同名称的卷也会被覆盖。

在这里插入图片描述

启动该存储卷:

gluster volume start replicatedVolume 

在这里插入图片描述

查看 volume 状态:

gluster volume info

在这里插入图片描述

2. glusterfs-client 端部署

安装依赖:

yum install -y glusterfs glusterfs-fuse

创建挂载目录:

mkdir -p /gluster/distributed
mkdir -p /gluster/replicated

分布式卷挂载:

mount -t glusterfs node1:/distributedVolume /gluster/distributed

在这里插入图片描述

复制卷挂载:

mount -t glusterfs node1:/replicatedVolume /gluster/replicated

在这里插入图片描述

查看磁盘情况:

df -h

在这里插入图片描述

可以看到两个磁盘情况,由于我测试环境,给的磁盘较小,不过可以可出分布式卷式复制券的三倍大小。

三、文件测试

使用客户端机器上在分布式卷目录下创建文件:

cat > /gluster/distributed/test.txt << EOF
00011111222
EOF

分别查看 node1、node2、node3 的分布式卷下的情况:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

可以看出文件 hash 存储到了 node2 节点上。

使用客户端机器上在复制卷目录下创建文件:

cat > /gluster/replicated/test.txt << EOF
00011111222
EOF

分别查看 node1、node2、node3 的分布式卷下的情况:

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

可以看出文件复制券会根据 replica 的大小,在相关的节点上都存储一份。

四、其它类型卷的使用及操作命令

分布式复制卷,机器数最少需要replica 的整数倍,如果指定 replica 2,则最少也需要 4 台机器:

gluster volume create volumeName replica 2 transport tcp node1:/data node2:/data node3:/data node4:/data 

条带卷,将文件切割成数据块,分别存储到 stripe x 个节点中。

gluster volume create volumeName stripe 2 transport tcp node1:/data node2:/data 

分布式条带卷,机器数最少需要stripe 的整数倍,如果指定 stripe 2 ,则最少需要 4 台机器:

gluster volume create volumeName  stripe 2 transport tcp node1:/data node2:/data  node3:/data node4:/data 

条带复制卷,机器数最少需要stripe+ replica台 ,指定 stripe 2replica 2,则需要 4 台机器:

gluster volume create volumeName   stripe 2 replica 2 transport tcp node1:/data node2:/data  node3:/data node4:/data 

分布式条带复制卷,机器数需要是stripe+ replica 的整数倍,如果指定 stripe 2replica 2,的话,就最少需要 8 台机器:

gluster volume create volumeName stripe 2 replica 2 transport tcp node1:/data node2:/data node3:/data node4:/data node5:/data node6:/data node7:/data node8:/data

查看所有卷:

gluster volume list

停止某个卷:

gluster volume stop volumeName

删除某个卷:

gluster volume delete volumeName

需要同时删除该卷下的 .glusterfs/ .trashcan/ 目录。

移除某个主机节点:

gluster peer detach node3

设置某个卷的 ip 访问限制:

gluster volume set volumeName auth.allow 10.6.0.*,10.7.0.*

为某个已经存在的卷添加节点,如果是复制卷或者条带卷,每次添加的 Brick 数必须是 replica 或者 stripe 的整数倍:

gluster volume add-brick volumeName node4:/data

为某个已经存在的卷移除节点,注意移除后剩余的机器需要能保证大于等于最小机器数:

gluster volume remove-brick volumeName node4:/data

五、参数调优

5.1 定磁盘使用配额

开启配额:

gluster volume quota volumeName enable

限制最大使用 100G:

gluster volume quota volumeName limit-usage / 100GB

5.2 开启异步操作

gluster volume set volumeName performance.flush-behind on

5.3 调整 io 线程的数量

gluster volume set volumeName performance.io-thread-count 32

5.4 使用缓存

# 设置缓存大小
gluster volume set models performance.cache-size 4GB
# 开启回写,先写到缓存,再刷到磁盘
gluster volume set models performance.write-behind on

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C 数据结构】线性表

文章目录 【 1. 线性表 】【 2. 顺序存储结构、链式存储结构 】【 3. 前驱、后继 】 【 1. 线性表 】 线性表&#xff0c;全名为线性存储结构&#xff0c;线性表结构存储的数据往往是可以依次排列的&#xff08;不考虑数值大小顺序&#xff09;。 例如&#xff0c;存储类似 {1…

蓝桥杯-数组分割

问题描述 小蓝有一个长度为 N 的数组 A 「Ao,A1,…,A~-1]。现在小蓝想要从 A 对应的数组下标所构成的集合I 0,1,2,… N-1 中找出一个子集 民1&#xff0c;那么 民」在I中的补集为Rz。记S∑reR 4&#xff0c;S2∑rERA,&#xff0c;我们要求S、和 S,均为偶数&#xff0c;请问在这…

c语言-----数组知识汇总

前言 本文为我学习数组知识点之后&#xff0c;对c语言的数组部分进行的知识点汇总。 简单数组介绍 简单来说&#xff0c;数组就是一个数据组&#xff0c;像一个箱子&#xff0c;里面放有多个数据。 [1,2,3,4,5] 数组的定义 基础定义 语法&#xff1a; 数据类型 数组名[数组…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息&#xff08;4.14&#xff09; 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截&#xff0c;ヾ(◍∇◍)&#xff89;&#xff9e;加…

基于SpringBoot实现的在线拍卖系统

系统开发环境 编程语言&#xff1a;Java数据库&#xff1a;MySQL容器&#xff1a;Tomcat工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统实现 管理员功能模块 首页 修改密码 用户管理 商品类型管理 拍卖商品 竞拍公告 轮播图 历史竞拍管理 竞拍订单管理 留言板管理 用户…

多输入多输出 | Matlab实现XGboost多输入多输出预测

多输入多输出 | Matlab实现XGboost多输入多输出预测 目录 多输入多输出 | Matlab实现XGboost多输入多输出预测预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 Matlab实现XGboost多输入多输出预测 1.data为数据集&#xff0c;10个输入特征&#xff0c;3个输出变量…

使用 vue3-sfc-loader 加载远程Vue文件, 在运行时动态加载 .vue 文件。无需 Node.js 环境,无需 (webpack) 构建步骤

加载远程Vue文件 vue3-sfc-loader vue3-sfc-loader &#xff0c;它是Vue3/Vue2 单文件组件加载器。 在运行时从 html/js 动态加载 .vue 文件。无需 Node.js 环境&#xff0c;无需 (webpack) 构建步骤。 主要特征 支持 Vue 3 和 Vue 2&#xff08;参见dist/&#xff09;仅需…

UDP实现Mini版在线聊天室

实现原理 只有当客户端先对服务器发送online消息的时候&#xff0c;服务器才会把客户端加入到在线列表。当在线列表的用户发消息的时候&#xff0c;服务器会把消息广播给在线列表中的所有用户。而当用户输入offline时&#xff0c;表明自己要下线了&#xff0c;此时服务器把该用…

服务器docker应用一览

文章目录 一、需求概况二、业务流程三、运行效果四、实现过程1. 基础前提2. 源码放送3.核心代码4. 项目打包5.部署步骤 一、需求概况 现有某云主机服务器&#xff0c;用来做项目演示用&#xff0c;上面运行了docker应用&#xff0c;现希望有一总览页面&#xff0c;用来展示部署…

HC-SR04(超声波模块)

工具 1.Proteus 8 仿真器 2.keil 5 编辑器 原理图 讲解 简介 HC-SR04超声波模块是一种常用的测距模块&#xff0c;通过不断检测超声波发射后遇到障碍物所反射的回波&#xff0c;从而测出发射和接收回波的时间差&#xff0c;并据此求出距离。它主要由两个压电陶瓷超声传感器…

Centos7查看内存使用情况

Centos7查看内存使用情况 free -b&#xff1a;以字节为单位显示内存使用情况。-k&#xff1a;以KB为单位显示内存使用情况&#xff08;默认选项&#xff09;。-m&#xff1a;以MB为单位显示内存使用情况。-g&#xff1a;以GB为单位显示内存使用情况。-t&#xff1a;在输出的最…

C++知识点总结(29):递归练习

一、满足条件的值 1. 审题 已知&#xff1a; S 1 2 4 7 11 16 … S12471116… S12471116… 递归求解刚好大于等于 5000 5000 5000 时 S S S 的值。 2. 参考答案 #include <iostream> using namespace std;// 定义递归函数&#xff0c;计算第x个数的值 int f(…

【Python】使用OPC UA创建数据服务器

目录 准备工作服务器设置创建或获取节点设置节点值启动服务器查看服务器客户端总结 在工业自动化和物联网&#xff08;IoT&#xff09;领域&#xff0c;OPC UA&#xff08;开放平台通信统一架构&#xff09;已经成为一种广泛采用的数据交换标准。它提供了一种安全、可靠且独立于…

Mixed-Query Transformer:统一的图像分割架构

Mixed-Query Transformer:统一的图像分割架构 摘要IntroductionRelated WorkMethodMQ-Former ArchitectureObject Query Strategies Mixed-Query Transformer: A Unified Image Segmentation Architectur 摘要 在现有的一体化图像分割模型中&#xff0c;要么在多个任务上采用统…

学浪已购买视频怎么下载到本地?

许多学习者在学浪购买了丰富的课程&#xff0c;然而&#xff0c;一些课程存在时间限制&#xff0c;使得学习者希望将其下载并永久保存。在这里&#xff0c;我们将介绍一款名为小浪助手的工具&#xff0c;它能够帮助你轻松将学浪已购买的视频下载到本地&#xff0c;让学习变得更…

Django处理枚举(枚举模型)以及source的使用

Django处理枚举-枚举模型 1、定义模型类、序列化器类2、对上面这些场景使用source参数3、支持连表查询4、自定义序列化输出方法5、案例5 1、定义模型类、序列化器类 定义模型类models.py&#xff1b;项目模型类、接口模型类、用例模型类 from django.db import modelsclass T…

图书管理系统!牛逼!

今天给大家分享一套基于SpringbootVue的图书管理系统源码&#xff0c;在实际项目中可以直接复用。(免费提供&#xff0c;文末自取) ​一、系统运行图&#xff08;设计报告和接口文档&#xff09; 1、登陆页面 2、后台页面 3、设计报告包含接口文档 二、系统搭建视频教程 源码…

12-LINUX--进程间的通信

进程间通信&#xff1a;采用IPC机制&#xff08;进程间的用户空间相互独立&#xff0c;内核空间共享&#xff09;&#xff0c;有管道&#xff0c;信号量&#xff0c;共享内存&#xff0c;消息队列&#xff0c;套接字。 一.管道 管道可以用来在两个进程之间传递数据&#xff0c…

终端工具命令行颜色配置(解决终端工具连上服务器之后,无颜色问题)

本期主题&#xff1a; 讲解使用mobaxterm等终端工具连上服务器&#xff0c;但是命令行没有颜色的问题 目录 1. 问题描述2. 原因解释3.测试 1. 问题描述 使用终端工具&#xff08;Mobaxterm等&#xff09;连上服务器之后&#xff0c;发现终端工具没有颜色&#xff0c;如下图&am…

Python学习从0到1 day25 第二阶段 SQL ② Python操作数据库

少年有梦&#xff0c;不应至于心动&#xff0c;更要付诸行动 —— 24.4.12 pymysql 除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行SQL从而操作数据库 在Python中&#xff0c;使用第三方库&#xff1a;pymysql来完成对MySQl数据库的操作 安装 pip install py…