GlusterFS分布式文件系统群集——GlusterFS概述,GlusterFS工作原理,GlusterFS卷类型,GlusterFS安装部署及维护命令

一、GlusterFS概述

1.GlusterFS简介

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

2.GlusterFS特点

扩展性和高性能

  • Scale-Out 架构允许通过简单地增加资源来提高存储容量和性能,磁盘、计算和I/O资源都可以独立增加,支持10GbE和InfiniBand等高速网络互联。
  • Gluster 弹性哈希(Elastic Hash)解除了GlusterFS对元数据服务器的需求,消除了单点故障和性能瓶颈,真正实现了并行化数据访问。

高可用性

GlusterFS可以对文件进行自动复制,如镜像或多次复制,从而确保数据总是可以访问,甚至是在硬件故障的情况下也能正常访问。自我修复功能能够把数据恢复到正确的状态,而且修复是以增量的方式在后台执行,几乎不会产生性能负载。GlusterFS没有设计自己的私有数据文件格式,而是采用操作系统中主流标准的磁盘文件系统(如EXT3、ZFS)来存储文件,因此数据可以使用各种标准工具进行复制和访问。

全局统一命名空间

全局统一命名空间将所有的存储资源聚集成一个单一的虚拟存储池,对用户和应用屏蔽了物理存储信息。存储资源(类死于 LVM )可以根据生产环境中的需要进行弹性扩展或收缩。在多节点场景中,全局统一命名空间还可以基于不同节点做负载均衡,大大提升了存取效率。

弹性卷管理

GlusterFS 通过将数据储存在逻辑卷中,逻辑卷从逻辑存储池进行独立逻辑划分。逻辑存储池可以在线进行增加和移除,不会导致业务中断。

基于标准协议

Gluster存储服务支持NFS,、CIFS、HTTP、FTP以及Gluster原生协议,完全与POSIX标准兼容。现有应用程序不需要作任何修改或使用专用API,就可以对Gluster中的数据进行访问。这在公有云环境中部署Gluster时非常有用,Gluster对云服务提供商专用API进行抽象,然后提供标准POSIX接口。

3.GlusterFS术语

  • Brick(存储块):指可信主机池中由主机提供的用于物理1存储的专用分区,是GlusterFS 中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。
  • Volume(逻辑卷):一个逻辑卷是一组 Brick 的集合。卷是数据存储的逻辑设备,类似于 LVM 中的逻辑卷。大部分 Gluster 管理操作是在卷上进行的。
  • FUSE(Filesystem in Userspace):是一个内核模块,允许用户创建自己的文件系统,无需修改内核代码。
  • VFS:内核空间对用户空间提供的访问磁盘的接口。
  • Glusterd(后台管理进程):在存储群集中的每个节点上都要运行。

4.模块化堆栈式架构

GlusterFS 采用模块化、堆栈式的架构,可以根据需求配置定制化的应用环境,通过对模块进行各种组合,即可实现复杂的功能。

例如 Replicate 模块可实现RAID 1,Stripe 模块可实现 RAID 0,通过两者的组合可实现RAID 10 和 RAID 01,同时获得更高的性能及可靠性。
在这里插入图片描述
GlusterFS 是模块化堆栈式的架构设计,模块称为 Translator,是 GlusterFS 提供的一种强大机制,借助这种良好定义的接口可以高效简便地扩展文件系统功能。

  • 服务端与客户端的设计高度模块化的同时模块接口是兼容的,同一个 translator 可同时在客户端和服务器加载。
  • GlusterFS 中所有的功能都是通过 translator 实现的,其中客户端要比服务端更复杂,所以功能的重点主要集中在客户端上。

二、GlusterFS工作原理

1.GlusterFS 工作流程

