一、概述

在企业中,一些重要的数据一般存储在硬盘上,虽然硬盘本身的性能也在不断提高,但 是无论硬盘的存取速度有多快,企业所追寻的首先是可靠性,然后才是效率。如果数据面临 丢失的风险,再好的硬件也无法挽回企业的损失。加之近几年云计算的出现,对存储提出了更高的要求。而分布式存储逐渐被人们所接受,它具有更好的性能、高扩展性以及可靠性。 大部分分布式解决方案都是通过元服务器存放目录结构等元数据,元数据服务器提供了整个分布式存储的索引工作。但是一旦元数据服务器损坏,整个分布式存储业将无法工作。

二、工作流程

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, 并且将数据写入服务器存储设备

三、卷类型

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

  • 分布式卷(Distribute volume):文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是Glusterf 的基础;以文件为单位根据 HASH 算法散列到不同的Brick,其实只是扩大了磁盘空间,如果有一块磁盘损坏,数据也将丢失,属于文件级的 RAID 0, 不具有容错能力。
  • 条带卷(Stripe volume):类似 RAID0,文件被分成数据块并以轮询的方式分布到多个 Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高。
  • 复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得 到很大提升,但写性能下降。
  • 分布式条带卷(Distribute Stripe volume):Brick Server 数量是条带数(数据块分布 的 Brick数量)的倍数,兼具分布式卷和条带卷的特点。
  • 分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本数量)的倍数,兼具分布式卷和复制卷的特点。
  • 条带复制卷(Stripe Replica volume):类似 RAID 10,同时具有条带卷和复制卷的特点。
  • 分布式条带复制卷(Distribute Stripe Replicavolume):三种基本卷的复合卷,通常用于类 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),相当于 RAID1,即同一文件保存一份 或多份副本,每个节点上保存相同的内容和目录结构。复制模式因为要保存副本,所以磁盘 利用率较低。如果多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量。在配置复制卷时,复制数必须等于卷中 Brick 所包含的存储服务器数,复 制卷具备冗余性,即使一个节点损坏,也不影响数据的正常使用。

复制卷具有如下特点。

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

4、分布式条带卷

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

5、分布式复制卷

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

四、部署 GlusterFS 群集

1、环境准备

node1:192.168.245.203
node2:192.168.245.204
node3:192.168.245.205
node4:192.168.245.206
client:192.168.245.201
确定firewall防火墙和selinux已经关闭

iptables -F是没有用的,一定要关闭firewall防火墙!!!

每台node新添加4块磁盘,大小20G

在这里插入图片描述
给这些新添加的磁盘分区并格式化

创建挂载点

[root@node1 ~]# mkdir -p /data/sd{b,c,d,e}1
[root@node1 ~]# ls /data
sdb1  sdc1  sdd1  sde1

挂载分区

