gluster学习(一)

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,如果一台服务器挂了,另外一台服务器会把虚拟地址接手过来

posted @ 2019-01-25 09:52  InsideOut  阅读(1410)  评论(0编辑  收藏  举报