GlusterFS 应用

  • 1. glusterfs 简介
  • 2. glusterfs 部署
    • 1. 介绍
    • 2. 安装glusterfs前的环境准备
    • 3. 操作
  • 3. glustefs 分布式存储优化
  • 4. glusterfs 在企业中应用场景

1. glusterfs 简介

  1. Glusterfs 是一个开源的分布式文件系统,是 Scale 存储的核心,能够处理千数量级的客户端。

    • 是整合了许多存储块(server)通过 Infiniband RDMA 或者 Tcp/Ip 方式互联的一个并行的网络文件系统。
      2. 特征
    • 容量可以按比例的扩展,且性能却不会因此而降低。
    • 廉价且使用简单,完全抽象在已有的文件系统之上。
    • 扩展和容错设计的比较合理,复杂度较低
    • 适应性强,部署方便,对环境依赖低,使用,调试和维护便利

2. glusterfs 部署

1. 介绍

  1. 一般在企业中,采用的是分布式复制卷,因为有数据备份,数据相对安全。

    • 网络要求全部千兆环境
    • gluster 服务器至少有 2 块网卡,1 块网卡绑定供 gluster 使用,剩余一块分配管理网络 IP,用于系统管理。
    • 如果有条件购买万兆交换机,服务器配置万兆网卡,存储性能会更好。
    • 网络方面如果安全性要求较高,可以多网卡绑定。
  2. 注意
    • GlusterFS 将其动态生成的配置文件存储在 /var/lib/glusterd 中。
    • 如果在任何时候 GlusterFS 无法写入这些文件(例如,当后备文件系统已满),它至少会导致您的系统不稳定的行为;
    • 或者更糟糕的是,让您的系统完全脱机。建议为 /var/log 等目录创建单独的分区,以确保不会发生这种情况。

2. 安装glusterfs前的环境准备

  1. 服务规划

    操作系统 IP 主机名 硬盘数量(三块)
    centos 7.4 10.0.0.101 node1 sdb:5G sdc:5G sdd:5G
    centos 7.4 10.0.0.102 node2 sdb:5G sdc:5G sdd:5G
    centos 7.4 10.0.0.103 node3 sdb:5G sdc:5G sdd:5G
    centos 7.4 10.0.0.104 node4 sdb:5G sdc:5G sdd:5G
    centos 7.4 10.0.0.105 node5-client sda:20G
  2. 首先关闭 iptables 和 selinux,配置 hosts 文件如下(全部 glusterfs 主机)

    ]# systemctl stop firewalld && systemctl disable firewalld
    ]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
    ]# setenforce 0
    ]# getenforce
    ]# ntpdate time.windows.com
    ]# vim /etc/hosts
    192.168.89.1  node01
    192.168.89.2  node02
    192.168.89.3  node03
    192.168.89.4  node04
    
  3. 安装 gluterfs 源(全部 glusterfs 主机)

    ]#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    ]#yum search  centos-release-gluster
    ================================================ N/S matched: centos-release-gluster =================================================
    centos-release-gluster310.noarch : Gluster 3.10 (Long Term Stable) packages from the CentOS Storage SIG repository
    centos-release-gluster312.noarch : Gluster 3.12 (Long Term Stable) packages from the CentOS Storage SIG repository
    centos-release-gluster313.noarch : Gluster 3.13 (Short Term Stable) packages from the CentOS Storage SIG repository
    centos-release-gluster36.noarch : GlusterFS 3.6 packages from the CentOS Storage SIG repository
    centos-release-gluster37.noarch : GlusterFS 3.7 packages from the CentOS Storage SIG repository
    centos-release-gluster38.noarch : GlusterFS 3.8 packages from the CentOS Storage SIG repository
    centos-release-gluster39.noarch : Gluster 3.9 (Short Term Stable) packages from the CentOS Storage SIG repository
    ]# yum  -y  install centos-release-gluster312.noarch
    
  4. 安装 glusterfs (全部 glusterfs 主机)

    ]# yum -y --enablerepo=centos-gluster*-test install glusterfs-server glusterfs-cli glusterfs-geo-replication
    
  5. 查看 glusterfs 版本并启动 glusterfs 服务(全部 glusterfs 主机)

    ]# glusterfs -V
    glusterfs 3.12.5
    ]# systemctl restart glusterd && systemctl enable glusterd
    ]# systemctl status glusterd
    ]# netstat -lntup
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp        0      0 0.0.0.0:24007           0.0.0.0:*               LISTEN      2268/glusterd
    
  6. 格式化磁盘(全部 glusterfs 主机)

    注:创建的硬盘要用 xfs 格式来格式化硬盘,如果用 ext4 来格式化硬盘的话,对于大于 16TB 空间格式化就无法实现了。
    所以这里要用 xfs 格式化磁盘(centos7 默认的文件格式就是 xfs),并且 xfs 的文件格式支持 PB 级的数据量

    ]# fdisk -l
    Disk /dev/sdb: 5368 MB, 5368709120 bytes
    Disk /dev/sdc: 5368 MB, 5368709120 bytes
    Disk /dev/sdd: 5368 MB, 5368709120 bytes
    ]# mkfs.xfs  -i size=512 /dev/sdb
    ]# mkfs.xfs  -i size=512 /dev/sdc
    ]# mkfs.xfs  -i size=512 /dev/sdd
    ]# mkdir -p /data/brick{1..3}
    ]# echo '/dev/sdb /data/brick1 xfs defaults 0 0' >> /etc/fstab
    ]# echo '/dev/sdc /data/brick2 xfs defaults 0 0' >> /etc/fstab
    ]# echo '/dev/sdd /data/brick3 xfs defaults 0 0' >> /etc/fstab
    ]# mount -a
    ]# df -h
    /dev/sdc        5.0G   33M  5.0G   1% /data/brick2
    /dev/sdd        5.0G   33M  5.0G   1% /data/brick3
    /dev/sdb        5.0G   33M  5.0G   1% /data/brick1
    

