目录
一、GlusterFS简介
二、GlusterFS特点
2.1 扩展性和高性能
2.2 高可用性
2.3 全局统一命名空间
2.4 弹性卷管理
2.5 基于标准协议
三、GlusterFS术语
四、模块化堆栈式架构
五、GlusterFS 的工作流程
六、弹性 HASH 算法
七、GFS支持的七种卷
7.1 分布式卷(Distribute volume)
7.2 条带卷(Stripe volume)
7.3 复制卷(Replica volume)
7.4 分布式条带卷(Distribute Stripe volume)
7.5 分布式复制卷(Distribute Replica volume)
7.6 条带复制卷(Stripe Replca volume)
7.7 分布式条带复制卷(Distribute Stripe Replicavolume)
八、GFS部署
8.1 集群环境
8.2 更改节点名称
8.3 节点进行磁盘挂载,安装本地源
8.4 配置/etc/hosts文件
8.5 安装GFS
8.6 添加节点到存储信任池中
九、创建卷
9.1 分布式卷
9.2 条带卷
9.3 创建复制卷
9.4 创建分布式条带卷
9.5 创建分布式复制卷
9.6 查看当前所有卷列表
十、部署Gluster 客户端
10.1 安装部客户端软件
10.2 创建挂载点目录,配置主机名映射,挂载卷
十一、测试GlusterFS 文件系统
11.1 卷中写入文件,客户端操作
11.2 查看文件分布
十二、破坏性测试
十三、拓展
传统的分布式文件系统和GlusterFS的区别
使用GFS会使用的虚拟文件系统
弹性 HASH 算法的优点:
分布式卷具有如下特点:
条带卷特点:
复制卷特点:
Node1节点:node1/192.168.19.3 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node2节点:node2/192.168.19.4 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node3节点:node3/192.168.19.5 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
Node4节点:node4/192.168.19.6 磁盘: /dev/sdb1 挂载点: /data/sdb1
/dev/sdc1 /data/sdc1
/dev/sdd1 /data/sdd1
/dev/sde1 /data/sde1
=====客户端节点:192.168.19.7=====
node1(192.168.19.3)
hostnamectl set-hostname node1
bash
node2(192.168.19.4)
hostnamectl set-hostname node2
bash
node3(192.168.19.5)
hostnamectl set-hostname node3
bash
node4(192.168.19.6)
hostnamectl set-hostname node4
bash
所有节点(这里使用node1作为示范)
关闭防火墙
systemctl stop firewalld
setenforce 0
磁盘分区,并挂载
vim /opt/fdisk.sh
#!/bin/bash
#获取sdb,sdc,sdd,sde
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
#刷新分区表
partprobe &> /dev/null
#格式化
mkfs.xfs /dev/${VAR}"1" &> /dev/null
#创建挂载点
mkdir -p /data/${VAR}"1" &> /dev/null
#在 /etc/fstab配置开机自动挂载
echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
done
#检测并挂载
mount -a &> /dev/null
以Node1节点为例:
hostnamectl set-hostname node1
su
echo "192.168.19.3 node1" >> /etc/hosts
echo "192.168.19.4 node2" >> /etc/hosts
echo "192.168.19.5 node3" >> /etc/hosts
echo "192.168.19.6 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
#yum -y install centos-release-gluster #如采用官方 YUM 源安装,可以直接指向互联网仓库
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
故障原因是版本过高导致
yum remove glusterfs-api.x86_64 glusterfs-cli.x86_64 glusterfs.x86_64 glusterfs-libs.x86_64 glusterfs-client-xlators.x86_64 glusterfs-fuse.x86_64 -y
只要在一台Node节点上添加其它节点即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
#在每个Node节点上查看群集状态
gluster peer status
在任意Node节点查看集群状态
卷名 | 卷类型 | Brick |
---|---|---|
dis-volume | 分布式卷 | node1(/data/sdb1), node2(/data/sdb1) |
stripe-volume | 条带卷 | node1(/data/sdc1)、node2(/data/sdc1) |
卷名 | 卷类型 | Brick |
dis-volume | 分布式卷 | node1(/data/sdb1), node2(/data/sdb1) |
stripe-volume | 条带卷 | node1(/data/sdc1)、node2(/data/sdc1) |
在任意node主机都可以操作。因为都关联起来了.
创建分布式卷,没有指定类型,默认创建的是分布式卷.。在没有指传输协议时,默认使用tcp
#创建分布式卷,没有指定类型,默认创建的是分布式卷
gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force
#查看卷列表
gluster volume list
#启动新建分布式卷
gluster volume start dis-volume
#查看创建分布式卷信息
gluster volume info dis-volume
指定类型为 stripe ,数值为2,且后面跟了2 个 Brick Server,所以创建的是条带卷
#指定类型为 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,所以创建的是复制卷
#指定类型为 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的两倍。所以创建的是分布式条带卷
#指定类型为 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 的两倍,所以创建的是分布式复制
指定类型为 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
#查看当前所有卷的列表
gluster volume list
将gfsrepo 软件上传到 /opt 目录下(可以解压后压缩为zip 格式上传到linux中)
#将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
yum -y install glusterfs glusterfs-fuse
mkdir -p /test/{dis,stripe,rep,dis_stripe,dis_rep}
ls /test
配置 /etc/hosts 文件
echo "192.168.19.3 node1" >> /etc/hosts
echo "192.168.19.4 node2" >> /etc/hosts
echo "192.168.19.5 node3" >> /etc/hosts
echo "192.168.19.6 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
#永久挂载
vim /etc/fstab
node1:dis-volume /test/dis glusterfs defaults,_netdev 0 0
node1:stripe-volume /test/stripe glusterfs defaults,_netdev 0 0
node1:rep-volume /test/rep glusterfs defaults,_netdev 0 0
node1:dis-stripe /test/dis_stripe glusterfs defaults,_netdev 0 0
node1:dis-rep /test/dis_rep glusterfs defaults,_netdev 0 0
卷中写入文件,客户端操作
cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40
ls -lh /opt
cp /opt/demo* /test/dis
cp /opt/demo* /test/stripe/
cp /opt/demo* /test/rep/
cp /opt/demo* /test/dis_stripe/
cp /opt/demo* /test/dis_rep/
查看文件分布
#查看分布式文件分布
ls -lh /data/sdb1
#查看条带卷文件分布
ls -lh /data/sdc1
#查看复制卷分布
ll -h /data/sdb1
查看分布式条带卷分布
ll -h /data/sdd1
#查看分布式复制卷分布
ll -h /data/sde1
#挂起 node2 节点或者关闭glusterd服务来模拟故障
systemctl stop glusterd.service
#在客户端上查看文件是否正常
#分布式卷数据查看
ll /test/dis/ #在客户机上发现少了demo5.log文件,这个是在node2上的
#条带卷
cd /test/stripe/ #无法访问,条带卷不具备冗余性
#分布式条带卷
ll /test/dis_stripe/ #无法访问,分布条带卷不具备冗余性
#分布式复制卷
ll /test/dis_rep/ #可以访问,分布式复制卷具备冗余性
扩展其他的维护命令:
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.deny 192.168.19.100
#仅允许
gluster volume set dis-rep auth.allow 192.168.19.* #设置192.168.19.0网段的所有IP地址都能访问dis-rep卷(分布式复制卷)