赞
踩
Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数PB存储容量和数千客户端,通过Infiniband RDMA 或Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统。具有可扩展性、高性能、高可用性等特点。
扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议
Brick :存储服务器节点
Volume :卷
FUSE :内核伪文件系统)
VFS:(虚拟端口):内核态的虚拟文件系统,用户是先提交请求交给VFS 然后VFS交给FUSE再交给GFS客户端,最后由客户端交给远端的存储
Glusterd:是运行在存储节点的进程
模块化、堆栈式的架构
通过对模块的组合,实现复杂的功能
GFS工作流程
写入过程:
gfs客户端将数据保存在GFS文件系统中(客户端在本地发出写请求),交由VFS的API接受请求,将数据交给FUSE(内核伪文件系统),FUSE对文件系统进行转存,转存的设备位置为: /dev/fuse,/dev/fuse 虚拟设备文件将数据交给GFS客户端,GFS客户端client会根据配置文件对数据进行处理,然后再通过网络发送到GFS服务端。
GFS服务端服务器接收到数据之后,会将数据保存在对应的存储节点上。
读取过程:
客户端在本地发出读请求,交由VFS的API接受请求,将数据交给FUSE(内核伪文件系统),FUSE在/dev/fuse 查询缓存,执行page函数读取内存,若缓存有,则返回客户端。若没有缓存,GFS客户端会去GFS服务端获取数据,GFS服务端通过VFS接口去本地读取缓存,再把缓存存储在/dev/fuse,读取了缓存数据之后再通过VFS返回给客户端。
通过HASH算法得到一个32位的整数
HASH值有一个特性,数据唯一性
划分为N个连续的子空间,每个空间对应一个Brick
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、 条带复制卷和分布式条带复制卷
分布式卷(默认):文件通过 HASH 算法分布到所有 Brick Server 上, 这种卷是 Glusterfs 的基础;以文件为单位根据 HASH 算法散列到不同的 Brick,其实 只是扩大了磁盘空间,如果有一块磁盘损分布式卷也成为哈希卷,多个文件以文件为单位在多个brick上,使用哈希算法随机存储。
应用场景:大量小文件
优点:读/写性能好
缺点:如果存储或服务器故障,该brick上的数据将丢失
不指定卷类型,默认是分布式卷
gluster volume create 卷名 节点1@文件系统 节点2@文件系统 …
根据偏移量将文件分为 N 块(N个条带节点),轮询的存储在每个 Brick Server 节点;
存储大文件时,性能尤为突出;
不具备冗余性,类似 raid0
条带卷特点
数据被分割成更小块分布到块服务器群中的不同条带区
分布减少了负载且更小的文件加速了存取的速度
没有数据冗余
创建条带卷的命令格式:
gluster volume create 卷名 stripe 条带数 节点1@文件系统 节点2@文件系统 ……
复制卷(Replica volume):将文件同步到多个 Brick 上,使其具备多个文件副本, 属于文件级 RAID 1,具有容错能力。因为数据分散在多个 Brick 中,所以读性能得 到很大提升,但写性能下降。
同一文件保存一份或多分副本
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
复制卷特点
卷中所有的服务器均保存一个完整的副本
卷的副本数量可由客户创建的时候决定
至少有两个块服务器或更多服务器
具备冗余性
创建复制卷的命令格式:
gluster volume create 卷名 replica 2 transport tcp 节点1@文件系统 节点2@文件系统 ……
分布式条带卷(Distribute Stripe volume):Brick Server 数量是条带数(数据块分布 的 Brick 数量)的倍数,兼具分布式卷和条带卷的特点。
兼顾分布式卷和条带卷的功能
主要用于大文件访问处理
至少最少需要4台服务器
gluster volume create 卷名 stripe 2 transport tcp 节点1@文件系统 节点2@文件系统 节点3@文件系统 节点4@文件系统 …………
分布式复制卷(Distribute Replica volume):Brick Server 数量是镜像数(数据副本 数量)的倍数,兼具分布式卷和复制卷的特点
兼顾分布式卷和复制卷的功能
用于需要冗余的情况
创建分布式复制卷的命令格式:
gluster volume create 卷名 replica 2 transport tcp 节点1@文件系统 节点2@文件系统 节点3@文件系统 节点4@文件系统 ……
注意,创建分布式条带卷,服务器数目是条带数的倍数(至少两倍)
条带复制卷(Stripe Replica volume):类似 RAID 10,同时具有条带卷和复制卷的 特点
分布式条带复制卷(Distribute Stripe Replicavolume):三种基本卷的复合卷,通常 用于类 Map Reduce 应用
文献:https://blog.csdn.net/weixin_48190863/article/details/119576751?spm=1001.2014.3001.5501
Node1节点: node1/192.168.100.6 磁盘:/dev/sdb1 挂载点:/data/sdb1
Node2节点:node2/192.168.100.7 磁盘:/dev/sdb1 挂载点:/data/sdb1
Node3节点: node3/192.168.100.8 磁盘:/dev/sdb1 挂载点:/data/sdb1
Node4节点: node3/192.168.100.9 磁盘:/dev/sdb1 挂载点:/data/sdb1
客户端节点:192.168.100.5
vim /opt/fdisk.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 chmod +x /opt/fdisk.sh cd /opt/ sh -x fdisk.sh
echo "192.168.100.6 node1" >> /etc/hosts
echo "192.168.100.7 node2" >> /etc/hosts
echo "192.168.100.8 node3" >> /etc/hosts
echo "192.168.100.9 node4" >> /etc/hosts
echo "192.168.100.5 client" >> /etc/hosts
#将gfsrepo 软件上传到/opt目录下
cd /opt
unzip gfsrepo.zip
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim /etc/yum.repos.d/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
如果出现报错
解决方法,卸载高版本,重新安装
rpm -e --nodeps glusterfs-api
rpm -e --nodeps glusterfs-libs
rpm -e --nodeps glusterfs-fuse
rpm -e --nodeps glusterfs-cli
yum -y install glusterfs-client-xlators.x86_64
yum -y install glusterfs-api.x86_64
yum install -y glusterfs-cli
如果还有其他软件包版本过高,直接卸载,重新安装即可
systemctl start glusterd.service
systemctl enable glusterd.service
systemctl status glusterd.service
ntpdate ntp1.aliyun.com
#只要在一台Node节点上添加其它节点即可
gluster peer probe node1
gluster peer probe node2
gluster peer probe node3
gluster peer probe node4
gluster peer status
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。