3. 操作

  1. 将分布式存储主机加入到信任主机池并查看加入的主机状态[node01]

    ]# gluster peer probe node02
    peer probe: success.
    ]# gluster peer probe node03
    peer probe: success.
    ]# gluster peer probe node04
    peer probe: success.
    ]# gluster peer status
    Number of Peers: 3 Hostname: node02
    Uuid: 6020709d-1b46-4e2c-9cdd-c4b3bba47b4b
    State: Peer in Cluster (Connected)Hostname: node03
    Uuid: 147ee557-51f1-43fe-a27f-3dae2880b5d4
    State: Peer in Cluster (Connected)Hostname: node04
    Uuid: f61af299-b00d-489c-9fd9-b4f6a336a6c7
    State: Peer in Cluster (Connected)
    
  2. 创建 glusterfs 卷
    1. GlusterFS 五种卷

      • Distributed:分布式卷,文件通过 hash 算法随机分布到由 bricks 组成的卷上。
      • Replicated: 复制式卷,类似 RAID 1,replica 数必须等于 volume 中 brick 所包含的存储服务器数,可用性高。
      • Striped: 条带式卷,类似 RAID 0,stripe 数必须等于 volume 中 brick 所包含的存储服务器数,文件被分成数据块,
        • 以 Round Robin 的方式存储在 bricks 中,并发粒度是数据块,大文件性能好。
      • Distributed Striped: 分布式的条带卷,volume 中 brick 所包含的存储服务器数必须是 stripe 的倍数(>=2倍),兼顾分布式和条带式的功能。
      • Distributed Replicated: 分布式的复制卷,volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。
      • 分布式复制卷的 brick 顺序决定了文件分布的位置,一般来说,先是两个 brick 形成一个复制关系,然后两个复制关系形成分布。
    2. 配置分布式卷[node01]
      ]# gluster volume create gv1 node01:/data/brick1 node02:/data/brick1 force
      volume create: gv1: success: please start the volume to access data
      ]# gluster volume start gv1
      volume start: gv1: success
      ]# gluster volume info gv1
      Volume Name: gv1
      Type: Distribute
      Volume ID: 85622964-4b48-47d5-b767-d6c6f1e684cc
      Status: Started
      Snapshot Count: 0
      Number of Bricks: 2
      Transport-type: tcp
      Bricks:
      Brick1: node01:/data/brick1
      Brick2: node02:/data/brick1
      Options Reconfigured:
      transport.address-family: inet
      nfs.disable: on
      ]# mount -t glusterfs 127.0.0.1:/gv1 /opt
      ]# cd /opt/
      ]# touch {a..f}
      ]# ll
      总用量 0
      -rw-r--r--. 1 root root 0 2月   2 23:59 a
      -rw-r--r--. 1 root root 0 2月   2 23:59 b
      -rw-r--r--. 1 root root 0 2月   2 23:59 c
      -rw-r--r--. 1 root root 0 2月   2 23:59 d
      -rw-r--r--. 1 root root 0 2月   2 23:59 e
      -rw-r--r--. 1 root root 0 2月   2 23:59 f
      node04 ]# mount -t glusterfs 127.0.0.1:/gv1 /opt
      ]# ll /opt/
      总用量 0
      -rw-r--r--. 1 root root 0 2月   2 2018 a
      -rw-r--r--. 1 root root 0 2月   2 2018 b
      -rw-r--r--. 1 root root 0 2月   2 2018 c
      -rw-r--r--. 1 root root 0 2月   2 2018 d
      -rw-r--r--. 1 root root 0 2月   2 2018 e
      -rw-r--r--. 1 root root 0 2月   2 2018 f
      node01 ]# ll /data/brick1/
      总用量 0
      -rw-r--r--. 2 root root 0 2月   2 23:59 a
      -rw-r--r--. 2 root root 0 2月   2 23:59 b
      -rw-r--r--. 2 root root 0 2月   2 23:59 c
      -rw-r--r--. 2 root root 0 2月   2 23:59 e
      node02 ]# ll /data/brick1
      总用量 0
      -rw-r--r--. 2 root root 0 2月   2 23:59 d
      -rw-r--r--. 2 root root 0 2月   2 23:59 f
      
    3. 配置复制卷[node01]
      1. 注:复制模式,既 AFR, 创建 volume 时带 replica x 数量: 将文件复制到 replica x 个节点中。
      2. 这条命令的意思是使用 Replicated 的方式,建立一个名为 gv2 的卷(Volume),存储块(Brick)为2个,分别为 node01:/data/brick2 和 node02:/data/brick2;
      3. force 为强制创建:因为复制卷在双方主机通信有故障再恢复通信时容易发生脑裂。本次为实验环境,生产环境不建议使用。
        ]# gluster volume create gv2 replica 2 node01:/data/brick2 node02:/data/brick2 force
        volume create: gv2: success: please start the volume to access data
        ]# gluster volume start gv2
        volume start: gv2: success
        ]# gluster volume info gv2
        Volume Name: gv2
        Type: Replicate
        Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
        Status: Started
        Snapshot Count: 0
        Number of Bricks: 1 x 2 = 2
        Transport-type: tcp
        Bricks:
        Brick1: node01:/data/brick2
        Brick2: node02:/data/brick2
        Options Reconfigured:
        transport.address-family: inet
        nfs.disable: on
        performance.client-io-threads: off
        node01 ]# mount -t glusterfs 127.0.0.1:/gv2 /mnt
        ]# df -h
        文件系统        容量  已用  可用 已用% 挂载点
        /dev/sdc        5.0G   33M  5.0G    1% /data/brick2
        /dev/sdd        5.0G   33M  5.0G    1% /data/brick3
        /dev/sdb        5.0G   33M  5.0G    1% /data/brick1
        127.0.0.1:/gv1   10G   65M   10G    1% /opt
        127.0.0.1:/gv2  5.0G   33M  5.0G    1% /mnt    #容量是总容量的一半
        ]# cd /mnt/
        ]# touch {1..6}
        ]# ll /data/brick2
        总用量 0
        -rw-r--r--. 2 root root 0 2月   3 01:06 1
        -rw-r--r--. 2 root root 0 2月   3 01:06 2
        -rw-r--r--. 2 root root 0 2月   3 01:06 3
        -rw-r--r--. 2 root root 0 2月   3 01:06 4
        -rw-r--r--. 2 root root 0 2月   3 01:06 5
        -rw-r--r--. 2 root root 0 2月   3 01:06 6
        node02 ]# ll /data/brick2
        总用量 0
        -rw-r--r--. 2 root root 0 2月   3 01:06 1
        -rw-r--r--. 2 root root 0 2月   3 01:06 2
        -rw-r--r--. 2 root root 0 2月   3 01:06 3
        -rw-r--r--. 2 root root 0 2月   3 01:06 4
        -rw-r--r--. 2 root root 0 2月   3 01:06 5
        -rw-r--r--. 2 root root 0 2月   3 01:06 6
        
    4. 配置条带卷[node01]
      ]# gluster volume create gv3 stripe 2 node01:/data/brick3 node02:/data/brick3 force
      volume create: gv3: success: please start the volume to access data
      ]# gluster volume start gv3
      volume start: gv3: success
      ]# gluster volume info gv3
      Volume Name: gv3
      Type: Stripe
      Volume ID: 54c16832-6bdf-42e2-81a9-6b8d7b547c1a
      Status: Started
      Snapshot Count: 0
      Number of Bricks: 1 x 2 = 2
      Transport-type: tcp
      Bricks:
      Brick1: node01:/data/brick3
      Brick2: node02:/data/brick3
      Options Reconfigured:
      transport.address-family: inet
      nfs.disable: on
      ]# mkdir /data01
      ]# mount -t glusterfs 127.0.0.1:/gv3 /data01
      ]# df -h
      Filesystem               Size  Used Avail Use% Mounted on
      127.0.0.1:/gv3   10G   65M   10G    1% /data01
      ]# dd if=/dev/zero bs=1024 count=10000 of=/data01/10M.file
      ]# dd if=/dev/zero bs=1024 count=20000 of=/data01/20M.file
      ]# ll /data01/ -h
      总用量 30M
      -rw-r--r--. 1 root root 9.8M 2月   3 02:03 10M.file
      -rw-r--r--. 1 root root  20M 2月   3 02:04 20M.file
      node01 ]# ll -h /data/brick3
      总用量 15M
      -rw-r--r--. 2 root root 4.9M 2月   3 02:03 10M.file
      -rw-r--r--. 2 root root 9.8M 2月   3 02:03 20M.file
      node02 ]# ll -h /data/brick3
      总用量 15M
      -rw-r--r--. 2 root root 4.9M 2月   3 02:03 10M.file
      -rw-r--r--. 2 root root 9.8M 2月   3 02:04 20M.file
      
      • 上面可以看到 10M 20M 的文件分别分成了 2 块(这是条带的特点),写入的时候是循环地一点一点在node01和node02的磁盘上.
      • 上面配置的条带卷在生产环境是很少使用的,因为它会将文件破坏,比如一个图片,它会将图片一份一份地分别存到条带卷中的brick上。
    5. 配置分布式复制卷,最少需要 4 台服务器才能创建[生产场景推荐使用此种方式]
      • 将原有的复制卷 gv2 进行扩容,使其成为分布式复制卷
      ]# gluster volume stop gv2
      ]# gluster volume add-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force
      volume add-brick: success
      ]# gluster volume start gv2
      volume start: gv2: success
      ]# gluster volume info gv2
      Volume Name: gv2
      Type: Distributed-Replicate
      Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
      Status: Started
      Snapshot Count: 0
      Number of Bricks: 2 x 2 = 4
      Transport-type: tcp
      Bricks:
      Brick1: node01:/data/brick2
      Brick2: node02:/data/brick2
      Brick3: node03:/data/brick1
      Brick4: node04:/data/brick1
      Options Reconfigured:
      transport.address-family: inet
      nfs.disable: on
      performance.client-io-threads: off
      
      • 注意:当你给分布式复制卷和分布式条带卷增加 bricks 时,你增加的 bricks 数目必须是复制或条带数目的倍数

        • 例如:你给一个分布式复制卷的 replica 为 2,你在增加 bricks 的时候数量必须为2、4、6、8等。
        • 扩容后进行测试,发现文件都分布在扩容前的卷中。
    6. 配置分布式条带卷
      • 将原有的复制卷 gv3 进行扩容,使其成为分布式条带卷
      ]# gluster volume stop gv3
      ]# gluster volume add-brick gv3 stripe 2 node03:/data/brick2 node04:/data/brick2 force
      ]# gluster volume start gv3
      volume start: gv3: success
      ]# gluster volume info gv3Volume Name: gv3
      Type: Distributed-Stripe
      Volume ID: 54c16832-6bdf-42e2-81a9-6b8d7b547c1a
      Status: Started
      Snapshot Count: 0
      Number of Bricks: 2 x 2 = 4
      Transport-type: tcp
      Bricks:
      Brick1: node01:/data/brick3
      Brick2: node02:/data/brick3
      Brick3: node03:/data/brick2
      Brick4: node04:/data/brick2
      Options Reconfigured:
      transport.address-family: inet
      nfs.disable: on
      
    7. 分布式复制卷的最佳实践
      1. 搭建条件
          - 块服务器的数量必须是复制的倍数

        • 将按块服务器的排列顺序指定相邻的块服务器成为彼此的复制
        • 例如,8台服务器:
          • 当复制副本为2时,按照服务器列表的顺序,服务器1和2作为一个复制,3和4作为一个复制,5和6作为一个复制,7和8作为一个复制
          • 当复制副本为4时,按照服务器列表的顺序,服务器1/2/3/4作为一个复制,5/6/7/8作为一个复制
      2. 创建分布式复制卷
        1. 磁盘存储的平衡

          • 平衡布局是很有必要的,因为布局结构是静态的,当新的 bricks 加入现有卷,新创建的文件会分布到旧的 bricks 中,所以需要平衡布局结构,使新加入的 bricks 生效。
          • 布局平衡只是使新布局生效,并不会在新的布局中移动老的数据,如果你想在新布局生效后,重新平衡卷中的数据,还需要对卷中的数据进行平衡。
        2. 在 gv2 的分布式复制卷的挂载目录中创建测试文件
          ]# df -h
          127.0.0.1:/gv2   10G   65M   10G    1% /mnt
          ]# cd /mnt/
          ]# touch {x..z}
          #新创建的文件只在老的brick中有,在新加入的brick中是没有的
          node01 ]# ls /data/brick2
          1  2  3  4  5  6  x  y  z
          node02 ]# ls /data/brick2
          1  2  3  4  5  6  x  y  z
          node03 ]# ll -h /data/brick1
          总用量 0
          node04 ]# ll -h /data/brick1
          总用量 0
          
        3. 从上面可以看到,新创建的文件还是在之前的 bricks 中,并没有分布中新加的 bricks 中
        4. 下面进行磁盘存储平衡
          ]# gluster volume rebalance gv2 start
          ]# gluster volume rebalance gv2 status  #查看平衡存储状态
          node01]# ls /data/brick2
          1  5  y
          node02]# ls /data/brick2
          1  5  y
          node03]# ls /data/brick1
          2  3  4  6  x  z
          node04]# ls /data/brick1
          2  3  4  6  x  z
          
          • 从上面可以看出部分文件已经平衡到新加入的 brick 中了
          • 每做一次扩容后都需要做一次磁盘平衡。 磁盘平衡是在万不得已的情况下再做的,一般再创建一个卷就可以了。
      3. 移除 brick
        • 你可能想在线缩小卷的大小,例如:当硬件损坏或网络故障的时候,你可能想在卷中移除相关的 bricks。
        • 注意
          • 当你移除 bricks 的时候,你在 gluster 的挂载点将不能继续访问数据,只有配置文件中的信息移除后你才能继续访问 bricks 中的数据。
          • 当移除分布式复制卷或者分布式条带卷的时候,移除的 bricks 数目必须是 replica 或者 stripe 的倍数。
          • 但是移除 brick 在生产环境中基本上不做的,如果是硬盘坏掉的话,直接换个好的硬盘即可,然后再对新的硬盘设置卷标识就可以使用了,后面会演示硬件故障或系统故障的解决办法。
        • 操作
          ]# gluster volume stop gv2
          ]# gluster volume remove-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force
          ]# gluster volume info gv2
          Volume Name: gv2
          Type: Replicate
          Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
          Status: Stopped
          Snapshot Count: 0
          Number of Bricks: 1 x 2 = 2
          Transport-type: tcp
          Bricks:
          Brick1: node01:/data/brick2
          Brick2: node02:/data/brick2
          Options Reconfigured:
          transport.address-family: inet
          nfs.disable: on
          performance.client-io-threads: off
          # 如果误操作删除了后,其实文件还在 /storage/brick1 里面的,加回来就可以了
          ]# gluster volume add-brick gv2 replica 2 node03:/data/brick1 node04:/data/brick1 force
          volume add-brick: success
          ]# gluster volume info gv2
          Volume Name: gv2
          Type: Distributed-Replicate
          Volume ID: 9f33bd9a-7096-4749-8d91-1e6de3b50053
          Status: Stopped
          Snapshot Count: 0
          Number of Bricks: 2 x 2 = 4
          Transport-type: tcp
          Bricks:
          Brick1: node01:/data/brick2
          Brick2: node02:/data/brick2
          Brick3: node03:/data/brick1
          Brick4: node04:/data/brick1
          Options Reconfigured:
          transport.address-family: inet
          nfs.disable: on
          performance.client-io-threads: off
          
      4. 删除卷
        • 一般会用在命名不规范的时候才会删除

          ]# gluster volume stop gv1
          ]# gluster volume delete gv1
          
        • 模拟误删除卷信息故障及解决办法
          ]# ls /var/lib/glusterd/vols/
          gv2  gv3
          ]# rm -rf /var/lib/glusterd/vols/gv3 #删除卷gv3的卷信息
          ]# ls /var/lib/glusterd/vols/     #再查看卷信息情况如下:gv3卷信息被删除了
          gv2
          ]# gluster volume sync node02      #因为其他节点服务器上的卷信息是完整的,比如从node02上同步所有卷信息如下:
          Sync volume may make data inaccessible while the sync is in progress. Do you want to continue? (y/n) y
          volume sync: success
          ]# ls /var/lib/glusterd/vols/    #验证卷信息是否同步过来
          gv2  gv3
          
        • 模拟复制卷数据不一致故障及解决办法
          ]# ls /data/brick2    #复制卷的存储位置的数据
          1  5  y
          ]# rm -f /data/brick2/y
          ]# ls /data/brick2
          1  5
          ]# ls /data/brick2
          1  5  y
          ]# gluster start gv2   #因为之前关闭了,如果未关闭可以忽略此步。
          ]# cat /mnt/y     #通过访问这个复制卷的挂载点的数据来同步数据
          ]# ls /data/brick2/     #这时候再看复制卷的数据是否同步成功
          1  5  y
          

