目录
GlusterFS概述
GlusterFS的特点
GlusterFS术语
GlusterFS工作原理
编辑
GlusterFS的卷类型
分布式卷
条带卷
复制卷
特点:卷中所有的服务器均保存一个完整的副本。
分布式条带卷
分布式复制卷
部署群集环境
1、准备环境(所有node节点上操作)
2、安装、启动GlusterFS
3、添加节点到存储信任池中(在一台操作即可)
4、创建卷
5、部署 Gluster 客户端
GES三个部分组成
存储服务器
客户端
NES/Samba存储网关组成
无元数据服务器(保存数据的地方)
是一个分布式的文件系统,只在扩展存储容量,提高性能,并通过多个互联网络的存储节点的数据进行冗余,以确保数据的可用性和一致性。
扩展性和高性能:分布式的特性
高可用性:冗余、容灾的能力
全局统一命名空间
弹性卷管理:raid0,1等
基于标准协议:NFS、HTTP、FTP及 Gluster原生协议
Brick(块)
Volume(逻辑卷)
FUSE(内核文件)
VFS(虚拟接口)
Glusterd
(1) 客户端或应用程序通过 GlusterFS 的挂载点访问数据。
(2) linux系统内核通过 VES API 收到请求并处理。
(3) VES 将数据递交给 FUSE 内核文件系统,并向系统注册一个实际的文件系统FUSE,而 FUSE文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GLusterFS client 端。可以将 FUSE文件系统理解为一个代理。
(4) GlusterFS client 收到数据后,client 根据配置文件的配置对数据进行处理。
(5) 经过 GlusterFS client 处理后,通过网络将数据传递至远端的 GlusterFSServer,并且将数据写入到服务器存储设备上。
没有对文件进行分块处理。
通过扩展文件属性保存HASH值。
支持底层文件系统有EXT3、EXT4、ZFS、XFS等。
特点:文件分布在不同的服务器,不具备冗余性。
更容易和廉价地扩展卷的大小。
单点故障会造成数据丢失。
依赖底层的数据保护。
根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点。
存储大文件时,性能尤为突出。
不具备冗余性,类似Raid0。
特点:数据被分割成更小块分布到块服务器群中的不同条带区。
分布减少了负载且更小的文件加速了存取的速度。
没有数据冗余。
同一文件保存一份或多份副本
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照木桶效应取最低点的容量作为该卷的总容量。
卷的副本数量可由客户创建的时候决定,但复制数必须等于卷中 Brick 所包含的存储服务器数。
至少由两个块服务器或更多服务器。
具备冗余性。
兼顾分布式卷和条带卷的功能,主要用于大文件访问处理。
至少最少需要4台服务器。
兼顾分布式卷和复制卷的功能,主要用于需要冗余的情况。
磁盘分区,并挂载
vim /opt/fdisk.sh
#!/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
chmod +x /opt/fdisk.sh
cd /opt/
./fdisk.sh
修改主机名,配置/etc/hosts文件
hostnamectl set-hostname node1
echo "192.168.11.77 node1" >> /etc/hosts
echo "192.168.11.66 node2" >> /etc/hosts
echo "192.168.11.55 node3" >> /etc/hosts
echo "192.168.11.44 node4" >> /etc/hosts
将gfsrepo 软件上传到/opt目录下
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
安装GlusterFS
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
在每个Node节点上查看群集状态
gluster peer status
创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
启动新建分布式卷
gluster volume start dis-volume
查看创建分布式卷信息
gluster volume info dis-volume
创建条带卷
指定类型为 stripe,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是条带卷
gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
gluster volume start stripe-volume
gluster volume info stripe-volume
创建复制卷
指定类型为 replica,数值为 2,且后面跟了 2 个 Brick Server,所以创建的是复制卷
gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
gluster volume start rep-volume
gluster volume info rep-volume
创建分布式条带卷
指定类型为 stripe,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式条带卷
gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
gluster volume start dis-stripe
gluster volume info dis-stripe
创建分布式复制卷
指定类型为 replica,数值为 2,而且后面跟了 4 个 Brick Server,是 2 的两倍,所以创建的是分布式复制卷
gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
gluster volume start dis-rep
gluster volume info dis-rep
安装客户端软件
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim glfs.repo
[glfs]
name=glfs
baseurl=file:///opt/gfsrepo
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install glusterfs glusterfs-fuse
创建挂载目录
mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
ls /test
配置 /etc/hosts 文件
echo "192.168.11.77 node1" >> /etc/hosts
echo "192.168.11.66 node2" >> /etc/hosts
echo "192.168.11.55 node3" >> /etc/hosts
echo "192.168.11.44 node4" >> /etc/hosts
挂载 Gluster 文件系统
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
df -Th