本文主要是介绍CentOS 7.6 GFS分布式文件系统部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GFS分布式文件系统
- 一、概述
- 二、工作流程
- 三、卷类型
- 1、分布式卷
- 2、条带卷
- 3、复制卷
- 4、分布式条带卷
- 5、分布式复制卷
- 四、部署 GlusterFS 群集
- 1、环境准备
- 2、yum安装glusterfs软件
- 3、开启GlusterFS服务
- 4、配置时间同步
- 5、 添加节点
- 6、创建卷
- (1)创建分布式卷
- (2)创建条带卷
- (3)创建复制卷
- (4)创建分布式条带卷
- (5)创建分布式复制卷
- 6、部署客户端
- 7、验证数据存储
- 8、破坏测试
一、概述
在企业中,一些重要的数据一般存储在硬盘上,虽然硬盘本身的性能也在不断提高,但 是无论硬盘的存取速度有多快,企业所追寻的首先是可靠性,然后才是效率。如果数据面临 丢失的风险,再好的硬件也无法挽回企业的损失。加之近几年云计算的出现,对存储提出了更高的要求。而分布式存储逐渐被人们所接受,它具有更好的性能、高扩展性以及可靠性。 大部分分布式解决方案都是通过元服务器存放目录结构等元数据,元数据服务器提供了整个分布式存储的索引工作。但是一旦元数据服务器损坏,整个分布式存储业将无法工作。
二、工作流程
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: 3Hostname: 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 forcevolume 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 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。
这篇关于CentOS 7.6 GFS分布式文件系统部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!