分布式文件系统----GFS分析与分布式文件系统群集部署

GFS分析与分布式文件系统群集部署

一: 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的结构
    • 模块化堆栈式架构
    • 模块化、堆栈式的架构
    • 通过对模块的组合,实现复杂的功能

1.2:GlusterFS工作流程

  • 1、客户端或应用程序通过GlusterFS的挂载点访问数据

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

  • 3、VFS将数据递交给FUSE内核文件系统, fuse文件系统则是将数据通过/dev/fuse设备文件递交给了GlusterFS client端

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

  • 5、通过网络将数据传递至远端的GlusterFS Server,并且将数据写入到服务器存储设备上

  • mark

1.3:GlusterFS工作原理

  • 弹性HASH算法

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

  • N个Brick(storage)节点的GlusterFS卷,平均分配232次方的区间的范围空间

    访问文件时,通过计算该文件的HASH值,从而对应到Brick(storage)存储空间

    通过HASH分配到各个节点块,每个节点块都有自己的地址

1.4:GlusterFS的卷类型

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

分布式卷

  • 没有对文件进行分块处理

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

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

  • 特点

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

    gluster volume create dis-volume server1:/dir1 server2:/dir2

  • mark

条带卷

  • 根据偏移量将文件分成N块(N个条带节点),轮询的存储在每个Brick Server节点

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

  • 不具备冗余性,类似Raid0

  • 特点

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

    gluster volume create stripe-volume stripe 2 transport tcp server1:/dir1 server2:/dir2

  • mark

复制卷

  • 同一文件保存一份或多分副本

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

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

  • 特点

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

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

    rep-volume 卷名 replica 2 分两块

  • mark

分布式条带卷

  • 兼顾分布式卷和条带卷的功能

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

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

  • 创建命令

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

  • mark

分布式复制卷

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

  • 用于需要冗余的情况下

  • 创建命令

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

  • mark

二: GFS群集部署

2.1: 环境部署

  • 开五台虚拟机,一台cilent,四台nodes,nodes增加四块磁盘,每块5G
角色IP地址磁盘
node1192.168.100.14020GX4
node2192.168.100.15020GX4
node3192.168.100.16020GX4
node4192.168.100.17020GX4
client192.168.100.18020GX4
  • 将要使用的卷名称和信息
卷名称卷类型空间大小/GBBrick
dis分布式卷40node1(sdb1);node2(sdb1)
stripe-volume条带卷40node1(sdc1);node2(sdc1)
rep-volume复制卷20node3(sdb1);node4(sdb1)
dis-stripe分布式条带卷80node1(sdd1);node2(sdd1);node3(sdd1);node4(sdd1)
dis-rep分布式复制卷40node1(sde1);node2(sde1);node3(sde1);node4(sde1)
  • 修改主机名,添加磁盘

    主机名node1~4 ; 四个节点每个添加四块20G的磁盘

  • 创建、格式化、挂载磁盘shell脚本,一键操作

    vim disk.sh
     
    #! /bin/bash
    echo "the disks exist list:"
    ##grep出系统所带磁盘
    fdisk -l |grep '磁盘 /dev/sd[a-z]'    
    echo "=================================================="
    PS3="chose which disk you want to create:"
     ##选择需要创建的磁盘编号
    select VAR in `ls /dev/sd*|grep -o 'sd[b-z]'|uniq` quit   
    do
        case $VAR in
        sda)
     ##本地磁盘就退出case语句
            fdisk -l /dev/sda   
            break ;;
        sd[b-z])
            #create partitions
            echo "n    ##创建磁盘
                    p
                    
                    
               
                    w"  | fdisk /dev/$VAR
     
            #make filesystem
    ##格式化
            mkfs.xfs -i size=512 /dev/${VAR}"1" &> /dev/null    
    	#mount the system
            mkdir -p /data/${VAR}"1" &> /dev/null
    ###永久挂载
            echo -e "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0\n" >> /etc/fstab
    ###使得挂载生效
            mount -a &> /dev/null
            break ;;
        quit)
            break;;
        *)
            echo "wrong disk,please check again";;
        esac
    done
    
    
  • 挂载完毕如下

    [root@node1 opt]# df -Th
    文件系统       类型      容量  已用  可用 已用% 挂载点
    /dev/sda2      xfs       245G  4.9G  240G    2% /
    devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev
    tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm
    tmpfs          tmpfs     1.9G   13M  1.9G    1% /run
    tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda5      xfs        33G   37M   33G    1% /home
    /dev/sda1      xfs        20G  174M   20G    1% /boot
    tmpfs          tmpfs     378M  8.0K  378M    1% /run/user/42
    tmpfs          tmpfs     378M     0  378M    0% /run/user/0
    /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
    "四个节点都要检查sdb sdc sdd sde 四个磁盘挂载上"
    

