如何构建GFS分布式存储平台?理论+实操!

文章目录

  • 前言
  • 一:GlusterFS(GFS)理论
      • 1.1:什么是GlusterFS?
      • 1.2:GlusterFS工作原理是什么?
      • 1.3:GlusterFS的卷类型有哪些?
          • 分布式卷
          • 条带卷
          • 复制卷
          • 分布式条带卷
          • 分布式复制卷
  • 二:GFS平台部署
      • 2.1:环境准备
      • 2.2:添加的磁盘进行格式化并挂载
      • 2.3:防火墙设置和GFS集群开局设置
      • 2.4:GFS集群创建
      • 2.5:根据规划创建如下卷
  • 三:client客户端部署与测试
      • 3.1:部署客户端
      • 3.2:测试GFS与故障测试
          • 3.2.1:普通测试
          • 3.2.2:破坏测试
      • 3.3:测试总结
      • 3.4:其他的GFS常用命令
          • 博客结束,谢谢观看!

前言

一:GlusterFS(GFS)理论

1.1:什么是GlusterFS?

  • Gluster File System,开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储
  • 由存储服务器(Brick Server)、客户端以及NFS/Samba 存储网关组成
  • 无元数据服务器
  • GlusterFS特点
    • 扩展性和高性能
    • 高可用性
    • 全局统一命名空间
    • 弹性卷管理
    • 基于标准协议
  • 常用术语
    • Brick:GFS中的存储单元,通过是一个受信存储池中的服务器的一个导出目录。可以通过主机名和目录名来标识,如’SERVER:EXPORT’
    • Volume:卷
    • FUSE:内核文件系统,Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码。通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接。
    • VFS:虚拟文件系统
    • Glusterd:Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
  • GFS的结构
    • 模块化堆栈式架构
    • 模块化、堆栈式的架构
    • 通过对模块的组合,实现复杂的功能
  • 弹性HASH算法
    • 通过HASH算法得到一个32位的整数
    • 划分为N个连续的子空间,每个空间对应一个Brick
    • 弹性HASH算法的优点
    • 保证数据平均分布在每一个Brick中
    • 解决了对元数据服务器的依赖,进而解决了单点故障以及访问瓶颈

1.2:GlusterFS工作原理是什么?

  • 1、客户端或应用程序通过GlusterFS的挂载点访问数据
  • 2、linux系统内核通过VFS API收到请求并处理
  • 3、VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端
  • 4、GlusterFS client 收到数据后,client根据配置文件的配置对数据进行处理
  • 5、通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上
  • 如何构建GFS分布式存储平台?理论+实操!_第1张图片

1.3:GlusterFS的卷类型有哪些?

  • 分布式卷
    条带卷
    复制卷
    分布式条带卷
    分布式复制卷
    条带复制卷
    分布式条带复制卷
分布式卷
  • 没有对文件进行分块处理

  • 通过扩展文件属性保存HASH值

  • 支持的底层文件系统有ext3、ext4、ZFS、XFS等

  • 特点

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

    gluster volume create dis-volume server1:/dir1 server2:/dir2
    
条带卷
  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点

  • 存储大文件时,性能尤为突出

  • 不具备冗余性,类似Raid0

  • 如何构建GFS分布式存储平台?理论+实操!_第2张图片

  • 特点

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

    gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2
    
复制卷
  • 同一文件保存一份或多分副本

  • 复制模式因为要保存副本,所以磁盘利用率较低

  • 多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量作为该卷的总容量

  • 如何构建GFS分布式存储平台?理论+实操!_第3张图片

  • 特点

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

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
    
分布式条带卷
  • 兼顾分布式卷和条带卷的功能

  • 主要用于大文件访问处理

  • 至少最少需要 4 台服务器

  • 创建命令

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
    
  • 如何构建GFS分布式存储平台?理论+实操!_第4张图片