在这里插入图片描述
GlusterFS 的工作流程如下:

  1. 客户端或应用程序通过 GlusterFS 的挂载点访问数据。
  2. Linux 系统内核通过 VFSAPI 收到请求并处理。
  3. VFS将数据递交给FUSE内核文件系统,并向系统注册一个实际的文件系统FUSE, 而 FUSE 文件系统则是将数据通过/dev/fuse 设备文件递交给了 GlusterFS client 端。可以 将 FUSE 文件系统理解为一个代理。
  4. GlusterFS client 收到数据后,client 根据配置文件对数据进行处理。
  5. 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFS Server,并且将数据写入服务器存储设备。

2.弹性 HASH 算法

弹性 HASH 算法是 Davies-Meyer 算法的具体实现,通过 HASH 算法可以得到一个 32 位的整数范围的 hash 值,假设逻辑卷中有 N 个存储单位 Brick,则 32 位的整数范围将被划分为 N 个连续的子空间,每个空间对应一个 Brick。当用户或应用程序访问某一个命名空间时,通过对该命名空间计算 HASH 值,根据该 HASH 值所对应的 32 位整数空间定位数据所在的 Brick。

三、GlusterFS的卷类型

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷,这七种卷可以满足不同应用对高性能、高可用的需求。
基本卷:

  • 分布式卷(Distribute volume):文件通过 HASH 算法分布到所有 Brick Server 上,这种卷是 Glusterf 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID 0, 不具有容错能力。
  • 条带卷(Stripe volume):类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server 上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。
  • 复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本,属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得到很大提升,但写性能下降。
  • 分布式条带卷(Distribute Stripe volume):Brick Server 数量是条带数(数据块分别的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。
  • 分布式复制卷(Distribute Replica volume):Brick Server数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。
  • 条带复制卷(Distribute Replica volume):类似 RAID 10,同时具有条带卷和复制卷的特点。
  • 分布式条带复制卷(Distribute Stripe Replica volume):三种基本卷的复合卷,通常用于 Map Reduce 应用。

1.分布式卷

分布式卷是 GlusterFS 的默认卷,在创建卷时,默认选项是创建分布式卷。在该模式下,文件直接存储在某个 Server 节点上。直接使用本地文件系统进行文件存储,大部分Linux命令和工具可以继续正常使用。需要通过扩展文件属性保存保存 HASH 值,目前支持的底层文件系统有ext3、ext4、ZFS、XFS等。由于使用的是本地文件系统,所以存取效率并没有提高,反而会因为网络通信的原因而有所降低;另外支持超大型文件也会有一定的难度,因为分布式卷不会对文件进行分块处理。

分布式具有以下特点:

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

2.条带卷

Stripe 模式相当于 RAID0,在该模式下,根据偏移量将文件分成 N 块(N个条带节点),轮询地存储在每个 Brick Server 节点。节点把每个数据块都作为普通文件存入本地文件系统中,通过扩展属性记录总块数(Stripe-count)和每块的序号(Stripe-index)。在配置时指定的条带数必须等卷中 Brick 所包含的存储服务器数,在存储大文件时,性能尤为突出,但是不具备冗余性。

条带卷具有以下特点:

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

3.复制卷

复制模式,也称为 AFR(AutoFile Replication),相当于RAID 1,即同一文件保存一份或多份副本,每个节点上保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘利用率较低。如果多节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。在配置复制卷时,复制数必须等于卷中的 Brick 所包含的存储服务器数,复制卷具有冗余性,即使一个节点损坏,也不影响数据的正常使用。

复制卷具有以下特点:

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

4.分布式条带卷

分布式条带卷兼顾分布式卷和条带卷的功能,主要用于大文件访问处理,创建一个分布式条带卷最少需要 4 台服务器。

5.分布式复制卷

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

四、GlusterFS部署

1.准备工作

在这里插入图片描述

1)修改主机名,做hosts文件解析

按照刚才准备工作对应的主机名,分别对四台节点服务器进行以下相同操作

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# bash
[root@node1 ~]# echo '192.168.1.100 node1
192.168.1.110 node2
192.168.1.120 node3
192.168.1.130 node4' >> /etc/hosts

在这里插入图片描述

2)编辑脚本进行磁盘分区,并挂载

