glusterfs迁移砖及异常排查
官方文档
https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/#step-3-installing-glusterfs
进入集群的某个节点,查看卷信息
gluster volume info
1.备份需要迁移的砖
http://bk.xgs521.com/wp-admin/post.php?post=1542&action=edit
2.替换目录并复制原目录数据到目标目录(注意:原目录数据应是从客户端产生的,直接进入该节点目录下创建的文件不会复制过去)
新建新砖目录并给新目录最大权限
mkdir /home/disk1/gfs && chmod -R 777 /home/disk1/gfs
开始迁移
gluster volume replace-brick xuanji yq01-audio-engine-16kime067-gpu.yq01.baidu.com:/home/ssd0/gfs yq01-audio-engine-16kime067-gpu.yq01.baidu.com:/home/disk1/gfs commit force
新建新砖目录并给新目录最大权限
mkdir /home/disk2/gfs && chmod -R 777 /home/disk2/gfs
开始迁移
gluster volume replace-brick xuanji yq01-audio-engine-openimesmall8k398.yq01.baidu.com:/home/ssd0/gfs yq01-audio-engine-openimesmall8k398.yq01.baidu.com:/home/disk2/gfs commit force
查看复制进度
gluster volume rebalance xuanji status
如下提示完成所需时间

查看磁盘总大小变化
du -shl /home/disk2/gfs/
3.卷数据平衡–等到第二步执行完成再执行
gluster volume rebalance xuanji start
gluster volume rebalance xuanji status
查看卷信息
gluster volume info xuanji
使用 gluster volume heal xuanji info
命令来查看卷的健康状态,并使用 gluster volume heal xuanji full
命令进行全面修复。
手动启动brick
gluster volume start xuanji brick yq01-audio-engine-16kime066-gpu.yq01.baidu.com:/home/ssd0/gfs yq01-audio-engine-16kime066-gpu.yq01.baidu.com:/home/ssd1/gfs
删除并恢复rejected的节点
先查看所有的brick
gluster volume info xuanji
查看所有brick状态
gluster volume status xuanji
查看所有brick详细状态
gluster volume status xuanji detail
仅在需要修复的文件上触发自我修复: gluster volume heal eg: gluster volume heal xuanji 在卷的所有文件上触发自我修复: gluster volume heal full eg:gluster volume heal xuanji full 查看需要修复的文件列表: gluster volume heal info eg: gluster volume heal xuanji info 查看自我修复的文件列表: gluster volume heal info healed eg:gluster volume heal xuanji info healed 查看特定卷的自我修复失败的文件列表: gluster volume heal info failed eg: gluster volume heal xuanji info failed 查看指定卷中处于脑裂状态的文件列表: gluster volume heal info split-brain eg: gluster volume heal xuanji info split-brain
删除该节点中的所有brick(第一个是主brick,第二个是第一个的备份brick,删除必须保证主备同时删除)
gluster volume remove-brick xuanji replica 2 yq01-audio-engine-16kime066-gpu.yq01.baidu.com:/home/ssd0/gfs yq01-audio-engine-16kime066-gpu.yq01.baidu.com:/home/ssd1/gfs commit force
等删除完后再删除节点
gluster peer detach yq01-audio-engine-16kime066-gpu.yq01.baidu.com
查看所有节节点连接状态,及uuid
gluster peer status
添加节点
gluster peer probe yq01-audio-engine-16kime066-gpu.yq01.baidu.com
添加brick
gluster volume add-brick xuanji replica 2 yq01-audio-engine-16kime067-gpu.yq01.baidu.com:/home/disk1/gfs yq01-audio-engine-16kime067-gpu.yq01.baidu.com:/home/ssd1/gfs commit force
GFS集群异常排查应先找到异常的物理机节点,然后进入该物理机排查日志
例:reblance平衡stopped解决(重启异常节点并查看reblance状态)
查异常节点对应物理机日志
cd /var/log/glusterfs/
倒序查看最近的日志
tail -n 1000 xuanji-rebalance.log-20240421
[2024-04-20 19:43:31.314341] I [socket.c:872:__socket_shutdown] 0-xuanji-client-13: intentional socket shutdown(37)
[2024-04-20 19:45:38.253722] I [socket.c:872:__socket_shutdown] 0-xuanji-client-3: intentional socket shutdown(5)
[2024-04-20 19:45:38.256650] I [socket.c:872:__socket_shutdown] 0-xuanji-client-10: intentional socket shutdown(5)
[2024-04-20 19:45:38.259635] I [socket.c:872:__socket_shutdown] 0-xuanji-client-13: intentional socket shutdown(5)
[2024-04-20 19:45:38.263172] I [socket.c:872:__socket_shutdown] 0-xuanji-client-26: intentional socket shutdown(5)
[2024-04-20 19:45:38.266614] I [socket.c:872:__socket_shutdown] 0-xuanji-client-28: intentional socket shutdown(5)
[2024-04-20 19:45:38.271050] I [socket.c:872:__socket_shutdown] 0-xuanji-client-40: intentional socket shutdown(5)
[2024-04-20 19:45:38.274339] I [socket.c:872:__socket_shutdown] 0-xuanji-client-42: intentional socket shutdown(5)
[2024-04-20 19:46:22.883361] I [MSGID: 100011] [glusterfsd.c:1641:reincarnate] 0-glusterfsd: Fetching the volume file from server…
重新rebalance后,可查看最新的日志,
grep “0-glusterfs” xuanji-rebalance.log
日志中找到stopped信息
[2024-05-07 09:14:01.733400] I [MSGID: 109028] [dht-rebalance.c:5047:gf_defrag_status_get] 0-glusterfs: Rebalance is stopped. Time taken is 1550429.00 secs
时间线往前推移,找到一个异常信息
[2024-05-07 02:15:15.643659] E [MSGID: 100018] [glusterfsd.c:2333:glusterfs_pidfile_update] 0-glusterfsd: pidfile /var/lib/glusterd/vols/xuanji/rebalance/1e8308d1-366b-4890-b97b-2d7d3e8a842b.pid lock failed [Resource temporarily unavailable]
查看/var/lib/glusterd/vols/xuanji/rebalance/1e8308d1-366b-4890-b97b-2d7d3e8a842b.pid文件是否被进程占用,如果有,可以杀死进程,然后重启gfs,再重新rebalance,操作如下
lsof /var/lib/glusterd/vols/xuanji/rebalance/1e8308d1-366b-4890-b97b-2d7d3e8a842b.pid

