【分布式应用】GFS分布式文件系统

news2025/8/13 12:16:53

文件系统:用于存储和管理文件的相关系统。
FS(文件系统)的作用:从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。
具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取\

文件系统组成:

  • 文件系统接口
  • 对对像管理的软件集合
  • 对象及属性
存储系统类型存储技术
块存储硬盘
文件存储NFS、SISC、FTP
对象存储OSS、S3(公有云)
分布式存储GFS、MFS、Ceph、FastdFs

分布式存储优点:

  1. 增加存储容量
  2. 加快读写效率
  3. 保证文件高可用

一、GlusterFS 概述

GlusterFS是一个开源的分布式文件系统。 开源的分布式文件系统

  • 组成:
    存储服务器
    客户端
    NFS/Samba 存储网关

  • 无元数据服务器
    数据分散存储
    可避免出现单点故障

由存储服务器、客户端以及NFS/Samba存储网关(可选,根据需要选择使用)组成。

没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。

MFS(传统的分布式文件系统技术)

  • 传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。

GlusterFS:

  • 而Glusteres分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。(不存在元服务器单点故障的问题)
  • GlusterFS同时也是Scale-Out(横向扩展)存储解决方案Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。
  • GlusterFS支持借助 TCP/IP 或 InfiniBandRDMA 网络(一种支持多并发链接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供存储服务,并使用统一全局命名空间来管理数据。

命名空间:可以理解为目录,一个目录就是一个命名空间。同一个命名空间内不能存在2个相同名称的文件。

1.2 GlusterFS特点

●扩展性和高性能

GlusterFS利用双重特性来提供高容量存储解决方案。

(1)Scale-Out架构允许通过简单地增加存储节点的方式来提高存储容量和性能(磁盘、计算和I/O资源都可以独立增加),支持10GbE和 InfiniBand等高速网络互联。

(2)Gluster弹性哈希(ElasticHash)解决了GlusterFS对元数据服务器的依赖,改善了单点故障和性能瓶颈,真正实现了并行化数据访问。GlusterFS采用弹性哈希算法在存储池中可以智能地定位任意数据分片(将数据分片存储在不同节点上),不需要查看索引或者向元数据服务器查询。

●高可用性

GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。

当数据出现不一致时,自我修复功能能够把数据恢复到正确的状态,数据的修复是以增量的方式在后台执行,几乎不会产生性能负载。

GlusterFS可以支持所有的存储,因为它没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、XFS等)来存储文件,因此数据可以使用传统访问磁盘的方式被访问。

●全局统一命名空间

分布式存储中,将所有节点的命名空间整合为统一命名空间,将整个系统的所有节点的存储容量组成一个大的虚拟存储池,供前端主机访问这些节点完成数据读写操作。

●弹性卷管理

GlusterFS通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分而得到。 逻辑存储池可以在线进行增加和移除,不会导致业务中断。逻辑卷可以根据需求在线增长和缩减,并可以在多个节点中实现负载均衡。

文件系统配置也可以实时在线进行更改并应用,从而可以适应工作负载条件变化或在线性能调优。

●基于标准协议

Gluster 存储服务支持 NFS、CIFS、HTTP、FTP、SMB 及 Gluster原生协议,完全与 POSIX 标准(可移植操作系统接口)兼容。

现有应用程序不需要做任何修改就可以对Gluster 中的数据进行访问,也可以使用专用 API 进行访问。

1.3 GlusterFS 术语

●Brick(存储块):

指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。

存储目录的格式由服务器和目录的绝对路径构成,表示方法为 SERVER:EXPORT,如 192.168.41.46:/data/mydir/。

●Volume(逻辑卷):

一个逻辑卷是一组 Brick 的集合。卷是数据存储的逻辑设备,类似于 LVM 中的逻辑卷。大部分 Gluster 管理操作是在卷上进行的。

●FUSE:

是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码。

●VFS:

内核空间对用户空间提供的访问磁盘的接口。

●Glusterd(后台管理进程):

在存储群集中的每个节点上都要运行。

1.4 模块化堆栈式架构

GlusterFS 采用模块化、堆栈式的架构。

通过对模块进行各种组合,即可实现复杂的功能。例如 Replicate 模块可实现 RAID1,Stripe 模块可实现 RAID0, 通过两者的组合可实现 RAID10 和 RAID01,同时获得更高的性能及可靠性。

