GFS分布式文件系统

GlusterFS概述

简介

开源的分布式文件系统
由存储服务器、可u段以及NFS/Samba存储网关组成
无元数据服务器

特点

扩展性和高性能
高可用性
全局统一命名空间
弹性卷管理
基于标准协议

术语

Brick(存储块)(砖):
指可信主机池中由主机提供的用于物理存储的专用分区(磁盘分区),是GlusterFS中的基本存储单元,同时也是可信存储池中服务器上对外提供的存储目录。

Volum(逻辑卷):
一个逻辑卷是一组Brick的集合。卷是数据存储的逻辑设备,类似于LVM中的逻辑卷。大部分Gluster管理操作是在卷上进行的

FUSE(filesystem inuserspace):
是一个内核模块,允许用户创建自己的文件系统,无需修改内核代码

VFS:
内核空间对用户空间提供的访问磁盘的接口。(客户机访问服务器的入口接口)

Gluster(后台管理进程):
在存储集群中每个节点上都要运行。

模块化堆栈式架构

模块化,堆栈式的架构
通过对模块的组合,实现复杂的功能

工作原理

流程

客户端或应用程序通过Gluster的过载点(VFS)访问数据
linux系统内核通过VFS API收到请求并处理
VFS将数据递交给FUSE内核文件系统,FUSE文件系统则是将数据通过/dev/fuse设备文件递交给了客户机
GlusterFS client收到数据后,client根据配置文件的配置对数据进行处理
通过网络将数据传递至远端的Gluster服务器,并将数据写入到服务器的存储设备

弹性hash算法

通过hash算法得到一个32位的整数
划分为n个连续的子空间,每个空间对应一个brick

弹性hash算法的优点:
保证数据平均的分布在每一个brick中解决了对元数据服务器的依赖,进而解决单点故障以及访问瓶颈

四个brick节点的GlusterFS卷,平均分配2的32次方的区间的范围空间
访问文件时,通过计算该文件的hash值(key值),从而对应到brick存储空间

GlusterFS卷类型

分布式卷
条带卷
复制卷
分布式条带卷
分布式复制卷
分布式条带复制卷

分布式卷(异地存储)

没有对文件进行分块处理
通过扩展文件属性保存hash值
支持底层的文件系统有EXT2、EXT4、ZFS、XFS等
没有分块处理,文件只能存在于以个server中,效率不提升

特点文

件分布在不同的服务器不具备冗余性(备份)
更容易和廉价的扩展卷的大小
单点故障会造成数据丢失
依赖底层的数据保护(要进行额外的数据备份)

创建分布式卷
gluster volum create fb-volum server1:/dir1 server2:/dir2 server3:/dir3 force 
#创建一个名为fb-volum的分布式卷,存储的文件将根据hash算法分布在server1、2、3:/dir1、2、3上。server1:/dir1是主机名:/挂载点

条带卷

根据偏移量将文件分成N块(N个条带点),轮询的存储在每个brick server节点
存储大文件时,性能尤为突出
不具备冗余性,类似于raid0
从多个server中同时读取文件,效率提升

特点

数据分割成更小块分布到块服务器群中的不同条带区
分布减少了负载且更小的文件加速了存取速度
没有数据冗余

创建条带卷
gluster volum create td-volum stricpe 2 transport tcp server1:/dir1 server2:/dir2 force
#创建一个名为td-volume的条带卷,文件将被分块轮询存储在server1:/dir1 server2:/dir2 两个brick中

复制卷

同一文件保存一份或多份副本(类似raid1)
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照最低容量节点的容量作为该卷的总容量

特点

卷中所有服务器均保存一个完整的副本
卷的副本数量可由客户创建的时候觉点
至少有两块服务器
具备冗余性

创建复制卷
gluster volum create fz-volum replica 2 transport tcp server1:/dir1 server2:/dir2  
#创建名为fz-volum的复制卷,文件将同时存储两个副本,分别在server1:/dir1 server2:/dir2 两个brick中

