GlusterFS 分布式文件系统

一. GlusterFS概述

1.1 GlusterFS简介

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

在这里插入图片描述

1.2 GlusterFS特点

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

1.3 GlusterFS术语

  • Brick:存储块,存储节点
  • Volume:逻辑卷
  • FUSE:存在于客户端
  • VFS:虚拟文件系统
  • Glusterd:集群

1.4 模块化堆栈式的架构

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

在这里插入图片描述

二. GlusterFS工作原理

2.1 GlusterFS工作流程

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

2.2 弹性HASH算法

  1. 通过HASH算法得先计算文件的所需的存储空间的大小
  • 根据所需的空间分配合理的存储位置依赖于哈希算法到一个32位的整数
  • 访问文件时,通过计算该文件的HASH值,从而对应到Brick存储空间
  • 哈希算法也可以用来验证数据的完整性
  1. 划分为N个连续的子空间,每个空间对应一个Brick
  2. 弹性HASH算法的优点
  • 保证数据平均分布在每一个Brick中:安全性,把数据拆成多份,存到不同的节点中去
  • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

三. GlusterFS的卷类型

3.1 分布卷

  1. 分布式卷的概述
  • 没有对文件进行分块处理,一个整文件存储到一个存储节点中去,效率不提升
  • 通过扩展文件属性保存HASH值
  • 支持底层文件系统有EXT3,EXT4,ZFS,XFS等
  1. 分布式卷的特点
  • 文件分布在不同的服务器,不具备冗余性
  • 更容易和廉价地扩展卷的大小
  • 单点故障会造成数据丢失
  • 依赖底层的数据保护
  1. 创建分布式卷
  • 创建一个名为dis-volume的分布式卷,文件将根据HASH分布在
    server1:/dir1, server2:/dir2 和 server3:/dir3 中
gluster volume create dis-volume server1:/dir1 server2:/dir2
server3:/dir3

3.2 条带卷

  1. 条带卷的概述
  • 根据偏移量将文件分成N块(N个条带节点)轮询的存储在每个Brick Server节点,从多个server中同时读取文件,效率提升
  • 存储大文件时,性能尤为突出
  • 不具备冗余性,类似Raid0
  1. 条带卷特点
  • 数据被分割成更小块分布到块服务器群中的不同条带区
  • 分布减少了负载且更小的文件加速了存储的速度
  • 没有数据冗余
  1. 创建条带卷
  • 创建一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1 和 Server2:/dir2 两个brick中
gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

3.3 复制卷

  1. 复制卷的概述
  • 同一个文件保存一份或多份副本
  • 因为要保存副本,所以磁盘利用率较低
  • 若多个节点上的存储空间不一致,将按照木桶效应取最低点的容量作为该卷的总容量
  1. 复制卷的特点
  • 卷中所有服务器均保持一个完整的副本
  • 卷的副本数量可由客户创建的时候决定
  • 至少有两个块服务器或更多服务器
  • 具备冗余性
  1. 创建复制卷
  • 创建一个名为rep-volume的分布式卷,文件将同时存储在两个副本,分别在server1:/dir1, server2:/dir2 两个Brick中
gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

3.4 分布式条带卷

  1. 分布式条带卷的概述
  • 兼顾分布式卷和条带卷的功能
  • 主要用于大文件访问处理
  • 至少需要4台服务器
  1. 创建分布式条带卷
  • 创建名为dis-stripe 的分布式条带卷,配置分布式条带卷时卷中Brick所包含的存储服务器数必须是条带数的倍数(>=2倍)
gluster volumn create dis-stripe stripe transport server1:/dir server2:/dir2 server3:/dir3 server4:/dir

3.5 分布式复制卷

  1. 分布式复制卷概述
  • 兼顾分布式卷和复制卷的功能
  • 用于需要冗余的情况
  1. 创建分布式复制卷
  • 创建名为dis-rep 的分布式复制卷,配置分布式复制卷时卷中Brick所包含的存储服务器数必须是复制卷数的倍数(>=2倍)
gluster volumn create dis-stripe replica 2 transport server1:/dir server2:/dir2 server3:/dir3 server4:/dir

四. 部署群集环境

4.1 案列设计

12.0.0.22 node1
12.0.0.23 node2
12.0.0.24 node3
12.0.0.25 node4
12.0.0.26 客户端

注意:每个服务器都加四块硬盘,用脚本进行分区,格式化和挂载,用以做实验

4.2 四台服务器中操作

4.21 关闭防火墙和selinux,设置hosts文件

hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3
hostnamectl set-hostname node4

vim /etc/hosts


127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
12.0.0.22 node1
12.0.0.23 node2
12.0.0.24 node3
12.0.0.25 node4

//关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

//关闭selinux
setenforce 0

4.22 执行脚本使四块磁盘自动分区,格式化,挂载

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

4.23 以下只介绍其中一个节点的配置方法,另外的三个节点配置是一样的

smbclient -L //12.0.0.2/
 mkdir /abc
 mount.cifs //12.0.0.2/gfsrepo /abc
 cd /etc/yum.repos.d
 mv local.repo ./backup/
 vim gfs.repo

