分布式存储之GlusterFS高性能优化实践

一、构建高性能分布式存储基本条件和要求

1.1硬件要求:

  一般选择2U的机型,磁盘STAT盘4T,如果I/O要求比较高,可以采购SSD固态硬盘。为了充分保证系统的稳定性和性能,要求所有的Glusterfs服务器硬件配置尽量一致,尤其是硬盘数量和大小。机器的RAID卡需要带电池,缓存越大,性能越好,一般情况下建议做RAID10,如果出于空间要求的考虑,需要做RAID5,建议最好能有1-2块硬盘的热备盘。

1.2系统要求和分区划分

 系统要求:
   建议使用Centos6.x安装完成后升级到最新版本。
 分区划分:
   安装的时候,不要选择LV,建议/boot分区200M分区100G,swap分区和内存一样的大小,剩余空间给gluster使用,划分单独的硬盘空间,系统安装软件没有特殊要求,建议出了开发工具和基本的管理软件,其他软件一律安装。

1.3网络环境
  网络要求全部千兆环境,gluster服务器至少有2块网卡,1块网卡绑定供gluster使用,另外1块管理网络ip用于系统管理。如果有条件购买万兆交换机,服务器可配置万兆网卡,存储性能会更好,网络方面如果安全性要求较高,可以多网卡绑定。
1.4服务器摆放分布
  服务器主备要求放在不同的机柜,连接不同的交换机,即使一个机柜出现问题,还有一份数据能够正常访问。

1.5构建高性能高可用存储
  一般在企业中,采用的是分布式复制卷,因为有数据备份,数据相对安全,分布式条带卷目前对gulsterfs来说没有完全成熟,存储一定的数据安全风险。
补充说明:
  开启防火墙端口
  一般在企业中linux的防火墙是打开的,部署gluster服务服务器需要开通如下端口:
命令如下:

iptables -I INPUT -p tcp --dport 24007:24011 -j ACCEPT
iptables -I INPUT -p tcp --dport 38465:38485 -j ACCEPT

部署安装GlusterFS见前面文章https://www.liuliya.com/archive/733.html

二、构建高性能分布式存储实践优化

2.1GlusterFS文件系统优化

Auth_allow  #IP访问授权;缺省值(*.allow all);合法值:Ip地址
Cluster.min-free-disk  #剩余磁盘空间阀值;缺省值(10%);合法值:百分比
Cluster.stripe-block-size  #条带大小;缺省值(128KB);合法值:字节
Network.frame-timeout  #请求等待时间;缺省值(1800s);合法值:1-1800
Network.ping-timeout  #客户端等待时间;缺省值(42s);合法值:0-42
Nfs.disabled  #关闭NFS服务;缺省值(Off);合法值:Off|on
Performance.io-thread-count  #IO线程数;缺省值(16);合法值:0-65
Performance.cache-refresh-timeout  #缓存校验时间;缺省值(1s);合法值:0-61
Performance.cache-size  #读缓存大小;缺省值(32MB);合法值:字节
Performance.quick-read: #优化读取小文件的性能
Performance.read-ahead: #用预读的方式提高读取的性能,有利于应用频繁持续性的访问文件,当应用完成当前数据块读取的时候,下一个数据块就已经准备好了。
Performance.write-behind:先写入缓存内,在写入硬盘,以提高写入的性能。
Performance.io-cache:缓存已经被读过的、

2.2优化参数调整方式

命令格式:
gluster.volume set <卷><参数>

例如:
#打开预读方式访问存储
[root@mystorage gv2]# gluster volume set gv2 performance.read-ahead on
#调整读取缓存的大小
[root@mystorage gv2]# gluster volume set gv2 performance.cache-size 256M
2.3监控及日常维护
  使用zabbix自带的模板即可,CPU、内存、磁盘空间、主机运行时间、系统load。日常情况要查看服务器监控值,遇到报警要及时处理。
#看下节点有没有在线
gluster volume status nfsp
#启动完全修复
gluster volume heal gv2 full
#查看需要修复的文件
gluster volume heal gv2 info
#查看修复成功的文件
gluster volume heal gv2 info healed
#查看修复失败的文件
gluster volume heal gv2 heal-failed
#查看主机的状态
gluster peer status
#查看脑裂的文件
gluster volume heal gv2 info split-brain
#激活quota功能
gluster volume quota gv2 enable
#关闭quota功能
gulster volume quota gv2 disable
#目录限制(卷中文件夹的大小)
gluster volume quota limit-usage /data/30MB --/gv2/data
#quota信息列表
gluster volume quota gv2 list
#限制目录的quota信息
gluster volume quota gv2 list /data
#设置信息的超时时间
gluster volume set gv2 features.quota-timeout 5
#删除某个目录的quota设置
gluster volume quota gv2 remove /data

备注:
  quota功能,主要是对挂载点下的某个目录进行空间限额。如:/mnt/gulster/data目录,而不是对组成卷组的空间进行限制。

三、Gluster日常维护及故障处理

3.1硬盘故障
  因为底层做了raid配置,有硬件故障,直接更换硬盘,会自动同步数据。
如果没有做raid处理方法:

  1)正常node 执行gluster volume status 记录故障节点uuid
  2)执行getfattr -d -m '.*' /brick
  3)记录trusted.glusterfs.volume-id 及trusted.gfid

例如:
[root@mystorage1 gv2]# getfattr -d -m '.*' /storage/brick2
在机器上更换新磁盘,挂载目录
执行如下命令:

setfattr -n trusted.glusterfs.volume-id -v 记录值 brickpath
setfattr -n trusted.gfid -v 记录值 brickpath
/etc/init.d/glusterd restart

3.2主机故障
一台节点故障的情况包括以下情况:

  a)物理故障;
  b)同时有多快硬盘故障,造成数据丢失;
  c)系统损坏不可修复

解决方法:

  1)找一台完全一样的机器,至少要保证数量和大小一致,安装系统,配置和故障机器同样的ip安装gluster软件,保证配置都一样,在其他健康的节点上执行命令gluster peer status,查看故障服务器的uuid。
  2)修改新加机器的/var/lib/glusterd/glusterd.info和故障机器的一样。

cat /var/lib/glusterd/glusterd.info
UUID=2e3B51aa-45b2-4cc0-bc44-457d42210ff1

在新机器挂在目录上执行磁盘故障的操作,在任意节点上执行
[root@mystorage1 gv2]# gluster volume heal gv1 full
就会自动开始同步,但是同步的时候会影响整个系统的性能。
  3)查看状态
[root@drbd01~]# gluster volume heal gv2 info

  工作Glusterfs还有很多优化的位置点。具体细节官方文档最详细哈。
http://gluster.readthedocs.io/en/latest/Contributors-Guide/Guidelines-For-Maintainers/

发表评论

发表评论

*

沙发空缺中,还不快抢~