[root@node1 ~]# mount /dev/sdb1 /data/sdb1
[root@node1 ~]# mount /dev/sdc1 /data/sdc1
[root@node1 ~]# mount /dev/sdd1 /data/sdd1
[root@node1 ~]# mount /dev/sde1 /data/sde1
[root@node1 ~]# 
[root@node1 ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        50G  4.2G   46G    9% /
devtmpfs                devtmpfs  894M     0  894M    0% /dev
tmpfs                   tmpfs     910M     0  910M    0% /dev/shm
tmpfs                   tmpfs     910M   11M  900M    2% /run
tmpfs                   tmpfs     910M     0  910M    0% /sys/fs/cgroup
/dev/sda1               xfs      1014M  179M  836M   18% /boot
/dev/mapper/centos-home xfs       247G   37M  247G    1% /home
tmpfs                   tmpfs     182M   12K  182M    1% /run/user/42
tmpfs                   tmpfs     182M     0  182M    0% /run/user/0
/dev/sdb1               ext4       20G   45M   19G    1% /data/sdb1
/dev/sdc1               ext4       20G   45M   19G    1% /data/sdc1
/dev/sdd1               ext4       20G   45M   19G    1% /data/sdd1
/dev/sde1               ext4       20G   45M   19G    1% /data/sde1

修改节点的主机名,因为它是用主机名来识别各节点的

[root@node1 ~]# echo "192.168.245.203 node1" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.204 node2" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.205 node3" >>  /etc/hosts
[root@node1 ~]# echo "192.168.245.206 node4" >>  /etc/hosts
  • 配置yum本地源

gfsrepo目录里是本地rpm包,里面包含了gfs软件包和依赖包

[root@node1 ~]# mkdir /abc
[root@node1 ~]# cd /abc
[root@node1 abc]# ll
总用量 12
drwxr-xr-x 3 root root 8192 9  13 23:47 gfsrepo

把之前的yum网络源的配置文件备份一下

[root@node1 abc]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  epel.repo
[root@node1 yum.repos.d]# mkdir bak
[root@node1 yum.repos.d]# mv * bak
mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 
[root@node1 yum.repos.d]# 
[root@node1 yum.repos.d]# ls
bak

编辑本地yum源

[root@node1 yum.repos.d]# vim GLFS.repo

[glfs]
name=glfs
baseurl=file:///abc/gfsrepo
gpgcheck=0
enabled=1

把yum本地源配置文件推送给其他node节点(为了节省时间)

[root@node1 yum.repos.d]# scp GLFS.repo root@192.168.245.204:/etc/yum.repos.d/
The authenticity of host '192.168.245.204 (192.168.245.204)' can't be established.
ECDSA key fingerprint is SHA256:5qVFPbfSJ8tArL82/yswIhMAg7vdiKoK4nZsexYkUX4.
ECDSA key fingerprint is MD5:aa:db:41:8e:a3:70:d8:44:ce:28:b7:88:fe:0c:63:bb.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.245.204' (ECDSA) to the list of known hosts.
root@192.168.245.204's password: 
GLFS.repo                                                                                  100%   66    36.9KB/s   00:00    

yum安装之前,显示所有已经安装和可以安装的程序包

[root@node1 yum.repos.d]# yum list

2、yum安装glusterfs软件

yum安装以下软件包

[root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

3、开启GlusterFS服务

[root@node1 yum.repos.d]# systemctl start glusterd.service 

[root@node1 ~]# netstat -antp | grep gluster
tcp        0      0 0.0.0.0:24007           0.0.0.0:*               LISTEN      8760/glusterd       
tcp        0      0 0.0.0.0:49152           0.0.0.0:*               LISTEN      64209/glusterfsd    
tcp        0      0 0.0.0.0:49153           0.0.0.0:*               LISTEN      64514/glusterfsd    
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN      64788/glusterfsd    
tcp        0      0 0.0.0.0:49155           0.0.0.0:*               LISTEN      64963/glusterfsd   

4、配置时间同步

[root@node1 yum.repos.d]# ntpdate ntp1.aliyun.com
14 Sep 00:17:59 ntpdate[63937]: adjust time server 120.25.115.20 offset 0.007826 sec

5、 添加节点

只需要在一台node上添加即可

[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. 

通过以下命令在每个节点上查看群集状态,正常情况下每个节点的输出结果均为“State: Peer in Cluster(Connected)”。如果显示 Disconnected,请检查 hosts 文件配置

[root@node1 ~]# gluster peer status 
Number of Peers: 3

Hostname: node2
Uuid: bc421d97-5e05-43da-af1d-2b28c46acdd3
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 7d4ccf9d-83b3-4b8d-8a30-42a9da6a78ee
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: 4df47d8d-8dd4-4336-a411-9b96d996ae4a
State: Peer in Cluster (Connected)

6、创建卷

(1)创建分布式卷

使用gluster volume create创建卷,后面跟卷名称,自己可识别即可,没有指定类型,默认创建的是分布式卷,force表示强制,你想用哪些节点来存储后面跟节点名和挂载点

[root@node1 ~]# gluster volume create fenbushi-vol node1:/data/sdb1 node2:/data/sdb1 force

volume create: fenbushi-vol: success: please start the volume to access data

gluster volume info 卷名可以查看卷的详细信息

[root@node1 ~]# gluster volume info fenbushi-vol 
 
Volume Name: fenbushi-vol
Type: Distribute
Volume ID: 47978ec2-b7e0-4ede-8723-cabec845ca31
Status: Created    <----还在创建状态
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

查看所有GFS卷列表

[root@node1 ~]# gluster volume list
fenbushi-vol

启用分布式卷,创建之后还不能使用,必须要启用它
使用gluster volume start 卷名启用卷

[root@node1 ~]# gluster volume start fenbushi-vol 
volume start: fenbushi-vol: success

[root@node1 ~]# gluster volume info fenbushi-vol 
 
Volume Name: fenbushi-vol
Type: Distribute
Volume ID: 47978ec2-b7e0-4ede-8723-cabec845ca31
Status: Started    <----状态改变
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
(2)创建条带卷

这里指定类型为 stripe,数值为 2,而且后面跟了 2 个 node节点,所以创建的是条带卷。

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

启用条带卷

[root@node1 ~]# gluster volume start tiaodai-vol 
volume start: tiaodai-vol: success
[root@node1 ~]# gluster volume info tiaodai-vol 
 
Volume Name: tiaodai-vol
Type: Stripe
Volume ID: d30c1262-a8bf-41eb-9200-8092209ca1fb
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdc1
Brick2: node2:/data/sdc1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fenbushi-vol
tiaodai-vol
(3)创建复制卷

这里指定类型为 replica,数值为 2,而且后面跟了 2 个 node节点,所以创建的是复制卷

[root@node1 ~]# gluster volume create fuzhi-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: fuzhi-vol: success: please start the volume to access data

启用复制卷

[root@node1 ~]# gluster volume start fuzhi-vol 
volume start: fuzhi-vol: success
[root@node1 ~]# gluster volume list
fenbushi-vol
fuzhi-vol
tiaodai-vol
[root@node1 ~]# gluster volume info fuzhi-vol 
 
Volume Name: fuzhi-vol
Type: Replicate
Volume ID: 39d55d25-5b6c-4b2e-85a6-24678ecfab43
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node3:/data/sdb1
Brick2: node4:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
(4)创建分布式条带卷

这里指定类型为 stripe,数值为 2,而且后面跟了 4 个 node节点,是 2 的 2 倍,所以创建的是分布式条带卷

[root@node1 ~]# gluster volume create fbsstr-vol stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: fbsstr-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume start fbsstr-vol 
volume start: fbsstr-vol: success
[root@node1 ~]# gluster volume info fbsstr-vol 
 
Volume Name: fbsstr-vol
Type: Distributed-Stripe
Volume ID: b31d3cd6-38c4-46f6-b380-c8e39f17bf54
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdd1
Brick2: node2:/data/sdd1
Brick3: node3:/data/sdd1
Brick4: node4:/data/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fbsstr-vol
fenbushi-vol
fuzhi-vol
tiaodai-vol
(5)创建分布式复制卷

这里指定类型为 replica,数值为 2,而且后面跟了 4 个 node节点,是 2 的 两倍,所以创建的是分布式复制卷

[root@node1 ~]# gluster volume create fbsrep-vol replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: fbsrep-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume start fbsrep-vol 
volume start: fbsrep-vol: success
[root@node1 ~]# gluster volume info fbsrep-vol 
 
Volume Name: fbsrep-vol
Type: Distributed-Replicate
Volume ID: bcb1f7f3-9d17-4702-935e-1dbd00da25fd
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/data/sde1
Brick2: node2:/data/sde1
Brick3: node3:/data/sde1
Brick4: node4:/data/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume list
fbsrep-vol
fbsstr-vol
fenbushi-vol
fuzhi-vol
tiaodai-vol

6、部署客户端

在部署完分布式文件系统后,需要对挂载的服务器安装客户端软件,并创建挂载目录, 将分布式文件系统挂载到刚创建目录即可。

客户端上的准备工作:

[root@node1 yum.repos.d]# scp GLFS.repo root@192.168.245.201:/etc/yum.repos.d/

[root@client ~]# yum -y install glusterfs glusterfs-fuse

[root@client ~]# echo "192.168.245.203 node1" >>  /etc/hosts
[root@client ~]# echo "192.168.245.204 node2" >>  /etc/hosts
[root@client ~]# echo "192.168.245.205 node3" >>  /etc/hosts
[root@client ~]# echo "192.168.245.206 node4" >>  /etc/hosts

创建挂载点

[root@client ~]# mkdir -p /test/fbs   <----分布式卷
[root@client ~]# mkdir /test/tiaodai  <----条带卷
[root@client ~]# mkdir /test/fuzhi    <----复制卷
[root@client ~]# mkdir /test/fbsstr   <----分布式条带卷
[root@client ~]# mkdir /test/fbsrep   <----分布式复制卷
[root@client ~]# 
[root@client ~]# 
[root@client ~]# mount.glusterfs node1:fenbushi-vol /test/fbs
[root@client ~]# mount.glusterfs node1:tiaodai-vol /test/tiaodai/
[root@client ~]# mount.glusterfs node1:fuzhi-vol /test/fuzhi
[root@client ~]# mount.glusterfs node1:fbsstr-vol /test/fbsstr/
[root@client ~]# mount.glusterfs node1:fbsrep-vol /test/fbsrep/
[root@client ~]# 
[root@client ~]# df -TH
文件系统           类型            容量  已用  可用 已用% 挂载点
/dev/sda3          xfs             317G   14G  303G    5% /
devtmpfs           devtmpfs        2.0G     0  2.0G    0% /dev
tmpfs              tmpfs           2.0G     0  2.0G    0% /dev/shm
tmpfs              tmpfs           2.0G   14M  2.0G    1% /run
tmpfs              tmpfs           2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1          xfs             1.1G  183M  881M   18% /boot
tmpfs              tmpfs           396M  4.1k  396M    1% /run/user/42
tmpfs              tmpfs           396M   25k  396M    1% /run/user/0
/dev/sr0           iso9660         4.6G  4.6G     0  100% /run/media/root/CentOS 7 x86_64
node1:fenbushi-vol fuse.glusterfs   43G   93M   40G    1% /test/fbs
node1:tiaodai-vol  fuse.glusterfs   43G   93M   40G    1% /test/tiaodai
node1:fuzhi-vol    fuse.glusterfs   22G   47M   20G    1% /test/fuzhi
node1:fbsstr-vol   fuse.glusterfs   85G  186M   80G    1% /test/fbsstr
node1:fbsrep-vol   fuse.glusterfs   43G   93M   40G    1% /test/fbsrep

在挂载时,所指定的 node1 只是为了从它那里获取到必要的配置信息,在挂载之后, 客户机不仅仅会与 node1 进行通信,也会直接和逻辑存储卷内其他 node所在的主机进行通信。

7、验证数据存储

产生5个测试文件,每个大小40M

[root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0238866 秒,1.8 GB/
[root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0317271 秒,1.3 GB/
[root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0369535 秒,1.1 GB/
[root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0357797 秒,1.2 GB/
[root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0162924 秒,2.6 GB/

将这些测试文件分别拷贝到挂载点

[root@client ~]# cp /demo* /test/tiaodai/
[root@client ~]# cp /demo* /test/fuzhi/
[root@client ~]# cp /demo* /test/fbs
[root@client ~]# cp /demo* /test/fbsrep/
[root@client ~]# cp /demo* /test/fbsstr/

验证分布式卷存储情况

文件1-4存储在了node1上,5存储在了node2上

[root@node1 ~]# ll -h /data/sdb1
总用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
[root@node2 yum.repos.d]#  ll -h /data/sdb1
总用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

验证条带卷存储情况

所有文件都分成了两半各自存储在node1和node2上

[root@node1 ~]# ll -h /data/sdc1
总用量 101M
-rw-r--r-- 2 root root 20M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log
[root@node2 yum.repos.d]#  ll -h /data/sdc1
总用量 101M
-rw-r--r-- 2 root root 20M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log

验证复制卷

每个文件都存在node3上一份,node4上一份

[root@node3 ~]# ll -h /data/sdb1
总用量 201M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sdb1
总用量 201M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo4.log
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

验证分布式条带卷

文件1-4各分成一半存在了node1和node2上,文件5分成两半存在node3和node4上

[root@node1 ~]# ll -h /data/sdd1
总用量 81M
-rw-r--r-- 2 root root 20M 9  14 01:13 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo4.log
[root@node2 ~]#  ll -h /data/sdd1
总用量 81M
-rw-r--r-- 2 root root 20M 9  14 01:13 demo1.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo2.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 20M 9  14 01:13 demo4.log
[root@node3 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r-- 2 root root 20M 9  14 01:17 demo5.log

验证分布式复制卷
文件1-4存在node1上一份,node2上一份,而文件5寸在node3一份,node4一份

[root@node1 ~]# ll -h /data/sde1
总用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo4.log
[root@node2 ~]#  ll -h /data/sde1
总用量 161M
-rw-r--r-- 2 root root 40M 9  14 01:12 demo1.log
-rw-r--r-- 2 root root 40M 9  14 01:12 demo2.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo3.log
-rw-r--r-- 2 root root 40M 9  14 01:13 demo4.log
[root@node3 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log
[root@node4 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r-- 2 root root 40M 9  14 01:17 demo5.log

8、破坏测试

现在宕机node2观察数据是否还完整

可以看到除了复制卷和分布式复制卷,其他的数据都不再完整

[root@client test]# ls /test
fbs  fbsrep  fbsstr  fuzhi  tiaodai

[root@client test]# ls /test/fbs
demo1.log  demo2.log  demo3.log  demo4.log 
 
[root@client test]# ls /test/tiaodai/

[root@client test]# ls /test/fuzhi/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  

[root@client test]# ls /test/fbsstr/
demo5.log 

[root@client test]# ls /test/fbsrep/
demo1.log  demo2.log  demo3.log  demo4.log  demo5.log  

如果有服务器宕机的话想要删除卷是无法删除的,必须都在线才可以
删除之前需要停止

[root@node1 ~]# gluster volume stop fuzhi-vol 
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: fuzhi-vol: success

[root@node1 ~]# gluster volume delete fuzhi-vol 
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: fuzhi-vol: failed: Some of the peers are down

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