glusterfs重建volume

启因

因为之前做glusterfs集群时,比较急,直接用的pve主机的网络地址,运行了几天,发现volume同步的时候,占用了pve本身的网络通道,正好dell r720有4个网口,e3主机上有2个,所以都拿出一个来单独做gluster的绑定地址

结果没想到,我直接在两边的hosts文件里面将对应gluster1, gluster2ip修改了,结果不行,还是走的原来的地址,而且,gluster1上一直显示gluster不在线,于是我就想删除了volume重新配置.

过程

先用new bing问了一下他,怎么删除volume, 他给出了步骤,不过我发现有一步反了,我自己试了一下,按如下步骤:

  • 两边都执行:停止volume: sudo gluster vol stop VMS
  • 两边都执行:sudo umount gluster1:/tank/gfs/s
  • 两边都删除brick: sudo gluster vol remove-brick VMS replica 1 gluster2:/tank/gfs/s force, 注意,gluster2删除gluster1,gluster1删除gluster2
  • sudo gluster vol delete VMS start
  • 这一步会报错,说有peer还在,因为我在gluster1上显示gluster2一直是disconnect,因此要删除peer
  • 查看peer: sudo gluster peer statue, 会显示是disconnected
  • 两边都删除peer: sudo gluster peer detach gluster2
  • 再次sudo gluster peer status显示已经没有peer
  • 删除volume: sudo gluster volume delete VMS 显示删除成功

重新加入时,如果报错

两边节点都要做:

  • sudo systemctl stop glusterd

  • peer probe: failed: g1 is either already part of another cluster or having volumes configured, 就需要在g1的主机上,将/var/lib/glusterd目录下面除glusterd.info文件的其它全部删除掉,再去sudo glusterd peer probe g1

  • 删除/tank/gfs/s/.glusterfs

但是还是会报错/tanks/gfs/s已经在一个volume中了,没办法我又重新建了一个目录

重要, 新建的目录,一定要mount之后,再向mount之后的目录里面拷贝,如:sudo mount g1:vms, 挂载到/vms之后,向/vms里面拷贝,不然无法同步,参见: stackoverfow

总结

gluster节点的地址不能随便改,需要用命令去设置

正确的做法 (未试过)

  • 停止volume: sudo gluster volume stop VMS

  • sudo umount /vms

  • gluster volume set VMS config.transport tcp

  • 1
    2
    3
    
    gluster volume set VMS config.transport.tcp.bind-address newaddress
    gluster volume set VMS config.transport.socket.bind-address newaddress
    gluster volume set VMS config.transport.rdma.bind-address newaddress
    
  • sudo gluster volume start VMS

  • sudo mount /vms