分布式复制卷
  • 兼顾分布式卷和复制卷的功能

  • 用于需要冗余的情况下

  • 创建命令

    gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2
    
  • 如何构建GFS分布式存储平台?理论+实操!_第5张图片

二:GFS平台部署

2.1:环境准备

  • VMware软件

  • 一台centos7虚拟机,IP地址为:192.168.233.131,主机名为:node1,添加4块磁盘,分别为3G,4G,5G,6G大小

  • 一台centos7虚拟机,IP地址为:192.168.233.132,主机名为:node2,添加4块磁盘,分别为3G,4G,5G,6G大小

  • 一台centos7虚拟机,IP地址为:192.168.233.133,主机名为:node3,添加3块磁盘,分别为3G,4G,5G大小

  • 一台centos7虚拟机,IP地址为:192.168.233.128,主机名为:node4,添加4块磁盘,分别为3G,4G,5G大小

  • 一台centos7虚拟机,IP地址为:192.168.233.129,主机名为:client,当做测试机使用

  • 将要使用的卷名称和信息

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

2.2:添加的磁盘进行格式化并挂载

  • 添加磁盘–仅展示其中一个界面,添加步骤都相同

  • 虚拟机设置----添加----硬盘,下一步----SCSI(推荐),下一步----创建新的虚拟磁盘,下一步----最大磁盘大小(自定义),勾选将虚拟磁盘拆分成多个文件,下一步----完成,相同方法添加其他的磁盘(除了client客户机),磁盘添加后需要重启一下才能识别到磁盘

  • 如何构建GFS分布式存储平台?理论+实操!_第6张图片

  • 创建磁盘分区,仅以node1为例,相同方法格式化其他主机新添加的磁盘

    [root@node1 ~]# fdisk -l	'//查看磁盘是否添加成功'
    [root@node1 ~]# fdisk /dev/sdb
    欢迎使用 fdisk (util-linux 2.23.2)。
    
    更改将停留在内存中,直到您决定将更改写入磁盘。
    使用写入命令前请三思。
    
    Device does not contain a recognized partition table
    使用磁盘标识符 0x5fae534e 创建新的 DOS 磁盘标签。
    
    命令(输入 m 获取帮助):n	'//创建分区'
    Partition type:
       p   primary (0 primary, 0 extended, 4 free)
       e   extended
    Select (default p): p	'//创建主分区'
    分区号 (1-4,默认 1):	'//回车,默认分区号'
    起始 扇区 (2048-6291455,默认为 2048):	'//回车,默认扇区大小'
    将使用默认值 2048
    Last 扇区, +扇区 or +size{
           K,M,G} (2048-6291455,默认为 6291455)'//回车,默认主分区大小'
    将使用默认值 6291455
    分区 1 已设置为 Linux 类型,大小设为 3 GiB
    
    命令(输入 m 获取帮助):w	'//保存分区信息'
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    正在同步磁盘。
    [root@node1 ~]# ll /dev/ | grep sd	'//查看刚刚格式化的磁盘是否成功/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1'
    '//刚刚fdisk -l查看,有/dev/sdb,/dev/sdc,/dev/sdd,/dev/sde四个磁盘,用相同方法格式化其他的磁盘和其他node主机的磁盘'
    
  • 格式化磁盘,其他node节点相同操作

    [root@node1 ~]# mkfs -t ext4 /dev/sdb1	'//格式化分区'
    [root@node1 ~]# mkfs -t ext4 /dev/sdc1
    [root@node1 ~]# mkfs -t ext4 /dev/sdd1
    [root@node1 ~]# mkfs -t ext4 /dev/sde1
    
    
  • 创建挂载点进行挂载,其他node节点相同操作

    [root@node1 ~]# mkdir /b3 /c4 /d5 /e6
    [root@node1 ~]# vim /etc/fstab 	'//末行添加下方四个自动挂载信息'
    /dev/sdb1       /b3                             ext4    defaults        0 0
    /dev/sdc1       /c4                             ext4    defaults        0 0
    /dev/sdd1       /d5                             ext4    defaults        0 0
    /dev/sde1       /e6                             ext4    defaults        0 0
    
  • 重启服务器

    [root@node1 ~]# reboot
    [root@node1 ~]# df -Th	'//重启后查看自动挂载情况,会产生如下信息'
        。。。省略内容
    /dev/sdc1               ext4      3.9G   16M  3.7G    1% /c4
    /dev/sde1               ext4      5.8G   24M  5.5G    1% /e6
    /dev/sdd1               ext4      4.8G   20M  4.6G    1% /d5
    /dev/sdb1               ext4      2.9G  9.0M  2.8G    1% /b3
    。。。省略内容
    