杀掉之前的进程
kill -9 1431
在该物理机节点上重启glusterd
systemctl restart glusterd
重新rebalance
gluster volume rebalance xuanji start
再次查看状态就显示进行中
gluster volume rebalance xuanji status

glustered异常信息在这里排查
查看gluster.log

nslookup 10.103.117.24
host 10.103.117.24
查看该节点gfs状态
systemctl status glusterd.service
考虑重启服务
systemctl stop glusterd
systemctl start glusterd
这个命令也可参考 systemctl restart glusterd.service
查看reblance状态
gluster volume rebalance xuanji status
状态如果有了,就不必要重新reblance
gluster volume rebalance xuanji start
brick节点故障排查(Online状态: N)

查看所有brick状态
gluster volume status xuanji
也可查看所有brick详细状态
gluster volume status xuanji detail
root用户进入异常节点的物理机
cd /var/log/glusterfs/bricks
查看对应异常节点的日志
tail -1000 home-disk2-gfs.log| grep ” E “
停止gfs卷xuanji
gluster volume stop xuanji
ll /var/lib/glusterd/peers/
systemctl start glusterd.service
systemctl status glusterd.service
或者
service glusterd status|start|stop
先暂停volume
gluster volume stop wake_test
删除异常brick,至少删除2个,主备一起删
gluster volume remove-brick wake_test replica 2 yq01-audio-engine-16kime098-gpu.yq01.baidu.com:/home/ssd0/sj yq01-audio-engine-16kime098-gpu.yq01.baidu.com:/home/disk2/sj force
某个物理机rejected
从该物理机探测master节点
gluster peer probe yq01-audio-engine-16kime098-gpu.yq01.baidu.com
重启该物理机节点
systemctl restart glusterd
非online的brick处理,在异常节点重启glusterd
systemctl restart glusterd
Self-heal Daemon自愈节点故障排查(Online状态: N)– rebalance无法start force 也无法stop
gluster volume rebalance xuanji status|stop|start
volume rebalance: xuanji: failed: error
查看xuanji状态
gluster volume status xuanji
显示如下:
Self-heal Daemon on yq01-audio-engine-16kim
e068-gpu.yq01.baidu.com N/A N/A N N/A
查看68节点(异常节点)日志
tail -1000 glustershd.log |grep ” E “
# tail -100 xuanji-rebalance.log |grep ” E “
[2024-07-17 10:39:03.573117] E [MSGID: 101075] [common-utils.c:508:gf_resolve_ip6] 0-resolver: getaddrinfo failed (family:2) (Name or service not known)
[2024-07-17 10:39:03.573141] E [name.c:266:af_inet_client_get_remote_sockaddr] 0-glusterfs: DNS resolution failed on host localhost
根据错误提示,检查DNS配置
1.确保 /etc/nsswitch.conf
文件中 hosts
条目包含 dns
。
cat /etc/nsswitch.conf

2.确保 DNS 服务器配置正确。
cat /etc/resolv.conf
示例:
nameserver 10.10.10.10
nameserver 10.10.10.20
3.检查/etc/hosts 文件配置: 如果相关主机名未正确映射到 IP 地址,可能会导致解析失败。
cat /etc/hosts
使用 ping
命令检查各节点间的网络连通性。
4.重启异常节点
systemctl restart glusterd
其他尝试
可以考虑重启异常的节点,如果还无法rebalance,则逐个重启所有节点
systemctl restart glusterd
确认自愈守护进程正在运行。如果没有运行,尝试手动启动它:
gluster volume heal xuanji enable
GFS手动启动自愈
确认自愈守护进程正在运行。如果没有运行,尝试手动启动它:
gluster volume heal xuanji enable
查看GFS配置文件消息和各卷的配置文件
cat /etc/glusterfs/glusterd.vol
查看GlusterFS守护进程的工作目录。
cd /var/lib/glusterd