模块化:每个模块可以提供不同的功能
堆栈式:同时启用多个模块,多个功能可以组合,实现复杂的功能
通过对模块的组合,实现复杂的功能.

GlusterFS Client客户端
VFS(Virtual File System-虚拟文件系统):为各类文件系统提供了一个统一的操作界面和应用编程接口
I/O cache(I/O缓存,Input/Output):用于数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。
read ahead(内核文件预读)
Distribute/Stripe:分布式、条带化
replicate:复制功能

网络层
Gige(千兆网/千兆接口)
TCP/IP(网络协议)
InfiniBand(网络协议):与TCP/IP相比,TCP/IP具有转发丢失数据包的特性,基于此通信协议可能导致通信变慢,而IB使用基于信任的、流控制的机制来保证连接完整性
RDMA(Remote Direct Memory Access,远程直接数据存取)负责数据传输。功能:为了解决传输过程中客户端与服务器端数据处理的延迟
Server服务端
POSIX(Portable Operating System Interface:可移植操作系统接口):解决客户端与服务端系统兼容性问题
Brick:块存储

总结

1、GlusterFS采用模块化、堆栈式的架构,可通过灵活的配置支持高度定制化的应用环境,比方大文件存储、海量小文件存储、云存储、多传输协议应用等。
2、每一个功能以模块形式实现,然后以积木方式进行简单的组合,就可以实现复杂的功能。比方,Replicate模块可实现RAID1,Stripe模块可实现RAID0,通过两者的组合可实现RAID10和RAID01,同一时候获得高性能和高可靠性。
3、然后以请求的方式与客户端进行交互,客户端与服务端进行交互时,通过posix来解决出现的系统兼容性问题,让客户端的命令通过posix过滤后可以在服务端执行

1.5 GlusterFS 的工作流程

(1)客户端或应用程序通过 GlusterFS 的挂载点访问数据。

(2)linux系统内核通过 VFS API 收到请求并处理。

(3)VFS 将数据递交给 FUSE 内核文件系统,并向系统注册一个实际的文件系统 FUSE,而 FUSE 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GlusterFS client 端。可以将 FUSE 文件系统理解为一个代理。

(4)GlusterFS client 收到数据后,client 根据配置文件的配置对数据进行处理。

(5)经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入到服务器存储设备上。

1、外来一个请求,例:用户端申请创建一个文件,客户端或应用程序通过GFS的挂载点访问数据
2、linux系统内容通过VFSAPI收到请求并处理
3、VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
4、GlusterFS client端收到数据后,会根据配置文件的配置对数据进行处理
5、再通过网络,将数据发送给远端的ClusterFS server,并将数据写入到服务器储存设备上
6、server再将数据转交给VFS伪文件系统,再由VFS进行转存处理,最后交给EXT3

1.6 弹性 HASH 算法

后端存储如何定位文件
使用弹性HASH算法
为了解决分布式文件数据索引、定位的复杂程度,而使用弹性HASH算法来解决数据定位、索引、寻址的功能

先通过HASH算法对数据可以得到一个值
该值有2的32次方个组合
每个数据对应了0-2的32次方的一个值
通常情况下,不同数据得到的值是不同的

弹性 HASH 算法是 Davies-Meyer 算法的具体实现,通过 HASH 算法可以得到一个 32 位的整数范围的 hash 值,假设逻辑卷中有 N 个存储单位 Brick,则 32 位的整数范围将被划分为 N 个连续的子空间,每个空间对应一个 Brick。

当用户或应用程序访问某一个命名空间时,通过对该命名空间计算 HASH 值,根据该 HASH 值所对应的 32 位整数空间定位数据所在的 Brick。

弹性 HASH 算法的优点:

  • 保证数据平均分布在每一个 Brick 中。
  • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈。

2.1 分布式卷(Distribute volume) 对文件进行存储

  • 文件通过HASH 算法分布到所有Brick Server上, 这种卷是GlusterFS 的默认卷;以文件为单位根据HASH 算法散列到不同的Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的RAID0,不具有容错能力。
  • 在该模式下,并没有对文件进行分块处理,文件直接存储在某个Server 节点上。
  • 由于直接使用本地文件系统进行文件存储,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低。

