目录
引言:
一、GlusterFS简介
二、GlusterFS特点
2.1 扩展性和高性能
2.2 高可用性
2.3 全局统一命名空间
2.4 弹性卷管理
2.5 基于标准协议
三、GlusterFS术语
四、GlusterFS构成
五、后端存储如何定位文件
六、GFS支持的七种卷
6.1 分布式卷(Distribute volume)
6.2 条带卷(Stripe volume)
6.3 复制卷(Replica volume)
6.4 分布式条带卷(Distribute Stripe volume)
6.5 分布式复制卷(Distribute Replica volume)
6.6 条带复制卷(Stripe Replca volume)
6.7 分布式条带复制卷(Distribute Stripe Replicavolume)
七、GFS部署
7.1 集群环境
7.2 更改节点名称
7.3 节点进行磁盘挂载,安装本地源
7.4 添加节点创建集群
7.5 根据规划创建卷
7.5.1 创建分布式卷
7.5.2 创建条带卷
7.5.3 创建复制卷
7.5.4 创建分布式条带卷
7.5.5 创建分布式复制卷
7.5.6 部署gluster客户端
7.6 查看文件分布
7.6.1 查看分布式文件分布(node1:/dev/sdb1、node2:/dev/sdb1)
7.6.2 查看条带卷文件分布(node1:/dev/sdc1、node2:/dev/sdc1)
7.6.3 查看复制卷文件分布(node3:/dev/sdb1、node4:/dev/sdb1)
7.6.4 查看分布式条带卷分布(node1:/dev/sdd1、node2:/dev/sdd1、node3:/dev/sdd1、node4:/dev/sdd1)
7.6.5 查看分布式复制卷分布(node1:/dev/sde1、node2:/dev/sde1、node3:/dev/sde1、node4:/dev/sde1)
八、冗余测试
九、其他维护命令
十、总结
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,并提供容错功能。它可以给大量的用户提供总体性能较高的服务。
传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。而GlusterFS 分布式文件系统是基于无元服务器的设计,数据横向扩展能力强,具备较高的可靠性及存储效率。
GlusterFS利用双重特性来提供高容量存储解决方案。
分布式存储中,将所有节点的命名空间整合为统一命名空间,将整个系统的所有节点的存储容量组成一个大的虛拟存储池,供前端主机访问这些节点完成数据读写操作。
使用GFS会使用到以上的虚拟文件系统
模块化堆栈式架构
1、API:应用程序编程接口
2、模块化:每个模块可以提供不同的功能
3、堆栈式:同时启用多个模块,多个功能可以组合,实现复杂的功能
解读上图:
上半部分为客户端,中间为网络层,下半部分为服务端
弹性HASH算法是Davies-Meyer算法的具体实现,通过HASH算法可以得到一个32位的整数范围的hash值, 假设逻辑卷中有N个存储单位Brick,则32位的整数范围将被划分为N个连续的子空间,每个空间对应一个Brick。
当用户或应用程序访问某一个命名空间时,通过对该命名空间计算HASH值,根据该HASH值所对应的32位整数空间定位数据所在的Brick。
分布式卷具有如下特点:
条带卷特点:
复制卷特点:
类似RAID10,同时具有条带卷和复制卷的特点。
三种基本卷的复合卷,通常用于类Map Reduce应用。
Node1节点:node1/192.168.223.9 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node2节点:node2/192.168.223.10 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node3节点:node3/192.168.223.11 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node4节点:node4/192.168.223.12 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
=====客户端节点:192.168.223.20=====
1、首先,每台节点添加四块磁盘,仅做实验,无需太大
2、然后,重启服务器,准备开始部署
node1(192.168.223.9)
[root@localhost ~] # hostnamectl set-hostname node1
[root@localhost ~] # bash
node2(192.168.223.10)
[root@localhost ~] # hostnamectl set-hostname node2
[root@localhost ~] # bash
node3(192.168.223.11)
[root@localhost ~] # hostnamectl set-hostname node3
[root@localhost ~] # bash
node4(192.168.223.12)
[root@localhost ~] # hostnamectl set-hostname node4
[root@localhost ~] # bash
所有节点(这里使用node1作为示范)
[root@node1 ~] # systemctl stop firewalld
[root@node1 ~] # setenforce 0
[root@node1 ~] # 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
:wq
[root@node1 ~] # chmod +x /opt/fdisk.sh
[root@node1 ~] # cd /opt/
[root@node1 /opt] # ./fdisk.sh
[root@node1 /opt] # echo "192.168.223.9 node1" >> /etc/hosts
[root@node1 /opt] # echo "192.168.223.10 node2" >> /etc/hosts
[root@node1 /opt] # echo "192.168.223.11 node3" >> /etc/hosts
[root@node1 /opt] # echo "192.168.223.12 node4" >> /etc/hosts
[root@node1 /opt] # ls
fdisk.sh rh
[root@node1 /opt] # rz -E
rz waiting to receive.
[root@node1 /opt] # ls
fdisk.sh gfsrepo.zip rh
[root@node1 /opt] # unzip gfsrepo.zip
[root@node1 /opt] # cd /etc/yum.repos.d/
[root@node1 /etc/yum.repos.d] # ls
local.repo repos.bak
[root@node1 /etc/yum.repos.d] # mv * repos.bak/
[root@node1 /etc/yum.repos.d] # ls
repos.bak
[root@node1 /etc/yum.repos.d] # vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
:wq
[root@node1 /etc/yum.repos.d] # yum clean all && yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: glfs
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
已加载插件:fastestmirror, langpacks
glfs | 2.9 kB 00:00:00
(1/3): glfs/filelists_db | 62 kB 00:00:00
(2/3): glfs/other_db | 46 kB 00:00:00
(3/3): glfs/primary_db | 92 kB 00:00:00
Determining fastest mirrors
元数据缓存已建立
[root@node1 /etc/yum.repos.d] # yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@node1 /etc/yum.repos.d] # systemctl start glusterd.service
[root@node1 /etc/yum.repos.d] # systemctl enable glusterd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/glusterd.service to /usr/lib/systemd/system/glusterd.service.
[root@node1 /etc/yum.repos.d] # systemctl status glusterd.service
● glusterd.service - GlusterFS, a clustered file-system server
Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2021-03-02 19:45:10 CST; 764ms ago
Main PID: 51664 (glusterd)
CGroup: /system.slice/glusterd.service
└─51664 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
3月 02 19:45:10 node1 systemd[1]: Starting GlusterFS, a clustered file-system server...
3月 02 19:45:10 node1 systemd[1]: Started GlusterFS, a clustered file-system server.
添加节点到存储信任池中(仅需在一个节点上操作,我这里依旧在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.
[root@node1 ~] # gluster peer status
Number of Peers: 3
Hostname: node2
Uuid: 2ee63a35-6e83-4a35-8f54-c9c0137bc345
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: e63256a9-6700-466f-9279-3e3efa3617ec
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 9931effa-92a6-40c7-ad54-7361549dd96d
State: Peer in Cluster (Connected)
========根据以下规划创建卷=========
卷名称 卷类型 Brick
dis-volume 分布式卷 node1(/data/sdb1)、node2(/data/sdb1)
stripe-volume 条带卷 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)
#创建分布式卷,没有指定类型,默认创建的是分布式卷
[root@node1 ~] # gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~] # gluster volume list
dis-volume
[root@node1 ~] # gluster volume start dis-volume
volume start: dis-volume: success
[root@node1 ~] # gluster volume info dis-volume
Volume Name: dis-volume
Type: Distribute
Volume ID: 8f948537-5ac9-4091-97eb-0bdcf142f4aa
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
#指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
[root@node1 ~] # gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
[root@node1 ~] # gluster volume start stripe-volume
volume start: stripe-volume: success
[root@node1 ~] # gluster volume info stripe-volume
Volume Name: stripe-volume
Type: Stripe
Volume ID: b1185b78-d396-483f-898e-3519d3ef8e37
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
#指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
[root@node1 ~] # gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: rep-volume: success: please start the volume to access data
[root@node1 ~] # gluster volume start rep-volume
volume start: rep-volume: success
[root@node1 ~] # gluster volume info rep-volume
Volume Name: rep-volume
Type: Replicate
Volume ID: 9d39a2a6-b71a-44a5-8ea5-5259d8aef518
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
指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
[root@node1 ~] # gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 ~] # gluster volume start dis-stripe
volume start: dis-stripe: success
[root@node1 ~] # gluster volume info dis-stripe
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: beb7aa78-78d1-435f-8d29-c163878c73f0
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
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
[root@node1 ~] # gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 ~] # gluster volume start dis-rep
volume start: dis-rep: success
[root@node1 ~] # gluster volume info dis-rep
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: 734e38e6-154c-4425-acca-2342577b14e7
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
dis-rep
dis-stripe
dis-volume
rep-volume
stripe-volume
部署Gluster客户端(192.168.223.20)
[root@promote ~]#systemctl stop firewalld
[root@promote ~]#setenforce 0
[root@promote ~]#cd /opt
[root@promote opt]#ls
rh
[root@promote opt]#rz -E
rz waiting to receive.
[root@promote opt]#ls
gfsrepo.zip rh
[root@promote opt]#unzip gfsrepo.zip
[root@promote opt]#cd /etc/yum.repos.d/
[root@promote yum.repos.d]#ls
local.repo repos.bak
[root@promote yum.repos.d]#mv *.repo repos.bak/
[root@promote yum.repos.d]#ls
repos.bak
[root@promote yum.repos.d]#vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
========》wq
[root@promote yum.repos.d]#yum clean all && yum makecache
[root@promote yum.repos.d]#yum -y install glusterfs glusterfs-fuse
[root@promote yum.repos.d]#mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
[root@promote yum.repos.d]#cd /test/
[root@promote test]#ls
dis dis_rep dis_stripe rep stripe
[root@promote test]#
[root@promote test]#echo "192.168.184.10 node1" >> /etc/hosts
[root@promote test]#echo "192.168.184.20 node2" >> /etc/hosts
[root@promote test]#echo "192.168.184.30 node3" >> /etc/hosts
[root@promote test]#echo "192.168.184.40 node4" >> /etc/hosts
[root@promote test]#
[root@promote test]#mount.glusterfs node1:dis-volume /test/dis
[root@promote test]#mount.glusterfs node1:stripe-volume /test/stripe
[root@promote test]#mount.glusterfs node1:rep-volume /test/rep
[root@promote test]#mount.glusterfs node1:dis-stripe /test/dis_stripe
[root@promote test]#mount.glusterfs node1:dis-rep /test/dis_rep
[root@promote test]#
[root@promote test]#df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 16G 3.5G 13G 22% /
devtmpfs 898M 0 898M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 18M 894M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sda5 10G 37M 10G 1% /home
/dev/sda1 10G 174M 9.9G 2% /boot
tmpfs 183M 4.0K 183M 1% /run/user/42
tmpfs 183M 40K 183M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
node1:dis-volume 6.0G 65M 6.0G 2% /test/dis
node1:stripe-volume 8.0G 65M 8.0G 1% /test/stripe
node1:rep-volume 3.0G 33M 3.0G 2% /test/rep
node1:dis-stripe 21G 130M 21G 1% /test/dis_stripe
node1:dis-rep 11G 65M 11G 1% /test/dis_rep
[root@promote test]#cd /opt
[root@promote opt]#dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.0311576 秒,1.3 GB/秒
[root@promote opt]#dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.182058 秒,230 MB/秒
[root@promote opt]#dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.196193 秒,214 MB/秒
[root@promote opt]#dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.169933 秒,247 MB/秒
[root@promote opt]#dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
记录了40+0 的读入
记录了40+0 的写出
41943040字节(42 MB)已复制,0.181712 秒,231 MB/秒
[root@promote opt]#
[root@promote opt]#ls -lh /opt
总用量 250M
-rw-r--r--. 1 root root 40M 3月 2 22:45 demo1.log
-rw-r--r--. 1 root root 40M 3月 2 22:45 demo2.log
-rw-r--r--. 1 root root 40M 3月 2 22:45 demo3.log
-rw-r--r--. 1 root root 40M 3月 2 22:45 demo4.log
-rw-r--r--. 1 root root 40M 3月 2 22:45 demo5.log
drwxr-xr-x. 3 root root 8.0K 3月 27 2018 gfsrepo
-rw-r--r--. 1 root root 50M 3月 2 10:30 gfsrepo.zip
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
[root@promote opt]#
[root@promote opt]#cp demo* /test/dis
[root@promote opt]#cp demo* /test/stripe/
[root@promote opt]#cp demo* /test/rep/
[root@promote opt]#cp demo* /test/dis_stripe/
[root@promote opt]#cp demo* /test/dis_rep/
[root@promote opt]#cd /test/
[root@promote test]#tree
.
├── dis
│ ├── demo1.log
│ ├── demo2.log
│ ├── demo3.log
│ ├── demo4.log
│ └── demo5.log
├── dis_rep
│ ├── demo1.log
│ ├── demo2.log
│ ├── demo3.log
│ ├── demo4.log
│ └── demo5.log
├── dis_stripe
│ ├── demo1.log
│ ├── demo2.log
│ ├── demo3.log
│ ├── demo4.log
│ └── demo5.log
├── rep
│ ├── demo1.log
│ ├── demo2.log
│ ├── demo3.log
│ ├── demo4.log
│ └── demo5.log
└── stripe
├── demo1.log
├── demo2.log
├── demo3.log
├── demo4.log
└── demo5.log
5 directories, 25 files
[root@node1 ~] # ls -lh /data/sdb1
总用量 160M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo4.log
[root@node2 ~]#ll -h /data/sdb1
总用量 40M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node1 ~] # ls -lh /data/sdc1
总用量 100M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node2 ~]#ll -h /data/sdc1
总用量 100M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node3 ~]#ll -h /data/sdb1
总用量 200M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sdb1
总用量 200M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node1 ~] # ll -h /data/sdd1
总用量 60M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo3.log
[root@node2 ~]#ll -h /data/sdd1
总用量 60M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo3.log
[root@node3 ~]#ll -h /data/sdd1
总用量 40M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sdd1
总用量 40M
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo4.log
-rw-r--r--. 2 root root 20M 3月 2 22:46 demo5.log
[root@node1 ~] # ll -h /data/sde1
总用量 160M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo4.log
[root@node2 ~]#ll -h /data/sde1
总用量 160M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo1.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo2.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo3.log
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo4.log
[root@node3 ~]#ll -h /data/sde1
总用量 40M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo5.log
[root@node4 ~]#ll -h /data/sde1
总用量 40M
-rw-r--r--. 2 root root 40M 3月 2 22:46 demo5.log
在客户端(192.168.223.20)上查看文件是否正常
1、分布式卷数据查看,缺少demo5,这是在node2上的,不具备冗余,挂起 node2 节点或者关闭glusterd服务来模拟故障
[root@node2 ~]# init 0
[root@zabbix test]#ll /test/dis
总用量 163840
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
[root@promote test]#
2、条带卷,无法访问,不具备冗余
[root@zabbix test]#ll /test/stripe/
总用量 0
[root@promote test]#
3、复制卷,在node3和node4上的,关闭node4(192.168.184.40)进行测试,具有冗余
[root@node4 ~]#init 0
客户端,仍然存在
[root@zabbix test]#ll /test/rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo5.log
[root@promote test]#
4、分布式条带卷,不具备冗余
[root@zabbix test]#ll /test/dis_stripe/
总用量 0
5、分布式复制卷,具有冗余
[root@zabbix test]#ll /test/dis_rep/
总用量 204800
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo1.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo2.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo3.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 demo4.log
-rw-r--r--. 1 root root 41943040 3月 2 23:36 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.allow 192.168.184.100
#仅允许
gluster volume set dis-rep auth.allow 192.168.184.* #设置192.168.184.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)
①mysql服务器——>存储数据到挂载目录中/data
②mysql数据会优先交给内核的文件系统处理——>GFS客户端处理(本地)
③GFS客户端会和GFS服务端进行交互,GFS服务端接收到数据,然后再通过挂载的卷的类型,对应保存在后端block块节点服务器上
分布式条带复制卷(Distribute Stripe Replicavolume)三种基本卷的复合卷,通常用于类 Map Reduce 应用器——>存储数据到挂载目录中/data