2.2: node上的操作,建立关系

  • 1.在四台node上映射主机名

    vim /etc/hosts
    192.168.100.140 node1
    192.168.100.150 node2
    192.168.100.160 node3
    192.168.100.170 node4
    [root@node1 opt]# scp /etc/hosts root@192.168.100.150:/etc/hosts	"分发给其他三个节点"
    [root@node1 opt]# ping node2			"依次ping其他节点都能通"
    PING node2 (192.168.100.150) 56(84) bytes of data.
    64 bytes from node2 (192.168.100.150): icmp_seq=1 ttl=64 time=1.23 ms
    64 bytes from node2 (192.168.100.150): icmp_seq=2 ttl=64 time=0.336 ms
    
  • 2.在四台Node上,编写GFS的源,如下,以node1为例

    [root@node1 opt]# mount.cifs //192.168.31.224/redhat7 /opt
    [root@node1 gfs]# cd /opt
    [root@node1 opt]# ls
    gfs  gfsrepo  gfsrepo.rar
    [root@node1 opt]# cd gfs
    [root@node1 gfs]# ll
    总用量 0
    drwxr-xr-x. 2 root root 0 9  13 17:20 gfsrepo
    [root@node1 opt]# cd /etc/yum.repos.d/
    [root@node1 yum.repos.d]# mkdir bak    ##将原来的源移动到新建的目录中
    [root@node1 yum.repos.d]# mv Cent* bak/
    [root@node1 yum.repos.d]# ls
    bak
    [root@node1 yum.repos.d]# vim GLFS.repo
     
    [GLFS]
    name=glfs
    baseurl=file:///opt/gfs/gfsrepo
    gpgcheck=0
    enabled=1
     
    [root@node1 yum.repos.d]# yum clean all
    [root@node1 yum.repos.d]# yum list
    
  • 3.在四台node上,安装GFS相关软件包

    yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma    ###安装
    //报错解决,把系统自带的包先删掉
    yum remove glusterfs -y
    yum remove glusterfs-libs.x86_64 -y
    再安装
    systemctl start glusterd.service
    systemctl enable glusterd.service
    systemctl status glusterd.service
    
  • 4.设置时间同步,四台node都需要设置,以node1为例,关闭防火墙和SElinux功能

    systemctl stop firewalld
    setenforce 0 
    ntpdate ntp1.aliyun.com
     
     
    systemctl stop firewalld
    setenforce 0
    
    [root@node1 ~]# glusterfs --version
    glusterfs 3.10.2
    
  • 5.添加存储信任池,只要在一台主机上添加其他三台节点即可,本实验在node1上操作

    [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 gfs]# gluster peer status
    Number of Peers: 3
    
    Hostname: node2
    Uuid: a25be762-e42c-4b9c-9089-8c8dc57a875c
    State: Peer in Cluster (Connected)
    
    Hostname: node3
    Uuid: f93aba62-d263-4112-85c8-0d49ddcc2445
    State: Peer in Cluster (Connected)
    
    Hostname: node4
    Uuid: a4e6f5fa-ea37-4e28-aae4-f53753c387e8
    State: Peer in Cluster (Connected) 
    
    
  • 6.GFS卷的创建,只需要在node1中创建管理即可

    • 创建分布式卷
    #利用node1和node2上的两块磁盘创建,dis-vol为磁盘名,force表示强制
    [root@node1 ~]# gluster volume create dis-vol node1:/data/sdb1 node2:/data/sdb1 force
    volume create: dis-vol: success: please start the volume to access data
     
    #启动dis-vol卷
    [root@node1 ~]# gluster volume start dis-vol
    volume start: dis-vol: success
     
    #查看该卷的状态
    [root@node1 ~]# gluster volume info dis-vol
    Volume Name: dis-vol
    Type: Distribute
    Volume ID: b17eca56-a083-48d8-84d6-b1c530bd3d74
    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 ~]# gluster volume create stripe-vol stripe 2 node1:/data/sdc1  node2:/data/sdc1 force
    volume create: stripe-vol: success: please start the volume to access data
    "创建"
    [root@node1 ~]# gluster volume start stripe-vol "启动"
    volume start: stripe-vol: success
    [root@node1 ~]# gluster volume info stripe-vol "查看信息"
     
     
    Volume Name: stripe-vol
    Type: Stripe
    Volume ID: 04e52229-541c-478e-a216-fe9b44f13cff
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sdc1
    Brick2: node2:/data/sdc1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    [root@node1 ~]# 
    
    • 创建复制卷
    [root@node1 ~]# gluster volume create rep-vol replica 2 node3:/data/sdb1 node4:/data/sdb1 force
    volume create: rep-vol: success: please start the volume to access data
    [root@node1 ~]# 
    [root@node1 ~]# gluster volume start rep-vol
    volume start: rep-vol: success
    [root@node1 ~]# gluster volume info rep-vol
     
    Volume Name: rep-vol
    Type: Replicate
    Volume ID: 373cd126-3222-4a98-9142-3c35d3451351
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 2 = 2
    Transport-type: tcp
    Bricks:
    Brick1: node3:/data/sdb1
    Brick2: node4:/data/sdb1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    • 创建分布式条带卷(至少4个节点)
    [root@node1 ~]# gluster volume create dis-stripe stripe 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
    volume create: dis-stripe: success: please start the volume to access data
    [root@node1 ~]# 
    [root@node1 ~]# gluster volume start dis-stripe
    volume start: dis-stripe: success
    [root@node1 ~]# gluster volume info dis-stripe
     
    Volume Name: dis-stripe
    Type: Distributed-Stripe
    Volume ID: 3715b2f7-cf52-4a85-97db-5354ed77784b
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2 x 2 = 4
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sdd1
    Brick2: node2:/data/sdd1
    Brick3: node3:/data/sdd1
    Brick4: node4:/data/sdd1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    
    • 创建分布式复制卷(至少4个节点)
    [root@node1 ~]# 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 ~]# 
    [root@node1 ~]# gluster volume start dis-rep
    volume start: dis-rep: success
    [root@node1 ~]# gluster volume info dis-rep
     
    Volume Name: dis-rep
    Type: Distributed-Replicate
    Volume ID: bc4058a0-35a2-4542-9f16-60aa66f78ba2
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 2 x 2 = 4
    Transport-type: tcp
    Bricks:
    Brick1: node1:/data/sde1
    Brick2: node2:/data/sde1
    Brick3: node3:/data/sde1
    Brick4: node4:/data/sde1
    Options Reconfigured:
    transport.address-family: inet
    nfs.disable: on
    