[root@node1 ~]# vim fdisk.sh
#!bin/bash
for disk in `fdisk -l |grep -o 'sd[b-z]'| uniq |awk 'BEGIN{ORS=" "} {print $0 }'`
do
     echo "n
           p
                
                
           
           w"| fdisk /dev/$disk
mkfs.xfs -i size=512 /dev/${disk}"1" &> /dev/null
 mkdir -p /data/${
    
    disk}"1" &> /dev/null
echo -e "/dev/${disk}"1" /data/${disk}"1" xfs defaults 0 0\n" >> /etc/fstab
  mount -a &> /dev/null
done
[root@node1 ~]# chmod +x fdisk.sh
[root@node1 ~]# ./fdisk.sh
[root@node1 ~]# df -hT

在这里插入图片描述
将脚本文件用scp命令传输到另外三台 node 服务器上

[root@node1 ~]# scp -r  fdisk.sh root@192.168.1.110:/root/
----------
Are you sure you want to continue connecting (yes/no)? yes
----------
root@192.168.1.110's password:         #输入对方账户密码
[root@node1 ~]# scp -r  fdisk.sh root@192.168.1.120:/root/
[root@node1 ~]# scp -r  fdisk.sh root@192.168.1.130:/root/

分别在另外三台 node 服务器执行该脚本

[root@node2 ~]# ./fdisk.sh
[root@node3 ~]# ./fdisk.sh
[root@node4 ~]# ./fdisk.sh

3)配置yum本地源,安装环境包

四台 node 服务器操作步骤一致:

[root@node1 ~]# cd /mnt/
上传gfsrepo文件夹相关软件到此目录

在这里插入图片描述
把之前的yum网络源的配置文件备份一下

[root@node1 mnt]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# mkdir backup
[root@node1 yum.repos.d]# mv CentOS-* backup/
[root@node1 yum.repos.d]# ls
backup

安装重点!!!!

如果你是CentOS7命令行,按以下步骤安装:

[root@node1 yum.repos.d]# mount /dev/cdrom /media/cdrom    #挂载光盘
[root@node1 yum.repos.d]# vi GLFS.repo
[GLFS]
name=glfs
baseurl=file:///media/cdrom
enable=1
gpgcheck=0
[root@node1 yum.repos.d]# yum -y install attr  psmisc      #安装依赖包
[root@node1 yum.repos.d]# vim GLFS.repo       #编辑本地yum源
[GLFS]
name=glfs
baseurl=file:///mnt
enable=1
gpgcheck=0
[root@node1 yum.repos.d]# yum clean all       #清空yum缓存
[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma    

如果你是CentOS7图形化,按以下步骤安装:
因为CentOS7图形化默认已经安装了部分依赖包,版本比yum源的版本高,所以先将这些软件包卸载,再进行安装,否者会报错

[root@node1 yum.repos.d]# vim GLFS.repo      #编辑本地yum源
[GLFS]
name=glfs
baseurl=file:///mnt
enable=1
gpgcheck=0
[root@node1 yum.repos.d]# yum clean all      #清空yum缓存
[root@node1 ~]# yum -y remove glusterfs-client-xlators.x86_64 glusterfs glusterfs-libs     #卸载依赖包
[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma    #安装gluster

四个节点都要安装,并启动

[root@node1 ~]# systemctl start glusterd      #开启glusterd
[root@node1 ~]# systemctl enable glusterd     #设置开机自启

4)配置时间同步

在node1上配置:

[root@node1 ~]# sed -i '/^server/s/^/#/g' /etc/ntp.conf
[root@node1 ~]# cat <<END >>/etc/ntp.conf
> server 127.127.1.0
> fudge 127.127.1.0 stratum 8
> END
[root@node1 ~]# systemctl restart ntpd
[root@node1 ~]# systemctl enable ntpd

在这里插入图片描述
在另外三台 node 上配置:

[root@node2 ~]# ntpdate 192.168.1.100
[root@node3 ~]# ntpdate 192.168.1.100
[root@node4 ~]# ntpdate 192.168.1.100

5)添加节点

