Gluster分布式文件系统

Gluster分布式文件系统Gluster 分布式文件系统概述 GlusterFS GlusterFileS 是一个开源的分布式文件系统 GlusterFS 是 Scale Out 存储解决方案 Gluster 的核心 具有强大的横向扩展能力 通过扩展能够支持数 PB 存储容量和处理数千客户端 RDMA 网络将物理分布的存储资源聚集在一起 使用单一全局命名空间来管理数据 GlusterFS 基于可堆叠的用户空间设计 可为各种不同的数据负载提供优异的性能 基本术语名称解释 Brick 最基本的存储

Gluster分布式文件系统

概述

GlusterFS (Gluster File System) 是一个开源的分布式文件系统,GlusterFS 是 Scale-Out 存储解决方案 Gluster 的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。 RDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS 基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。

基本术语

名称 解释
Brick 最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用。
Volume 一个卷。在逻辑上由N个bricks组成。
FUSE Unix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统。
Glusterd Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
POSIX 一个标准,GlusterFS兼容。

GlusterFS卷类型

为了满足不同应用对高性能、高可用的需求,GlusterFS 支持 7 种卷,即 distribute 卷、stripe 卷、replica 卷、distribute stripe 卷、distribute replica 卷、stripe Replica 卷、distribute stripe replica 卷。其实不难看出,GlusterFS 卷类型实际上可以分为 3 种基本卷和 4 种复合卷,每种类型的卷都有其自身的特点和适用场景。

基本卷:

分布式卷

  • 没有对文件进行分块处理
  • 通过扩展文件属性保存HASH值
  • 支持的底层文件系统有ext3、ext4、ZFS、XFS等

特点:

  • 文件分布在不同的服务器,不具备冗余性
  • 更容易和廉价地扩展卷的大小
  • 单点故障会造成数据丢失
  • 依赖底层的数据保护

在这里插入图片描述

条带卷

  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
  • 存储大文件时,性能尤为突出
  • 不具备冗余性,类似Raid0

特点:

  • 数据被分割成更小块分布到块服务器群中的不同条带区
  • 分布减少了负载且更小的文件加速了存取的速度
  • 没有数据冗余

在这里插入图片描述

复制卷

  • 同一文件保存一份或多分副本
  • 复制模式因为要保存副本,所以磁盘利用率较低
  • 多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量

特点:

  • 卷中所有的服务器均保存一个完整的副本
  • 卷的副本数量可由客户创建的时候决定
  • 至少由两个块服务器或更多服务器
  • 具备冗余性

在这里插入图片描述

分布式条带卷

  • 兼顾分布式卷和条带卷的功能
  • 主要用于大文件访问处理
  • 至少最少需要 4 台服务器

在这里插入图片描述

分布式复制卷

  • 兼顾分布式卷和复制卷的功能
  • 用于需要冗余的情况下

在这里插入图片描述

条带复制卷

同时具有条带卷和复制卷的特点

在这里插入图片描述

分布式条带复制卷

三种基本卷的复合卷

在这里插入图片描述

命令 功能
gluster peer probe 添加节点
gluster peer detach 移除节点
gluster volume create 创建卷
gluster volume start 启动卷
gluster volume stop 停止卷
gluster volume delete 删除卷
gluster volume quota enable 开启卷配额
gluster volume quota disable 关闭卷配额
gluster volume quota limit-usage 设定卷配额

案例

实验环境:四台节点服务器、一台客户端

一台node1(192.168.1.1)

一台node2(192.168.1.2)

一台node3(192.168.1.3)

一台node4(192.168.1.4)

一台客户端(192.168.1.51)

1、配置IP地址及所需环境

vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network 需要将每台节点服务器配置节点  hostname node1 #临时更改主机名 bash hostname node2 bash hostname node3 bash hostname node4 bash 打开配置文件 vi /etc/sysconfig/network 永久修改主机名 修改内容:HOSTNAME=你修改主机名 保存并退出 :wq 重启系统 reboot #客户端和节点服务器都需要添加类似dns查找 vim /etc/hosts 192.168.1.1 node1 192.168.1.2 node2 192.168.1.3 node3 192.168.1.4 node4 

