GFS分布式文件系统部署解析

文章目录

  • 前言
  • 一 GlusterFS概述
    • 1.1 GlusterFS简介
    • 1.2 GlusterFS特点
    • 1.3 GlusterFS术语
    • 1.4 模块化堆栈式架构
  • 二 GlusterFS工作原理
    • 2.1 GlusterFS工作流程:
    • 2.2 弹性HASH算法
    • 2.3 GlusterFS的卷类型
      • 2.3.1 分布式卷
        • 2.3.1.1 分布式卷(异地存储)
        • 2.3.1.2 分布式卷的特点
        • 2.3.1.3 创建分布式卷
      • 2.3.2 条带卷
        • 2.3.2.1 条带卷
        • 2.3.2.2 特点
        • 2.3.2.3 创建条带卷
      • 2.3.3 复制卷
        • 2.3.3.1 复制卷(类似Raid1)
        • 2.3.3.2 特点
        • 2.3.3.3 创建复制卷
      • 2.3.4 分布式条带卷
        • 2.3.4.1 分布式条带卷(先条带,后分布)
        • 2.3.4.2 创建分布式条带卷
      • 2.3.5 分布式复制卷
        • 2.3.5.1 分布式复制卷
        • 2.3.5.2 创建分布式复制卷
      • 2.3.6 总结:
  • 三 GlusterFS部署
    • 3.1 群集环境
    • 3.2 部署准备
    • 3.3 部署流程:
      • 3.3.1 开始创建卷
      • 3.3.2 进行测试
      • 3.3.3 进行破坏测试
      • 3.3.4 删除卷
      • 3.3.5 访问控制
  • 总结


前言

GlusterFS作为一个开源的分布式文件系统,不同于之前的服务系统,gfs具有模块化, 扩展性和高性能等优点,了解并掌握该项技术,有利于技术能力的全面发展与提升。


一 GlusterFS概述

1.1 GlusterFS简介

开源的分布式文件系统
由存储服务器,客户端(默认GFS挂载服务,RDMA协议)以及NFS/Samba(使用前需开启对应协议)存储网关组成
无元数据服务器(无数据元属性信息)

1.2 GlusterFS特点

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

1.3 GlusterFS术语

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

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

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

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

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

1.4 模块化堆栈式架构

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

二 GlusterFS工作原理

2.1 GlusterFS工作流程:

1.客户端或应用程序通过GlusterFS的挂载点(VFS)访问数据

2.linux系统内核通过VFS API收到请求并处理

3.VFS将数据递交给FUSE内核文件系统,fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client(客户机)

4.GlusterFS client收到数据后,client根据配置文件的配置对数据进行处理

5.通过网络将数据传递至远端的GlusterFS server(服务器),并且将数据写入到服务器的存储设备上。

2.2 弹性HASH算法

1.通过HASH算法得到一个32位的整数

2.划分为N个连续的子空间,每个空间对应一个Brick

3.弹性HASH算法的优点:
    保证数据平均分布在每一个Brick中
    解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈
    
四个Brick节点的GlusterFS卷,平均分配2的32次方的区间的范围空间
访问文件时,通过计算该文件的HASH值(key值),从而对应到Brick存储空间

2.3 GlusterFS的卷类型

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

2.3.1 分布式卷

2.3.1.1 分布式卷(异地存储)

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

GFS分布式文件系统部署解析_第1张图片

2.3.1.2 分布式卷的特点

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

2.3.1.3 创建分布式卷

创建一个名为dis-volume(卷名称,自定义)的分布式卷,文件将根据HASH分布在server1:/dir1、server2:/dir2和server3:/dir3中

#gluster volume create dis-volume server1:/dir1 server2:/dir2 server3:/dir3
 server1:/dir1:主机名:/挂载点 

2.3.2 条带卷

2.3.2.1 条带卷

根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点
存储大文件时,性能尤为突出
不具备冗余性,类似Raid0