在任意一台 node 服务器上配置即可,下面使用的是node1

[root@node1 ~]# gluster peer probe node1
peer probe: success. Probe on localhost not needed
[root@node1 ~]# gluster peer probe node2
peer probe: success. 
[root@node1 ~]# gluster peer probe node3
peer probe: success. 
[root@node1 ~]# gluster peer probe node4
peer probe: success.

如果出现以下错误说明 gluster 没开启

  • peer probe: failed: Probe returned with 传输端点尚未连接

6)查看群集状态

  • 正常状态:State: Peer in Cluster (Connected)
  • 非正常状态:Disconnected ,考虑检查hosts文件
[root@node1 ~]# gluster peer status
Number of Peers: 3

Hostname: node2
Uuid: 3956bb61-22e6-4bda-b45b-9eb8c0874598
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 79c5eb67-2d08-40fe-a375-d41c500515b2
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: a5469e3b-d31b-4268-b1fb-0a461d9804a6
State: Peer in Cluster (Connected)

2.创建卷

1)创建分布式卷

[root@node1 ~]# gluster volume create dis-volume node1:/data/sde1 node2:/data/sde1 force   
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume info dis-volume        #查看分布式卷信息

Volume Name: dis-volume
Type: Distribute
Volume ID: 92e42f94-bfd0-44a9-930e-df5e078e3049
Status: Created
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start dis-volume      #启动分布式卷
volume start: dis-volume: success

在这里插入图片描述

2)创建条带卷

[root@node1 ~]# gluster volume create stripe-volume stripe 2 node1:/data/sdd1  node2:/data/sdd1 force    
volume create: stripe-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume info stripe-volume

Volume Name: stripe-volume
Type: Stripe
Volume ID: 6fb98b46-5832-4ead-afd1-edcb4c68bd8c
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start stripe-volume
volume start: stripe-volume: success

在这里插入图片描述

3)创建复制卷

[root@node1 ~]# gluster volume create rep-volume replica 2 node3:/data/sdd1 node4:/data/sdd11 force
volume create: rep-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume info rep-volume

Volume Name: rep-volume
Type: Replicate
Volume ID: 76b61b85-db02-43ed-872b-9ce1908dd0b3
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdd1
Brick2: node4:/data/sdd11
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start rep-volume
volume start: rep-volume: success

在这里插入图片描述

4)创建分布式条带卷

[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdb1 node2:/data/sdb1 node3:/data/sdb1 node4:/data/sdb1 force    
[root@node1 ~]# gluster volume info dis-stripe

volume create: dis-stripe: success: please start the volume to access data
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: 866cde7f-819c-47fb-8a05-f6aea47729c8
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Brick3: node3:/data/sdb1
Brick4: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start dis-stripe
volume start: dis-stripe: success

在这里插入图片描述

5)创建分布式复制卷

[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/data/sdc1 node2:/data/sdc1 node3:/data/sdc1 node4:/data/sdc1 force    
volume create: dis-rep: success: please start the volume to access data
[root@node1 ~]# gluster volume info dis-rep

Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 202a9eaa-6317-4f62-b38b-e85f860d3773
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Brick3: node3:/data/sdc1
Brick4: node4:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start dis-rep
volume start: dis-rep: success

在这里插入图片描述

3.部署Gluster客户端

增加一台Centos7机器来担任客户机:192.168.1.1

1)安装客户端软件

根据自身机器(图形化或命令行)来进行安装,安装步骤上面有

[root@localhost mnt]# yum -y install glusterfs glusterfs-fuse

在这里插入图片描述

2)创建挂载目录

[root@localhost mnt]# mkdir -p /test/{
    
    dis,stripe,rep,dis_and_stripe,dis_and_rep}   
[root@localhost mnt]# ls /test/
dis  dis_and_rep  dis_and_stripe  rep  stripe

在这里插入图片描述

3)修改hosts文件

