GlusterFS
模块化堆栈式架构
采用模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能
传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等
GlusterFS同时也是Scale-out ( 横向扩展)存储解决方案Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端
GlusterFS支持借助TCP/IP或InfiniBandRDMA网络(一种支持多并发链接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供存储服务,并使用统一全局命名空间来管理数据
Brick (存储块) :
指可信主机池中由主机提供的用于物理存储的专用分区,是GlusterFs中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录
存储目录的格式由服务器和目录的绝对路径构成,表示方法为SERVER:EXPORT, 如192.168.253.11: /data/mydir/
Volume (逻辑卷) :
个逻辑卷是组Brick 的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分Gluster
管理操作是在卷上进行的
FUSE:
是一个内核模块,允许用户创建自己的文件系统,无须修改内核代码
VFS:
内核空间对用户空间提供的访问磁盘的接口
==Glusterd (后台管理进程) : ==
在存储群集中的每个节点上都要运行
概述
文件通过HASH算法分布到所有Brick Server上,这种卷是GFS的基础;以文件为单位根据HASH算法散列到不同的Brick,其实只是扩大了磁盘空间,并不具备容错能力,属于文件级RAID 0
特点
示例原理
File1 和 File2 存放在 Server1,而 File3 存放在 Server2, 文件都是随机存储,一个文件(如 File1 ) 要么在 Server1 上,要么在 Server2 上,不能分块同时存放在 Server1 和 Server2 上
概述
类似RAID 0,文件被分成数据库并以轮询的方式分布到多个Brick Server上,文件存储以数据块为单位,支持大文件存储,文件越大,读取效率越高,但是不具备冗余性
特点
示例原理
File 被分割为6段,1. 3. 5放在 Server1,2、4、6放在 Server2
概述
特点
示例原理
Filel同时存在 Server1 和 Server2, File2 也是如此,相当于 Server2 中的文件是 Server1 中文件的副本
概述
示例原理
File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。在 Server1 中,File1 被分割成4段,其中1、3在 Server1 中的 exp1 目录中,2、4在 Server1 中的 exp2 目录中。在 Server2 中,File2 也被分割成4段,其中1、3在 Server2 中的 exp3 目录中,2、4在 Server2 中的 exp4 目录中
概述
示例原理
File1 和 File2 通过分布式卷的功能分别定位到 Server1 和 Server2。 在存放 File1 时,File1 根据复制卷的特性,将存在两个相同的副本,分别是 Server1 中的 exp1 目录和 Server2 中的 exp2 目录。在存放 File2 时,File2 根据复制卷的特性,也将存在两个相同的副本,分别是 Server3 中的 exp3 目录和 Server4 中的 exp4 目录
概述
类似RAID 10,同时具有条带卷和复制卷的特点
概述
三种基本卷的复合卷通常用于类 Map Reduce 应用
设置虚拟机节点
Node1 节点 :192.168.253.11
Node2 节点 :192.168.253.22
Node3 节点 :192.168.253.33
Node4 节点 :192.168.253.44
分别添加四块硬盘
客户端节点 :192.168.253.55
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#!/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
echo "192.168.253.11 node1" >> /etc/hosts
echo "192.168.253.22 node2" >> /etc/hosts
echo "192.168.253.33 node3" >> /etc/hosts
echo "192.168.253.44 node4" >> /etc/hosts
安装本地源
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
安装软件
gluster peer probe node1
peer probe: success. Probe on localhost not needed
[root@cc11 /opt]# gluster peer probe node2
peer probe: success.
[root@cc11 /opt]# gluster peer probe node3
peer probe: success.
[root@cc11 /opt]# gluster peer probe node4
peer probe: success.
查看群集状态
========根据以下规划创建卷========
卷名称 卷类型 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)
默认创建分布式卷
启动新建分布式卷
查看创建的卷信息
指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
创建条带卷
在这里插入图片描述
启动新建条带卷
查看信息
指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
创建复制卷
启动新建复制卷
查看卷信息
指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
创建复制卷
启动新建卷
查看卷信息
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
创建卷
启动新建卷
查看信息
安装yum源
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
安装软件
echo "192.168.253.11 node1" >> /etc/hosts
echo "192.168.253.22 node2" >> /etc/hosts
echo "192.168.253.33 node3" >> /etc/hosts
echo "192.168.253.44 node4" >> /etc/hosts
临时挂载
mount.glusterfs node1:dis-volume /test/dis
mount.glusterfs node1:stripe-volume /test/stripe
mount.glusterfs node1:rep-volume /test/rep
mount.glusterfs node1:dis-stripe /test/dis_stripe
mount.glusterfs node1:dis-rep /test/dis_rep
永久挂载
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
node1:stripe-volume /test/dis glusterfs defaults,_netdev 0 0
node1:rep-volume /test/dis glusterfs defaults,_netdev 0 0
node1:dis-stripe /test/dis glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis glusterfs defaults,_netdev 0 0
复制内容至各个卷
查看目录内容
node1:/dev/sdb1
node2:/dev/sdb1
node1:/dev/sdc1
node2:/dev/sdc1
数据被分片50% ,没副本 没冗余
node3:/dev/sdb1
node4:/dev/sdb1
node1:/dev/sde1
node2:/dev/sde1
node3:/dev/sde1
node4:/dev/sde1
查看文件是否正常(客户端)
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.253.*
#设置192.168.253.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)