3. glustefs 分布式存储优化

  1. key 值介绍

    Auth_allow  #IP访问授权;缺省值(*.allow all);合法值:Ip地址
    Cluster.min-free-disk  #剩余磁盘空间阀值;缺省值(10%);合法值:百分比
    Cluster.stripe-block-size  #条带大小;缺省值(128KB);合法值:字节
    Network.frame-timeout  #请求等待时间;缺省值(1800s);合法值:1-1800
    Network.ping-timeout  #客户端等待时间;缺省值(42s);合法值:0-42
    Nfs.disabled  #关闭NFS服务;缺省值(Off);合法值:Off|on
    Performance.io-thread-count  #IO线程数;缺省值(16);合法值:0-65
    Performance.cache-refresh-timeout  #缓存校验时间;缺省值(1s);合法值:0-61
    Performance.cache-size  #读缓存大小;缺省值(32MB);合法值:字节
    Performance.quick-read: #优化读取小文件的性能
    Performance.read-ahead: #用预读的方式提高读取的性能,有利于应用频繁持续性的访问文件,当应用完成当前数据块读取的时候,下一个数据块就已经准备好了。
    Performance.write-behind: #先写入缓存内,再写入硬盘,以提高写入的性能。
    Performance.io-cache: #缓存已经被读过的
    
  2. 优化参数调整方式
    • 命令格式:

      • gluster volume set <卷><参数>
    • 例如:
      • 打开预读方式访问存储

        • gluster volume set gv2 performance.read-ahead on
      • 调整读取缓存的大小
        • gluster volume set gv2 performance.cache-size 256M
  3. 监控及日常维护
    • 使用 zabbix 自带的模板即可,CPU、内存、磁盘空间、主机运行时间、系统 load。日常情况要查看服务器监控值,遇到报警要及时处理。
    • 看下节点有没有在线
      • gluster volume status nfsp
    • 启动完全修复
      • gluster volume heal gv2 full
    • 查看需要修复的文件
      • gluster volume heal gv2 info
    • 查看修复成功的文件
      • gluster volume heal gv2 info healed
    • 查看修复失败的文件
      • gluster volume heal gv2 heal-failed
    • 查看主机的状态
      • gluster peer status
    • 查看脑裂的文件
      • gluster volume heal gv2 info split-brain
    • 激活 quota 功能
      • gluster volume quota gv2 enable
    • 关闭 quota 功能
      • gulster volume quota gv2 disable
    • 目录限制(卷中文件夹的大小)
      • gluster volume quota limit-usage /data/30MB --/gv2/data
    • quota 信息列表
      • gluster volume quota gv2 list
    • 限制目录的 quota 信息
      • gluster volume quota gv2 list /data
    • 设置信息的超时时间
      • gluster volume set gv2 features.quota-timeout 5
    • 删除某个目录的 quota 设置
      • gluster volume quota gv2 remove /data
    • 备注:
      • quota 功能,主要是对挂载点下的某个目录进行空间限额。

        • 如:/mnt/gulster/data 目录,而不是对组成卷组的空间进行限制。
  4. Glusterfs 日常维护及故障处理
    1. 硬盘故障

      • 如果底层做了 raid 配置,有硬件故障,直接更换硬盘,会自动同步数据。
    2. 一台主机故障
      • 问题

        • 物理故障,同时有多块硬盘故障,造成数据丢失,系统损坏不可修复
      • 解决方法
        • 找一台完全一样的机器,至少要保证硬盘数量和大小一致,安装系统,配置和故障机同样的 IP,安装 gluster 软件,
        • 保证配置一样,在其他健康节点上执行命令 gluster peer status,查看故障服务器的 uuid
          ]# gluster peer status
          Number of Peers: 3Hostname: mystorage3
          Uuid: 36e4c45c-466f-47b0-b829-dcd4a69ca2e7
          State: Peer in Cluster (Connected)Hostname: mystorage4
          Uuid: c607f6c2-bdcb-4768-bc82-4bc2243b1b7a
          State: Peer in Cluster (Connected)Hostname: mystorage1
          Uuid: 6e6a84af-ac7a-44eb-85c9-50f1f46acef1
          State: Peer in Cluster (Disconnected)
          
        • 复制代码, 修改新加机器的 /var/lib/glusterd/glusterd.info 和 故障机器一样
          ]# cat /var/lib/glusterd/glusterd.info
          UUID=6e6a84af-ac7a-44eb-85c9-50f1f46acef1
          operating-version=30712
          
        • 在信任存储池中任意节点执行
        • 自动开始同步,但在同步的时候会影响整个系统的性能。
          ]# gluster volume heal gv2 full
          
        • 可以查看状态
          ]# gluster volume heal gv2 info
          