[root@localhost mnt]# echo '192.168.1.100 node1
192.168.1.110 node2
192.168.1.120 node3
192.168.1.130 node4' >> /etc/hosts

在这里插入图片描述

4)挂载 Gluster 文件系统

[root@localhost mnt]# mount -t glusterfs node1:dis-volume /test/dis
[root@localhost mnt]# mount -t glusterfs node1:stripe-volume /test/stripe/
[root@localhost mnt]# mount -t glusterfs node1:rep-volume /test/rep/
[root@localhost mnt]# mount -t glusterfs node1:dis-stripe /test/dis_and_stripe/
[root@localhost mnt]# mount -t glusterfs node1:dis-rep /test/dis_and_rep/
[root@localhost mnt]# df -hT       #查看挂载

5)设置开机自动挂载

[root@localhost mnt]# vi /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_and_stripe   glusterfs   defaults,_netdev  0 0  
node1:dis-rep          /test/dis_and_rep      glusterfs   defaults,_netdev  0 0  

在这里插入图片描述

4.测试Gluster文件系统

还是,在客户机192.168.1.1中操作,在这里写入,后面查看后台的分布情况

1)创建测试性文件

[root@localhost mnt]# dd if=/dev/zero of=/demo1.log bs=1M count=40
[root@localhost mnt]# dd if=/dev/zero of=/demo2.log bs=1M count=40
[root@localhost mnt]# dd if=/dev/zero of=/demo3.log bs=1M count=40
[root@localhost mnt]# dd if=/dev/zero of=/demo4.log bs=1M count=40
[root@localhost mnt]# dd if=/dev/zero of=/demo5.log bs=1M count=40
[root@localhost mnt]# ll -h /demo*

在这里插入图片描述

2)查看文件分布

在客户机192.168.1.1中复制, 复制到刚刚的挂载目录中,因为是挂载到本地使用的,其实是放在了后端的存储服务器中

[root@localhost mnt]# cp /demo* /test/dis
[root@localhost mnt]# cp /demo* /test/stripe
[root@localhost mnt]# cp /demo* /test/rep
[root@localhost mnt]# cp /demo* /test/dis_and_stripe
[root@localhost mnt]# cp /demo* /test/dis_and_rep

在这里插入图片描述

到节点node1至node4节点中查看

【1】查看分布式卷文件分布

[root@node1 ~]# ll -h /data/sde1
总用量 160M
-rw-r--r-- 2 root root 40M 11  3 03:41 demo1.log
-rw-r--r-- 2 root root 40M 11  3 03:41 demo2.log
-rw-r--r-- 2 root root 40M 11  3 03:41 demo3.log
-rw-r--r-- 2 root root 40M 11  3 03:41 demo4.log
大小没有变,没有demo5.log
[root@node2 ~]# ll -h /data/sde1
总用量 40M
-rw-r--r-- 2 root root 40M 11  3 05:01 demo5.log
在node2这里,分布式成功

【2】查看条带卷文件分布

[root@node1 ~]# ll -lh /data/sdd1
总用量 100M
-rw-r--r-- 2 root root 20M 11  3 03:42 demo1.log
-rw-r--r-- 2 root root 20M 11  3 03:42 demo2.log
-rw-r--r-- 2 root root 20M 11  3 03:42 demo3.log
-rw-r--r-- 2 root root 20M 11  3 03:42 demo4.log
-rw-r--r-- 2 root root 20M 11  3 03:42 demo5.log
数据变小了,被分片了,还是5
[root@node2 ~]# ll -h /data/sdd1
总用量 100M
-rw-r--r-- 2 root root 20M 11  3 05:01 demo1.log
-rw-r--r-- 2 root root 20M 11  3 05:02 demo2.log
-rw-r--r-- 2 root root 20M 11  3 05:02 demo3.log
-rw-r--r-- 2 root root 20M 11  3 05:02 demo4.log
-rw-r--r-- 2 root root 20M 11  3 05:02 demo5.log

【3】查看复制卷文件分布

