GFS分布式文件系统

介绍

GlusterFS简介

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

GlusterFS特点

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

GlusterFS术语

Brick
Volume
FUSE
VFS
Glusterd

GlusterFS架构

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

GlusterFS工作原理

GlusterFS工作流程

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

弹性HASH算法

通过HASH算法得到一个32位的整数
划分为N个连续的子空间,每个空间对应一个Brick(存储块)
弹性HASH算法的优点
保证数据平均分布在每一个Brick中
解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

GlusterFS的卷类型

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

分布式卷

没有对文件进行分块处理
通过扩展文件属性保存HASH值
支持的底层文件系统有EXT3、EXT4、ZFS、XFS等
在这里插入图片描述
分布式卷的特点:
文件分布在不同的服务器,不具备冗余性
更容易和廉价地扩展卷的大小
单点故障会造成数据丢失
依赖底层的数据保护

条带卷

根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
存储大文件时,性能尤为突出
不具备冗余性,类似Raid0
在这里插入图片描述
条带卷特点:
数据被分割成更小块分布到块服务器群中的不同条带区
分布减少了负载且更小的文件加速了存取的速度
没有数据冗余

复制卷

同一文件保存一份或多分副本
因为要保存副本,所以磁盘利用率较低
若多个节点上的存储空间不一致,将按照木桶效应取最低节点的容量作为该卷的总容量
在这里插入图片描述

分布式条带卷

兼顾分布式卷和条带卷的功能
主要用于大文件访问处理
至少最少需要4台服务器
在这里插入图片描述

分布式复制卷

兼顾分布式卷和复制卷的功能
用于需要冗余的情况
在这里插入图片描述

GlusterFS部署

这边用到四台centos7.4版本机器,每台机器原本一块硬盘(装机的时候都装的),另外每台机器再加四块硬盘。
IP地址分别为:20.0.0.10
20.0.0.20
20.0.0.30
20.0.0.40
我们要在每台节点都设置主机名,方便管理,并设置好映射关系(4个节点都做)
下面只做一台的演示:

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# su
[root@node1 ~]# vim /etc/hosts  ##做映射
20.0.0.10 node1
20.0.0.20 node2
20.0.0.30 node3
20.0.0.40 node4

配置yum源,用线网源也行,我这边用的是本地有的源放在/abc目录下

[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# mv C* backup/
[root@node1 yum.repos.d]# vim GLFS.repo
[GLFS]
name=glfs
baseurl=file:///abc/glfs
gpgcheck=0
enabled=1

然后去做磁盘分割,一台一台搞的话太麻烦了,我这边用的shell脚本。每台机器刷一下就行了。

#!/bin/bash
for k in $(ls /dev/sd[b-z])
do
  echo -e "n\np\n\n\n\nw\n" |fdisk $V
  mkfs.xfs -i size=512 ${k}1 &>/dev/null
  sleep 1
  M=$(echo "$V" |awk -F "/" '{print $3}')
  mkdir -p /data/${M}1 &>/dev/null
  echo -e "${k}1 /data/${M}1 xfs defaults 0 0\n" >>/etc/fstab
  mount -a &>/dev/null
done

安装gluster服务器,并设时间同步(4个节点都做)

[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

[root@node1 ~]# systemctl enable glusterd
[root@node1 ~]# systemctl start glusterd
[root@node1 ~]# ntpdate ntp1.aliyun.com

添加另外三台到存储池(只需要在其中一个节点做即可,另外三个自动匹配)

[root@node1 ~]# gluster peer probe node2   
peer probe: success. 
[root@node1 ~]# gluster peer probe node3
peer probe: success. 
[root@node1 ~]# gluster peer probe node4
peer probe: success. 
[root@node1 ~]# gluster peer status       ##查看分布式存储邻居状态,会显示其他三个节点
Number of Peers: 3      ##成员为3

创建卷

创建分布式卷

创建一个名为dis-vol的分布式卷,文件将根据HASH分布在node1:/data/sdb1和node2:/data/sdb1中

[root@node1 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
[root@node1 ~]# gluster volume start dis-vol

创建条带卷

创建一个名为Stripe-vol的条带卷,文件将被分块轮询的存储在node1:/data/sdc1和node1:/data/sdc2两个Brick中

[root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
[root@node1 ~]# gluster volume start stripe-vol

创建复制卷

创建名为rep-vol的复制卷,文件将同时存储两个副本,分别在node3:/data/sdb1 node4:/data/sdb1两个Brick中

[root@node1 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
[root@node1 ~]# gluster volume start rep-vol

创建分布式条带卷

创建名为dis-stripe的分布式条带卷,配置分布式的条带卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)

[root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
[root@node1 ~]# gluster volume start dis-stripe

创建分布式复制卷

创建名为dis-rep的分布式复制卷,配置分布式复制卷时,卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)

[root@node1 ~]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
[root@node1 ~]# gluster volume start dis-rep

删除卷

要先停止才能删除

[root@node1 ~]# gluster volume stop 卷名
[root@node1 ~]# gluster volume delete 卷名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值