只能提高存储容量,不具有容错能力,存储效率并没有提高。

示例原理:

File1 和 File2 存放在Server1, 而File3存放在Server2, 文件都是随机存储,一 个文件(如File1) 要么在Serverl 上,要么在Server2上,不能分块同时存放在Server1和 Server2上。

分布式卷具有如下特点:

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

创建分布式卷:

 #创建一个名为dis-volume的分布式卷,文件将根据HASH分布在serverl:/dir1、server2:/dir2 和 server3:/dir3中。
 gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3

2.2 条带卷(Stripe volume)

类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性。

示例原理:

File 被分割为 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2。

条带卷特点:

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

创建条带卷:

 #创建了一个名为stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和 
 Server2:/dir2两个Brick中。

 gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
 ​
 #注意:分片数量需要是brick的倍数。

2.3 复制卷(Replica volume)

将文件同步到多个 Brick 上,使其具备多个文件副本,属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。

复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低。

示例原理:

File1 同时存在 Server1 和 Server2,File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本。

复制卷特点:

  • 卷中所有的服务器均保存一个完整的副本。
  • 卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。
  • 至少由两个块服务器或更多服务器。
  • 具备冗余性。

创建复制卷:

  #创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和 
  Server2:/dir2两个Brick中。

 gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
 ​
 #replica 2 :复制数,一般要等于brick的数量。
 #transport tcp :通过tcp协议进行传输。

2.4 分布式条带卷(Distribute Stripe volume)

Brick Server 数量是条带数(数据块分布的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。 主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器。brick数量需要是条带的倍数。

示例原理:

  • File1 和 File2 通过分布式卷的功能分别定位到Server1和 Server2。
  • 在 Server1 中,File1 被分割成 4 段,其中 1、3 在 Server1 中的 exp1 目录中,2、4 在 Server1 中的 exp2 目录中。
  • 在 Server2 中,File2 也被分割成 4 段,其中 1、3 在 Server2 中的 exp3 目录中,2、4 在 Server2 中的 exp4 目录中。

创建分布式条带卷:

创建一个名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)。 Brick 的数量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),条带数为 2(stripe 2)。

 gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
 ​
 #文件先分布存储,之后再分块存储。
  • 如果brick数量和条带数一致,那就是普通的条带卷。
  • 如果brick数量是条带的2倍以上,就是分布式条带卷。

创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;

如果存储服务器的数量是条带或复制数的 2 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。

2.5 分布式复制卷(Distribute Replica volume)

Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。主要用于需要冗余的情况下。

brick数量需要是复制卷的n倍。

文件先做分布式存储(hash散列),之后做镜像。

示例原理:

  • File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。
  • 在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的exp1 目录和 Server2 中的 exp2 目录。
  • 在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录。

创建分布式复制卷:

创建一个名为dis-rep的分布式复制卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),复制数为 2(replica 2)。

 gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

2.6 条带复制卷(Stripe Replica volume)

类似 RAID 10,同时具有条带卷和复制卷的特点。

2.7 分布式条带复制卷(Distribute Stripe Replicavolume)

三种基本卷的复合卷,通常用于类 Map Reduce 应用。

实验环境:

 ​
 Node1节点:node1/192.168.6.155      磁盘:/dev/sdb1           挂载点:/data/sdb1
                                         /dev/sdc1                  /data/sdc1
                                         /dev/sdd1                  /data/sdd1
                                         /dev/sde1                  /data/sde1
  
 Node2节点:node2/192.168.6.156       磁盘:/dev/sdb1          挂载点:/data/sdb1
                                          /dev/sdc1                 /data/sdc1
                                          /dev/sdd1                 /data/sdd1
                                          /dev/sde1                 /data/sde1
  
 Node3节点:node3/192.168.6.169       磁盘:/dev/sdb1          挂载点:/data/sdb1
                                          /dev/sdc1                 /data/sdc1
                                          /dev/sdd1                 /data/sdd1
                                          /dev/sde1                 /data/sde1
  
 Node4节点:node4/192.168.6.170       磁盘:/dev/sdb1          挂载点:/data/sdb1
                                          /dev/sdc1                 /data/sdc1
                                          /dev/sdd1                 /data/sdd1
                                          /dev/sde1                 /data/sde1
 客户端节点:192.168.6.187

