zoukankan      html  css  js  c++  java
  • 分布式存储系统GlusterFS初体验

    摘要: GlusterFS是Scale-Out存储解决方案Gluster的核心,它是一个开源的分布式文件系统,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS借助TCP/IP或InfiniBand RDMA网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。

        过去一直以为GlusterFSGFS为同一个东西,真是惭愧。昨天一同事用到才发现它是个好东西!

        安装很简单,在所有存储服务器上执行

    yum -y install glusterfs glusterfs-server
    chkconfig glusterd on 
    service glusterd start

        将存储节点组合成一个集群,笔者以18节点为例。只需要在任一个节点执行:

    gluster peer probe agent21.kisops.org 
    gluster peer probe agent22.kisops.org 
    gluster peer probe agent23.kisops.org 
    gluster peer probe agent24.kisops.org 
    gluster peer probe agent25.kisops.org 
    gluster peer probe agent26.kisops.org 
    gluster peer probe agent27.kisops.org 
    gluster peer probe agent28.kisops.org 
    gluster peer probe agent29.kisops.org 
    gluster peer probe agent30.kisops.org 
    gluster peer probe agent31.kisops.org 
    gluster peer probe agent32.kisops.org 
    gluster peer probe agent33.kisops.org 
    gluster peer probe agent34.kisops.org 
    gluster peer probe agent35.kisops.org 
    gluster peer probe agent36.kisops.org 
    gluster peer probe agent37.kisops.org 
    gluster peer probe agent38.kisops.org # 加入新节点
    gluster peer status # 查看集群的节点信息

        以/data/glusterfs为共享目录,创建一个名为gfs的存储卷,数据复制2份:

    gluster volume create gfs replica 2 agent{21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38}.kisops.org:/data/glusterfs  # 创建卷
    gluster volume start gfs # 启动卷
    gluster volume info # 查看卷信息
    gluster volume set gfs auth.allow 10.20.* # 授权访问

    image

        OK,此时服务端已配置完毕,过程简单明了!客户端就更简单了:

    yum -y install glusterfs glusterfs-fuse
    mount -t glusterfs agent38.kisops.org:/gfs /mnt/gfs # 挂载任一节点即可(推荐)
    mount.nfs agent38.kisops.org:/gfs /mnt/nfs -o nfsvers=3,proto=tcp # 使用NFS挂载,注意远端的rpcbind服务必须开启
    mount -t nfs -o rw,nfsvers=3,proto=tcp,port=38465,nolock,noacl,nocto,noatime,nodiratime,rsize=131072,wsize=524288,async,soft,bg,acregmin=3,acregmax=10,acdirmin=1,acdirmax=5 agent21.kisops.org:/gfs /mnt/nfs # 标准挂法
    # 若需要开机自动挂载,请更新/etc/fstab,追加:
    agent38.kisops.org:/gfs /mnt/gfs glusterfs defaults,_netdev 0 1

    image

        环境配置完成就开始测试吧。

    一、检查文件正确性

    dd if=/dev/urandom of=/tmp/testfile bs=1M count=100 # 在挂载客户端生成测试文件
    cp –v /tmp/testfile /mnt/gfs/testfile # 文件拷贝到统一存储
    md5sum /tmp/testfile /mnt/gfs/testfile # 在查看客户端检查文件哈希
    md5sum /data/glusterfs/testfile # 存储集群的某2个节点上会有此文件,检查其哈希

    二、宕机测试。使用glusterfs-fuse挂载,即使目标服务器故障,也完全不影响使用。用NFS则要注意挂载选项,否则服务端故障容易导致文件系统halt住而影响服务!

    三、文件测试。

    # 将其中一个节点停止存储服务
    service glusterd stop
    service glusterfsd stop
    # 在挂载客户端删除测试文件
    rm -fv /mnt/nfs/testfile
    # 此时在服务端查看,服务被停止的节点上testfile并未被删除。此时启动服务:
    service glusterd start
    # 数秒后,testfile就被自动删除了。新增文件效果相同!
    四、目录测试。方法和文件测试类似,由于目录每个节点都会生成,所以测试更容易。

    以下为运维过程常用的指令:

    # 删除卷 
    gluster volume stop gfs 
    gluster volume delete gfs 
    # 将机器移出集群 
    gluster peer detach agent22.kisops.org 
    # 卷扩容(由于副本数设置为2,至少要添加2(4、6、8..)台机器) 
    gluster peer probe agent23.kisops.org # 加节点 
    gluster peer probe agent24.kisops.org # 加节点 
    gluster volume add-brick gfs agent23.kisops.org:/data/glusterfs agent24.kisops.org:/data/glusterfs # 合并卷 
    # 收缩卷(收缩卷前gluster需要先移动数据到其他位置) 
    gluster volume remove-brick gfs agent23.kisops.org:/data/glusterfs agent24.kisops.org:/data/glusterfs start # 开始迁移 
    gluster volume remove-brick gfs agent23.kisops.org:/data/glusterfs agent24.kisops.org:/data/glusterfs status # 查看迁移状态 
    gluster volume remove-brick gfs agent23.kisops.org:/data/glusterfs agent24.kisops.org:/data/glusterfs commit # 迁移完成后提交 
    # 迁移卷 
    gluster peer probe agent25.kisops.org # 将agent31.kisops.org的数据迁移到agent25.kisops.org,先将agent25.kisops.org加入集群 
    gluster volume replace-brick gfs agent31.kisops.org:/data/glusterfs agent25.kisops.org:/data/glusterfs start # 开始迁移 
    gluster volume replace-brick gfs agent31.kisops.org:/data/glusterfs agent25.kisops.org:/data/glusterfs status # 查看迁移状态 
    gluster volume replace-brick gfs agent31.kisops.org:/data/glusterfs agent25.kisops.org:/data/glusterfs commit # 数据迁移完毕后提交 
    gluster volume replace-brick gfs agent31.kisops.org:/data/glusterfs agent22.kisops.org:/data/glusterfs commit -force # 如果机器agent31.kisops.org出现故障已经不能运行,执行强制提交 
    gluster volume heal gfs full # 同步整个卷

        本文介绍的是GlusterFS基础的用法,感觉它的最大优点就是文件使用哈希散列,而不需要单独去维护MetaData以避开单点问题,而目录则是所有节点都一致的。节点信息会在变化过程中自动同步!不过增删节点,需要做Rebalance数据才会重新分布。

    https://my.oschina.net/kisops/blog/151073

  • 相关阅读:
    web前端知识体系大全【欢迎补充】
    ESA2GJK1DH1K基础篇: 阿里云物联网平台: 云平台显示单片机采集的温湿度数据,控制设备继电器(基于ESP8266,AT指令TCP_MQTT通信)(V0.1)
    ESA2GJK1DH1K基础篇: 阿里云物联网平台: 使用阿里云物联网平台提供的物理模型Topic通信控制(ESP8266,TCP透传指令)
    ESA2GJK1DH1K基础篇: 阿里云物联网平台: 使用阿里云物联网平台提供的自定义Topic通信控制(ESP8266,TCP透传指令)
    ESA2GJK1DH1K基础篇: 关于各大物联网平台的MQTT通信
    ESA2GJK1DH1K微信小程序篇: 小程序连接MQTT简单的Demo
    Android 开发基础入门: Android Studio 导入工程
    Android 开发基础入门: android studio安装教程
    ESA2GJK1DH1K升级篇: 移植远程更新程序到STM32F103RET6型号的单片机,基于(GPRS模块AT指令TCP透传方式)
    【传输协议】http协议GET与POST传递数据的最大长度能够达到多少
  • 原文地址:https://www.cnblogs.com/findumars/p/6294526.html
Copyright © 2011-2022 走看看