分布式之GlusterFS分布式文件系统

一.GlusterFS概述

1.GlusterFS简介

开源的分布式文件系统
由存储服务器、客户端以及NFS/Samba存储网关组成
无元数据服务器

在这里插入图片描述

2.GlusterFS特点

扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议

3.GlusterFS术语

Brick(砖)
Volume(卷)
FUSE(协议)
VFS(入口)
Glusterd(程序)

4.模块化堆栈式架构

模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能

在这里插入图片描述

二.GlusterFS工作原理

1.GlusterFS工作流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRLu3yvq-1605588632209)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201116182108620.png)]

Application:客户端或应用程序通过GlusterFS的挂载点访问数据
VFS:Linux系统内核通过VFS,API收到请求并处理
VFS将数据传递给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
GlusterFS client收到数据后,client根据配置文件的配置对数据进行处理
通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上

2.弹性HASH算法

通过HASH算法得到一个32位的整数
划分为N个连续的子空间,每个空间对于一个Brick
弹性HASH算法的优点
	保证数据平均分布在每一个Brick中
	解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

在这里插入图片描述

三.GlusterFS的卷类型

分布式卷
条形卷
复制卷
分布式条带卷
分布式复制卷
条带复制卷
分布式条带复制卷

1.分布式卷

分布式卷
	没有对文件进行分块处理
	通过扩展文件属性保存HASH值
	支持的底层文件系统由EXT3、EXT4、ZFS、XFS等
分布式卷的特点
	文件分布在不同的服务器,不具备冗余性
	更容易和廉价地扩展卷的大小
	单点故障会造成数据丢失
	依赖底层数据保护

创建分布式卷
创建一个名为dis-volume的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中
# gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3

在这里插入图片描述

2.条形卷

条形卷
	根据偏移量将文件分成N块(N个条形节点),轮询的存储在每个Brick Server节点
	存储大文件时,性能尤为突出
	不具备冗余性,类似Raid0
特点
	将数据被分割成更小块分布到服务器群中的不同条带区
	分布减少了负载且更小的文件加速了存取的速度
	没有数据冗余

创建条带卷
创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中
# gulster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EESIT5Qh-1605588632219)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201116185918094.png)]

3.复制卷

复制卷
	同一服务器保存一份或多分副本
	因为要保存副本,所以磁盘利用率较低
	若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
特点
	卷中所有的服务器均保存一个完整的副本
	卷的副本数量可由客户创建的时候决定
	至少有两个块服务器或更多服务器
	具备冗余性
创建复制卷
创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dri2两个Brick中
# gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cVhLOaNO-1605588632220)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201116191515595.png)]

4.分布式条带卷

分布式条带卷
	兼顾分布式卷和条带卷的功能
	主要用于大文件访问处理
	至少最少需要4台服务器
创建分布式条带卷
创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条代数的倍数(>=2倍)
# gluster volume create dis-stripe stripe 2 transport tcp server:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H6OyjTrk-1605588632222)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201116192421154.png)]

5.分布式复制卷

分布式复制卷
	兼顾分布式卷和复制卷的功能
	用于需要冗余的情况
创建分布式复制卷
创建复制卷dis-rep的分布式条带卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是复制卷的倍数(>=2倍)
# gulster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqtG3I3A-1605588632224)(C:\Users\谭文龙\AppData\Roaming\Typora\typora-user-images\image-20201116193510275.png)]

四.项目操作

1.磁盘自动分区和挂载

操作系统IP主机名硬盘数量(四块)
centos 7.4192.168.100.11 node1sdb:5G sdc:5G sdd:5G sde:5G
centos 7.4192.168.100.12 node2sdb:5G sdc:5G sdd:5G sde:5G
centos 7.4192.168.100.13 node3sdb:5G sdc:5G sdd:5G sde:5G
centos 7.4192.168.100.14 node4sdb:5G sdc:5G sdd:5G sde:5G
centos 7.4192.168.100.15 node5-clientsda:20G

2.四台主机中操作

关闭防火墙和selinux,设置hosts文件

分别更改主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname node4



关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

关闭selinux
sed -i '/SELINUX/s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.11 node1
192.168.100.12 node2
192.168.100.13 node3
192.168.100.14 node4

