2)Bricks
• Brick是一个节点和一个导出目录的集合,e.g. node1:/brick1
• Brick是底层的RAID或磁盘经XFS或ext4文件系统格式化而来,所以继承了文件系统的限制
• 每个节点上的brick数是不限的
• 理想的状况是,一个集群的所有Brick大小都一样

3)Volumes
• Volume是brick的逻辑组合
• 创建时命名来识别
• Volume是一个可挂载的目录
• 每个节点上的brick数是不变的,e.g.mount –t glusterfs www.std.com:test /mnt/gls
• 一个节点上的不同brick可以属于不同的卷
• 支持如下种类:

a) 分布式卷

b) 条带卷

c) 复制卷

d) 分布式复制卷

e) 条带复制卷

f) 分布式条带复制卷

3.1)分布式卷
• 文件分布存在不同的brick里
• 目录在每个brick里都可见
• 单个brick失效会带来数据丢失
• 无需额外元数据服务器

3.2)复制卷
• 同步复制所有的目录和文件
• 节点故障时保持数据高可用
• 事务性操作,保持一致性
• 有changelog
• 副本数任意定

3.3)分布式复制卷
• 最常见的一种模式
• 读操作可以做到负载均衡

3.4)条带卷
• 文件切分成一个个的chunk,存放于不同的brick上
• 只建议在非常大的文件时使用(比硬盘大小还大)
• Brick故障会导致数据丢失,建议和复制卷同时使用
• Chunks are files with holes – this helps in maintaining offset consistency.

GlusterFS无元数据设计
好处是极大的提高了扩展性,同时也提高了系统的性能和可靠性;另一显著的特点是如果给定确定的文件名,查找文件位置会非常快。但是如果要列出文件或者目录,性能会大幅下降,因为列出文件或者目录时,需要查询所在节点并对各节点中的信息进行聚合。此时有元数据服务的分布式文件系统的查询效率反而会提高许多

当客户端访问GlusterFS存储时,首先程序通过访问挂载点的形式读写数据,对于用户和程序而言,集群文件系统是透明的,用户和程序根本感觉不到文件系统是本地还是在远程服务器上。读写操作将会被交给VFS(Virtual File System)来处理,VFS会将请求交给FUSE内核模块,而FUSE又会通过设备/dev/fuse将数据交给GlusterFS Client。最后经过GlusterFS Client的计算,并最终经过网络将请求或数据发送到GlusterFS Server上。

现网配置文件路径

https://blog.csdn.net/sondx/article/details/24322565
http://wesleydeng.iteye.com/blog/1734875#_Toc325012577

glusterFS是基于客户端的只读缓存,其粗粒度的一致性,是基于失效时间过期的缓存更新操作
glusterFS关于缓存的配置信息则保存在客户端的卷中
glusterFS缓存两部分:元数据和数据

什么是元数据?描述文件属性但又不是文件直接的部分,例如创建时间\修改时间\文件大小\文件存放的位置

对元数据的缓存
文件创建时会缓存元数据Inode的信息,当对该文件进行操作,可从元数据的缓存中直接获取文件的Inode,找不到再向下层查询所需的元数据信息

对数据的缓存
一般来说,文件系统的缓存指数据的缓存
glusterFS将一个文件以128k大小分成若干个区域,每个区域等同与缓存页的大小(最后一个可能例外),对文件的读取操作变成了对各区域的先后读取.
对于每个要读取的缓存区域则可能分成三种情况:
请求区域在缓存中,并且缓存是最新的,直接从缓存页面读取数据
请求区域不在缓存中,发送缺页中断,从远端磁盘缓存页面读取数据,并在缓存页面中更新数据
缺页中断已经产生,等待响应

glusterFS缓存的种类和特点
元数据缓存 数据缓存
生效的操作 所有操作 读操作
保存时间 创建文件时 读取文件时
保存方式 将元数据与转换 将文件分成若干区域保存
为唯一值与之对应 每个区域保存在一个页面中