2.3:防火墙设置和GFS集群开局设置

  • 防火墙设置,四台node都设置,仅展示一个主机的操作

    [root@node1 ~]# systemctl stop firewalld.service 	'//关闭防火墙'
    [root@node1 ~]# systemctl disable firewalld.service 	'//取消开启自启'
    Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
    Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
    [root@node1 ~]# setenforce 0	'//关闭核心防护'
    [root@node1 ~]# vim /etc/selinux/config 
    SELINUX=disabled	'//修改为disabled'
    
  • 修改本地域名解析文件,四台node都设置,仅展示一个主机的操作

    [root@node1 ~]# vi /etc/hosts
    192.168.233.131   node1	'//尾行添加如下内容'
    192.168.233.132   node2
    192.168.233.133   node3
    192.168.233.128   node4
    
    
  • 四台node主机都搭建本地yum仓库,安装GLFS软件,此处仅展示node1主机

    我用的是finalshell远程软件,直接将软件包拖拽进来即可

    如何构建GFS分布式存储平台?理论+实操!_第7张图片

    [root@node1 opt]# cd /etc/yum.repos.d/
    [root@node1 yum.repos.d]# mkdir bak	'//创建备份目录'
    [root@node1 yum.repos.d]# mv * bak	'//将所有文件移动到备份目录'
    mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 下
    [root@node1 yum.repos.d]# vim abc.repo	'//编辑本地yumrepo文件'
    [abc]
    name=abc
    baseurl=file:///mnt
    gpgcheck=0
    enabled=1
    
    [glfs]
    name=glfs
    baseurl=file:///opt/gfsrepo
    gpgcheck=0
    enabled=1
    [root@node1 yum.repos.d]# mount /dev/sr0 /mnt	'//将光盘挂载到/mnt'
    [root@node1 yum.repos.d]# yum clean all	'//清除yum缓存'
    [root@node1 yum.repos.d]# yum makecache	'//创建缓存数据'
    [root@node1 yum.repos.d]# yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma	'//安装安装GLFS软件'
    [root@node1 yum.repos.d]# systemctl start glusterd.service	'//启动GLFS软件'
    [root@node1 yum.repos.d]# systemctl enable glusterd.service 	'//设置开机自启'
    Created symlink from /etc/systemd/system/multi-user.target.wants/glusterd.service to /usr/lib/systemd/system/glusterd.service.
    
    

2.4:GFS集群创建

  • node主机添加群集中其他node节点

    [root@node1 yum.repos.d]# gluster peer probe node1
    peer probe: success. Probe on localhost not needed
    [root@node1 yum.repos.d]# gluster peer probe node2
    peer probe: success. 
    [root@node1 yum.repos.d]# gluster peer probe node3
    peer probe: success. 
    [root@node1 yum.repos.d]# gluster peer probe node4
    peer probe: success. 
    [root@node1 yum.repos.d]# gluster peer status
    '//其他三台node节点相同操作,不在赘述'
    