scp /etc/hosts root@192.168.100.12:/etc/hosts
scp /etc/hosts root@192.168.100.13:/etc/hosts
scp /etc/hosts root@192.168.100.14:/etc/hosts

[root@node1 ~]# vi /etc/yum.repos.d/GLFS.repo
[GLFS]
name=glfs
baseurl=file:///root/gfsrepo
gpgcheck=0
enabled=1

去掉客户机,四台同做
cd /etc/yum.repos.d/
rm -rf CentOS*

yum -y install glusterfs  glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd
systemctl enable glusterd
systemctl status glusterd

//时间同步
ntpdate ntp1.aliyun.com

//添加入存储信任池只要在一台主机上添加其他节点即可
[root@node1 ~]# gluster peer status
Number of Peers: 3

Hostname: node2
Uuid: d0000d35-3db1-4ff0-ba0b-74ff78374557
State: Peer in Cluster (Connected)

Hostname: node3
Uuid: 870a36df-9a04-45f3-9f72-814722f8ad4c
State: Peer in Cluster (Connected)

Hostname: node4
Uuid: a02b35f0-0b69-461a-ac57-c978eb9cb8e9
State: Peer in Cluster (Connected)

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde

mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdd1
mkfs.ext4 /dev/sde1

mkdir -p /data/{sdb1,sdc1,sdd1,sde1}
mount /dev/sdb1 /data/sdb1
mount /dev/sdc1 /data/sdc1
mount /dev/sdd1 /data/sdd1
mount /dev/sde1 /data/sde1

1.分布式卷

文件分布在不同的服务器,不具备冗余性
更容易和廉价地扩展卷的大小
单点故障会造成数据丢失
依赖底层的数据保护

[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
[root@node1 ~]# gluster volume info dis-vol
 
Volume Name: dis-vol
Type: Distribute
Volume ID: 839e3e35-a3fe-4268-b6bb-6507b3432a68
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

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

2.条带卷

条形卷
	根据偏移量将文件分成N块(N个条形节点),轮询的存储在每个Brick Server节点
	存储大文件时,性能尤为突出
	不具备冗余性,类似Raid0
特点
	将数据被分割成更小块分布到服务器群中的不同条带区
	分布减少了负载且更小的文件加速了存取的速度
	没有数据冗余

[root@node1 ~]# gluster volume create stripe-vol stripe 2 node3:/data/sdb1 node4:/data/sdb1 force
volume create: stripe-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume info stripe-vol 
 
Volume Name: stripe-vol
Type: Stripe
Volume ID: c738dd4f-f08f-48e3-815c-505e32ea454c
Status: Created
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
[root@node1 ~]# gluster volume start stripe-vol 
volume start: stripe-vol: success
[root@node1 ~]# gluster volume status stripe-vol 

3.复制卷

复制卷
	同一服务器保存一份或多分副本
	因为要保存副本,所以磁盘利用率较低
	若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
特点
	卷中所有的服务器均保存一个完整的副本
	卷的副本数量可由客户创建的时候决定
	至少有两个块服务器或更多服务器
	具备冗余性
	
[root@node1 ~]# gluster volume create rep-vol replica 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: rep-vol: success: please start the volume to access data
[root@node1 ~]# gluster volume info rep-vol 
 
Volume Name: rep-vol
Type: Replicate
Volume ID: eb807c32-0e8a-4daf-8c47-8d920ccb1a36
Status: Created
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 start rep-vol 
volume start: rep-vol: success
[root@node1 ~]# gluster volume status rep-vol

4.分布式条带卷

分布式条带卷
	兼顾分布式卷和条带卷的功能
	主要用于大文件访问处理
	至少最少需要4台服务器
	
[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/sdd1 node2:/sdd1 node3:/sdd1 node4:/sdd1 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 ~]# gluster volume info dis-stripe 
 
Volume Name: dis-stripe
Type: Distributed-Stripe
Volume ID: c7e1a2ca-5e26-4dfd-bf72-a36317da819f
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/sdd1
Brick2: node2:/sdd1
Brick3: node3:/sdd1
Brick4: node4:/sdd1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume start dis-stripe 
volume start: dis-stripe: success
[root@node1 ~]# gluster volume status dis-stripe

5.分布式复制卷

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

[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/sde1 node2:/sde1 node3:/sde1 node4:/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 ~]# gluster volume  info dis-rep 
 
Volume Name: dis-rep
Type: Distributed-Replicate
Volume ID: ebed56f5-3ea6-4ce9-832f-92e17478a9da
Status: Created
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: node1:/sde1
Brick2: node2:/sde1
Brick3: node3:/sde1
Brick4: node4:/sde1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
[root@node1 ~]# gluster volume  start dis-rep 
volume start: dis-rep: success
[root@node1 ~]# gluster volume  status dis-rep
[root@node1 ~]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol

6.客户端

[root@node5-client ~]# yum -y install glusterfs glusterfs-fuse
[root@node5-client ~]# mkdir -p /text/{dis,strip,rep,dis_stripe,dis_rep}
[root@node5-client ~]# mount.glusterfs node1:dis-vol /text/dis			//挂载分布式卷
[root@node5-client ~]# mount.glusterfs node1:stripe-vol /text/strip		//挂载条形带
[root@node5-client ~]# mount.glusterfs node1:rep-vol /text/rep			//挂载复制卷
[root@node5-client ~]# mount.glusterfs node1:dis-stripe /text/dis_stripe//挂载分布式条带卷
[root@node5-client ~]# mount.glusterfs node1:dis-rep /text/dis_rep		//挂载分布式复制卷

df -Th
node1:dis-stripe fuse.glusterfs   20G   81M   19G    1% /text/dis_strip
node1:dis-rep    fuse.glusterfs  9.6G   41M  9.1G    1% /text/dis_rep
node1:rep-vol    fuse.glusterfs  4.8G   21M  4.6G    1% /text/rep
node1:stripe-vol fuse.glusterfs  9.6G   41M  9.1G    1% /text/strip
node1:dis-vol    fuse.glusterfs  9.6G   41M  9.1G    1% /text/dis

测试

创建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
复制5个文件到不同的卷上
[root@node5-client /]# cp /demo* /text/dis
[root@node5-client /]# cp /demo* /text/strip
[root@node5-client /]# cp /demo* /text/rep
[root@node5-client /]# cp /demo* /text/dis_stripe
[root@node5-client /]# cp /demo* /text/dis_rep

查看分布式卷
[root@node1 ~]# ll -h /data/sdb1
总用量 161M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo4.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node2 ~]# ll -h /data/sdb1
总用量 41M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found