4. glusterfs 在企业中应用场景

  1. 理论和实践分析,GlusterFS 目前主要使用大文件存储场景,对于小文件尤其是海量小文件,存储效率和访问性能都表现不佳,海量小文件 LOSF 问题是工业界和学术界的人工难题,GlusterFS 作为通用的分布式文件系统,并没有对小文件额外的优化措施,性能不好也是可以理解的。
  2. Media
      -文档、图片、音频、视频
      -云存储、虚拟化存储、HPC(高性能计算)
      -日志文件、RFID(射频识别)数据

GlusterFS 应用相关推荐

  1. CentOS 7 安装 GlusterFS

    目录 环境说明: 3台机器安装 GlusterFS 组成一个集群. 使用 docker volume plugin GlusterFS 服务器: 10.6.0.140 10.6.0.192 10.6. ...

  2. glusterfs基本操作

    基本操作 集群节点 扩展集群 1,必须做hosts域名解析 其实通过IP地址也能做集群,但是不建议这种方式. 192.168.1.210 glusterfs04 2, 添加节点到集群中,在当前所有集群 ...

  3. GlusterFS下如何修复裂脑文件?(续一)

    关于网上一些修复GlusterFS裂脑文件的说明 1.Fixing a GlusterFS split-brain https://inuits.eu/blog/fixing-glusterfs-sp ...

  4. GlusterFS 安装与配置

    GlusterFS是一个开源的分布式文件系统,于2011年被红帽收购.它具有高扩展性.高性能.高可用性.可横向扩展的弹性特点,无元数据服务器设计使glusterfs没有单点故障隐患,详细介绍请查看官网 ...

  5. GlusterFS的安装及使用

    全文链接 点击链接:Glusterfs 官方示例 一.安装glusterfs-server #在要做分布式文件系统的主机上都需要安装yum install -y glusterfs-server #所 ...

  6. ESXI GLusterFS ISCSI 构建低端虚拟化解决方案

    ESXI GLusterFS ISCSI 构建低端虚拟化解决方案 ESXI 192.168.200.144 rhel 192.168.200.201   test01 rhel 192.168.200 ...

  7. k8s使用glusterfs存储报错type 'features/utime'

    k8s使用glusterfs存储报错type 'features/utime' is not valid or not found on this machine pods报错如下 Events:Ty ...

  8. Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储GlusterFS基础...

    Linux与云计算--第二阶段Linux服务器架设 第五章:存储Storage服务器架设-分布式存储GlusterFS基础 1 GlusterFS GlusterFS安装 Install Gluste ...

  9. GlusterFS配置管理(五)

    本节介绍如何配置您的存储环境GlusterFS卷,使用下列常见的场景: 分布式(Distributed) - 分布在整个集群的文件. 分布式复制(Distributed Replicated) - 复 ...

  10. glusterfs初步实践一(类似NFS)

    Glusterfs是一个具有可以扩展到几个PB数量级的集群文件系统.它可以把多个不同类型的存储块通过Infiniband RDMA或者TCP/IP汇聚成一个大的并行网络文件系统. 在http://ww ...