分布式条带卷

兼顾分布式卷和条带卷的功能(先条带后分布)
主要用于大文件访问处理
至少需要4台服务器

创建分布式条带卷
gluster volum create ft-volum stripe 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4 
#创建名为ft-volum的分布式条带卷,配置分布式条带卷时,卷重brick所包含的存储服务器数量必须是条代卷数的倍数(两倍以上)

分布式复制卷

兼顾分布式卷和复制卷的功能
用于需要冗余的情况

创建分布式复制卷
gluster volume create ff-volum replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4 
#创建名为ff-volum的分布式条带卷,配置分布式复制卷时,卷重brick所包含的存储服务器数量必须是条带卷数的倍数(两倍以上)

汇总

分布式:存储brick不在一个区域范围,某一个区域内brick坏了,不影响另一个区域的brick。
条带式:多个brick形成一个整体,这个整体内的任意一块brick坏了,整个条带卷不可用。
复制卷:多个brick形成一个整体,这个整体内的每块brick都有完整的副本,由此,复制卷内任意一块brick坏了,不影响复制卷使用。

GlusterFS部署

准备5台主机,分别位4台服务器和一台客户端
nd1:20.0.0.10
nd2:20.0.0.20
nd3:20.0.0.30
nd4:20.0.0.40
client:20.0.0.50
关闭所有防火墙

地址映射

在4台服务器和客户端上

vi /etc/hosts
#添加
20.0.0.10 nd1
20.0.0.20 nd2
20.0.0.30 nd3
20.0.0.40 nd4

在这里插入图片描述

添加gfsrepo的软件包

vi /etc/yum.repos.d/gfs.repo
[gfs]
name=gfs
baseurl=file:///root/gfsrepo
gpgcheck=0 #无验证
enabled=1 #立即启用

yum clean all #清除缓存
yum makecache #建立缓存

在这里插入图片描述
在服务器节点上安装软件

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
#glusterfs :软件
#glusterfs-server: 服务
#glusterfs-fuse :文件系统
#glusterfs-rdma :rdma协议
systemctl start glusterd.service #开启服务
systemctl enable glusterd.service #服务开机自启
systemctl status glusterd.service #查看服务状态

在这里插入图片描述

时间同步

在确认联通网络后

ntpdate ntp1.aliyun.com #与阿里云时间服务器同步
crontab -e #创建任务计划,每10分钟与阿里云进行一次时间同步
*/10 * * * * /usr/sbin/ntpdate ntp1.ailyun.com

在这里插入图片描述

选择nd1节点作为信任池中的信任端

在nd1上
g

luster peer probe nd2
gluster peer probe nd3
gluster peer probe nd4

在这里插入图片描述

在四个节点上添加4个大小为5g的硬盘,后重启

fdisk -l  #查看磁盘信息

在这里插入图片描述

格式化

mkfs.ext4 /dev/sdb #所有的磁盘都要格式化

在这里插入图片描述
创建挂载点并挂载

mkdir {/bb,/cc,/dd,/ee} #创建挂载点
mount /dev/sdb /bb #挂载
mount /dev/sdc /cc
mount /dev/sdd /dd
mount /dev/sde /ee
df -Th #查看挂载情况
systemctl start glusterfsd.service #服务启动
systemctl status glusterfsd.service #查看服务状态

在这里插入图片描述

创建卷

创建分布式卷

nd1上

gluster volum create fb-volum nd1:/bb nd2:/bb force 
gluster volume info fb-volum #查看卷的信息
gluster volume start fb-volum #开启卷
gluster volume status fb-volum #查看卷状态

在这里插入图片描述

创建条带卷

gluster volum create td-volum stripe 2 nd1:/cc nd2:/cc force
gluster volume info td-volum #查看卷的信息
gluster volume start td-volum #开启卷
gluster volume status td-volum #查看卷状态

