一、GlusterFS概述:
1、GlusterFS简介:
- 开源的分布式文件系统
- 由存储服务器、客户端以及NFS/Samba存储网关组成
- 无元数据服务器
2、GlusterFS特点:
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准协议
3、GlusterFS术语:
- Brick (存储块)
- Volume
- FUSE (内核模块)
- VFS
- Glusterd
4、模块化堆栈式架构:
- 模块化、堆栈式的架构
- 通过对模块的组合,实现复杂的功能
二、GlusterFS工作原理:
群集通讯:rdma
gluster —vfs–服务-客户机 --命令
gluster-server —服务端
fuse -内核模块 -服务–客户
弹性HASH算法:
- 通过HASH算法得到一个32位的整数
- 划分为N个连续的子空间,每个空间对应一个Brick
- 弹性HASH算法的优点
- 保证数据平均分布在每一个Brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
三、GlusterFS的卷类型:
- 分布式卷
- 条带卷
- 复制卷
- 分布式条带卷
- 分布式复制卷
- 条带复制卷
- 分布式条带复制卷
1、分布式卷:
- 没有对文件进行分块处理
- 通过扩展文件属性保存HASH值
- 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等
特点:
- 文件分布在不同的服务器,不具备冗余性
- 更容易和廉价地扩展卷的大小
- 单点故障会造成数据丢失
- 依赖底层的数据保护
2、条带卷:
- 根据偏移量将文件分成N块(N个条带节点),轮询的
- 存储在每个Brick Server节点
- 存储大文件时,性能尤为突出
- 不具备冗余性,类似Raid0
特点:
- 数据被分割成更小块分布到块服务器群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
3、复制卷:
- 同一文件保存一份或多分副本
- 因为要保存副本,所以磁盘利用率较低
- 若多个节点上的存储空间不一致,将按照木桶效应取最
- 低节点的容量作为该卷的总容量
特点
- 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少有两个块服务器或更多服务器
- 具备冗余性
4、分布式条带卷:
- 兼顾分布式卷和条带卷的功能
- 主要用于大文件访问处理
- 至少最少需要4台服务器
5、分布式复制卷(银行多用) - 兼顾分布式卷和复制卷的功能
- 用于需要冗余的情况
四台机子都有的操作:
systemctl stop firewalled.service
setenforce 0
将每台机子上添加4个20G的硬盘,建立磁盘节点群集:
fdisk -l
vim /etc/hosts
14.0.0.14 node1
14.0.0.15 node2
14.0.0.16 node3
14.0.0.17 node4
scp /etc/hosts root@14.0.0.15:/etc/hosts 16 17
ping node 1 2 3 4 ##测试
将磁盘分区及挂载:
cd /opt/
vim disk.sh
#! /bin/bash
echo "the disks exit list:"
fdisk -l | grep '磁盘 /dev/sd[a-z]'
echo "==========================================="
PS3="chose which disk you want to ceate:"
select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit
do
case $VAR in
sda)
fdisk -l /dev/sda
break ;;
sd[b-z])
#create partitions
echo "n
p
w" | fdisk /dev/$VAR
#make filesystem
mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null
#mount the system
mkdir -p /data/${VAR}"1" &> /dev/null
echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
mount -a &> /dev/null
break ;;
quit)
break ;;
*)
echo "wrong disk,please check again";;
esac
done
chmod +x disk.sh
scp disk.sh root@14.0.0.15:/opt 将脚本输送给就集群的其他的节点,其他的节点同样的操作
每台机子安装glusterd软件:
yum -y install centos-release-gluster
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service runing
ntpdate ntp1.aliyun.com
在14上:node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
在15上:node2
gluster peer probe node1
gluster peer probe node3
gluster peer probe node4
在16上:node3
gluster peer probe node1
gluster peer probe node2
gluster peer probe node4
在17上:node4
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer status ##查看池子里面的状况!
实验1:分布卷 20+20 (整块文件单位随机分散存储)
gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
gluster volume list 查看卷型
gluster volume info dis-vol 查看卷信息
gluster volume start dis-vol 开启卷功能 才能用
gluster volume stop dis-vol 停止卷功能
gluster volume delete dis-vol 删除卷功能
在客户机上:
mkdir -p /test/dis
mount.glusterfs node2:dis-vol /test/dis
dd if=/dev/zero of=/demo1.log bs=1M count=40 每个文件40m
dd if=/dev/zero of=/demo2.log bs=1M count=40
dd if=/dev/zero of=/demo3.log bs=1M count=40
dd if=/dev/zero of=/demo4.log bs=1Mcount= 40
dd if=/dev/zero of=/demo5.log bs=1M count=40
cp demo* /test/dis
实验2:条带卷(每个块都存储不同的东西 20+20 )用两块磁盘存储,整块数据分两开存储
gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
gluster volume start stripe-vol
在客户机上:
mkdir /test/stripe-vol
mount.glusterfs node2:stripe-vol /test/stripe-vol/
cp demo* /test/stripe-vol/
实验3:复制卷(镜像卷)20+20=20(两边都是存储一样的数据)
gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
gluster volume start rep-vol
在客户机上:
mkdir /test/rep-vol
mount.glusterfs node2:rep-vol /test/rep-vol/
cp demo* /test/rep-vol/
实验4:分布式条带卷(先随机分开,在对半开存储)
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
在客户机上:
mkdir /test/dis-stripe
mount.glusterfs node2:dis-stripe /test/dis-stripe/
cp demo* /test/dis-stripe/
实验5:分布式复制卷(先随机分开,在镜像存储)
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
在客户机上:
cp demo* /test/rep-vol/
mkdir /test/dis-rep
mount.glusterfs node1:dis-rep /test/dis-rep/
破坏实验:
访问控制:
gluster volume set dis-vol auth.reject 192.168.10.100(要拒绝的IP地址)
gluster volume set dis-vol auth.allow 192.168.10.100(要拒绝的IP地址)