分区脚本:

 node1-node4   /dev/sdb1   分布式卷
 ​
 node1-node2   /dev/sdc1   条带卷
 ​
 node3-node4   /dev/sdc1   复制卷
 ​
 node1-node4   /dev/sdd1   分布式条带卷
 ​
 node1-node4   /dev/sde1   分布式复制卷

实验准备:

四台机器1G1C,添加四块硬盘。之后刷新磁盘。

3.1 部署Gluster集群环境(所有node节点操作)

1)关闭防火墙和selinux

 systemctl stop firewalld
 setenforce 0

2)写一个脚本,批量分区、格式化、挂载

 vim /opt/fdisk.sh
 #!/bin/bash
 NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
 for VAR in $NEWDEV
 do
    echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
    mkfs.xfs /dev/${VAR}"1" &> /dev/null
    mkdir -p /data/${VAR}"1" &> /dev/null
    echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
 done
 mount -a &> /dev/null
 ​
 chmod +x /opt/fdisk.sh
 cd /opt/
 ./fdisk.sh
 ​
 #先在一个节点上操作,之后通过scp命令将脚本传给其他主机,统一执行。

安装、启动GlusterFS

 #将gfsrepo 软件上传到/opt目录下
 cd /etc/yum.repos.d/
 mkdir repo.bak
 mv *.repo repo.bak
 ​
 vim glfs.repo
 [glfs]
 name=glfs
 baseurl=file:///opt/gfsrepo
 gpgcheck=0
 enabled=1
 ​
 yum clean all && yum makecache
 ​
 #yum -y install centos-release-gluster   #如采用官方 YUM 源安装,可以直接指向互联网仓库
 yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
 ​
 systemctl start glusterd.service 
 systemctl enable glusterd.service
 systemctl status glusterd.service

3.2 创建卷

根据规划创建如下卷:

卷名称卷类型Brick
dis-volume分布式卷node1(/data/sdb1)、node2(/data/sdb1)
stripe-volum条带卷node1(/data/sdc1)、node2(/data/sdc1)
rep-volume复制卷node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe分布式条带卷node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep分布式复制卷node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

1)node1 - node4,/dev/sdb1,分布式卷

 #创建分布式卷
 gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1  force
 ​
 #查看卷列表
 gluster volume list
 ​
 #启动新建的分布式卷
 gluster volume start dis-volume
 ​
 #查看卷信息
 gluster volume info dis-volume

示例原理:

File1 和 File2 存放在Server1, 而File3存放在Server2, 文件都是随机存储,一 个文件(如File1) 要么在Serverl 上,要么在Server2上,不能分块同时存放在Server1和 Server2上。

分布式卷具有如下特点:

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

创建分布式卷:

 #创建一个名为dis-volume的分布式卷,文件将根据HASH分布在serverl:/dir1、server2:/dir2 和 server3:/dir3中。
 gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3

2.2 条带卷(Stripe volume)

类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储, 文件越大,读取效率越高,但是不具备冗余性。

示例原理:

File 被分割为 6 段,1、3、5 放在 Server1,2、4、6 放在 Server2。

条带卷特点:

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

创建条带卷:

 #创建了一个名为stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中。
 gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
 ​
 #注意:分片数量需要是brick的倍数

2.3 复制卷(Replica volume)

将文件同步到多个 Brick 上,使其具备多个文件副本,属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。

复制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。但因为要保存副本,所以磁盘利用率较低。

 #创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中。
 gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
 ​
 #replica 2 :复制数,一般要等于brick的数量。
 #transport tcp :通过tcp协议进行传输。

示例原理:

File1 同时存在 Server1 和 Server2,File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本。

复制卷特点:

  • 卷中所有的服务器均保存一个完整的副本。
  • 卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。
  • 至少由两个块服务器或更多服务器。
  • 具备冗余性。

2.4 分布式条带卷(Distribute Stripe volume)

