linux运维工程师必会

第三章:GlusterFS分布式存储

2019-10-16  本文已影响0人  chenkang

第一节:Gluster介绍

1.为什么使用gluster

nfs对比Glusterfs

nfs:单点故障,扩容难

Glusterfs:有多个节点,无单点故障,扩容简单,加存储节点即可,3个节点起步

2.什么是Glusterfs

Glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持PB存储容量和数千客户端,通过网络互联组成一个并行的网络文件系统,具有可扩展性,高性能,高可用性等特点。

第二节:GlusterFS五种卷

分布式复制卷的brick顺序决定了文件分布的位置,一般来说,先是两个brick形成一个复制关系,然后两个复制关系形成分布。

企业一般用后两种,大部分会用分布式复制(可用容量为 总容量/复制份数),通过网络传输的话最好用万兆交换机,万兆网卡来做。这样就会优化一部分性能。它们的数据都是通过网络来传输的

第三节:配置分布式复制卷

gfs存储原理.png

1.安装glusterfs

所有节点:
yum -y install centos-release-gluster
yum -y install glusterfs-server
systemctl start glusterd.server
systemctl enable glusterd.server

2.添加进存储资源池

1.gluster pool list #查看资源池
2.gluster peer probe +ip/主机名 #将存储节点添加进存储资源池,每个节点的存储资源池一致。

注:主机名要做host解析
hosts文件:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.37 gfs-node1
172.16.1.38 gfs-node2
172.16.1.39 gfs-node3
172.16.1.40 gfs-node4

3.gluster peer detach #移除资源池中节点

3. 分布式复制卷

1.创建分布式复制卷(可以随意创建n个卷)

1.目录进行分布式存储
gluster volume create 卷名 replica 2[复制的份数,此处复制2份] 存储节点 force

2.磁盘进行分布式存储(此处用到磁盘分区使用fdisk或者gdisk对新添加的磁盘进行分区挂载)
gluster volume create test replica 2 gfs-node1:/data gfs-node2:/data gfs-node3:/data gfs-node4:/data force

2.启动卷

gluster volume start 卷名
EXAMPLE:
    gluster volume start test

3.查看卷

gluster volume info 卷名   #查看卷的详细信息
EXAMPLE:
    gluster volume info test
    
gluster volume status 卷名 #查看卷的状态
EXAMPLE:
    gluster volume status test

4.删除卷:一般会用再命名不规范的时候才会删除

gluster volume stop test     #停止卷
gluster volume delete test   #删除卷

4.挂载卷:系统默认不支持glusterfs文件系统,客户端需要安装glusterfs,也需要host解析。

mount -t glustefs IP:/卷名 挂载目录
EXAMPLE:
    mount -t glusterfs 172.16.1.37:/test /mnt

5.写入文件进行测试

6.分布式复制卷扩容

1.扩容前查看容量:df -h
2.扩容命令:gluster volume add-brick 卷名 节点名 force
3.扩容之后查看容量: df -h

7.分布式复制卷的最佳实践:

 1)搭建条件 
 - 块服务器的数量必须是复制的倍数   
 - 将按块服务器的排列顺序指定相邻的块服务器成为彼此的复制例如,8台服务器: 
 - 当复制副本为2时,按照服务器列表的顺序,服务器1和2作为一个复制,3和4作为一个复制,5和6作为一个复制,7和8作为一个复制 
 - 当复制副本为4时,按照服务器列表的顺序,服务器1/2/3/4作为一个复制,5/6/7/8作为一个复制 
 2)创建分布式复制卷
磁盘存储的平衡平衡布局是很有必要的,因为布局结构是静态的,当新的 bricks 加入现有卷,新创建的文件会分布到旧的 bricks 中,所以需要平衡布局结构,使新加入的 bricks 生效。布局平衡只是使新布局生效,并不会在新的布局中移动老的数据,如果你想在新布局生效后,重新平衡卷中的数据,还需要对卷中的数据进行平衡。

8.磁盘存储平衡

gluster volume rebalance test start
gluster volume rebalance test status  #查看平衡状态
## 检查磁盘存储平衡后文件在bricks中的分布情况
#从上面可以看出部分文件已经平衡到新加入的brick中了
每做一次扩容后都需要做一次磁盘平衡。 磁盘平衡是在万不得已的情况下再做的,一般再创建一个卷就可以了。

第四节: GlusterFS分布式存储优化

1.存储优化代码

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.优化参数调整方式

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


例如:
#打开预读方式访问存储
[root@node01 ~]# gluster volume set gv2 performance.read-ahead on

#调整读取缓存的大小
[root@mystorage gv2]# gluster volume set gv2 performance.cache-size 256M

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目录,而不是对组成卷组的空间进行限制。

4.GlusterFS日常维护及故障处理

1.硬盘故障

如果底层做了raid配置,有硬件故障,直接更换硬盘,会自动同步数据。
  如果没有做raid处理方法:参见博客:http://blog.51cto.com/cmdschool/1908647

2.一台主机故障

一台节点故障的情况包含以下情况:

物理故障 同时有多块硬盘故障,造成数据丢失 系统损坏不可修复 解决方法:

找一台完全一样的机器,至少要保证硬盘数量和大小一致,安装系统,配置和故障机同样的 IP,安装 gluster 软件, 保证配置一样,在其他健康节点上执行命令 gluster peer status,查看故障服务器的 uuid

[root@mystorage2 ~]# gluster peer status
Number of Peers: 3

Hostname: mystorage3
Uuid: 36e4c45c-466f-47b0-b829-dcd4a69ca2e7
State: Peer in Cluster (Connected)

Hostname: mystorage4
Uuid: c607f6c2-bdcb-4768-bc82-4bc2243b1b7a
State: Peer in Cluster (Connected)

Hostname: mystorage1
Uuid: 6e6a84af-ac7a-44eb-85c9-50f1f46acef1
State: Peer in Cluster (Disconnected)
复制代码
修改新加机器的 /var/lib/glusterd/glusterd.info 和 故障机器一样

[root@mystorage1 ~]# cat /var/lib/glusterd/glusterd.info
UUID=6e6a84af-ac7a-44eb-85c9-50f1f46acef1
operating-version=30712
在信任存储池中任意节点执行

# gluster volume heal gv2 full
就会自动开始同步,但在同步的时候会影响整个系统的性能。

可以查看状态

# gluster volume heal gv2 info

故障参见:https://www.cnblogs.com/xiexiaohua007/p/6602315.html

第五节:GlusterFS在企业中应用场景

理论和实践分析,GlusterFS目前主要使用大文件存储场景,对于小文件尤其是海量小文件,存储效率和访问性能都表现不佳,海量小文件LOSF问题是工业界和学术界的人工难题,GlusterFS作为通用的分布式文件系统,并没有对小文件额外的优化措施,性能不好也是可以理解的。

Media
  -文档、图片、音频、视频
Shared storage  
  -云存储、虚拟化存储、HPC(高性能计算)
Big data
  -日志文件、RFID(射频识别)数据
上一篇 下一篇

猜你喜欢

热点阅读