• 学习GlusterFS(一)


    一、概述

    1、GlusterFS是集群式NAS存储系统,分布式文件系统(POSIX兼容),Tcp/Ip方式互联的一个并行的网络文件系统,通过原生 GlusterFS 协议访问数据,也可以通过 NFS/CIFS 协议访问数据,没有元数据服务器,实现整个系统的性能、可靠性和稳定性。

    2、GlusterFS 常见术语

    3、GlusterFS卷类型

    基本卷:

    (1)  distribute volume:分布式卷

    (2)  stripe volume:条带卷

    (3)  replica volume:复制卷

    复合卷:

    (4)  distribute stripe volume:分布式条带卷

    (5)  distribute replica volume:分布式复制卷

    (6) stripe replica volume:条带复制卷

    (7) distribute stripe replicavolume:分布式条带复制卷

    基本卷:

    哈希卷(distributed volume,文件通过hash算法在所有brick上分布,文件级raid0,不具有容错能力);

    wKioL1fSIDKRNDlSAABjmzAmCOU103.jpg

    复制卷(replicated volume,生产常用,文件同步复制到多个brick上,文件级raid1,具有容错能力,w性能下降r性能提升);

    wKiom1fSIT_gl93yAABfm1QA8uw032.jpg

    条带卷(striped volume,不建议使用,单个文件分布到多个brick上,支持超大文件,类似raid0,rr方式round-robin,通常用于HPC(high performance compute)中的超大文件(>10G的单个文件)及高并发环境(多人同时访问同一个文件));

    wKioL1fSIVHD7nKbAABhvP0fQvM575.jpg

    复合卷:

    哈希复制卷(distributed replicated volume,生产常用,同时具有哈希卷和复制卷的特点);

    wKiom1fSIV_QhvaBAAB9HyGzJ2U126.jpg

    哈希条带卷(distributed striped volume);

    wKiom1fSIXTAnw12AAB8siauzu4848.jpg

    复制条带卷(replicated striped vlume);

    wKioL1fSIY2iFsV3AAB4B03V1cg556.jpg

    哈希复制条带卷(distributed replicated striped volume);

    wKiom1fSIZ-zTyj6AACZg3riPyE346.jpg

     4、开源并行FS比较(glusterfs VS moosefs VS lustre VS ceph):

    比较维度

    Glusterfs

    Moosefs

    Lustre

    Ceph

    成熟度

    2005年发布第一个GA版1.2.3,2013年GA版3.3.2,具有成熟的系统架构和完整的工程代码

    2008年发布第一个开源版本v1.5,13年发布GA版v1.6.27,稳定,比较成熟的开源DFS

    2003发布第一个版本lustre1.0,2013年发布v2.4.0,相当成熟,在HPC领域占有绝大比例

    2013年发布v0.71,并已添加到linux kernel中作实验内核,目前不成熟有较多bug,更新稳定都是实验版

    稳定性

    较稳定,无重大bug,已有较多组织或机构应用于生产环境

    较稳定,无重大bug

    很稳定,在HPC领域应用很多

    核心组件RADOS较稳定,每3个月更新一次稳定版,有部分企业用于生产环境

    复杂度

    简单,无元数据服务,用户空间实现,架构清晰,xlator树形结构

    简单,用户空间实现,代码规模较小,高度模块化

    复杂度较高,依赖内核实现

    较复杂,c++实现,功能较多

    高性能

    解除元数据瓶颈,并行化数据访问

    元数据单点瓶颈

    高性能,HPC领域表现卓越

    数据分布均衡,并行化度高

    扩展性

    弹性hash代替元数据服务,线性扩展,可轻松扩展到数百PB量级,支持动态扩容

    可增加存储server,不能增加MDS

    高扩展性,容量可达数百PB,可在不打断任何操作的情况下,通过增加新的OSS来实现动态扩展

    高扩展性,支持10-1000台server,支持TB到PB的扩展,当组件发生变化时(添加或删除),自动进行数据的重分布

    可用性

    多元数据服务设计,数据分布提供三种方式的分割:AFR、DHT、stripe,支持自动复制和自动修复

    元数据+日志服务器,保障元数据server,运行时元数据放内存,可设置副本

    元数据集群,可部署主备切换工作方式,无副本设计,OSS之间可利用共享存储实现自动故障恢复

    元数据集群,没有单点故障,多数据副本,自动管理、自动修复,monitor监控集群中所有节点状态,且可有多个monitor保证可靠性

    可管理性

    部署简单,易于管理和维护,使用底层FS,ext3/zfs,客户端负载增加;提供管理工具,如卷的扩容、数据LB、目录配额及相关监控等

    部署简单,提供web gui监控界面,元数据恢复,文件恢复,回收站功能,快照

    部署复杂,需升级kernel等,提供管理工具,如设置目录stripe

    部署较复杂,提供工具对集群进行监控管理,包括集群状态,各组件状态等

    研发成本

    用户空间实现,模块化堆栈式架构

    用户空间实现,小规模

    高,内核空间实现,且代码规模大

    较高,代码规模大,功能多

    适用性

    适用以文件为对象的存储体系,适合大文件存储

    小规模集群,元数据瓶颈,内存消耗大

    大文件,HPC领域

     

    NAS兼容

    支持NFS、CIFS、HTTP、FTP、gluster原生协议,与POSIX标准兼容

    支持CIFS、NFS,支持标准POSIX接口

    支持CIFS、NFS,支持标准POSIX接口

    支持CIFS、NFS,支持标准POSIX接口

    采用指数

    ☆☆☆☆

    ☆☆☆

    ☆☆☆

    ☆☆

    二、配置安装

    1、环境

    192.168.1.11     gluster-1-1

    192.168.1.12     gluster-1-2

    192.168.1.13     gluster-1-3

    注意:hosts文件添加解析,时间同步,关闭iptables和SELinux,三台各加10G硬盘做存储数据。

    2、下载gluster相关软件包

    vim /etc/yum.repos.d/gfs.repo
    http://bits.gluster.org/pub/gluster/glusterfs/3.4.2/x86_64
    依赖包:rpcbind libaio lvm2-devel 服务端:yum install glusterfs-server glusterfs glusterfs-cli glusterfs-fuse glusterfs-libs glusterfs-api 客户端:yum install glusterfs glusterfs-fuse glusterfs-libs
    磁盘分区:mkfs.ext4 -L /brick1 /dev/sdb 分区、标签、格式化

    3、部署

    1)创建目录并启动服务
    mkdir /brick1
    /etc/init.d/glusterd start
    
    2)添加gluster节点服务器
    gluster peer probe gluster-1-2
    gluster peer probe gluster-1-3
    
    3)查看节点服务器
    gluster  peer  status

    4、创建卷

    1)创建testvol卷(默认是哈希卷)
    gluster volume create testvol gluster-1-1:/brick1/b1 哈希卷
    gluster volume create gs2 replica 2 gluster-1-1:/brick1/b1  gluster-1-2:/brick1/b2 复制卷
    2)启动卷 gluster volume start testvol 3)查看卷 gluster volume info

    4)删除卷
    gluster volume remove-brick testvol gluster-1-2:/brick1/b2

    5、客户端测试

    1)客户端挂载卷
    mount -t glusterfs gluster-1-1:/testvol /mnt
    
    2)测试
    df -h   mount    等
    touch  {1..9}.txt
    rm 4.txt

    6、节点操作

    1)删除节点服务器
    gluster peer detach gluster-1-2 不能删除自己
    
    2)添加节点服务器
    gluster peer probe gluster-1-2
    gluster volume add-brick testvol gluster-1-2:/brick1/b2 (b2下面不能有文件)

    3)重新LB,要在闲时做,分两步,先fix-layout将hash算法重分配,再将数据重分配
    gluster volume rebalance testvol fix-layout start
    gluster volume rebalance testvol start

    4)查看rebalance平衡状态
    gluster volume rebalance testvol status

    7、删除卷

    1)卸载挂载点
    umount /mnt -lf
    2)删除卷
    gluster volume stop testvol
    gluster volume delete testvol (卷删除后,内容还在)
    rm -rf /brick1/b1 

    8、恢复卷信息

    1)卷信息的目录
    ll /var/lib/glusterd/vols/testvol/
    
    2)恢复命令
    gluster volume sync gluster-1-1  all

    9、其他

    1)允许可信任客户端IP
    gluster volume set testvol auth.allow 192.168.1.*
    
    2)关闭gluster的nfs功能
    ps -ef | grep nfs
    gluster volume set testvol nfs.disable on

    10、故障

    1)复制卷数据不一致
    故障现象:双副本卷数据出现不一致
    故障模拟:删除其中一个brick数据
    修复方法
      cat 文件
     触发自修复:遍历并访问文件
     find /mnt -type f -print0 | xargs -0 head -c1
    
    2)glusterfs集群节点配置信息不正确
    恢复复制卷 brick
     故障现象:双副本卷中一个brick损坏
     恢复流程
    a、重新建立故障brick目录
      mkdir b2
    b、设置扩展属性(参考另一个复制 brick)
     getfattr -d -m . -e hex b1/  获取扩展属性
     setfattr -n trusted.glusterfs.volume-id -v 0x1fa96ed0a0624ccf9e4f07cb9d84296f b2
     setfattr -n trusted.gfid -v 0x00000000000000000000000000000001  b2
     setfattr -n trusted.glusterfs.dht -v 0x000000010000000000000000ffffffff b2
    c、重启 glusterd服务
     /etc/init.d/glusterd restart
     gluster volume stop testvol
     gluster volume start testvol
    d、触发数据自修复
     find /mntpoint -type f -print0 | xargs -0 head -c1 >/dev/null
    
    
    3)修复磁盘数据(在使用server1时宕机,使用server2替换,执行数据同步)
    gluster volume replace-brick testvol server1:/brick1/b1 server2:/brick1/b1 commit force
    gluster volume heal testvol full

      GlusterFS 客户端常用命令

    创建卷

    1、创建分布卷
     gluster volume create dis_vol  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2   gluster-1-3:/brick1/b3
     
    2、创建复制卷
     gluster volume create rep_vol replica 2 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    3、创建条带卷
     gluster volume create str_vol  stripe 3 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    4、创建分布条带卷
     gluster volume create dir_str_vol stripe 4  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    5、创建分布复制卷
     gluster volume create dir_rep_vol replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    6、创建分布条带复制
     gluster volume create dis_str_rep_vol stri  2 repl 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    7、创建条带复制卷
     gluster volume create str_rep_vol stripe 2 replica 2  gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3
    
    8、创建分散卷(不常用)
     gluster volume create disperse_vol disperse 4 gluster-1-1:/brick1/b1 gluster-1-2:/brick1/b2  gluster-1-3:/brick1/b3

    资源定义

    Brick: 存储的基本单元,表现为服务器上可信存储池的导出目录
    Volume: 卷是bricks的逻辑集合
    Cluster: 一组计算机组成的集群
    Distributed File System: 允许多个客户端通过网络并发访问的文件系统
    GFID: 每个GlusterFs中的文件或者目录都有一个128bit的数字标识称为GFID
    glusterd: 管理守护进程需要运行在所有的提供授信存储池的服务器上
    Namespace: 名称空间是被创建的一个抽象容器或环境用来保存唯一标识符号
    Quorum: 设置一个可信的存储池中最多失效的主机节点数量
    Quota: 允许通过目录或者卷设置对磁盘空间使用的限制
    Posix: 可移植操作系统接口是IEEE定义的一系列相关api标准
    Vol File: Vol文件是glusterfs进程使用的配置文件
    Distributed: 分布卷
    Replicated: 复本卷
    Distributed Replicated: 分布式复制卷
    Geo-Replication: 异地备份为站点通过局域网、广域网、互联网提供一个连续的异步的和增量复制服务
    Metedata: 元数据定义为关于数据的数据描述信息,在GlusterFs没有专用的元数据存储内容
    Extended Attributes: 扩展属性是文件系统的一个特性 
    FUSE: 用户空间的文件系统是一个用于类Unix操作系统的可加载内核模块,以允许非特权用户在适用内核代码的情况下创建自己的文件系统。实现了在用户空间下运行文件系统代码

    创建volume

    Distributed:分布式卷,文件通过hash算法随机的分布到由bricks组成的卷上。 
    Replicated:复制式卷,类似raid1,replica数必须等于volume中brick所包含的存储服务器数,可用性高。 
    Striped:条带式卷,类似与raid0,stripe数必须等于volume中brick所包含的存储服务器数,文件被分成数据块,以Round Robin的方式存储在bricks中,并发粒度是数据块,大文件性能好。 
    Distributed Striped:分布式的条带卷,volume中brick所包含的存储服务器数必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。 
    Distributed Replicated:分布式的复制卷,volume中brick所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。

     

  • 相关阅读:
    获取文件当前目录及其大小
    PLC工作原理动图,一图搞懂一个原理
    欧拉角的详解
    欧拉角的详解
    PLC/Pragmas
    ASCII码对照表
    C++ 的关键字(保留字)完整介绍
    C++ 基本语法
    pytorch笔记1
    pytorchnum_flat_features(x)
  • 原文地址:https://www.cnblogs.com/wuhg/p/10077412.html
Copyright © 2020-2023  润新知