Brick Server 数量是条带数(数据块分布的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。 主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器。brick数量需要是条带的倍数。

 gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4
 ​
 #文件先分布存储,之后再分块存储。

  • 如果brick数量和条带数一致,那就是普通的条带卷。
  • 如果brick数量是条带的2倍以上,就是分布式条带卷。

创建卷时,存储服务器的数量如果等于条带或复制数,那么创建的是条带卷或者复制卷;

如果存储服务器的数量是条带或复制数的 2 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。

2.5 分布式复制卷(Distribute Replica volume)

Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。主要用于需要冗余的情况下。

brick数量需要是复制卷的n倍。

文件先做分布式存储(hash散列),之后做镜像。

  • File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。
  • 在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的exp1 目录和 Server2 中的 exp2 目录。
  • 在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录。

创建分布式复制卷:

创建一个名为dis-rep的分布式复制卷,配置分布式的复制卷时,卷中Brick所包含的存储服务器数必须是复制数的倍数(>=2倍)。Brick 的数量是 4(Server1:/dir1、Server2:/dir2、Server3:/dir3 和 Server4:/dir4),复制数为 2(replica 2)。

 gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

2.6 条带复制卷(Stripe Replica volume)

类似 RAID 10,同时具有条带卷和复制卷的特点。

2.7 分布式条带复制卷(Distribute Stripe Replicavolume)

三种基本卷的复合卷,通常用于类 Map Reduce 应用。

实验准备:

四台机器1G1C,添加四块硬盘。之后刷新磁盘。

 #将gfsrepo 软件上传到/opt目录下
 cd /etc/yum.repos.d/
 mkdir repo.bak
 mv *.repo repo.bak
 ​
 vim glfs.repo
 [glfs]
 name=glfs
 baseurl=file:///opt/gfsrepo
 gpgcheck=0
 enabled=1
 ​
 yum clean all && yum makecache
 ​
 #yum -y install centos-release-gluster   #如采用官方 YUM 源安装,可以直接指向互联网仓库
 yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
 ​
 systemctl start glusterd.service 
 systemctl enable glusterd.service
 systemctl status glusterd.service

5)添加节点到存储信任池中(在 node1 节点上操作)

添加集群信任池,node1-node4 之间添加互信关系。将其他节点加入到我的存储池中。只要在一台Node节点上添加其它节点即可。

 #只要在一台Node节点上添加其它节点即可
 gluster peer probe node1
 gluster peer probe node2
 gluster peer probe node3
 gluster peer probe node4
 ​
 #在每个Node节点上查看群集状态
 gluster peer status

 

 

3.2 创建卷

根据规划创建如下卷:

卷名称卷类型Brick
dis-volume分布式卷node1(/data/sdb1)、node2(/data/sdb1)
stripe-volum条带卷node1(/data/sdc1)、node2(/data/sdc1)
rep-volume复制卷node3(/data/sdb1)、node4(/data/sdb1)
dis-stripe分布式条带卷node1(/data/sdd1)、node2(/data/sdd1)、node3(/data/sdd1)、node4(/data/sdd1)
dis-rep分布式复制卷node1(/data/sde1)、node2(/data/sde1)、node3(/data/sde1)、node4(/data/sde1)

 

  

 

 

 

 客户端部署

 

 

 1、查看分布式文件分布,条带卷文件系统

2. 查看复制卷分布

#数据没有被分片,有副本,有冗余 160M

 查看分布式条带卷分布

#数据被分片50%,没副本,没冗余

 查看分布式复制卷分布

#数据没有被分片,有副本,有冗余

 

 破坏性测试

 #1、挂起 node2 节点或者关闭glusterd服务来模拟故障
 [root@node2 ~]# systemctl stop glusterd.service
 ​
 #2、在客户端上查看文件是否正常
 #分布式卷数据查看
 [root@localhost test]# ll /test/dis/        #在客户机上发现少了demo5.log文件,这个是在node2上的
 总用量 163840
 -rw-r--r-- 1 root root 41943040 12月 18 14:50 demo1.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:50 demo2.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:50 demo3.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:50 demo4.log
 ​
 #条带卷
 [root@localhost test]# cd /test/stripe/         #无法访问,条带卷不具备冗余性
 [root@localhost stripe]# ll
 总用量 0
 ​
 #分布式条带卷
 [root@localhost test]# ll /test/dis_stripe/     #无法访问,分布条带卷不具备冗余性
 总用量 40960
 -rw-r--r-- 1 root root 41943040 12月 18 14:51 demo5.log
 ​
 #分布式复制卷
 [root@localhost test]# ll /test/dis_rep/        #可以访问,分布式复制卷具备冗余性
 总用量 204800
 -rw-r--r-- 1 root root 41943040 12月 18 14:52 demo1.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:52 demo2.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:52 demo3.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:52 demo4.log
 -rw-r--r-- 1 root root 41943040 12月 18 14:52 demo5.log

