glusterfs


glusterfs是一个开源的分布式存储。可以多个服务器组成一个集群给用户提供文件存储服务。

实验准备:

①四台服务器都可以联网,用于安装glusterfs

②每台服务器两块硬盘,系统盘和数据盘,数据盘单独用于gluster存储

③四台服务器时间一致,通过ntpd服务同步

安装glusterfs-server

修改每台主机的/etc/hosts文件,方便用主机名操作

192.168.32.130 VM1
192.168.32.131 VM2
192.168.32.132 VM3
192.168.32.137 VM4

修改每台主机yum源,安装glusterfs

vi /etc/yum.repos.d/glusterfs.repo
[glusterfs]
name=glusterfs
baseurl=http://buildlogs.centos.org/centos/7/storage/x86_64/gluster-8/
enabled=1
gpgcheck=0
yum install -y glusterfs-server

 开启服务,设置开机自启,查看状态

systemctl start glusterd
systemctl enable glusterd
systemctl status glusterd

建立连接,组成集群,glusterfs是无中心节点的分布式集群架构,只需在一台服务器上连接其他集群成员一次即可

只在vm1服务器上操作

gluster peer probe vm2
gluster peer probe vm3
gluster peer probe vm4 # 可以用ip,主机名,或主机别名

 检查集群状态

gluster peer status

 如果连接有问题,可以用下边的命令先断开连接,在重新加入集群

gluster peer detach vm3

 在所有成员服务器上准备存储目录,这里把每个服务器上的/data/brick1作为存储目录

fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /data
echo "/dev/sdb1 /data xfs defaults 1 2" >> /etc/fstab
mount -a

做到这里已经把集群内的节点都连接成功,并且每个节点都规划好了存储目录,下一步是根据不同的需求创建不同的卷

 

gluster的几种不同的卷类型

Distributed Glusterfs Volume

分布式卷,如果创建的卷不指定类型。默认就是这种卷,这种卷会将数据随机写入到不同节点中,没有数据冗余。一旦节点挂掉,上边的数据将丢失。空间利用率是100%

唯一的优点是方便扩容。

[root@VM1 data]# gluster volume create gv0 VM1:/data/brick2 VM2:/data/brick2 VM3:/data/brick2 VM4:/data/brick2

 在所有成员服务器上查看

[root@vm2 ~]# gluster volume info gv0

 启动存储卷

gluster volume start gv0

 再次查看状态,由created变为started

[root@vm2 ~]# gluster volume info gv0

 客户端挂载使用

yum install glusterfs glusterfs-fuse -y
mkdir /test
mount -t glusterfs VM1:gv0 /test

在客户端读写操作

dd if=/dev/zero of=/test/file bs=1M count=100

Replicated Glusterfs Volume

复制卷,相比上边的分布式卷增加的数据的安全性,最少用2个节点。客户端的数据会写入到每个节点上。即使一个节点出现故障。也可以访问其他节点的数据

优点是可靠性和数据冗余,缺点是空间利用率不高

[root@VM1 /]# gluster volume create gv0 replica 4 VM1:/data/brick1 VM2:/data/brick1 VM3:/data/brick1 VM4:/data/brick1

Distributed Replicated Glusterfs Volume

分布式复制卷,这个卷使用N个节点组成一个复制卷,这些复制卷再组合成分布式卷。如果有8个节点,replica的数量是2,那么就会每2个节点组成一个复制卷,4个复制卷组成分布式卷

[root@VM1 data]# gluster volume create gv0 replica 2 VM1:/data/brick3 VM2:/data/brick3 VM3:/data/brick3 VM4:/data/brick3 force

 Dispersed Glusterfs Volume

分散卷,个人把他理解为带冗余的卷。类似于raid5。根据集群成员的数量选出合适的节点(冗余块)做数据校验,可以防止单点故障,提升IO。

[root@VM1 data]# gluster volume create gv0 disperse 4 VM1:/data/brick4 VM2:/data/brick4 VM3:/data/brick4 VM4:/data/brick4

 Distributed Dispersed Glusterfs Volume

分布式的带冗余卷,类似于分布式的复制卷,可扩容

创建时候如果不指定冗余块,gluster会自动计算出最佳冗余块的值

gluster volume create test-volume disperse 3 redundancy 1 server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6

 共有6个节点,3个为一组组成disperse卷,然后两个disperse组成一个分布式卷,方便扩容

删除卷

先把客户端上的数据迁移,之后umount挂载的目录

umount /test

 在任意集群成员服务器上停止正在运行的卷

gluster volume stop gv0

 停止之后删除

gluster volume delete gv0

查看

gluster volume info