2.3: 配置客户端

  • 1.配置GFS源,安装相关软件包

    [root@client yum.repos.d]# mount.cifs //192.168.31.224/redhat7 /opt
    [root@client yum.repos.d]# yum remove glusterfs -y
    [root@client yum.repos.d]# yum remove glusterfs-libs.x86_64 -y
    
    [root@client opt]# vim /etc/yum.repos.d/GLFS.repo
    [GLFS]
    name=glfs
    baseurl=file:///opt/gfs/gfsrepo
    gpgcheck=0
    enabled=1
    [root@client yum.repos.d]# yum clean all
    [root@client yum.repos.d]# yum list
    [root@client yum.repos.d]# yum -y install glusterfs glusterfs-fuse
    
  • 2.做地址映射

    [root@client ~]# vim /etc/hosts
     
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    192.168.100.140 node1
    192.168.100.150 node2
    192.168.100.160 node3
    192.168.100.170 node4
    
  • 3.创建临时挂载点,关闭安全性功能

    "挂载分布式卷"
    [root@client ~]# mkdir -p /text/dis
    [root@client ~]# mount.glusterfs node1:dis-vol /text/dis
    [root@client ~]# df -Th
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G   65M   40G    1% /text/dis
    
    "挂载条带卷"
    [root@client ~]# mkdir -p /text/strip
    [root@client ~]# mount.glusterfs node1:stripe-vol /text/strip
    [root@client /]# df -Th
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G  265M   40G    1% /text/dis
    node1:stripe-vol         fuse.glusterfs   40G   65M   40G    1% /text/strip
    
    "挂载复制卷"
    [root@client ~]# mkdir /text/rep
    [root@client ~]# mount.glusterfs node3:rep-vol /text/rep/
    
    "挂载分布式条带卷"
    [root@client ~]# mkdir /text/dis-str
    [root@client ~]# mount.glusterfs node2:dis-stripe /text/dis-str/
    
    "挂载分布式复制卷"
    [root@client ~]# mkdir /text/dis-rep
    [root@client ~]# mount.glusterfs node4:dis-rep /text/dis-rep/
    [root@client ~]# systemctl stop firewalld
    [root@client ~]# setenforce 0
    [root@client ~]# 
    
    "查看挂载信息"
    [root@client /]# df -Th
    文件系统                 类型            容量  已用  可用 已用% 挂载点
    /dev/sda2                xfs             190G  4.2G  186G    3% /
    devtmpfs                 devtmpfs        1.9G     0  1.9G    0% /dev
    tmpfs                    tmpfs           1.9G     0  1.9G    0% /dev/shm
    tmpfs                    tmpfs           1.9G   13M  1.9G    1% /run
    tmpfs                    tmpfs           1.9G     0  1.9G    0% /sys/fs/cgroup
    /dev/sda3                xfs              50G   33M   50G    1% /home
    /dev/sda1                xfs              50G  174M   50G    1% /boot
    tmpfs                    tmpfs           378M   12K  378M    1% /run/user/42
    tmpfs                    tmpfs           378M     0  378M    0% /run/user/0
    //192.168.31.224/redhat7 cifs            227G   42G  185G   19% /opt
    node1:dis-vol            fuse.glusterfs   40G  265M   40G    1% /text/dis
    node1:stripe-vol         fuse.glusterfs   40G  265M   40G    1% /text/strip
    node3:rep-vol            fuse.glusterfs   20G  233M   20G    2% /text/rep
    node2:dis-stripe         fuse.glusterfs   80G  330M   80G    1% /text/dis-str
    node4:dis-rep            fuse.glusterfs   40G  265M   40G    1% /text/dis-rep
    
    [root@client ~]#
    
  • 3.测试GFS卷的功能

    "创建5个40M的文件"
    dd if=/dev/zero of=/demo1.log bs=1M count=40
    dd if=/dev/zero of=/demo2.log bs=1M count=40
    dd if=/dev/zero of=/demo3.log bs=1M count=40
    dd if=/dev/zero of=/demo4.log bs=1M count=40
    dd if=/dev/zero of=/demo5.log bs=1M count=40
    
    [root@client ~]# dd if=/dev/zero of=/demo1.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.119366 秒,351 MB/
    [root@client ~]# dd if=/dev/zero of=/demo2.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.145625 秒,288 MB/
    [root@client ~]# dd if=/dev/zero of=/demo3.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.103901 秒,404 MB/
    [root@client ~]# dd if=/dev/zero of=/demo4.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.123886 秒,339 MB/
    [root@client ~]# dd if=/dev/zero of=/demo5.log bs=1M count=40
    记录了40+0 的读入
    记录了40+0 的写出
    41943040字节(42 MB)已复制,0.0815509 秒,514 MB/
    [root@client /]# ls
    bin        demo2.log  demo5.log  home   media  proc  sbin  text  var
    boot       demo3.log  dev        lib    mnt    root  srv   tmp
    demo1.log  demo4.log  etc        lib64  opt    run   sys   usr
    
    
    ----把创建的文件复制到不同卷上
    
    ####把测试文件放到分布式卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis
    [root@client /]# ls /text/dis
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
    "检查在node节点的存储分布"
    [root@node1 ~]# cd /data/sdb1
    [root@node1 sdb1]# ll -h
    总用量 160M
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo1.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo2.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo3.log
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo4.log
    [root@node2 opt]# cd /data/sdb1
    [root@node2 sdb1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  13 23:48 demo5.log
    "可以看出,分布式通过Hash算法把文件分布在不同节点存储,但是每个文件不被分成N块"
    
    ####把测试文件放到条带卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/strip
    [root@node1 sdb1]# cd /data/sdc1
    [root@node1 sdc1]# ll -h
    总用量 100M
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo1.log "每个40M的文件被分成两块进行两个节点分布式存储"
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo4.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo5.log
    [root@node2 sdb1]# cd /data/sdc1
    [root@node2 sdc1]# ll -h
    总用量 100M
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo4.log
    -rw-r--r--. 2 root root 20M 9  14 00:02 demo5.log
    
    ####把测试文件放到复制卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/rep/
    [root@node4 yum.repos.d]# cd /data/sdb1
    [root@node4 sdb1]# ll -h
    总用量 200M
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo1.log	"每个40M的文件在两个节点两份"
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo4.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo5.log
    [root@node3 yum.repos.d]# cd /data/sdb1
    [root@node3 sdb1]# ll -h
    总用量 200M
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo4.log
    -rw-r--r--. 2 root root 40M 9  14 00:09 demo5.log
    
    ####把测试文件放到分布式条带卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis-str
    [root@node1 sdc1]# cd /data/sdd1
    [root@node1 sdd1]# ll -h
    总用量 80M
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo4.log
    [root@node2 sdc1]# cd /data/sdd1
    [root@node2 sdd1]# ll -h
    总用量 80M		"1234分布式到node1和node2;再对1234条带分割,每个文件分两半,进行存储"
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo1.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo2.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo3.log
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo4.log
    [root@node3 sdb1]# cd /data/sdd1
    [root@node3 sdd1]# ll -h
    总用量 20M		"5分布式到node3和node4;再对5进行分割存储"
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo5.log
    [root@node4 sdb1]# cd /data/sdd1
    [root@node4 sdd1]# ll -h
    总用量 20M
    -rw-r--r--. 2 root root 20M 9  14 00:15 demo5.log
    
    
    ####把测试文件放到分布式复制卷目录下,查看服务端存储分布
    
    [root@client ~]# cp /demo* /text/dis-rep
    [root@node1 sdd1]# cd /data/sde1
    [root@node1 sde1]# 
    [root@node1 sde1]# ll -h
    总用量 160M		"1234分布式到node1和node2;再对1234复制卷,5被分配到nod3和node4,再5的内容再做个复制卷;"
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo4.log
    [root@node2 sdd1]# cd /data/sde1
    [root@node2 sde1]# ll -h
    总用量 160M				""
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo1.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo2.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo3.log
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo4.log
    [root@node3 sde1]# cd /data/sde1
    [root@node3 sde1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo5.log
    
    [root@node4 sde1]# cd /data/sde1
    [root@node4 sde1]# ll -h
    总用量 40M
    -rw-r--r--. 2 root root 40M 9  14 00:23 demo5.log
    

2.4: 模拟故障,node2宕机

  • [root@node2 /]# init 0
    [root@client /]# cd /text
    [root@client text]# ls
    dis  dis-rep  dis-str  rep  strip
    [root@client text]# ls dis
    demo1.log  demo2.log  demo3.log  demo4.log
    [root@client text]# ls dis-rep/	"分布式复制卷数据没有丢失"
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log
    [root@client text]# ls dis-str/
    demo5.log
    [root@client text]# ls rep
    demo1.log  demo2.log  demo3.log  demo4.log  demo5.log	"复制卷数据也没有丢失"
    [root@client text]# ls strip
    [root@client text]# 
    

2.5: 其他维护命令

  • 1、查看GlusterFS卷
    [root@node1 ~]# gluster volume list 
    2、查看所有卷的信息
    [root@node1 ~]# gluster volume info
    3.查看所有卷状态
    [root@node1 ~]# gluster volume status
    4. ####停止一个卷
    [root@node1 ~]# gluster volume stop dis-stripe 
    5. 删除一个卷
    [root@node1 ~]# gluster volume delete dis-stripe   
    6.白名单 仅允许
    [root@node1 ~]# gluster volume set dis-rep auth.allow 192.168.100.*     ##设置192.168.100.0网段的所有IP地址 都能访问dis-rep卷(分布式复制卷)
    volume set: success           
    7.黑名单 仅拒绝
    [root@node1 sde1]# gluster volume set dis-rep auth.reject 192.168.100.80
    volume set: success
    
    [root@node1 ~]# gluster volume 
    add-brick        heal             quota            start
    barrier          help             rebalance        statedump
    clear-locks      info             remove-brick     status
    create           list             replace-brick    stop
    delete           log              reset            sync
    geo-replication  profile          set              top
    "reset" 恢复默认
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值