四、其他的维护命令

 1.查看GlusterFs卷
 gluster volume list
 ​
 2.查看所有卷的信息
 gluster volume info
 ​
 3.查看所有卷的状态
 gluster volume status
 ​
 4.停止一个卷
 gluster volume stop dis-stripe
 ​
 5.删除一个卷,注意:删除卷时,需要先停止卷,且信任池中不能有主机处于宕机状态,否则删除不成功
 gluster volume delete dis-stripe
 ​
 6.设置卷的访问控制
 #仅拒绝
 gluster volume set dis-rep auth.deny 192.168.142.60
 ​
 #仅允许
 gluster volume set dis-rep auth.allow 192.168.142.*   
 #设置192.168.142.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)

总结

与传统的分布式系统一样,GFS 同样追求高性能、高可靠性、高可用性,但同时 Google 基于自身的生产环境、技术环境,有一些自身独有的特点。首先,组件失效是常态化的,而非意外。在 GFS 成百上千的集群中,随时随地都可能发生故障导致机器无法恢复,所以,有一定的容灾、自动恢复能力是必须要整合在 GFS 中的。其次,文件巨大,GB 级别的数据非常普遍。第三,绝大多数文件的写操作都是追加,而非修改,通常的文件场景是顺序写,且顺序读。第四,应用程序和文件系统 API 的协同设计提高了整个系统的灵活性。

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

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

相关文章

Windows重启时的电脑蓝屏怎么办?

在使用Windows电脑时,最害怕的是遇到系统突然崩溃的情况,特别是出现蓝屏。蓝屏可能会导致数据丢失、无法启动Windows等糟糕的情况。那电脑重启时蓝屏怎么解决? 解决方法一、使用系统还原撤消最近的更改 Windows中的系统还原功能是一个便利的…

html5+css3

目录 一、html简介: 1、什么是网页? 2、什么是html? 3、网页的形成 二、常用的浏览器 三、web标准(重点) 1、为什么要使用web标准? 2、遵循web标准的优点: 四、html语法规范 1、基本语…

Hadoop架构、组件、及其术语汇总和理解

推荐大象教程,介绍Hadoop、HDFS、MapReduce架构和工作原理相对来说非常的清晰。其内容是与《Hadoop the Definitive Guide》基本一致的。讲解的很细致、细节,又带了一些个人的理解和举例子,比较易懂,是比Hadoop官网更值得一看的入…

Assignment写作怎么避免不及格的情况出现?

俗语说得好,犯错误是在所难免的。中西方教育方式大不相同,对Assignment的写作要求也有所不同。刚到国外时,留学生对国外的教育制度和学习过程缺乏了解。难怪在日常学习中,尤其是在英文Assignment写作过程中,留学生都会…

限时开源,来自大佬汇总的Kafka限量笔记,绝对不会后悔!

前言 今天我们来聊聊 Kafka ,主要是带你重新认识一下 Kafka,聊一下 Kafka 中比较重要的概念和问题。 我们现在经常提到 Kafka 的时候就已经默认它是一个非常优秀的消息队列了,我们也会经常拿它给 RocketMQ、RabbitMQ 对比。我觉得 Kafka 相…

GaussDB CN服务异常实例分析

摘要:先通过OPS确认节点状态是否已经恢复,或登录后台执行cm_ctl query -Cv确认集群是否已经Normal。本文分享自华为云社区《【实例状态】GaussDB CN服务异常》,作者:酷哥。 确认节点状态 先通过OPS确认节点状态是否已经恢复&…

sqoop部署

一、实验介绍 1.1实验内容 本次实验包括sqoop安装部署及利用Sqoop在mysql数据库与hive之间进行数据迁移。 1.2实验知识点 Sqoop安装 mysql到Hive数据迁移 1.3实验环境 Sqoop-1.4.7 网易云平台 1.4实验资源 资源名称存储目录Sqoop安装包/opt/software/package/1.5实验步…

原生 canvas 如何实现大屏?

前言 可视化大屏该如何做?有可能一天完成吗?废话不多说,直接看效果,线上 Demo 地址 lxfu1.github.io/large-scree…。 看完这篇文章(这个项目),你将收获: 全局状态真的很简单&…