从多个server中同时读取文件,效率提升

GFS分布式文件系统部署解析_第2张图片

2.3.2.2 特点

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

2.3.2.3 创建条带卷

创建了一个名为Stripe-volume的条带卷,文件将被分块轮询的存储在Server1:/dir1和Server2:/dir2两个Brick中 
# gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2                                          磁盘数         协议

2.3.3 复制卷

2.3.3.1 复制卷(类似Raid1)

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

GFS分布式文件系统部署解析_第3张图片

2.3.3.2 特点

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

2.3.3.3 创建复制卷

创建名为rep-volume的复制卷,文件将同时存储两个副本,分别
在Server1 :/dir1和Server2:/dir2两个Brick中

# gluster volume create rep-volume replica 2transport tcp server1:/dir1 server2:/dir2

2.3.4 分布式条带卷

2.3.4.1 分布式条带卷(先条带,后分布)

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

GFS分布式文件系统部署解析_第4张图片

2.3.4.2 创建分布式条带卷

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

# gluster volume create dis-stripe stripe 2 transport tcp server1:/dir1server2:/dir2 server3:/dir3 serve:4:/dir4

2.3.5 分布式复制卷

2.3.5.1 分布式复制卷

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

GFS分布式文件系统部署解析_第5张图片

2.3.5.2 创建分布式复制卷

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

# gluster volume create dis-rep replica 2 transport tcp server1:/dir1 server2:/dir2 server3:/dir3 server4:/dir4

2.3.6 总结:

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

三 GlusterFS部署

3.1 群集环境

卷类型

卷名称            卷类型          空间大小           Brick
dis-volume       分布式卷          12G    node1(/e6)、node2(/e6)
stripe-volume    条带卷            10G    node1(/d5)、node2(/d5)
rep-volume       复制卷            5G     node3(/d5)、node4(/d5)
dis-stripe       分布式条带卷       12G    node1(/b3)、node2(/b3)       
                                         node3(/b3)、node4(/b3)
dis-rep          分布式复制卷       8G     node1(/c4)、node2(/c4)
                                         node3(/c4)、node4(/c4)

3.2 部署准备

重命名:

[root@server1 ~]# hostnamectl set-hostname node1
[root@server1 ~]# bash
[root@server2 ~]# hostnamectl set-hostname node2
[root@server2 ~]# bash
[root@client1 ~]# hostnamectl set-hostname node3
[root@client1 ~]# bash
[root@server1 ~]# hostnamectl set-hostname node4
[root@server1 ~]# bash
[root@localhost ~]# hostnamectl set-hostname client
[root@localhost ~]# bash

设备:

node1:20.0.0.10
node2:20.0.0.11
node3:20.0.0.12
node4:20.0.0.13
client:20.0.0.14

3.3 部署流程:

在node1上

[root@node1 ~]# vi /etc/hosts  映射
添加
20.0.0.10   node1
20.0.0.11   node2
20.0.0.12   node3
20.0.0.13   node4

GFS分布式文件系统部署解析_第6张图片

[root@node1 ~]# ssh-keygen -t rsa  免密登录
[root@node1 ~]# ssh-copy-id 20.0.0.11
[root@node1 ~]# ssh-copy-id 20.0.0.12
[root@node1 ~]# ssh-copy-id 20.0.0.13
[root@node1 ~]# ssh-copy-id 20.0.0.14

GFS分布式文件系统部署解析_第7张图片
GFS分布式文件系统部署解析_第8张图片

GFS分布式文件系统部署解析_第9张图片
1.拷贝文件

[root@node1 ~]# scp /etc/hosts root@20.0.0.11:/etc/
[root@node1 ~]# scp /etc/hosts root@20.0.0.12:/etc/
[root@node1 ~]# scp /etc/hosts root@20.0.0.13:/etc/
[root@node1 ~]# scp /etc/hosts root@20.0.0.14:/etc/