2.5:根据规划创建如下卷

  • 卷名称 卷类型 空间大小/GB Brick
    dis 分布式卷 12 node1(/e6) node2(/e6)
    stripe-volume 条带卷 10 node1(/d5) node2(/d5)
    rep-volume 复制卷 5 node3(/d5) node4(/d5)
    dis-stripe 分布式条带卷 12 node1(/b3) node2(/b3) node3(/b3) node4(/b3)
    dis-rep 分布式复制卷 8 node1(/c4) node2(/c4) node3(/c4) node4(/c4)
  • 创建分布式卷,因为已经做好了群集,所以一下操作只在一个node节点上操作即可

    [root@node4 yum.repos.d]# gluster volume create dis-volume node1:/e6 node2:/e6 force	'//创建分布式卷'
    volume create: dis-volume: success: please start the volume to access data
    [root@node4 yum.repos.d]# gluster volume info dis-volume	'//查看分布式卷信息'
    [root@node4 yum.repos.d]# gluster volume start dis-volume	'//开启分布式卷'
    volume start: dis-volume: success
    '//下面的操作大同小异,不在解释'
    
  • 创建条带卷

    [root@node1 yum.repos.d]# gluster volume create stripe-volume stripe 2 node1:/d5 node2:/d5 force
    volume create: stripe-volume: success: please start the volume to access data
    [root@node1 yum.repos.d]# gluster volume info stripe-volume
    [root@node1 yum.repos.d]# gluster volume start stripe-volume
    volume start: stripe-volume: success
    
    
  • 创建复制卷

    [root@node1 yum.repos.d]# gluster volume create rep-volume replica 2 node3:/d5 node4:/d5 force
    volume create: rep-volume: success: please start the volume to access data
    [root@node1 yum.repos.d]# gluster volume info rep-volume
    [root@node1 yum.repos.d]# gluster volume start rep-volume
    volume start: rep-volume: success
    
    
  • 创建分布式条带卷

    [root@node1 yum.repos.d]# gluster volume create dis-stripe stripe 2 node1:/b3 node2:/b3 node3:/b3 node4:/b3 force
    volume create: dis-stripe: success: please start the volume to access data
    [root@node1 yum.repos.d]# gluster volume info dis-stripe
    [root@node1 yum.repos.d]# gluster volume start dis-stripe
    
    
  • 创建分布式复制卷

    [root@node1 yum.repos.d]# gluster volume create dis-rep replica 2 node1:/c4 node2:/c4 node3:/c4 node4:/c4 force
    volume create: dis-rep: success: please start the volume to access data
    [root@node1 yum.repos.d]# gluster volume info dis-rep
    [root@node1 yum.repos.d]# gluster volume start dis-rep
    volume start: dis-rep: success
    

三:client客户端部署与测试