[root@node3 ~]# ll -h /data/sdd1
总用量 200M
-rw-r--r-- 2 root root 40M 11  3 05:02 demo1.log
-rw-r--r-- 2 root root 40M 11  3 05:02 demo2.log
-rw-r--r-- 2 root root 40M 11  3 05:04 demo3.log
-rw-r--r-- 2 root root 40M 11  3 05:05 demo4.log
-rw-r--r-- 2 root root 40M 11  3 05:06 demo5.log
大小没变,没有分片,复制卷
[root@node4 ~]# ll -h /data/sdd11
总用量 200M
-rw-r--r-- 2 root root 40M 11  3 05:02 demo1.log
-rw-r--r-- 2 root root 40M 11  3 05:02 demo2.log
-rw-r--r-- 2 root root 40M 11  3 05:04 demo3.log
-rw-r--r-- 2 root root 40M 11  3 05:05 demo4.log
-rw-r--r-- 2 root root 40M 11  3 05:06 demo5.log
大小没变,没有分片,冗余上面的

【4】查看分布式条带卷文件分布

[root@node1 ~]# ll -h /data/sdb1
总用量 80M
-rw-r--r-- 2 root root 20M 11  3 03:48 demo1.log
-rw-r--r-- 2 root root 20M 11  3 03:48 demo2.log
-rw-r--r-- 2 root root 20M 11  3 03:48 demo3.log
-rw-r--r-- 2 root root 20M 11  3 03:48 demo4.log
分片了,然后还有分布,在后面
[root@node2 ~]# ll -h /data/sdb1
总用量 80M
-rw-r--r-- 2 root root 20M 11  3 05:08 demo1.log
-rw-r--r-- 2 root root 20M 11  3 05:08 demo2.log
-rw-r--r-- 2 root root 20M 11  3 05:08 demo3.log
-rw-r--r-- 2 root root 20M 11  3 05:08 demo4.log
分片了
[root@node3 ~]# ll -h /data/sdb1
总用量 20M
-rw-r--r-- 2 root root 20M 11  3 05:09 demo5.log
分布,并且分片
[root@node4 ~]# ll -h /data/sdb1
总用量 20M
-rw-r--r-- 2 root root 20M 11  3 05:09 demo5.log
分布,分片

【5】查看分布式复制卷文件分布

[root@node1 ~]# ll -h /data/sdc1
总用量 160M
-rw-r--r-- 2 root root 40M 11  3 03:49 demo1.log
-rw-r--r-- 2 root root 40M 11  3 03:49 demo2.log
-rw-r--r-- 2 root root 40M 11  3 03:50 demo3.log
-rw-r--r-- 2 root root 40M 11  3 03:50 demo4.log
大小没变,5.log没有在后面,分布
[root@node2 ~]# ll -h /data/sdc1
总用量 160M
-rw-r--r-- 2 root root 40M 11  3 05:09 demo1.log
-rw-r--r-- 2 root root 40M 11  3 05:09 demo2.log
-rw-r--r-- 2 root root 40M 11  3 05:09 demo3.log
-rw-r--r-- 2 root root 40M 11  3 05:10 demo4.log
大小没变,冗余上面的1~4.log
[root@node3 ~]# ll -h /data/sdc1
总用量 40M
-rw-r--r-- 2 root root 40M 11  3 05:11 demo5.log
分布了,5.log大小没变
[root@node4 ~]# ll -h /data/sdc1
总用量 40M
-rw-r--r-- 2 root root 40M 11  3 05:11 demo5.log
冗余,上面5.log

3)破坏测试

挂起node2节点,在client 192.168.1.1中观察数据是否还完整

[root@localhost mnt]# ls /test/
dis  dis_and_rep  dis_and_stripe  rep  stripe

