• GFS分布式文件系统


    1.GFS分布式文件系统

    gfd glusterFS 开源的分布式的文件系统

    存储服务器 客户端 以及网络(NFS/samba)网关

    传统式老的分布式元服务器,元服务器保存存储节点的目录树信息。

    一旦元服务器故障,所有的存储节点全部失效

    现在GFS取消了元服务器机制,数据横向扩展能力更强。可靠性更强,存储效率也更高了

    2.GFS的特点

    1.扩展性更强,高性能

    2.高可用、可以自动对文件进行复制,多次复制,确保数据总是可以访问,哪怕硬件故障也能正常访问

    3.全局统一的命名空间,所有节点都在一个分支的管理之下,客户端访问分支节点即可。

    4.弹性卷,类似于lvm,不同硬盘上的不同分区组成一个逻辑上的硬盘。GFS提出不同服务器上的不同的硬盘分区,组成一个卷。可以动态的扩容。

    5.基于标准协议,GFS存储服务支持,NFS FTP HTTP以及GFS协议,应用程序可以直接使用数据,不需要做任何修改。

    3.GFS的组件和术语

    1、BRICK(存储块) 存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元,也是对外提供的存储目录,由服务和目录的绝对路径组成

    server.dir

    192.168.233.10:/opt/gfs

    node1:/opt/gfs

    2.volume 逻辑卷 一个逻辑卷就是一组brick的集合。类似于lvm,我们管理GFS就是管理这些卷。

    3.FUSE:GFS的内核模块,允许用户创建自己的文件系统

    4.VFS:内核空间对用户提供的访问磁盘的接口。虚拟端口

    5.服务端在每个存储节点上都要运行,glusterd(后台管理进程)

    4.工作流程

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

    (2)linux系统内核通过 VFS 收到请求并处理。

    (3)VFS 将数据递交给 FUSE 内核处理,而 FUSE 文件系统则是将数据通过 /dev/fuse 设备文件递交给了 GFS客户端。

    (4)GFS客户端 收到数据后,客户端根据配置文件的配置对数据进行处理。

    (5)经过 GFS客户端 处理后,通过网络将数据传递至远端的 GFS服务端,并且将数据写入到服务器存储设备上。

    5.gfs的卷有哪些类型

    分布式卷,也是GFS的默认卷类型

    条带卷(没了)

    复制卷(镜像化)

    分布式复制卷

    6.分布式 复制卷 分布式复制卷的特点

    分布式卷的特点:文件数据通过HASH算法分布到设置的所有BRICK SERVER上。GFS的默认卷,属于raid 0 没有容错机制。在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上。存取效率也没有提供,直接使用本地文件系统进行存储。

    复制卷:类似于raid1 ,文件会同步在多个brick server上,读性能上升,写性能稍差

    复制卷具备冗余,坏一个节点不影响数据,但是要保存副本,磁盘利用率50%

    分布式复制卷:两两复制,文件会在组内同步,不同的组直接未必同步

    7.实验

    环境:

    四台服务器

    node1 node:192.168.233.10 磁盘 。dev/sdb1 /data/sdb1

    dev/sdc1 /data/sdc1

    dev/sdd1 /data/sdd1

    node2 node:192.168.233.20 磁盘 。dev/sdb1 /data/sdb1

    dev/sdc1 /data/sdc1

    dev/sdd1 /data/sdd1

    node3:192.168.233.30 磁盘 。dev/sdb1 /data/sdb1

    dev/sdc1 /data/sdc1

    dev/sdd1 /data/sdd1

    node4:192.168.233.40 磁盘 。dev/sdb1 /data/sdb1

    dev/sdc1 /data/sdc1

    dev/sdd1 /data/sdd1

    客户端:任选 192.168.223.61

    所有:systemctl stop firewalld

    setenforce 0

    cd /opt

    vim fdisk.sh

    #!/bin/bash

    NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`

    for VAR in $NEWDEV

    do

    echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null

    mkfs.xfs /dev/${VAR}"1" &> /dev/null

    mkdir -p /data/${VAR}"1" &> /dev/null

    echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab

    done

    mount -a &> /dev/null

    sz fdisk.sh

    拖到其他三个

    alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'

    scan

    到虚拟机添加硬盘

    添加3个盘

    scan

    lsblk

    sh fdisk.sh

    df -h

    分别去里面看一下

    cat /etc/fstab

    hostnamectl set-hostname node1

    su

    hostnamectl set-hostname node2

    su

    hostnamectl set-hostname node3

    su

    hostnamectl set-hostname node4

    su

    vim /etc/hosts #每个linux

    192.168.233.10 node1

    192.168.233.20 node2

    192.168.233.30 node3

    192.168.233.40 node4

    192.168.66.15 node1

    192.168.66.19 node2

    192.168.66.17 node3

    192.168.66.18 node4

    所有:

    yum -y install epel-release.noarch

    yum -y install centos-release-gluster

    yum clean all && yum makecache

    yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

    systemctl restart glusterd

    如果安装失败:

    检查版本

    glusterd -V

    test1:

    gluster peer probe node1

    gluster peer probe node2

    gluster peer probe node3

    gluster peer probe node4

    所有:

    gluster peer status

    分布式卷:

    test1:cd /opt

    gluster volume create fenbushi node1:/data/sdb1 node2:/data/sdb1 force

    gluster volume create:创建新卷。默认就是分布式卷

    fenbushi:卷名 唯一不可重复

    node1:/data/sdb1 node2:/data/sdb1挂载点

    force 强制创建

    gluster volume start fenbushi

    gluster volume info fenbushi ##查看分布式信息

    客户端

    systemctl stop firewalld

    setenforce 0

    yum -y install epel-release.noarch

    yum -y install glusterfs glusterfs-fuse

    vim /etc/hosts

    192.168.233.10 node1

    192.168.233.20 node2

    192.168.233.30 node3

    192.168.233.40 node4

    mkdir -p /test/fenbushi

    mount.glusterfs node1:fenbushi /test/fenbushi/

    df -h

    umount node1:fenbushi

    vim /etc/fstab #永久

    node1:fenbushi /test/fenbushi glusterfs defaults,_netdev 0 0

    mount -a

    df -h

    cd /test/fenbushi/

    ls

    touch {1..5}.txt

    test1:

    cd /data/

    ls

    cd sdb1/

    ls

    test2:

    cd /data/

    ls

    cd sdb1/

    ls

    停止了节点,关闭服务之后,不删除限于卷的情况下,能否继续恢复正常读写功能。如果不能如何恢复。

    复制卷:

    test1:

    cd /opt

    gluster volume create fuzhijuan replica 2 node2:/data/sdc1 node3:/data/sdc1 force

    y

    gluster volume start fuzhijuan

    gluster volume info fuzhijuan

    客户端:

    mkdir /test/fuzhijuan

    mount.glusterfs node1:fuzhijuan /test/fuzhijuan/

    df -h

    cd fuzhijuan/

    touch {1..6}.txt

    test3:

    cd /data/sdc1

    ls

    分布式复制卷

    node 1 /data/sdd1 node2 /data/dd1 node3 /data/sdd1 node4 /data/sdd1

    test1:gluster volume create fenbufuzhi replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force

    gluster volume start fenbufuzhi

    gluster volume info fenbufuzhi

    客户端 cd..

    mkdir fenbufuzhi

    mount.glusterfs node1:fenbufuzhi /test/fenbufuzhi

    df -h

    touch {1..6}.txt

    cd /data

    cd sdd1/

    ls

    test1,2,3,4

    cd /data

    cd sdd1/

    ls

    删除卷

    test1

    gluster volume status

    gluster volume stop fenbushi

    gluster volume delete fenbushi

    客户端

    vim /etc/fstab

    删除fenbushi

    mount -a

    访问控制:

    test1

    gluster volume set fenbushi auth.deny 192.168.233.61

    gluster volume set fenbushi auth.reject 192.168.233.61

    mkdir /test

    mount.glusterfs node1:fenbufuzhi /test

    故障恢复:

    关闭node1

    systemctl stop glusterd.service

    在node2

    gluster volume info fenbufuzhi

    客户端:

    cd fenbufuzhi/

    rm -rf *

    ls

    node2

    node3

    node4

    客户端

    touch {1..6}.txt

    node2

    node3

    node4

    客户端:

    rm -rf *

    node2,node3,node4

    node1:

    客户端:

    node1:

    node2:

    node3:

    node4:

    结论:停掉一台以后,剩下三台node不受影响,有一台没有复制备份

    当打开关掉的一台,重新恢复以后,四台全都正常运行,复制备份

  • 相关阅读:
    游戏设计模式专栏(九):用装饰模式定制化游戏元素
    Mysql binlog的三种模式statement,row,mixed详解,以及无主键造成复制延时的测试
    在C++中什么是异常处理以及如何使用try-catch块
    国产5G手机的影响在扩大,美芯面临阴霾,两家美企被抛售
    8个独立键盘驱动程
    vmware workstation设置固定ip的几种方法
    SI522国产13.56MHz读卡NFC芯片QFN32兼容替代RC522
    非 root 用户安装和配置 NodeJS
    分布式多协议接入网关FluxMQ-2.0功能说明
    思路迪通过港交所上市聆讯:前五个月收入1.6亿元,专利储备丰富
  • 原文地址:https://blog.csdn.net/qq_59980732/article/details/134465485