GlusterFS概述
开源的分布式文件系统
由存储服务器、客户端以及NFS/Samba存储网关组成
无元数据服务器(数据传输组件RDMA)
GlusterFS特点
扩展性、高性能、高可用性
全局统一命名空间
弹性卷管理---->云的特性:水平(实例数)、垂直(硬件性能)
ECS(虚拟)、OSS和RDS(裸金属)
基于标准协议
GlusterFS术语
Brick(节点)
Volume(卷)
FUSE(用户端交互模块)
VFS(虚拟化文件系统)
Glusterd(服务)
模块化堆栈式架构
模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能
GlusterFS工作原理
GlusterFS工作流程
弹性HASH算法
通过HASH算法得到一个32位的整数
划分为N个连续的子空间,每个空间对应一个Brick
弹性HASH算法的优点:
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS的卷类型
1.分布式卷(fastdfs和gfs搭建)
没有对文件进行分块处理
通过扩展文件属性保存HASH值
支持的底层文件系统有ext3、ext4、 ZFS、 XFS等
分布式卷的特点
●文件分布在不同的服务器,不具备冗余性
●更容易和廉价地扩展卷的大小
●单点故障会造成数据丢失
●依赖底层的数据保护
2.条带卷
●根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个BrickServer节点
●存储大文件时,性能尤为突出
●不具备冗余性,类似Raid0
条带卷的特点
●数据被分割成更小块分布到块服务器群中的不同条带区
●分布减少了负载且更小的文件加速了存取的速度
●没有数据冗余
3. 复制卷
●同一文件保存一份或多分副本
●复制模式因为要保存副本,所以磁盘利用率较低
●多个节点上的存储空间不一致, 那么将按照木桶效应取最低节点的容量
●作为该卷的总容量
复制卷的特点
●卷中所有的服务器均保存一个完整的副本
●卷的副本数量可由客户创建的时候决定
●至少由两个块服务器或更多服务器
●具备冗余性
4.分布式条带卷
●兼顾分布式卷和条带卷的功能
●主要用于大文件访问处理
●至少最少需要4台服务器
5.分布式复制卷
●兼顾分布式卷和复制卷的功能
●用于需要冗余的情况下
群集环境
卷类型
卷名称 | 卷类型 | 空间大小 | Brick |
---|---|---|---|
dis-volume | 分布式卷 | 40G | node1(/b1)、node2(/b1) |
stripe-volume | 条带卷 | 40G | node1(/c1)、node2(/c1) |
rep-volume | 复制卷 | 20G | node3(/b1)、node4(/b1) |
dis-stripe | 分布式条带卷 | 40G | node1(/d1)、node2(/d1)、node3(/d1)、node4(/d1) |
dis-rep | 分布式复制卷 | 20G | node1(/e1)、node2(/e1)、node3(/e1)、node4(/e1) |
实验准备
1、为四台服务器服务器每台添加4个磁盘
2、修改服务器的名称
分别修改为node1、node2、node3、node4
[root@localhost ~]#hostnamectl set-hostname node1
[root@localhost ~]# su
3、将四台服务器上的磁盘格式化,并挂载
在这里我们使用脚本执行挂载
#进入opt目录
[root@node1 ~]# cd /opt
#磁盘格式化、挂载脚本
[root@node1 opt]# vim a.sh
#! /bin/bash
echo "the disks exist list:"
fdisk -l |grep '磁盘 /dev/sd[a-z]'
echo "=================================================="
PS3="chose which disk you want to create:"
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
#给于脚本执行权限
[root@node1 opt