3.1:部署客户端

  • 相同方法将gfsrepo 软件上传到/opt目下 ,不在赘述

  • 相同方法配置本地yum源

    [root@client ~]# cd /opt
    [root@client opt]# cd /etc/yum.repos.d/
    [root@client yum.repos.d]# ls
    CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
    CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
    [root@client yum.repos.d]# mkdir bak
    [root@client yum.repos.d]# mv * bak
    mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 下
    [root@client yum.repos.d]# vim local.repo
    [root@client yum.repos.d]# yum clean all
    [root@client yum.repos.d]# yum makecache
    [root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
    
    
  • 创建挂载点目录,修改本地域名解析文件

    [root@client yum.repos.d]# mkdir -p /text/{
           dis,stripe,rep,dis_and_stripe,dis_and_rep}	'//创建挂载点目录'
    [root@client yum.repos.d]# vim /etc/hosts
    '//尾行添加'
    192.168.233.131   node1
    192.168.233.132   node2
    192.168.233.133   node3
    192.168.233.128   node4
    
    
  • 临时挂载Gluster文件系统

    [root@client yum.repos.d]# mount -t glusterfs node1:dis-volume /text/dis
    [root@client yum.repos.d]# mount -t glusterfs node1:stripe-volume /text/stripe
    [root@client yum.repos.d]# mount -t glusterfs node1:rep-volume /text/rep
    [root@client yum.repos.d]# mount -t glusterfs node1:dis-stripe /text/dis_and_stripe
    [root@client yum.repos.d]# mount -t glusterfs node1:dis-rep /text/dis_and_rep
    '//如果要永久挂载需要修改fstab文件'
    [root@client yum.repos.d]# vim /etc/fstab
        '//尾行添加'
    node1:dis-volume        /text/dis               glusterfs defaults,_netdev      0 0
    node1:stripe-volume     /text/stripe            glusterfs defaults,_netdev      0 0
    node1:rep-volume        /text/rep               glusterfs defaults,_netdev      0 0
    node1:dis-stripe        /text/dis_and_stripe    glusterfs defaults,_netdev      0 0
    node1:dis-rep           /text/dis_and_rep       glusterfs defaults,_netdev      0 0
    
    
  • 创建测试文件

    [root@client yum.repos.d]# dd if=/dev/zero of=/demo1.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.103023 秒,407 MB/秒
    [root@client yum.repos.d]# dd if=/dev/zero of=/demo2.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.434207 秒,96.6 MB/秒
    [root@client yum.repos.d]# dd if=/dev/zero of=/demo3.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.388875 秒,108 MB/秒
    [root@client yum.repos.d]# dd if=/dev/zero of=/demo4.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.465817 秒,90.0 MB/秒
    [root@client yum.repos.d]# dd if=/dev/zero of=/demo5.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.437829 秒,95.8 MB/秒
    [root@client ~]# cd /
    [root@client /]# ll	'//查看刚创建的测试文件'
    总用量 204828
    lrwxrwxrwx.   1 root root        7 12月 30 04:29 bin -> usr/bin
    dr-xr-xr-x.   5 root root     4096 12月 30 04:43 boot
    -rw-r--r--.   1 root root 41943040 2月  17 22:53 demo1.log
    -rw-r--r--.   1 root root 41943040 2月  17 22:53 demo2.log
    -rw-r--r--.   1 root root 41943040 2月  17 22:53 demo3.log
    -rw-r--r--.   1 root root 41943040 2月  17 22:53 demo4.log
    -rw-r--r--.   1 root root 41943040 2月  17 22:53 demo5.log
    
    
  • 将新建的测试文件CP到指定位置(各个GFS卷的挂载点)

    [root@client /]# cp /demo* /text/dis
    [root@client /]# cp /demo* /text/stripe/
    [root@client /]# cp /demo* /text/rep/
    [root@client /]# cp /demo* /text/dis_and_stripe/
    [root@client /]# cp /demo* /text/dis_and_rep/
    
    

3.2:测试GFS与故障测试

3.2.1:普通测试
  • 查看分布式文件分布

    [root@node1 yum.repos.d]# ll -h /e6	'//node1查看e6文件夹(分布式文件存储位置)'
    总用量 161M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo4.log
    [root@node2 yum.repos.d]# ll -h /e6	
    总用量 41M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    '//发现5个文件被分布式存储到了两个节点,且没有被切片,都是40M原本大小'
    
  • 查看条带卷文件分布

    [root@node1 yum.repos.d]# ll -h /d5
    总用量 101M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo4.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:52 lost+found
    [root@node2 yum.repos.d]# ll -h /d5
    总用量 101M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo4.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:52 lost+found
    '//发现数据已经被分片的分不到node1和node2节点上'
    
  • 查看复制卷分布

    [root@node3 yum.repos.d]# ll -h /d5
    总用量 201M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo4.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    [root@node4 yum.repos.d]# ll -h /d5
    总用量 201M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo4.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    '//数据没有被分片 有副本 有冗余  '
    
  • 分布式条带卷查看

    [root@node1 yum.repos.d]# ll -h /b3
    总用量 81M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo4.log
    drwx------. 2 root root 16K 2月  17 20:51 lost+found
    [root@node2 yum.repos.d]# ll -h /b3
    总用量 81M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo4.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    [root@node3 yum.repos.d]# ll -h /b3
    总用量 21M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    [root@node4 yum.repos.d]# ll -h /b3
    总用量 21M
    -rw-r--r--. 2 root root 20M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    
    
  • 分布式复制卷查看

    [root@node1 yum.repos.d]# ll -h /c4
    总用量 161M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo4.log
    drwx------. 2 root root 16K 2月  17 20:52 lost+found
    [root@node2 yum.repos.d]# ll -h /c4
    总用量 161M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo1.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo2.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo3.log
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo4.log
    drwx------. 2 root root 16K 2月  17 20:52 lost+found
    [root@node3 yum.repos.d]# ll -h /c4
    总用量 41M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    [root@node4 yum.repos.d]# ll -h /c4
    总用量 41M
    -rw-r--r--. 2 root root 40M 2月  17 22:55 demo5.log
    drwx------. 2 root root 16K 2月  17 20:59 lost+found
    
    