2、安装Gluster文件系统服务(rpm安装包 用yum 安装、四台节点服务器都需要安装)

rm -rf /etc/yum.repos.d/* vim /etc/yum.repos.d/yum.repo [yum] name=yum baseurl=file:///media enabled=1 gpgcheck=0 就不需要挂载光盘了 但要确保media下有相关的rpm软件包 yum -y clean all yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma systemctl restart glusterd #重启服务 systemctl enable glusterd #开机自启 

3、在节点服务器(node1)上添加所有节点

 gluster peer probe node1 gluster peer probe node2 gluster peer probe node3 gluster peer probe node4 peer probe: success. gluster peer status #查看状态 Number of Peers: 3 Hostname: node2 Uuid: e9800bba-1289-48b0-a885-91360aac3d8b State: Peer in Cluster (Connected) Hostname: node3 Uuid: c1a92622-eef2-4c6c-8fca-824b46fa6ae9 State: Peer in Cluster (Connected) Hostname: node4 Uuid: 891c1e8d-5719-4a59-957b-e0cbe17ace53 State: Peer in Cluster (Connected) 

4、安装客户端

yum -y install glusterfs glusterfs-fuse #系统本身自带可以不安装但也不一定 mkdir -p /test/{ 
   dis,stripe,rep,dis-stripe,dis-rep} #添加测试目录便于测试 

5、在节点服务器上创建目录(便于测试)

mkdir /data{ 
   1..10} 

创建分布式卷

gluster volume create dis-volume node1:/data1 node2:/data1 force #创建一个分布式卷名字叫dis-volume连接到node1和node2上,写到data1目录上 gluster volume info stripe-volume 查看条带卷信息 gluster volume start stripe-volume 启用条带卷 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FksrPNxP-88)(image-.png)]

客户端验证

在客户端上挂载node1上的dis-volume卷到 /test/dis

mount -t glusterfs node1:dis-volume /test/dis cd /test/dis touch { 
   1..12}.txt 

最后查看node1上和node2上的/data1下的文件 会随机放入node1上和node2

在这里插入图片描述

在这里插入图片描述

创建条带卷

gluster volume create stripe-volume stripe 2 node1:/data2 node2:/data2 force gluster volume start stripe-volume 

在这里插入图片描述

客户端验证

在客户端上挂载node1上的stripe-volume卷到 /test/stripe

mount -t glusterfs node1:stripe-volume /test/stripe cd /test/stripe/ dd if=/dev/zero of=aa bs=1MB count=80 #调用/dev/zero文件写入到aa中 大小为1mb次数为80次 注意aa的位置 dd: 调用文件 if:源文件 of:目的文件 bs:大小 count:次数 

最后查看node1上和node2上的/data2下的文件 会平均放入node1上和node2

ls -lhd /data2/aa -rw-r--r--. 2 root root 39M 3月 31 09:39 /data2/aa ls:查看命令 -l:以列表形式查看 -h:以便于人阅读的方式查看大小 -d:查看目录本身 

创建复制卷

gluster volume create rep-volume replica 2 node1:/data3 node2:/data3 force #创建复制卷 gluster volume start rep-volume #打开辅助卷 

在这里插入图片描述

客户端验证

mount -t glusterfs node1:rep-volume /test/rep #连接复制卷 cd /test/rep touch 1.txt 

创建分布式条带卷

最少四台节点服务器

gluster volume create dis-stripe stripe 2 node1:/data4 node2:/data4 node3:/data4 node4:/data4 force #创建分布式条带卷 gluster volume start 打开分布式条带卷 

客户端验证

mount -t glusterfs node1:dis-stripe /test/dis-stripe cd /test/dis-stripe dd if=/dev/zero of=/test/dis-stripe/cc bs=1MB count=80 dd if=/dev/zero of=/test/dis-stripe/dd bs=1MB count=80 

节点服务器上查看/data4 既满足分布式的随机分布又满足条带式的平均分布

创建分布式复制卷

最少需要四台节点服务器

gluster volume create dis-rep replica 2 node1:/data5 node2:/data5 node3:/data5 node4:/data5 force 创建分布式复制卷 gluster volume start dis-rep #打开分布式复制卷 

客户端验证

mount -t glusterfs node1:dis-rep /test/dis-rep cd /test/dis-rep dd if=/dev/zero of=ee bs=1MB count=80 dd if=/dev/zero of=ff bs=1MB count=80 

节点服务上查看/data5 既满足分布式的随机分布又满足复制卷的复制

ls -lhd /data5/ee -rw-r--r--. 2 root root 77M 3月 31 10:07 /data5/ee 

还有,条带式复制卷,分布式条带复制卷需要八台节点服务器因为太多了就不做了 道理懂就好了

客户端设置开机自动挂载方便直接写入数据

vim /etc/fstab node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0 node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0 node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0 node1:dis-stripe /test/dis-stripe glusterfs defaults,_netdev 0 0 node1:dis-rep /test/dis-rep glusterfs defaults,_netdev 0 0 

设置卷访问控制

gluster volume set 卷名 auth.allow 192.168.1.* 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207546.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午1:38
下一篇 2026年3月19日 下午1:38


相关推荐

  • sigaction检测段错误示例[通俗易懂]

    sigaction检测段错误示例[通俗易懂]#include#include#include#include#include#include#include#defineARRAY_SIZE(a)sizeof(a)/sizeof(a[0])#defineDEBUG#ifdefDEBUG #defineLOG(fmt,args…)printf(“%s():%d”fmt,__FUNC

    2022年5月26日
    42
  • @RequestBody出现请求415问题

    @RequestBody出现请求415问题首先之前也遇到过这样的问题,但是稀里糊涂的最后虽然bug修复了,但是不知道是啥原因,今天又遇到了同样的问题。问题:在前端向后台发送一个json对象(字符串),后端用@RequestBody匹配接受的时候就会出现415,如果不用@RequestBody,那么前端发送来的数据是不能被正确解析成对象里的属性的。因为用公司的框架写项目的时候,也遇见了这个问题。请教了学长,学长让我用公司自己封装的p…

    2022年6月3日
    35
  • 控制流和数据流的区别_jdk动态代理底层原理

    控制流和数据流的区别_jdk动态代理底层原理JBPM工作流原理

    2025年10月1日
    5
  • linux 脚本 ll命令,linux中ll命令的详细解释

    linux 脚本 ll命令,linux中ll命令的详细解释linxu下的ll命令其实是ls-l的一个别名。下面由学习啦小编为大家整理了linux的ll命令的详细解释的相关知识,希望对大家有帮助!一、linux中的ll命令的详细解释ll并不是linux下一个基本的命令,它实际上是ls-l的一个别名。Ubuntu默认不支持命令ll,必须用ls-l,这样使用起来不是很方便。如果要使用此命令,可以作如下修改:打开~/.bashrc找到#aliasll…

    2022年6月16日
    58
  • 计算机网络曼彻斯特编码与差分曼彻斯特编码

    计算机网络曼彻斯特编码与差分曼彻斯特编码曼彻斯特编码与差分曼彻斯特编码 1 两种编码在中间均需要进行一次跳变 2 曼彻斯特编码 吉大原则为负到正为 1 正到负为 0 3 差分曼彻斯特编码 为 0 时发生跳变 为 1 时不发生跳变 在此处跳变的含义为中间虚线位置 若当前为 1 则与前一个编码的后半部分电平相同 若为 0 则与前一个编码的后半部分电平相反 4 对于差分曼彻斯特编码 第一个位置需自己决定 一般选择不同 从边界直着下来

    2025年10月14日
    9
  • 函数 Func

    函数 Func1 函数函数是用来完成特定任务的独立代码块 函数的参数 参数可以提供默认值 用来简化函数调用 参数可以当做传入参数也可以当做传出参数 即传入的参数值可以被修改 所有参数放在圆括号内函数的返回值 与 OC 的语法不通 以 func 关键字为前缀 有返回值用 来表示用返回值 并添加返回值类型函数类型 函数类型包括参数值类型和返回值类型 每一个函数类型可以当做是普通的类型来处理 可以做函数的

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号