glusterfs 存储节点损坏恢复总结

概述

glusterfs 集群的存储节点损坏是不可避免的,但是对于glusterfs 来说,节点损坏包含系统损坏(因为重做系统需要格式化根目录)即glusterfs 配glusterfs 配置文件丢失,数据盘损坏即对于glusterfs数据盘上的brick数据丢失。本文即描述下glusterfs 存储节点损坏最优的修复方案。

恢复方案

在概述中我们知道存储节点损坏对于glusterfs 来说其实就分为3种损坏。

配置文件丢失

在存储节点系统损坏或者/磁盘坏掉等都对于glusterfs 意味着配置文件丢失。

恢复方案为:修复配置文件

操作步骤为:

(1)重新恢复系统,重新恢复系统过程中重做系统并恢复原来的网络配置和磁盘挂载配置 注意不能格式化数据盘保证数据盘和原来的配置方案不变

(2)重新安装glusterfs rpm 包,与原来集群中的rpm 包版本一致。

(3)恢复glusterfs 配置 (/usr/lib/glusterfs),配置主要恢复/var/lib/glusterd/glusterd.info 文件里面的uuid,这个uuid 在集群其他节点通过命令gluster peer status 查询,然后拷贝uuid 到/var/lib/glusterd/glusterd.info 文件中,然后 systemctl restart glusterd 服务,配置就会自动恢复。glusterfsd brick进程就会自动启动。然后后台修复进程会自动修复不一致数据(每15分钟自动触发)或者手动执行(gluster v volname heal full )立即触发修复。

数据丢失

数据丢失经常为数据磁盘损坏,需要更换磁盘。

操作步骤:

(1)更换硬件,然后还原为原来的配置(fstab 配置)。

(2)执行 gluster volume info 查看本机的brick 目录配置,然后mkdir 好brick 目录。然后再为brick 目录设置扩展熟悉。主要恢复3个扩展熟悉 trusted.gfid,trusted.glusterfs.dht,trusted.glusterfs.volume-id。这些扩展熟悉值 去集群其他机器该brick 对应副本上获取 getfattr -d -m. -e hex brickdir,然后再执行 setfattr -n name -v value brickdir 设置上, 在该机器上所有的brick dir 恢复成功后,然后就重启glusterd 服务(systemctl restart glusterd)即可。然后后台修复进程会自动修复不一致数据(每15分钟自动触发)或者手动执行(gluster v volname heal full )立即触发修复。

配置文件和数据都丢失

这种情况机器损坏不可恢复,需要另外一台机器来替换或者删掉损坏节点。这种形式恢复有3种方法。

  • 方法一

在新的机器配置新的ip,其它配置和机器配置新的ip,其它配置和机器其它机器一样(主要是磁盘配置)。然后步骤为:

(1)在集群中任意一台上执行,gluster peer probe newip,把新机器加入集群。

(2)然后执行 gluster volume replace-brick volname badbrick newipbrick commit force 把损坏节点的brick 移动到新加入的机器,然后 gluster peer detach oldip force

  • 方法二

    即安装 配置文件丢失 和 数据丢失 方法来恢复。

  • 方法三

    即删除掉损坏节点,步骤为:

(1) gluster volume replace-brick volname badbrick oldipbrick commit force 把损坏节点的brick 移动到集群中其他的机器上

(2) gluster peer detach badip force

方法区别:

方法一 需要用一个新ip,方法二 即用新机器替换旧机器(网络等其它配置和旧机器一样),方法三 明确来说不是恢复而是删除节点,这样会打破原来的brick 规划和容量的减小,以后要恢复容量又要做一次数据迁移,相当于一次恢复要做两次数据恢复。

恢复方案总结

glusterfs 存储节点坏掉恢复主要分为配置文件恢复和数据恢复。配置文件恢复没有代价,只会引起一些增量数据副本之间数据不一致的同步。而数据丢失代价比较大,会导致数据的全量恢复,如果在业务负载高的时期应该限制数据修复的速度(可参考afr层的参数配置),在空闲的时候放开限制增大修复速度。硬件能修复最好修复,不能修复尽快用备用机器替换。

你可能感兴趣的:(存储之我见)