客户端上是有卷的配置信息文件的,运行这glusterfs进程(可以不运行,如果不想用gluster的原生协议)

server端:glusterfsd进程负责处理来自其他组建的数据服务请求

一 gluster是什么?
hdfs的适合流式数据的存储,不兼容posix
gluster适合随机读,集群式NAS存储系统
目标代替lustre和商业产品GPFS

二 gluster基本原理
Infiniband延时非常低,一般是微秒级的,一般用于高性能云计算
全局统一命名空间:通过分布式文件系统将物理分散的存储资源虚拟化成统一的存储池
扩展属性是要用get命令看的,ls只能看到inode的属性

弹性Hash算法
每个brick会被分配一段hash范围
输入文件名(不包括路径),Davies-Meyer算法计算32位hash值
根据hash值在集群中选择子卷,进行文件定位
client对所选择的子卷进行访问

生产环境一定要用复制卷
hash值的计算实在client端进行的,hash只是定位brick(磁盘),并不定位文件

哈希+复制卷:node做hash,brick做复制
小文件(几k)不要用条带卷,条带卷最少分片是128k

glusterFS访问接口
RMMA:远程访问raid,就是上面说的Infiniband

VFS只有框架,实际干活还是地下的文件系统(ext4\xfs等等)
fuse与每个节点都有直接通道,两者直接交换
NFS访问的话,我没台服务器上都有nfs服务,就比fuse(千兆网络即可)多一个环节,因为数据不一定在你挂载的IP上,还需要通过该节点帮你去找,这种一般要求万兆网络.

数据自修复self-heal
触发自修复情形:第一次进入这个目录;每次访问文件;brick离开又回来之后
巡检也有可能触发修复(看你的巡检命令 )
它的自修复是同步修复

新增节点之后,不要急着rebalance,因为数据均衡会产生很大的流量,影响业务性能,选择业务比较空闲的时机再做rebalance

三 主流分布式文件系统对比
HDFS fASEdfs tfs这些适合上传下载操,创建获取更新删除等场景
如果是write\seek等随机读写,用GlusterFS\mooseFS(小于100个节点)\Lustre比较好

glusterfs的应用场景
半结构化数据:用habse mongodb mraidb去存,这种数据适合以列数和行数存储
glusterfs适合非结构化存储,镜像,文件
内容云:比如,网盘
gluster可以替代Hadoop来存储数据

gluster分布式文件系统测试
冒烟测试
数据一致性:写进去的和读出来的是一致的

大文件都是顺序读写,小文件以随机读写为主
元数据操作又称目录操作又(ops,operation per second),大文件可不需要太关注该性能指标
IOPS:随机小文件I/O读写能力
带宽:大文件连续读写能力
iowait达到30%-40%往往表明你的io负载很重了

Linux客户端测试工具
DD
Iozone:针对大文件
Postmark:针对ops
FIO:针对磁盘,IOPS

四 gluster安装与配置
gluster volume help

增删brick之后要做rebalance,但是要把握时间点
umount挂载点-->stop卷-->删除卷

五、
卷参数设置
IP访问限制,除了设置allow以外还要设置reject
系统默认会起一个nfs进程(自带)ps -ef | grep nfs,把它关闭gluster volume set testvol nfs.disable on
gluster volume info查看nfs已关闭

gluster volume info 卷名 #单独看一个卷的信息

六、性能测试

网络性能
server1端:iperf -s 启动
client(server2)端: iperf -c server1 启动
iperf -c server1 -P 4 多个进程,提高压力

卷性能测试
卷状态
gluster volume status #卷相关的进程的状态,Y/N

卷信息
gluster volume info

集群状态和卷挂载

读写测试dd
of=/dev/null 为读
测带宽

带宽测试
iozone help 支持集群测试(配得比较复杂)
常用 iozone -r 1m -s 128m -t 4 -i 0 -i 1
-r :每次读写的块的大小
-s:测试的文件大小
-t:线程数
-i:0是顺序写 1是顺序读,2是随机读写 3 4 5 6
测带宽