[root@localhost mnt]# ll -h /test/dis/               #测试分布式卷
总用量 160M
-rw-r--r-- 1 root root 40M 11  3 16:06 demo1.log
-rw-r--r-- 1 root root 40M 11  3 16:06 demo2.log
-rw-r--r-- 1 root root 40M 11  3 16:06 demo3.log
-rw-r--r-- 1 root root 40M 11  3 16:06 demo4.log
1~4都在node1,5.log分布卷在node2中,node2被挂起;得出分布式卷不具备冗余性
[root@localhost mnt]# ll -h /test/dis_and_rep/       #测试分布式复制卷
总用量 200M
-rw-r--r-- 1 root root 40M 11  3 16:07 demo1.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo2.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo3.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo4.log
-rw-r--r-- 1 root root 40M 11  3 17:27 demo5.log
node2的1`4.log中的数据在node1中有备份,然后其它在node3与node4中;具有冗余性
[root@localhost mnt]# ll -h /test/dis_and_stripe/     #测试分布式条带卷
总用量 40M
-rw-r--r-- 1 root root 40M 11  3 17:27 demo5.log
因为1~4.log被分片,一半在node2中,所以看不到;而5.log是node3~4中放着也被分片了,所以可以看到
[root@localhost mnt]# ll -h /test/rep/                #测试复制卷
总用量 200M
-rw-r--r-- 1 root root 40M 11  3 17:26 demo1.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo2.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo3.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo4.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo5.log
因为node4复制卷中的数据,node3中有备份,所以不会丢失,有冗余性
[root@localhost mnt]# ll -h /test/stripe/             #测试条带卷
总用量 0
因为数据被分片,另一半在node2中,导致无法看到
  • 可以看到除了复制卷和分布式复制卷,其他的数据都不再完整。

继续挂起 node4 节点,node2节点还是挂起状态不变

[root@localhost mnt]# ll -h /test/rep/                #测试复制卷
总用量 200M
-rw-r--r-- 1 root root 40M 11  3 17:26 demo1.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo2.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo3.log
-rw-r--r-- 1 root root 40M 11  3 17:26 demo4.log
-rw-r--r-- 1 root root 40M 11  3 17:27 demo5.log
因为node4复制卷中的数据,node3中有备份,所以不会丢失,有冗余性
[root@localhost mnt]# ll -h /test/dis_and_stripe/    #测试分布式条带卷
总用量 0
因为node4中有5.log另一半文件,node4挂起所以5.log也不能被访问了,没有冗余性
[root@localhost mnt]# ll -h /test/dis_and_rep/       #测试分布式复制卷
总用量 200M
-rw-r--r-- 1 root root 40M 11  3 16:07 demo1.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo2.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo3.log
-rw-r--r-- 1 root root 40M 11  3 16:07 demo4.log
-rw-r--r-- 1 root root 40M 11  3 17:27 demo5.log
虽然node2和node4都挂起了,node2的数据在node1有备份,node4的数据在node3中有备份,具有冗余性

五、其他的维护命令

将挂起的 node2 与 node4 恢复状态

1.查看GlusterFS卷

1)查看卷的列表

[root@node1 ~]# gluster volume list
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume

2)查看所有卷的信息

[root@node1 ~]# gluster volume info

Volume Name: dis-rep            #卷名称
Type: Distributed-Replicate
Volume ID: 9708e5cd-a64e-4865-971c-aac5c9b685da
Status: Started                 #状态:启用
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1        #群集节点
Brick2: node2:/data/sdc1        #群集节点
Brick3: node3:/data/sdc1	    #群集节点
Brick4: node4:/data/sdc1	    #群集节点
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
---------------------

3)查看卷的状态

[root@node1 ~]# gluster volume status

在这里插入图片描述

2.停止、删除卷

[root@node1 ~]# gluster volume stop dis-volume      #停止卷
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y   
volume stop: dis-volume: success
[root@node1 ~]# gluster volume delete dis-volume    #删除卷,(前提需要停止卷)
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y  
volume delete: dis-volume: success

3.设置卷的访问控制

只允许 192.168.1.0 网段客户机访问 dis-stripe 卷

[root@node1 ~]# gluster volume set dis-stripe auth.allow 192.168.1.*  
volume set: success

猜你喜欢

转载自blog.csdn.net/weixin_46902396/article/details/109443389