GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。

GFS分布式文件系统

  • 一、GFS(GlusterFS)概述
  • 二、GlusterFS的卷类型分
      • 1、布式卷
      • 2、条带卷
      • 3、复制卷
      • 4、分布式条带卷
      • 5、分布式复制卷
  • 三、实例搭建GFS实验
      • 1、实验规划图
      • 2、实验详细配置过程
          • 1)同步所有存储服务器的时间、关闭selinux、关闭防火墙
          • 2) 配置所有存储服务器的主机名和/etc/hosts文件
          • 3)创建、格式化、挂载所有存储服务器新增的4块磁盘
          • 4)所有服务器安装GFS中glusterfs管理工具的yum安装包源(干货)
          • 5)添加存储信任池
          • 6)创建各种卷组
      • 3、GFS管理节点配置
  • 四、在挂载点中模拟写入数据分析分布式存储各种卷的存储方式
      • 1、数据写入
      • 2、在存储节点查看各种卷存放数据的方式

一、GFS(GlusterFS)概述

1、GFS简介

  • 开源的分布式文件系统
  • 由存储服务器、客户端、NFS或Samba存储网关组成
  • 无元数据服务器(管理的节点服务器被隐藏)
    2、GFS的特点
  • 扩展性和高性能
  • 高可用性
  • 全局统一命名空间
  • 弹性卷管理
  • 基于标准协议(RDMA:(特点去中心化)或TCP/IP)
  • 模块化、堆栈式的架构
  • 通过对模块的组合,实现复杂的功能

3、GFS术语

  • Brick:存储节点、存储块
  • Volume:存储卷
  • FUSE:用户空间文件系统
  • VFS:虚拟的文件系统
  • Glusterd:集群

4、GFS用到的算法
弹性HASH算法

  • 通过HASH算法得到一个32位的整数
  • 划分为N个连续的子空间,每个空间对应一个Brick弹性

HASH算法的优点

  • 保证数据平均分布在每一个Brick中
  • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

二、GlusterFS的卷类型分

1、布式卷

分布式卷

  • 没有对文件进行分块处理
  • 通过扩展文件属性保存HASH值
  • 支持的底层文件系统有EXT3、EXT4、ZFS、XFS等

分布式卷的特点

  • 文件分布在不同的服务器,不具备冗余性
  • 更容易、廉价地、扩展卷的大小
  • 单点故障会造成数据丢失
  • 依赖底层的数据保护

GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第1张图片

2、条带卷

条带卷

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

条带卷特点

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

GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第2张图片

3、复制卷

复制卷

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

复制卷特点

  • 卷中所有的服务器均保存一个完整的副本
  • 卷的副本数量可由客户创建的时候决定
  • 至少有两个块服务器或更多服务器
  • 具备冗余性
    GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第3张图片

4、分布式条带卷

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

GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第4张图片

5、分布式复制卷

  • 兼顾分布式卷和复制卷的功能
  • 用于需要冗余的情况
    GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第5张图片

三、实例搭建GFS实验

搭建GFS分布式文件系统,掌握创建各种存储卷的方法,创建完成后通过写入和破坏文件测试各种卷的存储方式。

1、实验规划图

GFS分布式文件系统、结合实验分析各种存储卷的特点。深入刨析分布式存储的方式。_第6张图片

2、实验详细配置过程

1)同步所有存储服务器的时间、关闭selinux、关闭防火墙
[root@localhost ~]#   ntpdate ntp1.aliyum.com  //同步阿里云的时钟服务器
[root@localhost ~]# systemctl stop firewalld      //关闭防火墙
[root@localhost ~]# systemctl disabled firewalld    //开机不自动启动
[root@localhost ~]# vi /etc/selinux/config //编辑核心防护的配置文件
......
SELINUX=disabled     //改为disabled,开机不自启
......
[root@localhost ~]# setenforce 0     //关闭核心防护
2) 配置所有存储服务器的主机名和/etc/hosts文件

[root@wu ~]# hostnamectl set-hostname nodo1、nodo2、nodo3、nodo4
[root@nodo1 ~]# vim /etc/hosts
192.168.10.6 nodo1
192.168.10.7 nodo2
192.168.10.8 nodo3
192.168.10.9 nodo4

3)创建、格式化、挂载所有存储服务器新增的4块磁盘

这里使用脚本创建:点击前往脚本