多篇《Nature》和《Science》关于马约拉纳费米子的研究论文近日被撤稿

马约拉纳费米子(英语:Majorana fermion)是一种假设粒子,它的反粒子就是它本身,1937年,埃托雷马约拉纳发表论文假想这种粒子存在,因此而命名。与之相异,狄拉克费米子,指的…

当大火的文图生成模型遇见知识图谱,AI画像趋近于真实世界

导读 用户生成内容(User Generated Content,UGC)是互联网上多模态内容的重要组成部分,UGC数据级的不断增长促进了各大多模态内容平台的繁荣。在海量多模态数据和深度学习大模型的加持下,AI生成内容(AI Gen…

(七)文件——PHP

文章目录第七章 文件1 文件包含**1.1 include()函数****1.2 require()函数**2 文件的读取和写入**2.1 文件模式****2.2 文件读取****2.3 文件写入**3 文件上传3.1 创建表单3.2 创建脚本3.3 实例第七章 文件 1 文件包含 您可以在服务器执行PHP文件之前将其内容包含到另一个PHP…

支付宝"手机网站支付"主域名申请了,二级域名还要申请吗

微信商城小程序里可以用支付宝付款吗?当然可以了,不过需要去支付宝官方网站去申请一个接口,注意选对产品,支付宝提供了很多种接口,微信里要用到的支付宝付款属于“手机网站支付”这个产品,重要的事情说三遍…

一文讲解,Linux内核——内存管理(建议收藏)

一.内存的基础知识: 1.写程序到程序运行的过程: (1)编译:由编译程序将用户代码编译成若干个目标模块(把高级语言翻译成机器语言) (2)链接:由链接程序将编译…

头歌平台-MongoDB 之滴滴、摩拜都在用的索引

第1关:了解并创建一个简单索引 > use test switched to db test > db.student.insert([{_id:1,name:"王小明",age:15,score:90},{_id:2,name:"周晓晓",age:18,score:86},{_id:3,name:"王敏",age:20,score:96},{_id:4,name:&qu…

kudu集群数据节点(tserver)扩容(缩容)

背景: 4个数据节点有数据倾斜,rebalance后依旧如此,检查分片数量和分布情况也是均衡的。最后发现相同的分片在其中一个节点存储消耗的磁盘资源比其他节点要大很多,导致了这个节点磁盘消耗较快。于是决定更换节点的磁盘 操作计划如…

【freeRTOS】操作系统之一-任务调度

一. 任务调度 ​ FreeRTOS操作系统支持三种调度方式:抢占式调度,时间片调度和合作式调度。实际应用主要是抢占式调度和时间片调度,合作式调度用到的很少。 挂起/阻塞/就绪/运行 三种基本状态 进程在运行中不断地改变其运行状态。通常&…

智能网联汽车网络安全攻击与防御技术概述

作者 | 王博文 上海控安可信软件创新研究院研究员 来源 | 鉴源实验室 01 引言 在汽车电动化、网联化、智能化和共享化等新四化的发展趋势下,智能网联汽车(Intelligent Connected Vehicles,ICVs)已经是新时代的必然产物。在智能网…

【学习笔记】浅谈闵可夫斯基和

学这东西主要是 这道题 要用 233 定义:给定两个凸包AAA,BBB,定义C{ab∣a∈A,b∈B}C\{ab|a\in A,b\in B\}C{ab∣a∈A,b∈B} ,其中aaa,bbb均为坐标。 不好意思图是嫖的 首先我们感性认识一下。可以直接将一个凸包的顶点换成另一个凸包&#x…

实现登陆模块时Cookie,Session,Token的理解

目录引言一、简化版登陆(不保存登录状态)二、Session 登陆三、CookieSession 实现登录四、Token登陆引言 先思考问题: 1、如何实现登陆? (1)表单输入账号密码 (2)后台数据库验证 …

治愈系书单|林曦《只生欢喜不生愁》

《只生欢喜不生愁》是水墨画家林曦的艺术生活随笔集,谈艺术之道,论无用之美。      全书按主题分为六辑:“艺可通道”“观照世间”“得自在禅”“心安之所”“写给时间”“赤子之心”,文字轻盈、意境优雅。林曦以手艺人之道&a…