[GLFS]
name=gIlfs
baseurl=file:///abc/
gpgcheck=0
enabled=1

 yum clean all
 yum makecache 

yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma 

ntpdate ntp1.aliyun.com

systemctl start glusterd.service 
systemctl enable glusterd

 gluster peer probe node2
 gluster peer probe node3
 gluster peer probe node4
 gluster peer status 

#分布式卷

gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
 gluster volume info dis-vol 
 gluster volume start dis-vol

#条带卷

 gluster volume create stripe-vol stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
 gluster volume info stripe-vol 
 gluster volume start stripe-vol 

#复制卷

 gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
 gluster volume start rep-vol 
 gluster volume info rep-vol 

#分布式条带卷

 gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1  force
 gluster volume start dis-stripe 

#分布式复制卷

gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
 gluster volume start dis-rep 

#查看全部卷

gluster volume list 

#查看信任池

 gluster peer status 

五. 创建卷、部署客户端、测试文件系统

5.1 配置hosts文件,不配置挂载时无法识别node

vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
12.0.0.22 node1
12.0.0.23 node2
12.0.0.24 node3
12.0.0.25 node4

5.2 配置yum源

方法一:

 mkdir /abc
 mount.cifs //12.0.0.2/gfsrepo /abc
 cd /etc/yum.repos.d
 mv CentOS-* ./backup/
 vim gfs.repo

[GLFS]
name=gIlfs
baseurl=file:///abc/
gpgcheck=0
enabled=1

方法二:

线网yum源
 vim local1.repo
 [base]
name=local1
baseurl=http://mirror.centos.org/centos/$releasever/storage/$basearch/gluster-3.12/
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 yum clean all
 yum makecache 

yum -y install glusterfs glusterfs-fuse

5.3 挂载

mkdir -p /text/dis
 mount.glusterfs node1:dis-vol /text/dis/
 mkdir -p /text/stripe
 mount.glusterfs node2:stripe-vol /text/stripe/
 mkdir -p /text/rep
 mount.glusterfs node2:rep-vol /text/rep/
 mkdir -p /text/dis-stripe
 mount.glusterfs node2:dis-stripe /text/dis-stripe/
 mkdir -p /text/dis-rep
 mount.glusterfs node2:dis-rep /text/dis-rep/

df -Th
node1:dis-vol           fuse.glusterfs   40G  265M   40G    1% /text/dis
node2:stripe-vol        fuse.glusterfs   40G  265M   40G    1% /text/stripe
node2:rep-vol           fuse.glusterfs   20G  233M   20G    2% /text/rep
node2:dis-stripe        fuse.glusterfs   80G  330M   80G    1% /text/dis-stripe
node2:dis-rep           fuse.glusterfs   40G  265M   40G    1% /text/dis-rep

5.4 测试

//创建5个40M的文件

 dd if=/dev/zero of=/pei.txt bs=1M count=40
 dd if=/dev/zero of=/pei.txt2 bs=1M count=40
 dd if=/dev/zero of=/pei.txt3 bs=1M count=40
 dd if=/dev/zero of=/pei.txt4 bs=1M count=40
 dd if=/dev/zero of=/pei.txt5 bs=1M count=40

//复制5个文件到不同的卷上

  cp /pei* /text/dis
  cp  /pei* /text/stripe/
  cp /pei* /text/rep/
  cp /pei* /text/dis-stripe/
  cp /pei* /text/dis-rep/
  • 回去node节点查看存储的情况

//查看分布式卷
[root@node1 sdb1]# ll -h /data/sdb1/
总用量 80M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt5

[root@node2 sdb1]# ll -h /data/sdb1/
总用量 120M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt4

//查看条带卷
[root@node1 sdc1]# ll -h /data/sdc1/
总用量 100M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt4
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt5

[root@node2 sdc1]# ll -h /data/sdc1/
总用量 100M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt4
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt5

//查看复制卷
[root@node3 opt]# ll -h /data/sdb1/
总用量 200M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt4
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt5

[root@node4 opt]# ll -h /data/sdb1/
总用量 200M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt4
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt5

//查看分布式条带卷

[root@node1 opt]# ll -h /data/sdd1
总用量 40M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt5

[root@node2 opt]# ll -h /data/sdd1
总用量 40M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt5

[root@node3 opt]# ll -h /data/sdd1/
总用量 60M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt4

[root@node4 opt]# ll -h /data/sdd1/
总用量 60M
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 20M 11月 7 16:13 pei.txt4

//查看分布式复制卷

[root@node1 opt]# ll -h /data/sde1
总用量 80M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt5

[root@node2 opt]# ll -h /data/sde1
总用量 80M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt5

[root@node3 opt]# ll -h /data/sde1/
总用量 120M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt4

[root@node4 opt]# ll -h /data/sde1/
总用量 120M
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt2
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt3
-rw-r–r--. 2 root root 40M 11月 7 16:13 pei.txt4

六. 其他维护命令

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值