• GFS 分布式文件系统


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

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

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

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

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

    GFS的特点

    1、扩展性更强,高性能

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

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

    4、弹性卷,类似LVM,不同硬盘上的不同分区,组成一个逻辑上的硬盘

    不同服务器上的不同的硬盘分区,组层一个卷,可以动态的扩容

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

    GFS的组件和术语

    1、BRLCK(存储块),存储服务器提供的用于物理存储的专用分区,GFS当中的基本存储单元,也是对外提供的存储目录

    服务和目录的绝对路径组成

    server:dir

    20.0.0.20:/opt/gfs

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

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

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

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

    GFS工作流程图

    GFS的卷有哪些类型

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

    条带卷(没了)

    复制卷(镜像化)

    分布式复制卷

    分布式卷的特点

    文件数据通过HASH算法分布到设置的所有BRICK SERVER上,GFS的默认卷,属于raid0,没有容错机制

    在分布式卷模式下,没有对文件进行分块,直接存储在某个server的节点上,存取效率也没有提高,直接使用本地文件系统进行存储

    复制卷

    类似于raid1 文件会同步在多个BRICK server上,读性能上升,写性能稍差

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

    分布式复制卷

    两两复制,文件会在组内同步,不同的组之间数据未必同步

    实验

    实验环境

    四台服务器

    服务器ip磁盘
    node120.0.0.10/dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1
    node220.0.0.20/dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1
    node320.0.0.30/dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1
    node420.0.0.31/dev/sdb1 /data/sdb1 /dev/sdc1 /data/sdc1 /dev/sdd1 /data/sdd1
    客户端20.0.0.40

    配置

    1. 防火墙和安全机制
    2. vim fdisk.sh
    3. #!/bin/bash
    4. NEWDEV=`ls /dev/sd* | grep -o 'sd[b-z]' | uniq`
    5. for VAR in $NEWDEV
    6. do
    7. echo -e "n\np\n\n\n\nw\n" | fdisk /dev/$VAR &> /dev/null
    8. mkfs.xfs /dev/${VAR}"1" &> /dev/null
    9. mkdir -p /data/${VAR}"1" &> /dev/null
    10. echo "/dev/${VAR}"1" /data/${VAR}"1" xfs defaults 0 0" >> /etc/fstab
    11. done
    12. mount -a &> /dev/null
    13. 创建别名刷新端口
    14. alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'
    15. scan
    16. 4个node添加硬盘
    17. lsblk 刷新磁盘
    18. 运行脚本
    19. sh fdisk.sh
    20. 没有挂载上去
    21. mkfs.xfs /dev/没有挂载上的盘
    22. mount -a
    23. 修改主机名(4个)
    24. hostnamectl set-hostname node1
    25. hostnamectl set-hostname node2
    26. hostnamectl set-hostname node3
    27. hostnamectl set-hostname node4
    28. su
    29. 做映射(4个node)
    30. vim /etc/hosts
    31. 20.0.0.10 node1
    32. 20.0.0.20 node2
    33. 20.0.0.30 node3
    34. 20.0.0.31 node4
    35. 安装节点
    36. 官网源
    37. yum -y install centos-release-gluster
    38. 清缓存建立元数据
    39. yum clean all && yum makecache
    40. 安装服务
    41. yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
    42. 验证服务是否安装成功
    43. 重启服务
    44. 查看服务状态
    45. systemctl restart glusterd
    46. systemctl status glusterd
    47. 查看版本
    48. glusterd -V
    49. 添加节点服务器,形成一个存储信任池
    50. gluster peer probe node1
    51. gluster peer probe node2
    52. gluster peer probe node3
    53. gluster peer probe node4
    54. gluster peer status

    分布卷

    1. 创建分布式卷
    2. gluster volume create fenbushi node1:/data/sdb1 node2:/data/sdb1 force
    3. gluster volume create 创建新卷 默认就是分布式卷
    4. fenbushi 卷名,唯一不可重复
    5. node1:/data/sdb1 node2:/data/sdb1 挂载点
    6. force 强制挂载
    7. 开启卷
    8. gluster volume start fenbushi
    9. 查看卷的信息
    10. gluster volume info fenbushi
    11. 客户端
    12. 安装主键
    13. yum -y install glusterfs glusterfs-fuse
    14. 映射
    15. vim /etc/hosts
    16. 临时挂载
    17. mkdir -p /test/fenbushi
    18. mount.glusterfs node1:fenbushi /test/fenbushi
    19. df -h
    20. 永久挂载
    21. vim /etc/fatab
    22. node1:fenbushi /test/fenbushi glusterfs defaults,_netdev 0 0
    23. mount -a
    24. df -h
    25. cd /test/fenbushi
    26. touch {1..5}.txt
    27. 查看实验结果
    28. cd /data

    复制卷

    1. 创建卷
    2. gluster volume create fuzhijuan replica 2 node2:/data/sdc1 node3:/data/sdc1 force
    3. replica 2 设置复制策略,2是两两复制,要小于等于存储节点,不能比存储节点多,否则,创建失败
    4. gluster volume start fuzhijuan
    5. 查看卷的信息
    6. gluster volume info fuzhijuan
    7. 客户端
    8. mkdir -p /test/fuzhijuan
    9. mount.glusterfs node1:fuzhijuan /test/fuzhijuan
    10. touch {1..6}.txt

    分布式复制卷

    1. 创建卷
    2. gluster volume create fenbufuzhi replica 2 node1:/data/sdd1 node2:/data/sdd1 node3:/data/sdd1 node4:/data/sdd1 force
    3. gluster volume start fenbufuzhi
    4. 客户端
    5. mkdir -p /test/fenbufuzhi
    6. mount.glusterfs node1:fenbufenzhi /test/fenbufuzhi
    7. df -h
    8. cd /test/fenbufuzhi
    9. touch {1..6}.txt

    分布式复制卷是最常用的分布式文件存储方式,根据策略,存储文件时还是分布式的存储方式,分开存储,但是会进行复制,所有也拥有冗余的功能,但是磁盘利用率只有50%

    查看所有卷
    gluster volume status
    删除卷
    1. 先停再删
    2. gluster volume stop fenbufuzhi
    3. gluster volume delete fenbufuzhi
    4. 客户端如果是永久挂载,取消挂载

    查看节点关系

    gluster volume status

    禁止某主机访问

    1. gluster volume set fenbufuzhi auth.reject 20.0.0.40
    2. 客户端访问GFS卷,通过挂载的方式实现
    3. mkdir /test
    4. mount.glusterfs node1:fenbufuzhi /test

    允许一个网段访问

    gluster volume set fenbufuzhi auth.allow 20.0.0.*

  • 相关阅读:
    帧间预测单元划分流程
    Android 从Java线程到Handler机制源码分析
    分布式系统部署Redis
    专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战
    服务器的维护是如何操作
    docker基础篇:安装mysql单机版
    9.2CubeMx配置SD卡FATFS系统_stm32H7系列 SD卡 FR_NO_FILESYSTEM 找不到FatFs系统的问题
    记录vector中resize()函数的功能
    【Python零基础入门篇 · 40】:内置模块的使用二:pyinstaller模块(打包py文件以及更换图标)、hashlib模块(加密)
    1.查找存在于数组x但不存在于数组y的元素np.setdiff1d()2.查找两个数组交集以外(不同时存在于两个数组中)的元素np.setxor1d()
  • 原文地址:https://blog.csdn.net/qq_71147683/article/details/134461125