[root@localhost ~]# df -Th       
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/sdb1               xfs        20G   33M   20G    1% /data/sdb1
/dev/sdc1               xfs        20G   33M   20G    1% /data/sdc1
/dev/sdd1               xfs        20G   33M   20G    1% /data/sdd1
/dev/sde1               xfs        20G   33M   20G    1% /data/sde1
4)所有服务器安装GFS中glusterfs管理工具的yum安装包源(干货)

虚拟机自带的线网源安装的包不能使用,所以得自己配置yum源。
下载链接:https://pan.baidu.com/s/1S8QfAmaJhil0ZWAMek0lUA 提取码:tiqu
方法一
直接将下载包上传到服务器中
方法二
使用共享目录的方式挂载到服务其中
挂载方式:点击前往
可能会遇到的报错:点击前往
配置glusterfs工具的yum安装源

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir wu
[root@localhost yum.repos.d]# mv C* wu
[root@localhost yum.repos.d]# vim gfs.repo
[GFS]
name=gfs
baseurl=file:///abc/gfsrepo
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum list
[root@localhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@localhost ~]# systemctl start glusterd.service
[root@localhost ~]# systemctl enable glusterd.service
5)添加存储信任池
  • 添加入存储信任池只要在一台主机上添加其他节点即可
[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
Hostname: node2
Uuid: e1b534f2-90e7-413c-8d20-d24e1b8d81a2
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: e156ca03-c0cb-495b-84d9-bbaa8366433a
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: b59b9d13-27fe-443c-ad04-4cbee1b4114e
State: Peer in Cluster (Connected)
6)创建各种卷组
创建分布卷
[root@node1 ~]# gluster volume create dis-volume node1:/data/sdb1 node2:/data/sdb1 force   //创建分布式卷
volume create: dis-volume: success: please start the volume to access data
[root@node1 ~]# gluster volume start dis-volume   //启动分布式卷
volume start: dis-volume: success
[root@node1 ~]# gluster volume info dis-volume  //查看分布式卷的信息
 Volume Name: dis-volume
Type: Distribute
Volume ID: 2c319349-6f00-42b0-b1a3-df0ce39b274e
Status: Started      //表示启动成功
Snapshot Count: 0
Number of Bricks: 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/sdb1
Brick2: node2:/data/sdb1
Options Reconfigured:
transport.address-family: inet
nfs.disable: on

创建条带卷
[root@node1 data]# gluster volume create stripe-volume stripe 2 node1:/data/sdc1 node2:/data/sdc1 force
volume create: stripe-volume: success: please start the volume to access data
[root@node1 data]# gluster volume start stripe-volume 
volume start: stripe-volume: success

创建复制卷
[root@node1 data]# gluster volume create rep-volume replica 2 node3:/data/sdb1 node4:/data/sdb1 force
[root@node1 data]# gluster volume start rep-volume 
volume start: rep-volume: success

创建分布式条带卷
[root@node1 data]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd3 node4:/data/node4 force
volume create: dis-stripe: success: please start the volume to access data
[root@node1 data]# gluster volume start dis-stripe 
volume start: dis-stripe: success

创建分布式复制卷
[root@node1 data]# gluster volume create dis-rep replica 2 node1:/data/sde1 node2:/data/sde1 node3:/data/sde1 node4:/data/sde1 force
volume create: dis-rep: success: please start the volume to access data
[root@node1 data]# gluster volume start dis-rep 
volume start: dis-rep: success

常用的管理查看分布式卷组的命令
gluster volume  list       //查看创建了那些卷组
gluster volume info   [卷组名]    //查看所有卷组或固定的卷组信息
gluster volume stauts|start|stop  卷组名   //调整卷组的状态
gluster volume delete  卷组名    //删除某一个卷组
gluster volume  vreate  卷组类型-卷组名  添加的磁盘挂载点 force   //创建一个卷组

3、GFS管理节点配置

