CentOS 7.6 GFS分布式文件系统部署
这里写目录标题概述工作流程卷类型分布式卷条带卷复制卷分布式条带卷分布式复制卷部署 GlusterFS 群集环境准备创建卷创建分布式卷创建条带卷创建复制卷创建分布式条带卷创建分布式复制卷部署客户端验证概述在企业中,一些重要的数据一般存储在硬盘上,虽然硬盘本身的性能也在不断提高,但 是无论硬盘的存取速度有多快,企业所追寻的首先是可靠性,然后才是效率。如果数据面临 丢失的风险,再好的硬件也无法挽回企业的
GFS分布式文件系统
一、概述
在企业中,一些重要的数据一般存储在硬盘上,虽然硬盘本身的性能也在不断提高,但 是无论硬盘的存取速度有多快,企业所追寻的首先是可靠性,然后才是效率。如果数据面临 丢失的风险,再好的硬件也无法挽回企业的损失。加之近几年云计算的出现,对存储提出了更高的要求。而分布式存储逐渐被人们所接受,它具有更好的性能、高扩展性以及可靠性。 大部分分布式解决方案都是通过元服务器存放目录结构等元数据,元数据服务器提供了整个分布式存储的索引工作。但是一旦元数据服务器损坏,整个分布式存储业将无法工作。
二、工作流程
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 倍甚至更多,那么将创建的是分布式条带卷或分布式复制卷。
更多推荐
所有评论(0)