在这里插入图片描述

创建复制卷

gluster volum create fz-volum replica 2 nd3:/bb nd4:/bb force
gluster volume info fz-volum #查看卷的信息
gluster volume start fz-volum #开启卷
gluster volume status fz-volum #查看卷状态

在这里插入图片描述

创建分布式条带卷

gluster volum create ft-volum stripe 2 nd1:/dd nd2:/dd nd3:/dd nd4:/dd force
gluster volume info ft-volum #查看卷的信息
gluster volume start ft-volum #开启卷
gluster volume status ft-volum #查看卷状态

在这里插入图片描述

创建分布式复制卷

gluster volume create ff-volum replica 2 nd1:/ee nd2:/ee nd3:/ee nd4:/ee force
gluster volume info ff-volum #查看卷的信息
gluster volume start ff-volum #开启卷
gluster volume status ff-volum #查看卷状态

在这里插入图片描述

gluster volume list #查看创建的卷的列表

在这里插入图片描述
在客户机上安装gluster,创建挂载点后挂载

yum -y install glusterfs glusterfs-fuse
mkdir {/fb,/td,/fz,/ft,/ff}
mount.glusterfs nd1:fb-volum /fb
mount.glusterfs nd1:td-volum /td
mount.glusterfs nd1:fz-volum /fz
mount.glusterfs nd1:ft-volum /ft
mount.glusterfs nd1:ff-volum /ff
df -Th #查看挂载情况

在这里插入图片描述

进行测试

创建测试文件

dd if=/dev/zero of=/demo1.log bs=40M count=1
dd if=/dev/zero of=/demo2.log bs=40M count=1
dd if=/dev/zero of=/demo3.log bs=40M count=1
dd if=/dev/zero of=/demo4.log bs=40M count=1
dd if=/dev/zero of=/demo5.log bs=40M count=1
cd /
ls -lh

在这里插入图片描述
复制文件到卷组上

cp demo* /fb
cp demo* /td
cp demo* /fz
cp demo* /ft
cp demo* /ff

在这里插入图片描述
查看分布式卷
nd1有4个文件
在这里插入图片描述
nd2上有1个文件
在这里插入图片描述
查看条带卷
nd1上所有文件都在,但大小只有原来的一半
在这里插入图片描述
nd2上所有文件都在,在大小也只有原来的一半
在这里插入图片描述
查看复制卷
nd3上,所有文件都在,且大小一样
在这里插入图片描述
nd4上,所有文件都在,且大小一样
在这里插入图片描述
查看分布式条带卷
nd1上,有4个文件,且文件大小为原来的一般
在这里插入图片描述
nd2上,与nd1相同
在这里插入图片描述
nd3上,只有一个文件,且大小为原来的一半
在这里插入图片描述
nd4上,与nd3相同
在这里插入图片描述
查看分布式复制卷
nd1上四个文件,且大小与原来相同
在这里插入图片描述
nd2上,与nd1相同
在这里插入图片描述
nd3上,有一个文件,大小与原来相同
在这里插入图片描述
nd4上,与nd3相同
在这里插入图片描述

文件损坏测试

停止nd2后再客户机上查看测试文件
cd /fb \ll #查看分布卷,只有1-4文件
cd /td \ll #查看条带卷,无文件
cd /ft \ll #查看分布式条带卷 ,只有5文件
cd /ff \ll #查看分布式复制卷,可以查看到全部文件
在这里插入图片描述

删除卷

在nd1上

gluster volume list  #查看卷列表
gluster volume stop td-volum  #停止分布式卷
gluster volume status td-volum  #查看状态
gluster volume delete td-volum #删除卷df -Th #在客户机上查看

在这里插入图片描述
在这里插入图片描述

控制访问

拒绝某个用户访问某个卷
nd1上

gluster volume set fz-volum auth.reject 20.0.0.50 
#拒绝ip为20.0.0.50的主机访问复制卷

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值