GFS分布式文件系统部署解析_第10张图片
2.关闭防火墙
面向所有设备

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# systemctl disable firewalld
[root@node1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
[root@node1 ~]# grep -v "#" /etc/selinux/config

GFS分布式文件系统部署解析_第11张图片

3.添加gfsrepo软件包

[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# vi gfs.repo 创建yum源
[root@node1 yum.repos.d]# cd

添加
[gfs]
name=gfs
baseurl=file:///root/gfsrepo
gpgcheck=0  无验证
enabled=1   立即启用

GFS分布式文件系统部署解析_第12张图片

[root@node1 ~]# yum clean all   清除缓存
[root@node1 ~]# yum makecache   建立缓存

GFS分布式文件系统部署解析_第13张图片

4.在四个节点设备上安装软件

[root@node1 ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
glusterfs :软件
glusterfs-server: 服务
glusterfs-fuse :文件系统
glusterfs-rdma :rdma协议
[root@node1 ~]# systemctl start glusterd.service    重启服务
[root@node1 ~]# systemctl enable glusterd.service   自启动服务
[root@node1 ~]# systemctl status glusterd.service   服务状态

GFS分布式文件系统部署解析_第14张图片

5.时间同步

[root@node1 ~]# vi /etc/resolv.conf 
添加
nameserver 8.8.8.8

[root@node1 ~]# ntpdate ntp1.aliyun.com 与阿里云时间服务器同步
[root@node1 ~]# crontab -e  任务计划
添加
*/30 * * * * /usr/sbin/ntpdate ntp1.ailyun.com
每30分钟
分钟 小时 日期 月 星期

[root@node1 ~]# which ntpdate 查看

GFS分布式文件系统部署解析_第15张图片

6.选择一个节点作为信任池中的信任端
选择node1
在node1上

[root@node1 ~]# gluster peer probe node2
[root@node1 ~]# gluster peer probe node3
[root@node1 ~]# gluster peer probe node4
[root@node1 ~]# gluster peer status  查看信任关系

GFS分布式文件系统部署解析_第16张图片

7.在四个节点设备上添加四个5G大小的硬盘
后重启
面向所有设备
在node1上

[root@node1 ~]# fdisk -l  查看磁盘信息

GFS分布式文件系统部署解析_第17张图片
GFS分布式文件系统部署解析_第18张图片
8.格式化

[root@node1 ~]# mkfs.ext4 /dev/sdb 

GFS分布式文件系统部署解析_第19张图片

9.创建挂载点

[root@node1 ~]# mkdir {
     /b1,/c1,/d1,/e1}
[root@node1 ~]# fdisk -l

GFS分布式文件系统部署解析_第20张图片

10.挂载

[root@node1 ~]# mount /dev/sdb /b1
[root@node1 ~]# mount /dev/sdc /c1
[root@node1 ~]# mount /dev/sdd /d1
[root@node1 ~]# mount /dev/sde /e1
[root@node1 ~]# df -Th  查看挂载情况

GFS分布式文件系统部署解析_第21张图片

[root@node1 ~]# systemctl start glusterfsd.service   服务启动
[root@node1 ~]# systemctl status glusterfsd.service  查看状态

GFS分布式文件系统部署解析_第22张图片

3.3.1 开始创建卷

1.创建分布式卷
在node1上

[root@node1 ~]# gluster volume create dis-vol node1:/b1 node2:/b1 force
dis-vol :卷名称
node1:/b1:主机名:/挂载点
[root@node1 ~]# gluster volume info dis-vol  查看卷的详细信息
[root@node1 ~]# gluster volume start dis-vol  启动开启卷
[root@node1 ~]# gluster volume status dis-vol   查看卷状态

GFS分布式文件系统部署解析_第23张图片
GFS分布式文件系统部署解析_第24张图片

2.创建条带卷

[root@node1 ~]# gluster volume create stripe-vol stripe 2 node1:/c1 node2:/c1 force
 stripe 2:条带使用数量2
[root@node1 ~]# gluster volume info stripe-vol 查看卷的详细信息
[root@node1 ~]# gluster volume start stripe-vol  启动开启卷
[root@node1 ~]# gluster volume status stripe-vol  查看卷状态

GFS分布式文件系统部署解析_第25张图片
GFS分布式文件系统部署解析_第26张图片

3.创建复制卷

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

在这里插入图片描述

GFS分布式文件系统部署解析_第27张图片

4.创建分布式条带卷

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

GFS分布式文件系统部署解析_第28张图片

GFS分布式文件系统部署解析_第29张图片

5.创建分布式复制卷

[root@node1 ~]# gluster volume create dis-replica replica 2 node1:/e1 node2:/e1 node3:/e1 node4:/e1 force
[root@node1 ~]# gluster volume info dis-replica 
[root@node1 ~]# gluster volume start dis-replica 
[root@node1 ~]# gluster volume status dis-replica 

GFS分布式文件系统部署解析_第30张图片
GFS分布式文件系统部署解析_第31张图片

[root@node1 ~]# gluster volume list  查看创建的卷列表

GFS分布式文件系统部署解析_第32张图片
在客户机上
安装

[root@client ~]# yum -y install glusterfs glusterfs-fuse   
                                gfs命令程序 文件系统
创建挂载点
进行挂载
[root@client ~]# mkdir {
     /dis,/stripe,/replica,/dis-stripe,/dis-replica}
[root@client ~]# mount.glusterfs node1:dis-vol /dis
[root@client ~]# mount.glusterfs node1:rep-vol /replica
[root@client ~]# mount.glusterfs node1:stripe-vol /stripe
[root@client ~]# mount.glusterfs node1:dis-stripe /dis-stripe
[root@client ~]# mount.glusterfs node1:dis-replica /dis-replica
[root@client ~]# df -Th  查看挂载情况

GFS分布式文件系统部署解析_第33张图片

3.3.2 进行测试

在客户机上
文件复制

[root@client ~]# dd if=/dev/zero of=/demo1.log bs=40M count=1(文件大小40M)
[root@client ~]# dd if=/dev/zero of=/demo2.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo3.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo4.log bs=40M count=1
[root@client ~]# dd if=/dev/zero of=/demo5.log bs=40M count=1
[root@client ~]# ls -lh
[root@client ~]# cd /
[root@client /]# ls -lh  查看文件

GFS分布式文件系统部署解析_第34张图片

GFS分布式文件系统部署解析_第35张图片

复制文件到不同的卷上

[root@client /]# cp demo* /dis
[root@client /]# cp demo* /dis-replica/
[root@client /]# cp demo* /dis-stripe/
[root@client /]# cp demo* /stripe/
[root@client /]# cp demo* /replica/
[root@client /]# cd

GFS分布式文件系统部署解析_第36张图片
1.查看分布式卷上文件
发现文件有5个
因为分布式卷有node1:/b1,node2:/b1

[root@client ~]# cd /dis
[root@client dis]# ls -lh

所以查看两个分区中文件情况
在node1上
文件4个

[root@node1 ~]# cd /b1
[root@node1 b1]# ls -lh

GFS分布式文件系统部署解析_第37张图片
在node2上
只有一个文件

[root@node2 ~]# cd /b1
[root@node2 b1]# ls -lh

在这里插入图片描述

在客户机上
2.查看条带卷
在node1:/c1,node2:/c1

[root@client dis]# cd /stripe/
[root@client stripe]# ls -lh

GFS分布式文件系统部署解析_第38张图片

在node1上
发现所有文件都有,但文件大小只有一半

[root@node1 ~]# cd /c1
[root@node1 c1]# ls -lh

GFS分布式文件系统部署解析_第39张图片

在node2上
显示与node1一样

[root@node2 ~]# cd /c1
[root@node2 c1]# ls -lh

GFS分布式文件系统部署解析_第40张图片
在客户机上
3.查看复制卷
在node3:/b1,node4:/b1

[root@client stripe]# cd /replica/
[root@client replica]# ls -lh

GFS分布式文件系统部署解析_第41张图片
在node3上
发现所有文件都有,且文件大小一样

[root@node3 ~]# cd /b1
[root@node3 b1]# ls -lh

GFS分布式文件系统部署解析_第42张图片

在node4上
显示与node3一样

[root@node4 ~]# cd /b1
[root@node4 b1]# ls -lh

GFS分布式文件系统部署解析_第43张图片

在客户机上
4.查看分布式条带卷
在node1:/d1,node2:/d1,node3:/d1,node4:/d1

[root@client replica]# cd /dis-stripe/
[root@client dis-stripe]# ls -lh

GFS分布式文件系统部署解析_第44张图片

[root@node1 c1]# cd /d1
[root@node1 d1]# ls -lh

在node1上
在node2上
文件存在1,2,3,4,但大小只有一半
GFS分布式文件系统部署解析_第45张图片
GFS分布式文件系统部署解析_第46张图片

在node3上
在node4上
文件存在5,大小一半

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

在客户机上
5.查看分布式复制卷
在node1:/e1,node2:/e1,node3:/e1,node4:/e1

[root@client dis-stripe]# cd /dis-replica/
[root@client dis-replica]# ls -lh

GFS分布式文件系统部署解析_第47张图片

[root@node1 d1]# cd /e1
[root@node1 e1]# ls -lh

在node1上
在node2上
文件存在1,2,3,4,且大小与源文件一样
GFS分布式文件系统部署解析_第48张图片
GFS分布式文件系统部署解析_第49张图片
在node3上
在node4上
文件存在5,且大小与源文件一样
在这里插入图片描述
在这里插入图片描述

3.3.3 进行破坏测试

关闭node2
查看情况

在客户机上
查看分布式,只有四个文件,在node2上的5文件消失

[root@client ~]# cd /dis  
[root@client dis]# ls -lh

查看条带卷,无数据

[root@client dis]# cd /stripe/
[root@client stripe]# ls -lh

查看复制卷,无影响,有备份

[root@client stripe]# cd /replica/
[root@client replica]# ls -lh

查看分布式条带卷,node1,2上的1,2,3,4文件消失只有5文件

[root@client replica]# cd /dis-stripe/
[root@client dis-stripe]# ls -lh

查看分布式复制卷,无影响,全有备份

[root@client dis-replica]# ls -lh

GFS分布式文件系统部署解析_第50张图片
GFS分布式文件系统部署解析_第51张图片

3.3.4 删除卷

先停止,后删除
在node1上

[root@node1 ~]# gluster volume list  查看卷列表
[root@node1 ~]# gluster volume stop dis-vol  停止分布式卷
[root@node1 ~]# gluster volume status dis-vol  查看状态
[root@node1 ~]# gluster volume delete dis-vol  删除卷

GFS分布式文件系统部署解析_第52张图片

在客户机上
查看,发现分布式卷消失

[root@client ~]# df -Th

GFS分布式文件系统部署解析_第53张图片

3.3.5 访问控制

拒绝某个用户访问某个卷
在node1上

[root@node1 ~]# gluster volume list  查看卷列表

[root@node1 ~]# gluster volume set rep-vol auth.reject 20.0.0.14
拒绝客户机访问复制卷

GFS分布式文件系统部署解析_第54张图片
在客户机上查看
复制卷消失

[root@client ~]# df -Th
[root@client ~]# tail -f /var/log/glusterfs/replica.log 查看日志

GFS分布式文件系统部署解析_第55张图片


总结

通过以上对gfs工作原理与实际部署操作,可以较为全面,实际的了解掌握该项技术能力。

你可能感兴趣的:(文件系统·)