GlusterFS(GNU Cluster File System)是一种全对称的开源分布式文件系统。
GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。通俗点来讲:数据随便存!!!
支持多种卷类型(类似RAID0/1/5/10/01)
常用卷类型:
分布(distributed)
复制(replicate)
条带(striped)
基本卷:
(1) distribute volume:分布式卷
(2) stripe volume:条带卷
(3) replica volume:复制卷
复合卷:
(1) distribute stripe volume:分布式条带卷
(2) distribute replica volume:分布式复制卷
(3) stripe replica volume:条带复制卷
(4) distribute stripe replicavolume:分布式条带复制卷
下面我们来看各种卷具体如何使用。
环境:
准备3台主机分别为node1-node3,并且为每块主机添加3块20G硬盘。
准备一台测试主机node4,并且为每台主机安装web服务
关闭node1-node4上的防火墙和selinux
systemctl stop firewalld; systemctl disable firewalld
sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
时间同步:
cat /etc/ntp.conf
ntpdate 0.centos.pool.ntp.org //三台都以这个校时
设置主机名解析
vim /etc/hosts //三台主机都解析了
192.168.131.153 node1
192.168.131.157 node2
192.168.131.158 node3
格式化已添加的硬盘:
mkfs.xfs /dev/sdb
mkfs.xfs /dev/sdc
mkfs.xfs /dev/sdd
创建挂载目录
mkdir /gv1
mkdir /gv2
mkdir /gv3
添加磁盘自动挂载
vim /etc/fstab
/dev/sdb /gv1 defaults 0 0
/dev/sdc /gv2 defaults 0 0
/dev/sdd /gv3 defaults 0 0
配置yum源:
vim /etc/yum.repo/glusterfs.repo
[gluster]
name=g
baseurl=https://buildlogs.centos.org/centos/7/storage/x86_64/gluster-4.1/
enabled=1
gpgcheck=0
安装glusterfs集群软件:
yum install -y glusterfs-server //三台都装
安装好之后,启动glusterd
systemctl enable glusterd; systemctl start glusterd //三台都启动
systemctl status glusterd //开启后查看状态
启动glusterd之后,在三台服务器中添加伙伴:
gluster peer probe node2
gluster peer probe node3
注意:在一台服务器上添加即可
查看伙伴的状态
gluster peer status
gluster peer detach node2 //删除伙伴
至此,我们的gluster集群就创建成功了!!!
创建分布式卷:(默认不写类型就是分布式卷)
分布式卷可以把所有存储到客户端的文件分到三块砖上去
缺点:如果一块砖上的数据丢失,那这块砖上的数据永远找不回来了,文件级为单位
用三块砖创建分布式卷:
gluster volume create dis_vol node1:/gv1/dv1 node2:/gv1/dv1 node3:/gv1/dv1
注意:dv1是随便起的砖的名字
此时会提示你启动,启动之前查看砖的信息:
gluster volume info dis_vol
启动这个卷
gluster volume start dis_vol //启动这个分布式卷
node4上需要yum安装客户端软件去使用:
yum install -y glusterfs glusterfs-fuse attr
同样去/etc/hosts文件解析node1-3的ip:略
创建挂载目录:
mkdir /guazai
mount -t glusterfs node1:/dis_vol /guazai/ //也可以挂载node2或者node3,结果都一样
现在就可以开始使用了!!!
如果在node4上的挂载目录上(/guazai)写入三个文件,那么这三个文件将会被分配到node1/2/3上各自的/gv1/dv1上。
创建条带卷(类似RAID0)
将一个文件分成条带,存放在多个brick上,默认条带大小128K
应用场景:大文件
优点: 适合存储大文件
缺点: 可靠性低,brick(砖)故障会导致数据全部丢失
下面我们来创建一个条带卷:
gluster volume create str_vol stripe 3 node1:/gv2/sv1 node2:/gv2/sv1 node3:/gv2/sv1
gluster volume start str_vol //启动条带卷
同样node4需要挂载使用:
mkdir /sv1 //创建一个挂载目录
mount -t glusterfs node2:/str_vol /sv1 //挂载条带卷(node几都行)
df -h //查看磁盘过来没
创建复制卷(类似RAID1)
多个文件在多个砖上复制多份,brick的数目与需要复制的份数相等,建议brick分布在不同的服务器上(3块砖只有1块砖的空间可以使用,其余两块用来复制,比较浪费空间)
应用场景:对可靠性和读性能要求高的场景
优点: 读性能好
缺点: 写性能差
创建一个复制卷:
gluster volume create rep_vol replica 3 node1:/gv1/rv1 node2:/gv1/rv1 node3:/gv1/rv1 force //创建复制卷(如果一块硬盘上有多块砖需要加force)
gluster volume start rep_vol
node4上挂载使用:
mount -t glusterfs node1:/rep_vol /rv1
创建分散卷(类似RAID5,推荐使用)
分散卷基于校验码,基于条带编码,并分布到多个brick上存储
应用场景:对冗余和磁盘空间都敏感的场景
优点: 在冗余和磁盘空间上取得平衡
缺点: 要求消耗额外的资源验证,对性能有一定影响
4块砖最多只允许1个brick故障而不丢失数据,5块砖最多允许2个brick故障不丢失数据
创建分散卷:
gluster volume create disperse_vol disperse 4 node1:/gv3/dispv1 node2:/gv3/dispv1 node3:/gv3/dispv1 node1:/gv1/dispv1 force
gluster volume start disperse_vol //启动一下
node4客户端去挂载使用:
mkdir /dispv1
mount -t glusterfs node3:/disperse_vol /dispv1
创建分布式分散卷(类似RAID6)
分布分散卷(类似RAID6)
分布分散卷,多个文件在多个节点上哈希分布存储,存储的时候基于条带校验码并有冗余度设置
应用场景: 对冗余和磁盘空间都敏感的场景
优点: 在冗余、磁盘空间、读/写性能上取得平衡
缺点: 要求消耗额外的资源进行验证,对性能有一定的影响
5个brick分布分散卷,最多允许2个brick故障而不数据丢失
创建分布分散卷:
gluster volume create disperse_vol disperse 3 node1:/gv1/disp1 node2:/gv1/disp1 node3:/gv1/disp1 node1:/gv2/disp1 node2:/gv2/disp1 node3:/gv2/disp1