[root@localhost ~]# systemctl stop firewalld      //关闭防火墙
[root@localhost ~]# systemctl disabled firewalld    //开机不自动启动
[root@localhost ~]# vi /etc/selinux/config //编辑核心防护的配置文件
......
SELINUX=disabled     //改为disabled,开机不自启
......
[root@localhost ~]# setenforce 0     //关闭核心防护
//配置所有存储服务器的主机名和/etc/hosts文件
[root@nodo1 ~]# vim /etc/hosts
192.168.10.6 nodo1
192.168.10.7 nodo2
192.168.10.8 nodo3
192.168.10.9 nodo4
//和上面一样配置glusterfs工具的yum源,并安装启动
[root@localhost ~]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
[root@localhost ~]# systemctl start glusterd.service
[root@localhost ~]# systemctl enable glusterd.service
//将存储服务器中创建的各种卷组存挂载到本地使用mount.glusterfs挂载
//创建挂载点并挂载
[root@localhost ~]# mkdir -p /test/dis-volume/ /test/dis-stripe/ /test/dis-rep/ /test/stripe-volume/ /test/rep-volume/
[root@localhost ~]#  mount.glusterfs node1:dis-volume /test/dis-volume/
[root@localhost ~]#  mount.glusterfs node2:rep-volume /test/rep-volume/
[root@localhost ~]#  mount.glusterfs node3:stripe-volume /test/stripe-volume/
[root@localhost ~]#  mount.glusterfs node4:dis-stripe /test/dis-stripe/
[root@localhost ~]#  mount.glusterfs node1:dis-rep /test/dis-rep/
[root@localhost ~]# df -Th   
文件系统                      类型        容量   已用   可用  已用%   挂载点
node1:dis-volume        fuse.glusterfs   40G   65M   40G    1% /test/dis-volume
node1:dis-rep           fuse.glusterfs   40G   65M   40G    1% /test/dis-rep
node1:dis-stripe        fuse.glusterfs   80G  130M   80G    1% /test/dis-stripe
node1:stripe-volume     fuse.glusterfs   40G   65M   40G    1% /test/stripe-volume
node1:rep-volume        fuse.glusterfs   20G   33M   20G    1% /test/rep-volume

四、在挂载点中模拟写入数据分析分布式存储各种卷的存储方式

1、数据写入

//模拟写入数据
dd if=/dev/zero of=/txt1 bs=1M count=40
dd if=/dev/zero of=/txt2 bs=1M count=40
dd if=/dev/zero of=/txt3 bs=1M count=40
dd if=/dev/zero of=/txt4 bs=1M count=40
dd if=/dev/zero of=/txt5 bs=1M count=40
//数据复制到指定的挂载目录下
[root@localhost /]# cp txt* /test/dis-volume/
[root@localhost /]# cp txt* /test/dis-rep/
[root@localhost /]# cp txt* /test/dis-stripe/
[root@localhost /]# cp txt* /test/stripe-volume/
[root@localhost /]# cp txt* /test/rep-volume/

2、在存储节点查看各种卷存放数据的方式

存储方式刚好与上面图对应

1、分布式卷存放数据的方式
[root@node1 data]# ll -h sdb1                  [root@node2 data]# ll -h sdb1
总用量 120M                                      总用量 80M
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt1  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt4  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt3
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt5


 2、条带卷存放数据的方式
[root@node1 data]# ll -h sdc1                   [root@node2 data]# ll -h sdc1
总用量 100M                                      总用量 100M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt1  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt2  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt3  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt3
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt4  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt5  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt5


3、复制式卷存放数据的方式
[root@node3 data]# ll -h sdb1                  [root@node4 data]# ll -h sdb1 
总用量 200M                                     总用量 200M
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt1  -rw-r--r-- 2 root root 40M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt2  -rw-r--r-- 2 root root 40M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt3  -rw-r--r-- 2 root root 40M 10月 30 22:45 txt3
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt4  -rw-r--r-- 2 root root 40M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 40M 10月 30 22:45 txt5  -rw-r--r-- 2 root root 40M 10月 30 22:45 txt5


4、分布式条带卷存放数据的方式
[root@node1 data]# ll -h sdd1                  [root@node2 data]# ll -h sdd1  
总用量 60M                                       总用量 60M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt1  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt1
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt4  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt4
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt5  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt5
[root@node3 data]# ll -h sdd1                  [root@node4 data]# ll -h sdd1
总用量 40M                                      总用量 40M
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt2  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt2
-rw-r--r-- 2 root root 20M 10月 30 22:45 txt3  -rw-r--r-- 2 root root 20M 10月 30 22:45 txt3


5、分布式复制卷存放数据的方式
[root@node1 data]# ll -h sde1                  [root@node2 data]# ll -h sde1
总用量 120M                                     总用量 120M
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt1  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt1
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt4  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt4
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt5  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt5
[root@node3 data]# ll -h sde1                  [root@node4 data]# ll -h sde1 
总用量 80M                                      总用量 80M 
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt2  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt2
-rw-r--r-- 2 root root 40M 10月 30 22:44 txt3  -rw-r--r-- 2 root root 40M 10月 30 22:44 txt3

你可能感兴趣的:(GFS文件存储系统,GFS分布式文件系统,GFS存储各种卷的特点,linux,gluster命令用法,glusterfs工具的安装)