查看条带卷
[root@node3 ~]# ll -h /data/sdb1
总用量 101M
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo4.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node4 ~]# ll -h /data/sdb1
总用量 101M
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo1.log
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo2.log
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo3.log
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo4.log
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo5.log
drwx------ 2 root root 16K 11月 17 09:59 lost+found

查看复制卷
[root@node1 ~]# ll -h /data/sdc1
总用量 201M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo4.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node2 ~]# ll -h /data/sdc1
总用量 201M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo4.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found

查看分布式条带卷
[root@node1 ~]# ll -h /data/sdd1
总用量 81M
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo4.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node2 ~]# ll -h /data/sdd1
总用量 81M
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo4.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node3 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r--. 2 root root 20M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node4 ~]# ll -h /data/sdd1
总用量 21M
-rw-r--r-- 2 root root 20M 11月 17 12:04 demo5.log
drwx------ 2 root root 16K 11月 17 09:59 lost+found

查看分布式复制卷
[root@node1 ~]# ll -h /data/sde1
总用量 161M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo4.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node2 ~]# ll -h /data/sde1
总用量 161M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo1.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo2.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo3.log
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo4.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node3 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r--. 2 root root 40M 11月 17 12:04 demo5.log
drwx------. 2 root root 16K 11月 17 09:59 lost+found
[root@node4 ~]# ll -h /data/sde1
总用量 41M
-rw-r--r-- 2 root root 40M 11月 17 12:04 demo5.log
drwx------ 2 root root 16K 11月 17 09:59 lost+found

五.其他维护命令

//注意:删除卷时,信任池不能有主机处于拓机状态,否则删除不成功
[root@node1 ~]# gluster volume delete dis-stripe 
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: dis-stripe: success

[root@node1 ~]# gluster volume list
dis-rep
dis-stripe
dis-vol
rep-vol
stripe-vol

访问控制
//进拒绝node1
gluster volume set dis-vol auth.reject 192.168.100.15
volume set:success
gluster volume set dis-vol auth.allow 192.168.100.15
volume set:success
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值