XFS(Structure needs cleaning)
事件缘起于遇到的一个现场问题
排查思路
先问原因:
如果是主机不正常关机,很可能是 操作系统的文件系统损害
如果是docker的某种操作,那就修改docker
如果以上都没问题,再考虑修复clickhouse
如果是主机问题,还需要用户解决呢;如果是二、三记录场景,看看如何避免。
不论哪个,先询问情况吧。可以用uptime、docker ps等看看启动时间,然后对照日志时间,看看是否对的上
16:16
估计是主机非正常关机,linux系统很稳定,很少出现文件系统损害。
如果是这样,需要开远程,慎重验证、修复。并向用户澄清,有丢失数据的风险(毕竟文件系统坏了),在首肯之后再操作
如果挂载了特殊的 硬件,如:RAID、NAS,由用户的主机管理员解决。(坚决禁止NAS)
非正常关机了?或者升级k8s重启?
merge过程分多阶段:
生成新文件夹
将待合并的多个文件夹,读取合并到新文件夹
删除旧文件夹
修改相关的系统表(分区表等)
这个问题,可以到github看clickhouse源代码,然后猜测问题点
df -T -x tmpfs
看来文件夹都在,只是文件系统记录的 状态 和 落盘 不一致了
文件系统需要卸载,所以先要看 有哪些应用在使用 /opt/local-path-provisioner,将k8s相关的服务都关闭吧
!!确定相关业务已经关闭,然后一个个执行
umount /dev/sdb1
xfs_repair /dev/sdb1
mount /dev/sdb1
lsblk -f
17:39
parted -l 可以查看未挂载的文件系统类型,以及那些分区尚未格式化
会不会还有程序占用着相关文件?
lsof +d /opt/local-path-xxxxxprovoider
后边的路径就是挂载路径
刚还试了
没有lsof命令
ps -elf 看看是否有可疑进程,如果关闭k8s,应该没有几个进程在了
pstree命令执行一下,我看看继承顺序
另一个经常出的日志占用内存问题:删除文件后,进程依然持有文件描述符,内容将输出到内存
以后现场会发生的问题:经常出现断网——造成终端停止、里边的长时间命令就会失败
建议方法:启动一个tmux,启动命令后,脱离终端,等过一段时间再attach上去
参考文档
https://bbs.qunyingkeji.com/2052/