前言
GlusterFS简介
前言
- 开源的分布式文件系统
- 由存储服务器、客户端以及NFS/Samba存储网关组成
- 无元数据服务器
GlusterFS特点
- 扩展性和高性能
- 高可用性
- 全局统一命名空间
- 弹性卷管理
- 基于标准协议
GlusterFS术语
- Brick
- volume
- FUSE
- VFS
- Glusterd
模块化堆栈式架构
- 模块化、堆栈式的架构
- 通过对模块的组合,实现复杂的功能的
GlusterFS工作原理
GlusterFS工作流程
弹性HASH算法
- 通过HASH算法得到一个32位的整数
- 划分为N个连续的子空间,每个空间对应—个Brick弹性
HASH算法的优点 - 保证数据平均分布在每一个Brick中
- 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS的卷类型
分布式卷
条带卷
复制卷
分布式条带卷
分布式复制卷
条带复制卷
分布式条带复制卷
分布式卷
- 没有对文件进行分块处理
- 通过扩展文件属性保存HASH值
- 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等
- 没有分块处理 文件只能在一个server中,不提升效率
分布式卷的特点 - 文件分布在不同的服务器,不具备冗余性
- 更容易和廉价地扩展卷的大小
- 单点故障会造成数据丢失
- 依赖底层的数据保护
创建分布式卷
心 - 创建一个名为dis-volume的分布式卷,文件将根据HASH分布在
server1:/dir1、server2:/dir2和server3:/dir3中
gluster yolume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
条带卷
- 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
- 存储大文件时,性能尤为突出
- 不具备冗余性,类似Raid0
- 从多个server中同时读取文件,效率提升
条带卷的特点 - 数据被分割成更小块分布到块服务器群中的不同条带区
- 分布减少了负载且更小的文件加速了存取的速度
- 没有数据冗余
创建条带卷 - 创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
复制卷
- 同一文件保存一份或多分副本
- 因为要保存副本,所以磁盘利用率较低
- 若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
复制卷的特点 - 卷中所有的服务器均保存一个完整的副本
- 卷的副本数量可由客户创建的时候决定
- 至少有两个块服务器或更多服务器
- 具备冗余性
创建复制卷
创建名为rep-volume的复制卷,文件将同时存储两个副本,分别在Server1:/dir1和Server2:/dir2两个Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
分布式条带卷
- 兼顾分布式卷和条带卷的功能
- 主要用于大文件访问处理
- 至少最少需要4台服务器
创建分布式条带卷
创建了名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1
server2:/dir2 terver3:/dir3 server4:/dir4
分布式复制卷
- 兼顾分布式卷和复制卷的功能
- 用于需要冗余的情况
分布式复制卷分布式复制卷
兼顾分布式卷和复制卷的功能用于需要冗余的情况
创建分布式复制卷
创建名为dis-rep的分布式条带卷,配置分布式复制卷时
卷
中Brick所包含的存储服务器数必须是复制卷的倍数(>=2倍)
gluster volume create(disrep replica 2 transport tcp server1:/dir1 server2:
/dir2 server3:/dir3 server4:/dir4
GFS部署
先将gfsrepo库导入到所有的服务器实例的root目录下,安装GFS的相关的软件包 需要用到此库
为所有服务器都配置下列操作
cd /etc/yum.repos.d/
vi glfs.repo 编辑gifs的yum库
[GLFS]
name=glfs
baseurl=file:///root/gfsrepo 设置本地源路径
gpgcheck=0
enable=1
保存退出
vi /etc/hosts 剪辑本地映射文件 映射服务器节点名和ip
20.0.0.15 node1
20.0.0.16 node2
20.0.0.18 node3
20.0.0.19 node4
保存退出
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
........完毕
systemctl start glusterd.service 开启服务
systemctl status glusterd.service
确认glusterfs已经在运行
下面的只要其中一台上执行即可
gluster peer probe node2 与其他服务器建立信任关系
gluster peer probe node3
gluster peer probe node4
gluster peer status
Number of Peers: 3 建立信任关系的成员
Hostname: node2
Uuid: df4c1840-dbb0-45c5-857c-8d1d1116906a
State: Peer in Cluster (Connected) 成员连接的状态
Hostname: node3
Uuid: b0c31b6f-4098-49de-8151-494d51489726
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: 93e1a723-b3b7-41d6-887f-122309889a74
State: Peer in Cluster (Connected)
注意:需要所有服务器都处于Peer in Cluster (Connected)状态
gluster volume create dis_str stripe2 node1:/data/sdb1 node2:/data/sdb1 node3:/data/sdb1 node4:/data/sdb1 force
创建一个分布式条带卷试试看
gluster volume start dis_str
启用新建的卷
gluster volume stop dis_str
停用卷
gluster volume delete dis_str
删除卷 (删除前必须先停用)
客户机配置
和上面同样配置glfs库和hosts文件然后安装服务
yum -y install glusterfs lusterfs-fuse
mkdir -p /data/dis_str 创建挂载需要用到的文件
mount.glusterfs node1:dis_str /data/dis_str (挂载gfs储存)