最新文章

  1. 深入理解CSS3 Animation 帧动画
  2. 【Flask】RESTful的响应处理
  3. keepalived高可用集群技术介绍及实战演练
  4. 深度学习入门必须理解这25个概念
  5. arraylist 后往前遍历_ArrayList和LinkedList的深入浅出
  6. 一个项目的简单开发流程——需求、数据库、编码
  7. CCF201812-5 管道清洁【最小费可行流】(100分题解链接)
  8. python 间接处理webp图片文件
  9. ai的预览模式切换_当AI频繁切换色彩预览模式时 颜色会越变越深 求解?
  10. 基于Python向Abaqus导入txt、dat数据(附abaqus中python二次开发课程)
  11. php函数中pdf文件文字转曲,indesign使文字转曲的三种方法
  12. Matlab绘制柱状图, 设置figure的最大最小值
  13. iOS 封装Healthkit
  14. Win10版本怎么转换?小编教你一键切换Windows版本
  15. Java——Arrays 类
  16. Spatiotemporal Multi-Graph Convolution Network for Ride-Hailing Demand Forecasting
  17. java.lang.NumberFormatException: null原因
  18. matlab xaxislocation,x轴和y轴位置
  19. opensearch 使用
  20. 移动互联网你需要了解35家潜力企业

热门文章

  1. python办公自动化--案例练习
  2. 2023年软件测试学什么?需要懂代码?经常加班吗?--测试老司机写给迷茫的你
  3. nginx 反向代理 以及优缺点
  4. Python Selenium4.0与浏览器的腻歪
  5. 羊城杯和天翼杯的补充
  6. 这些 .Net and Core 相关的开源项目,你都知道吗?(持续更新中...)
  7. 2021-2027全球与中国患者管理系统市场现状及未来发展趋势
  8. 王学岗——————三级联动
  9. 【推荐系统】推荐系统-基础算法 冷启动、及深度学习在冷启动上的应用
  10. 看到好的东西,就是不舍得不转:【转载】有了这个列表,程序员不愁没练手的小项目了