GFS分析与分布式文件系统群集部署
文章目录
一: GFS分析
1.1:GlusterFS简介
- Gluster File System,开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储
- 由存储服务器(Brick Server)、客户端以及NFS/Samba 存储网关组成
- 无元数据服务器
- GlusterFS特点
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准协议
- 常用术语
- Brick: GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
- Volume:卷
- FUSE:内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
- VFS:虚拟文件系统
- Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
- GFS的结构
- 模块化堆栈式架构
- 模块化、堆栈式的架构
- 通过对模块的组合,实现复杂的功能
1.2:GlusterFS工作流程
-
1、客户端或应用程序通过GlusterFS的挂载点访问数据
-
2、linux系统内核通过VFS API收到请求并处理
-
3、VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
-
4、GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理
-
5、通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上
-
1.3:GlusterFS工作原理
-
弹性HASH算法
- 通过HASH算法得到一个32位的整数
- 划分为N个连续的子空间,每个空间对应一个Brick
- 弹性HASH算法的优点
- 保证数据平均分布在每一个Brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
-
-
N个Brick(storage)节点的GlusterFS卷,平均分配232次方的区间的范围空间
访问文件时,通过计算该文件的HASH值,从而对应到Brick(storage)存储空间
通过HASH分配到各个节点块,每个节点块都有自己的地址
1.4:GlusterFS的卷类型
- 分布式卷
条带卷
复制卷
分布式条带卷
分布式复制卷
条带复制卷
分布式条带复制卷
分布式卷
-
没有对文件进行分块处理
-
通过扩展文件属性保存HASH值
-
支持的底层文件系统有ext3、ext4、ZFS、XFS等
-
特点
- 文件分布在不同的服务器,不具备冗余性
- 更容易和廉价地扩展卷的大小
- 单点故障会造成数据丢失
- 依赖底层的数据保护
-
创建命令
gluster volume create dis-volume server1:/dir1 server2:/dir2
-
条带卷
-
根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
-
存储大文件时,性能尤为突出
-
不具备冗余性,类似Raid0
-
特点
- 数据被分割成更小块分布到块服务器群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
-
创建命令
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
-
复制卷
-
同一文件保存一份或多分副本
-
复制模式因为要保存副本,所以磁盘利用率较低
-
多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量
-
特点
- 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少由两个块服务器或更多服务器
- 具备冗余性
-
创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
rep-volume 卷名 replica 2 分两块
-
分布式条带卷
-
兼顾分布式卷和条带卷的功能
-
主要用于大文件访问处理
-
至少最少需要 4 台服务器
-
创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
-
分布式复制卷
-
兼顾分布式卷和复制卷的功能
-
用于需要冗余的情况下
-
创建命令
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
-
二: GFS群集部署
2.1: 环境部署
- 开五台虚拟机,一台cilent,四台nodes,nodes增加四块磁盘,每块5G
角色 | IP地址 | 磁盘 |
---|---|---|
node1 | 192.168.100.140 | 20GX4 |
node2 | 192.168.100.150 | 20GX4 |
node3 | 192.168.100.160 | 20GX4 |
node4 | 192.168.100.170 | 20GX4 |
client | 192.168.100.180 | 20GX4 |
- 将要使用的卷名称和信息
卷名称 | 卷类型 | 空间大小/GB | Brick |
---|---|---|---|
dis | 分布式卷 | 40 | node1(sdb1);node2(sdb1) |
stripe-volume | 条带卷 | 40 | node1(sdc1);node2(sdc1) |
rep-volume | 复制卷 | 20 | node3(sdb1);node4(sdb1) |
dis-stripe | 分布式条带卷 | 80 | node1(sdd1);node2(sdd1);node3(sdd1);node4(sdd1) |
dis-rep | 分布式复制卷 | 40 | node1(sde1);node2(sde1);node3(sde1);node4(sde1) |
-
修改主机名,添加磁盘
主机名node1~4 ; 四个节点每个添加四块20G的磁盘
-
创建、格式化、挂载磁盘shell脚本,一键操作
vim disk.sh #! /bin/bash echo "the disks exist list:" ##grep出系统所带磁盘 fdisk -l |grep '磁盘 /dev/sd[a-z]' echo "==================================================" PS3="chose which disk you want to create:" ##选择需要创建的磁盘编号 select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit do case $VAR in sda) ##本地磁盘就退出case语句 fdisk -l /dev/sda break ;; sd[b-z]) #create partitions echo "n ##创建磁盘 p w" | fdisk /dev/$VAR #make filesystem ##格式化 mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null #mount the system mkdir -p /data/${VAR}"1" &> /dev/null ###永久挂载 echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab ###使得挂载生效 mount -a &> /dev/null break ;; quit) break;; *) echo "wrong disk,please check again";; esac done
-
挂载完毕如下
[root@node1 opt]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 245G 4.9G 240G 2% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 13M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda5 xfs 33G 37M 33G 1% /home /dev/sda1 xfs 20G 174M 20G 1% /boot tmpfs tmpfs 378M 8.0K 378M 1% /run/user/42 tmpfs tmpfs 378M 0 378M 0% /run/user/0 /dev/sdb1 xfs 20G 33M 20G 1% /data/sdb1 /dev/sdc1 xfs 20G 33M 20G 1% /data/sdc1 /dev/sdd1 xfs 20G 33M 20G 1% /data/sdd1 /dev/sde1 xfs 20G 33M 20G 1% /data/sde1 "四个节点都要检查sdb sdc sdd sde 四个磁盘挂载上"
2.2: node上的操作,建立关系
-
1.在四台node上映射主机名
vim /etc/hosts 192.168.100.140 node1 192.168.100.150 node2 192.168.100.160 node3 192.168.100.170 node4 [root@node1 opt]# scp /etc/hosts root@192.168.100.150:/etc/hosts "分发给其他三个节点" [root@node1 opt]# ping node2 "依次ping其他节点都能通" PING node2 (192.168.100.150) 56(84) bytes of data. 64 bytes from node2 (192.168.100.150): icmp_seq=1 ttl=64 time=1.23 ms 64 bytes from node2 (192.168.100.150): icmp_seq=2 ttl=64 time=0.336 ms
-
2.在四台Node上,编写GFS的源,如下,以node1为例
[root@node1 opt]# mount.cifs //192.168.31.224/redhat7 /opt [root@node1 gfs]# cd /opt [root@node1 opt]# ls gfs gfsrepo gfsrepo.rar [root@node1 opt]# cd gfs [root@node1 gfs]# ll 总用量 0 drwxr-xr-x. 2 root root 0 9月 13 17:20 gfsrepo [root@node1 opt]# cd /etc/yum.repos.d/ [root@node1 yum.repos.d]# mkdir bak ##将原来的源移动到新建的目录中 [root@node1 yum.repos.d]# mv Cent* bak/ [root@node1 yum.repos.d]# ls bak [root@node1 yum.repos.d]# vim GLFS.repo [GLFS] name=glfs baseurl=file:///opt/gfs/gfsrepo gpgcheck=0 enabled=1 [root@node1 yum.repos.d]# yum clean all [root@node1 yum.repos.d]# yum list
-
3.在四台node上,安装GFS相关软件包
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma ###安装 //报错解决,把系统自带的包先删掉 yum remove glusterfs -y yum remove glusterfs-libs.x86_64 -y 再安装 systemctl start glusterd.service systemctl enable glusterd.service systemctl status glusterd.service
-
4.设置时间同步,四台node都需要设置,以node1为例,关闭防火墙和SElinux功能
systemctl stop firewalld setenforce 0 ntpdate ntp1.aliyun.com systemctl stop firewalld setenforce 0 [root@node1 ~]# glusterfs --version glusterfs 3.10.2
-
5.添加存储信任池,只要在一台主机上添加其他三台节点即可,本实验在node1上操作
[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 gfs]# gluster peer status Number of Peers: 3 Hostname: node2 Uuid: a25be762-e42c-4b9c-9089-8c8dc57a875c State: Peer in Cluster (Connected) Hostname: node3 Uuid: f93aba62-d263-4112-85c8-0d49ddcc2445 State: Peer in Cluster (Connected) Hostname: node4 Uuid: a4e6f5fa-ea37-4e28-aae4-f53753c387e8 State: Peer in Cluster (Connected)
-
6.GFS卷的创建,只需要在node1中创建管理即可
- 创建分布式卷
#利用node1和node2上的两块磁盘创建,dis-vol为磁盘名,force表示强制 [root@node1 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force volume create: dis-vol: success: please start the volume to access data #启动dis-vol卷 [root@node1 ~]# gluster volume start dis-vol volume start: dis-vol: success #查看该卷的状态 [root@node1 ~]# gluster volume info dis-vol Volume Name: dis-vol Type: Distribute Volume ID: b17eca56-a083-48d8-84d6-b1c530bd3d74 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
- 创建条带卷
[root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force volume create: stripe-vol: success: please start the volume to access data "创建" [root@node1 ~]# gluster volume start stripe-vol "启动" volume start: stripe-vol: success [root@node1 ~]# gluster volume info stripe-vol "查看信息" Volume Name: stripe-vol Type: Stripe Volume ID: 04e52229-541c-478e-a216-fe9b44f13cff 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 ~]#
- 创建复制卷
[root@node1 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force volume create: rep-vol: success: please start the volume to access data [root@node1 ~]# [root@node1 ~]# gluster volume start rep-vol volume start: rep-vol: success [root@node1 ~]# gluster volume info rep-vol Volume Name: rep-vol Type: Replicate Volume ID: 373cd126-3222-4a98-9142-3c35d3451351 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个节点)
[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 ~]# [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: 3715b2f7-cf52-4a85-97db-5354ed77784b 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
- 创建分布式复制卷(至少4个节点)
[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 ~]# [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: bc4058a0-35a2-4542-9f16-60aa66f78ba2 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
2.3: 配置客户端
-
1.配置GFS源,安装相关软件包
[root@client yum.repos.d]# mount.cifs //192.168.31.224/redhat7 /opt [root@client yum.repos.d]# yum remove glusterfs -y [root@client yum.repos.d]# yum remove glusterfs-libs.x86_64 -y [root@client opt]# vim /etc/yum.repos.d/GLFS.repo [GLFS] name=glfs baseurl=file:///opt/gfs/gfsrepo gpgcheck=0 enabled=1 [root@client yum.repos.d]# yum clean all [root@client yum.repos.d]# yum list [root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
-
2.做地址映射
[root@client ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.100.140 node1 192.168.100.150 node2 192.168.100.160 node3 192.168.100.170 node4
-
3.创建临时挂载点,关闭安全性功能
"挂载分布式卷" [root@client ~]# mkdir -p /text/dis [root@client ~]# mount.glusterfs node1:dis-vol /text/dis [root@client ~]# df -Th //192.168.31.224/redhat7 cifs 227G 42G 185G 19% /opt node1:dis-vol fuse.glusterfs 40G 65M 40G 1% /text/dis
"挂载条带卷" [root@client ~]# mkdir -p /text/strip [root@client ~]# mount.glusterfs node1:stripe-vol /text/strip [root@client /]# df -Th //192.168.31.224/redhat7 cifs 227G 42G 185G 19% /opt node1:dis-vol fuse.glusterfs 40G 265M 40G 1% /text/dis node1:stripe-vol fuse.glusterfs 40G 65M 40G 1% /text/strip
"挂载复制卷" [root@client ~]# mkdir /text/rep [root@client ~]# mount.glusterfs node3:rep-vol /text/rep/
"挂载分布式条带卷" [root@client ~]# mkdir /text/dis-str [root@client ~]# mount.glusterfs node2:dis-stripe /text/dis-str/
"挂载分布式复制卷" [root@client ~]# mkdir /text/dis-rep [root@client ~]# mount.glusterfs node4:dis-rep /text/dis-rep/ [root@client ~]# systemctl stop firewalld [root@client ~]# setenforce 0 [root@client ~]#
"查看挂载信息" [root@client /]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 190G 4.2G 186G 3% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 13M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda3 xfs 50G 33M 50G 1% /home /dev/sda1 xfs 50G 174M 50G 1% /boot tmpfs tmpfs 378M 12K 378M 1% /run/user/42 tmpfs tmpfs 378M 0 378M 0% /run/user/0 //192.168.31.224/redhat7 cifs 227G 42G 185G 19% /opt node1:dis-vol fuse.glusterfs 40G 265M 40G 1% /text/dis node1:stripe-vol fuse.glusterfs 40G 265M 40G 1% /text/strip node3:rep-vol fuse.glusterfs 20G 233M 20G 2% /text/rep node2:dis-stripe fuse.glusterfs 80G 330M 80G 1% /text/dis-str node4:dis-rep fuse.glusterfs 40G 265M 40G 1% /text/dis-rep [root@client ~]#
-
3.测试GFS卷的功能
"创建5个40M的文件" dd if=/dev/zero of=/demo1.log bs=1M count=40 dd if=/dev/zero of=/demo2.log bs=1M count=40 dd if=/dev/zero of=/demo3.log bs=1M count=40 dd if=/dev/zero of=/demo4.log bs=1M count=40 dd if=/dev/zero of=/demo5.log bs=1M count=40 [root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40 记录了40+0 的读入 记录了40+0 的写出 41943040字节(42 MB)已复制,0.119366 秒,351 MB/秒 [root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40 记录了40+0 的读入 记录了40+0 的写出 41943040字节(42 MB)已复制,0.145625 秒,288 MB/秒 [root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40 记录了40+0 的读入 记录了40+0 的写出 41943040字节(42 MB)已复制,0.103901 秒,404 MB/秒 [root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40 记录了40+0 的读入 记录了40+0 的写出 41943040字节(42 MB)已复制,0.123886 秒,339 MB/秒 [root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40 记录了40+0 的读入 记录了40+0 的写出 41943040字节(42 MB)已复制,0.0815509 秒,514 MB/秒 [root@client /]# ls bin demo2.log demo5.log home media proc sbin text var boot demo3.log dev lib mnt root srv tmp demo1.log demo4.log etc lib64 opt run sys usr ----把创建的文件复制到不同卷上 ####把测试文件放到分布式卷目录下,查看服务端存储分布 [root@client ~]# cp /demo* /text/dis [root@client /]# ls /text/dis demo1.log demo2.log demo3.log demo4.log demo5.log "检查在node节点的存储分布" [root@node1 ~]# cd /data/sdb1 [root@node1 sdb1]# ll -h 总用量 160M -rw-r--r--. 2 root root 40M 9月 13 23:48 demo1.log -rw-r--r--. 2 root root 40M 9月 13 23:48 demo2.log -rw-r--r--. 2 root root 40M 9月 13 23:48 demo3.log -rw-r--r--. 2 root root 40M 9月 13 23:48 demo4.log [root@node2 opt]# cd /data/sdb1 [root@node2 sdb1]# ll -h 总用量 40M -rw-r--r--. 2 root root 40M 9月 13 23:48 demo5.log "可以看出,分布式通过Hash算法把文件分布在不同节点存储,但是每个文件不被分成N块" ####把测试文件放到条带卷目录下,查看服务端存储分布 [root@client ~]# cp /demo* /text/strip [root@node1 sdb1]# cd /data/sdc1 [root@node1 sdc1]# ll -h 总用量 100M -rw-r--r--. 2 root root 20M 9月 14 00:02 demo1.log "每个40M的文件被分成两块进行两个节点分布式存储" -rw-r--r--. 2 root root 20M 9月 14 00:02 demo2.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo3.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo4.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo5.log [root@node2 sdb1]# cd /data/sdc1 [root@node2 sdc1]# ll -h 总用量 100M -rw-r--r--. 2 root root 20M 9月 14 00:02 demo1.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo2.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo3.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo4.log -rw-r--r--. 2 root root 20M 9月 14 00:02 demo5.log ####把测试文件放到复制卷目录下,查看服务端存储分布 [root@client ~]# cp /demo* /text/rep/ [root@node4 yum.repos.d]# cd /data/sdb1 [root@node4 sdb1]# ll -h 总用量 200M -rw-r--r--. 2 root root 40M 9月 14 00:09 demo1.log "每个40M的文件在两个节点两份" -rw-r--r--. 2 root root 40M 9月 14 00:09 demo2.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo3.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo4.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo5.log [root@node3 yum.repos.d]# cd /data/sdb1 [root@node3 sdb1]# ll -h 总用量 200M -rw-r--r--. 2 root root 40M 9月 14 00:09 demo1.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo2.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo3.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo4.log -rw-r--r--. 2 root root 40M 9月 14 00:09 demo5.log ####把测试文件放到分布式条带卷目录下,查看服务端存储分布 [root@client ~]# cp /demo* /text/dis-str [root@node1 sdc1]# cd /data/sdd1 [root@node1 sdd1]# ll -h 总用量 80M -rw-r--r--. 2 root root 20M 9月 14 00:15 demo1.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo2.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo3.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo4.log [root@node2 sdc1]# cd /data/sdd1 [root@node2 sdd1]# ll -h 总用量 80M "1234分布式到node1和node2;再对1234条带分割,每个文件分两半,进行存储" -rw-r--r--. 2 root root 20M 9月 14 00:15 demo1.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo2.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo3.log -rw-r--r--. 2 root root 20M 9月 14 00:15 demo4.log [root@node3 sdb1]# cd /data/sdd1 [root@node3 sdd1]# ll -h 总用量 20M "5分布式到node3和node4;再对5进行分割存储" -rw-r--r--. 2 root root 20M 9月 14 00:15 demo5.log [root@node4 sdb1]# cd /data/sdd1 [root@node4 sdd1]# ll -h 总用量 20M -rw-r--r--. 2 root root 20M 9月 14 00:15 demo5.log ####把测试文件放到分布式复制卷目录下,查看服务端存储分布 [root@client ~]# cp /demo* /text/dis-rep [root@node1 sdd1]# cd /data/sde1 [root@node1 sde1]# [root@node1 sde1]# ll -h 总用量 160M "1234分布式到node1和node2;再对1234复制卷,5被分配到nod3和node4,再5的内容再做个复制卷;" -rw-r--r--. 2 root root 40M 9月 14 00:23 demo1.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo2.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo3.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo4.log [root@node2 sdd1]# cd /data/sde1 [root@node2 sde1]# ll -h 总用量 160M "" -rw-r--r--. 2 root root 40M 9月 14 00:23 demo1.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo2.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo3.log -rw-r--r--. 2 root root 40M 9月 14 00:23 demo4.log [root@node3 sde1]# cd /data/sde1 [root@node3 sde1]# ll -h 总用量 40M -rw-r--r--. 2 root root 40M 9月 14 00:23 demo5.log [root@node4 sde1]# cd /data/sde1 [root@node4 sde1]# ll -h 总用量 40M -rw-r--r--. 2 root root 40M 9月 14 00:23 demo5.log
2.4: 模拟故障,node2宕机
-
[root@node2 /]# init 0 [root@client /]# cd /text [root@client text]# ls dis dis-rep dis-str rep strip [root@client text]# ls dis demo1.log demo2.log demo3.log demo4.log [root@client text]# ls dis-rep/ "分布式复制卷数据没有丢失" demo1.log demo2.log demo3.log demo4.log demo5.log [root@client text]# ls dis-str/ demo5.log [root@client text]# ls rep demo1.log demo2.log demo3.log demo4.log demo5.log "复制卷数据也没有丢失" [root@client text]# ls strip [root@client text]#
2.5: 其他维护命令
-
1、查看GlusterFS卷 [root@node1 ~]# gluster volume list 2、查看所有卷的信息 [root@node1 ~]# gluster volume info 3.查看所有卷状态 [root@node1 ~]# gluster volume status 4. ####停止一个卷 [root@node1 ~]# gluster volume stop dis-stripe 5. 删除一个卷 [root@node1 ~]# gluster volume delete dis-stripe 6.白名单 仅允许 [root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.100.* ##设置192.168.100.0网段的所有IP地址 都能访问dis-rep卷(分布式复制卷) volume set: success 7.黑名单 仅拒绝 [root@node1 sde1]# gluster volume set dis-rep auth.reject 192.168.100.80 volume set: success
[root@node1 ~]# gluster volume add-brick heal quota start barrier help rebalance statedump clear-locks info remove-brick status create list replace-brick stop delete log reset sync geo-replication profile set top "reset" 恢复默认