故障描述

发现集群的volume的状态如下图:

glusterfs volume glusterfs volume 有一个brick挂了_brick


其中一个brick掉线了

glusterfs volume glusterfs volume 有一个brick挂了_IP_02

解决思路
重启volume

这个动作太大了,况且这个是生产环境,不能随便重启volume

重启掉线brick所属的 glusterd进程

如果这个glusterd进程上只有一个brick,那么可以重启,但是如果有多个并且其他brick也很重要,那么就不能重启了
(亲测,重启glusterd进程是好使的)

只重启brick

这是最复杂的方法,也是影响范围最小的方法

重启brick的方法
# brick进程的构成(模板)
./glusterfsd -s 192.168.3.63 --volfile-id ntVolume.192.168.3.63.data2-brick2 -p /app/glusterfs/var/run/gluster/vols/nsftpVolume/192.168.3.63-data2-brick2.pid -S /var/run/gluster/7495a2b27ef0f6bd.socket --brick-name /data2/brick2 -l /app/glusterfs/var/log/glusterfs/bricks/data2-brick2.log --xlator-option *-posix.glusterd-uuid=07a8cc0b-384a-4d06-9e1f-d4b69ba49009 --process-name brick --brick-port 49153 --xlator-option ntVolume-server.listen-port=49153

上面是我环境的模板,最好再你的环境中找一个其他brick进程作为模板

  • 替换IP: 将进程中的IP信息替换为,掉线brick所在机器的IP
  • 替换目录名字: 模板中的 data2-brick2 /data2/brick2 是要替换的,我们使用 volume status命令可以得到目录的名字,如下图中的/data2/brick2。

glusterfs volume glusterfs volume 有一个brick挂了_IP_03

  • 替换uuid: 这个可以看一下同一台机器上其他brick进程,一个机器上的brick的uuid都一样。
    也可以查看glusterfs进程
  • glusterfs volume glusterfs volume 有一个brick挂了_IP_04

  • 可以进/app/glusterfs/var/lib/glusterd/vols/ntVolume/bricks目录(你得环境应该有个类似的目录),里面会有参数文件,打开一个就可以看到uuid了
  • glusterfs volume glusterfs volume 有一个brick挂了_IP_05

  • 替换端口: 这个可以在volume status中看到,直接修改就可以
  • 替换socket名字:这个要碰一下运气了,首先这个名字不能随便写。 我们可以进入/var/run/gluster/目录,这个目录会有很多socket,我们可以找一个不再用的进行测试(使用ps -ef可以看到再用的socket)。(测试的方法:启动brick后,端口存在,volume status 显示在线,就是成功)
  • glusterfs volume glusterfs volume 有一个brick挂了_glusterfs_06


修改完模板后,就可以启动brick了。

如果启动成功了, 可以使用ps -ef|grep glust >> cmd.run.dont.del命令将所有brick的启动命令录入的文件中,以便下次再单独启动brick。

glusterfs volume glusterfs volume 有一个brick挂了_glusterfs_07