GlusterFS分布式存储系统复制集更换故障Brick操作记录
阅读原文时间:2021年06月23日阅读:1

场景: GlusterFS 3节点的复制集,由于磁盘故障,其中一个复制集需要重装系统,所以需要重装glusterfs并将该节点加入glusterfs集群

一. 安装GlusterFS

首先在重装系统节点安装 glusterfs

  • Centos

    yum -y install centos-release-gluster
    yum -y install glusterfs-server
    systemctl start glusterd.service
    systemctl enable glusterd.service
    systemctl status glusterd.service

  • Ubuntu

    apt-get -y install glusterfs-server
    systemctl start glusterfs-server
    systemctl enable glusterfs-server
    systemctl status glusterfs-server

确保与之前节点的GlusterFS版本一致,如果不一致,可将之前节点GlusterFS进行版本升级

  • Ubuntu系统GlusterFS升级

    apt install -y software-properties-common
    add-apt-repository ppa:gluster/glusterfs-7
    apt-get update
    killall glusterfs
    systemctl stop glustereventsd
    apt-get -y install glusterfs-server

升级过程中可能会出现重启失败,ps -ef查看有关glusterfs的进程,kill掉重启即可

二. 加入GlusterFS集群

  • 修改UUID

在正常节点获取该节点UUID信息,损坏节点为 gfs02

在/var/lib/glusterd/peers目录下,新建glusterd.info,将原UUID和operating-version信息写入该文件。

$ vi /var/lib/glusterd/glusterd.info
UUID=a7d9c9a8-e0bc-44da-8a86-6077f37038b0
operating-version=30706

重启glusterd服务

 systemctl restart glusterd

若无法启动,将 /var/lib/glusterd/ 下文件除 glusterd.info 外全部删除,kill相关进程进行重启

  • 在正常节点为此节点添加授信

    $ gluster peer probe gfs02

  • 在正常节点查看集群节点状态

    $ gluster peer status
    Number of Peers: 2

    Hostname: gfs01
    Uuid: f1061036-70cf-49b0-a482-4139b7e0eb7f
    State: Peer in Cluster (Connected)

    Hostname: gfs02
    Uuid: a7d9c9a8-e0bc-44da-8a86-6077f37038b0
    State: Accepted peer request (Connected)

正常情况就能同步到集群的peer信息,若出现这种状态,请参考如下:

出现这种状态后排查原因得知是由于 /var/lib/glusterd/peers/a7d9c9a8-e0bc-44da-8a86-6077f37038b0 文件中state值不一致导致,将除gfs02节点外其他节点此文件值修改为与之前文件中的一致,重启服务

uuid=a7d9c9a8-e0bc-44da-8a86-6077f37038b0
state=3
hostname1=gfs02

再次查看,恢复正常

$ gluster peer status
Number of Peers: 2

Hostname: gfs01
Uuid: f1061036-70cf-49b0-a482-4139b7e0eb7f
State: Peer in Cluster (Connected)

Hostname: gfs02
Uuid: a7d9c9a8-e0bc-44da-8a86-6077f37038b0
State: Peer in Cluster (Connected)

到此完成重新加入集群

三. 重新分配volum

通常加入集群后,自动就可以获得卷信息,如果未获得,参考如下

  • 查询故障节点的备份节点(gfs02)目录的扩展属性

    $ getfattr -d -m. -e hex /data/gluster
    getfattr: Removing leading '/' from absolute path names

    file: data/gluster

    trusted.gfid=0x00000000000000000000000000000001
    trusted.glusterfs.dht=0x00000001000000007fffffffffffffff
    trusted.glusterfs.volume-id=0x8eafb261e0d24f3b8e0905475c63dcc6

  • 挂载卷并触发自愈

在客户端新建一个卷中不存在的目录并删除

$ cd /opt/gfsmount/
$ mkdir test1
$ rm -rf test2

客户端设置扩展属性触发自愈

$ setfattr -n trusted.non-existent-key -v abc <客户端挂载点>
$ setfattr -x trusted.non-existent-key <客户端挂载点>
  • 检查当前节点是否挂起xattrs

再次查询故障节点的备份节点(gfs02)目录的扩展属性

$  getfattr -d -m. -e hex /data/gluster
getfattr: Removing leading '/' from absolute path names
# file: data/gluster
trusted.afr.dirty=0x000000000000000000000000
trusted.afr.models-client-2=0x000000000000000000000000
trusted.afr.models-client-3=0x000000000000000200000002
trusted.gfid=0x00000000000000000000000000000001
trusted.glusterfs.dht=0x00000001000000007fffffffffffffff
trusted.glusterfs.volume-id=0x8eafb261e0d24f3b8e0905475c63dcc6

注意:留意第5行,表示xattrs已经将源标记为GlusterFS-slave3:/data/gluster

  • 在正常节点检查卷的状态是否显示需要替换

    $ gluster volume heal models info
    Brick GlusterFS-master:/data/gluster/
    Number of entries: 0

    Brick gfs03:/data/gluster/
    Number of entries: 0

    Brick gfs01:/data/gluster/
    /
    Number of entries: 1

    Brick gfs02:/data/gluster
    Status: Transport endpoint is not connected

注:状态提示传输端点未连接(最后一行)

  • 使用强制提交完成操作

    $ gluster volume replace-brick redata gfs02:/data/gluster gfs02:/data/gluster1 commit force
    提示如下表示正常完成:
    volume replace-brick: success: replace-brick commit force operation successful


注意:也可以将数据恢复到另外一台服务器,详细命令如下(192.168.10.230为新增的另一个glusterfs节点)(可选):

# gluster peer probe 192.168.10.230
# gluster volume replace-brick redata gfs01:/data/gluster gfs05:/data/gluster commit force

  • 检查存储的在线状态

    $ gluster volume status
    Status of volume: redata

    Gluster process TCP Port RDMA Port Online Pid

    Brick gfs01:/data/gluster 49153 0 Y 316465
    Brick gfs02:/data/gluster1 49153 0 Y 4813
    Brick gfs03:/data/gluster 49153 0 Y 430245
    Self-heal Daemon on localhost N/A N/A Y 415863
    NFS Server on localhost N/A N/A N N/A
    Self-heal Daemon on gfs01 N/A N/A Y 375512
    NFS Server on gfs01 N/A N/A N N/A
    Self-heal Daemon on gfs02 N/A N/A Y 4824
    NFS Server on gfs02 N/A N/A N N/A

    Task Status of Volume redata

    There are no active volume tasks

从上面信息可以看出,gfs02节点的Online项的状态为"Y"了,不过存储目录是/data/gluster1,查看gfs02节点的存储目录,发现数据已经在自动恢复了。

参考资料:

https://blog.csdn.net/weixin_30852419/article/details/98925513?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase

https://www.cnblogs.com/kevingrace/p/8761747.html

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器