3.2.2:破坏测试
  • 当我们关机node2 在客户端上查看文件是否正常

  • 分布式卷数据查看

    [root@client /]# cd /text/dis
    [root@client dis]# ll
    总用量 163844
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo1.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo2.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo3.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo4.log
    drwx------. 2 root root     4096 2月  17 20:52 lost+found
    '//原本存储在node2上的demo5.log文件消失了'
    
  • 条带卷查看

    [root@client dis]# cd /text/stripe/
    [root@client stripe]# ll
    总用量 0
    '//因为数据分片的,所以node2关机后,数据都消失了'
    
  • 分布式条带卷查看

    [root@client stripe]# cd /text/dis_and_stripe/
    [root@client dis_and_stripe]# ll
    总用量 40964
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo5.log
    '//发现分布式的方式存储的demo5没有消失(存储在node3和node4上的)'
    
  • 分布式复制卷查看

    [root@client dis_and_stripe]# cd /text/dis_and_rep/
    [root@client dis_and_rep]# ll
    总用量 204804
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo1.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo2.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo3.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo4.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo5.log
    drwx------. 2 root root     4096 2月  17 20:59 lost+found
    '//发现断点测试对于分布式复制卷没有影响'
    
  • 继续将node4关机,查看效果

  • 测试分布式复制卷是否正常

    [root@client dis_and_rep]# ll
    总用量 204804
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo1.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo2.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo3.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo4.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo5.log
    drwx------. 2 root root     4096 2月  17 20:59 lost+found
        '//正常,所有数据都没有消失'
    
  • 测试分布式条卷是否正常

    [root@client dis_and_rep]# cd /text/dis_and_stripe/
    [root@client dis_and_stripe]# ll
    总用量 0
    '//发现在node4关机后,原本存在的demo5.log文件也消失了'
    
  • 测试复制卷是否正常

    [root@client rep]# ll
    总用量 204800
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo1.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo2.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo3.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo4.log
    -rw-r--r--. 1 root root 41943040 2月  17 22:55 demo5.log
    '//数据都在,测试正常'
    

3.3:测试总结

  • 上述实验测试,凡是带复制数据,相比而言,数据比较安全

3.4:其他的GFS常用命令

  • 查看GlusterFS卷:gluster volume list 
    查看所有卷的信息:gluster volume info
    查看所有卷的状态:gluster volume status
    停止/删除卷:gluster volume stop dis-stripe                ####停止一个卷
    		   gluster volume delete dis-stripe              ####删除一个卷
    设置卷的访问控制:gluster volume set dis-rep auth.allow 192.168.32.*     ##设置192.168.30.0网段的所有IP地址 都能访问dis-rep卷(分布式复制卷)
    
    
博客结束,谢谢观看!

你可能感兴趣的:(虚拟化与网络存储系统,分布式,gfs,gfs理论,gfs平台部署,gfs实验验证)