摘要: 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.* # 授权访问

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

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

一、检查文件正确性

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

分布式存储系统GlusterFS初体验的更多相关文章

  1. 全分布式的Hadoop初体验

    背景 之前的时间里对 Hadoop 的使用都是基于学长所搭建起的实验环境的,没有完整的自己部署和维护过,最近抽时间初体验了在集群环境下装机.配置.运行的全过程,梳理总结到本文中. 配置 内存:8G C ...

  2. 分布式任务调度XXL-JOB初体验

    简介 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 官方文档很完善,不多赘述.本文主要是搭建XX ...

  3. 【Python3爬虫】爬取美女图新姿势--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  4. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  5. 【docker Elasticsearch】Rest风格的分布式开源搜索和分析引擎Elasticsearch初体验

    概述: Elasticsearch 是一个分布式.可扩展.实时的搜索与数据分析引擎. 它能从项目一开始就赋予你的数据以搜索.分析和探索的能力,这是通常没有预料到的. 它存在还因为原始数据如果只是躺在磁 ...

  6. CentOS 7.6 部署 GlusterFS 分布式存储系统

    文章目录 GlusterFS简介 环境介绍 开始GlusterFS部署 配置hosts解析 配置GlusterFS 创建文件系统 安装GlusterFS 启动GlusterFS 将节点加入到主机池 创 ...

  7. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  8. [转载] 360分布式存储系统Bada的设计和应用

    原文: http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=208931479&idx=1&sn=1dc6ea4fa28a ...

  9. 高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍

    Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spa ...

随机推荐

  1. 【bzoj2733】永无乡(无旋treap启发式合并 + 并查集)

    传送门 题目分析 起初每个岛都是一个平衡树, 并查集的祖先都是自己.合并两岛时,pri较小的祖先会被作为合并后的祖先, 而两颗平衡树采用启发式合并.查询k值就是基本操作. code #include& ...

  2. 【rlz000】字串找数

    Time Limit: 3 second Memory Limit: 2 MB 问题描述 输入一个字符串,内有数字和非数字字符.如A123X456Y7A,302ATB567BC,统计共有多少个整数, ...

  3. 【干货】Chrome插件(扩展)开发全攻略(转)

    写在前面 我花了将近一个多月的时间断断续续写下这篇博文,并精心写下完整demo,写博客的辛苦大家懂的,所以转载务必保留出处.本文所有涉及到的大部分代码均在这个demo里面:https://github ...

  4. jquery 源码学习(二)

    在网上找到一篇广为流传的文章<常用正则表达式>,逐一分析,不足地方进行补充和纠正   作者:nuysoft/JS攻城师/高云 QQ:47214707 EMail:nuysoft@gmail ...

  5. CMake 添加头文件目录,链接动态、静态库(添加子文件夹)

    CMake支持大写.小写.混合大小写的命令. 当编译一个需要第三方库的项目时,需要知道: 去哪找头文件(.h),-I(GCC) INCLUDE_DIRECTORIES() 去哪找库文件(.so/.dl ...

  6. angular中通过$location获取路径(参数)的写法

    以下获取与修改的 URL 以  ( http://172.16.0.88:8100/#/homePage?id=10&a=100  ) 为例 [一]获取 (不修改URL) //1.获取当前完整 ...

  7. LaTeX —— 特殊符号与数学字体

    1. 特殊符号 ℓ(\ell):用于和大小的 I 和 数字 1 相区分 R(\Re) ∇(\nabla):微分算子 2. 数学字体 mathbb:blackboard bold,黑板粗体 mathca ...

  8. 微信公众平台消息接口开发(12)消息接口Bug

    微信公众平台开发模式 微信公众平台消息接口 微信公众平台API 微信开发模式 Bug 方倍工作室 原文:http://www.cnblogs.com/txw1958/archive/2013/03/1 ...

  9. Boost智能指针-基础知识

    简单介绍 内存管理一直是 C++ 一个比較繁琐的问题,而智能指针却能够非常好的解决问题,在初始化时就已经预定了删除.排解了后顾之忧.1998年修订的第一版C++标准仅仅提供了一种智能指针:std::a ...

  10. 跟我学ASP.NET MVC之九:SportsStrore产品管理

    摘要: 在这篇文章中,我将继续完成SportsStore应用程序,让站点管理者可以管理产品列表.我将添加创建.修改和删除产品功能. 本篇文章将分模块的方式,逐个介绍SportsStore站点管理功能的 ...