IOPS
运行 fio fio.conf #numjobs是进程数 size是文件大小
一个普通的SATA盘,7200转的,大概80左右的IOPS,如果是比较好的SAS或者光纤盘,可能在150左右的IOPS,ssd就可以达到几万几十万几百万。vmware里面的虚拟磁盘都是虚高的
fio可以测带宽,也可以测IOPS

运行 postmark postmark.conf #number写的文件个数,size是每个文件的大小,location是挂载点
subdirectories挂载点下有多少个目录 run运行的时间s 配置文件这种方式运行要加show字段
结果会在当前目录生成一个文件
postmark主要测试元数据操作的速度,即OPS,比如创建文件删除文件

系统监控
atop 2: 两秒中更新一次
iostat

配置信息
/var/lib/gluster

日志
mnt.log挂载日志
nfs.log nfs日志
glustershd.log 自修复日志
cli.log 命令行工具的日志
glusterd.log glusterd进程的日志
brick/brick-***.log brick的日志

rpc-transport报错,可以不管,如果没有使用rdma(infiband)

典型故障处理
把删掉的文件恢复
再另外一台服务器上cat/ls那个文件,或者find命令

另一个brick中坏掉
获取扩展属性(brick没损坏的服务器上执行) getfattr -d -m . -e hex b1/

2U/4U存储服务器和JBOD适合构建brick

协议:原生协议最好,但是不是每个系统版本都能装
infiband设置巨帧性能会提高

使用ctdb,如果一台服务器挂了,另外一台服务器会把虚拟地址接手过来

gluster学习(一)的更多相关文章

  1. gluster学习(二)

    GlusterFS卷管理 一.卷基本选项设置 1. 调整高速缓存大小 gluster volume set test-volume performance.cache-size 256MB 2. 详细 ...

  2. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  3. 学习openstack(二)

    OpenStack企业私有云实践 1.     实验架构 OpenStack我们把它当作是一个全新的"Linux"系统来学习,有的时候我们也把OpenStack称之为一个新的Lin ...

  4. 学习Kvm(二)

    一.走进云计算 云计算:云计算是一种按使用量付费的模式,这种模式提供可用的.便捷的.按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供, ...

  5. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  6. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  7. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  8. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  2. UIViewController的初始化

    UIViewController的初始化一般有两个: -(instancetype)init; -(instancetype)initWithNibName:(NSString *)nibNameOr ...

  3. HDU 5985 概率

    n种硬币各有cnt[i]枚,每轮下其有p[i]概率保留,问各种硬币只有它存活到最后一轮的概率. 设k轮后i硬币存活概率$a[i][k]=(1-p^k_i)^{cnt[i]}$ 则最后只有第i种硬币存活 ...

  4. charles抓包详解http 与 https

    包工具多种多样,比较好使的还是Charles和Fiddler,下面就简单的介绍下HTTPS的相关原理并以Charles为例来介绍下如何抓取HTTPS协议的包 1.下载charles 可以去charle ...

  5. dubbo Filter

    官方说明: 调用拦截扩展 扩展说明 服务提供方和服务消费方调用过程拦截,Dubbo 本身的大多功能均基于此扩展点实现,每次远程方法执行,该拦截都会被执行,请注意对性能的影响. 约定: 用户自定义 fi ...

  6. CF 1008C Reorder the Array

    You are given an array of integers. Vasya can permute (change order) its integers. He wants to do it ...

  7. 弗罗贝尼乌斯範数(Frobenius norm)

    弗罗贝尼乌斯範数 对 p = 2,这称为弗罗贝尼乌斯範数(Frobenius norm)或希尔伯特-施密特範数( Hilbert–Schmidt norm),不过后面这个术语通常只用于希尔伯特空间.这 ...

  8. Shell-判断条件总结

    -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f ...

  9. haproxy代理https配置方法【转】

    记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法: haproxy代理https有两种方式:1)haproxy服务器本身提供ssl证书, ...

  10. 使用IDEA进行打包

    使用IDEA打jar包: 1.