zoukankan      html  css  js  c++  java
  • GlusterFS分布式存储系统复制集更换故障Brick操作记录

    场景: 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

  • 相关阅读:
    “xmlns:d="http://schemas.microsoft.com/expression/blend/2008"” 命名空间不能被解析
    mysql 连接命令 表管理 ,克隆表,临时表,字符串属性,设定语句间的分隔符
    视图
    NULL值比较,两个列的合并,列值按条件替换。
    词性和 句子成份
    设置用户帐号只能一个地方登录
    数字的格式化,异常处理
    接口,构造器与垃圾回收机制,对像的生命周期。非静态方法与静态方法。
    继承,多态..
    JavaScript —— 常用数据类型隐式转换
  • 原文地址:https://www.cnblogs.com/Aaron-23/p/13451485.html
Copyright © 2011-2022 走看看