记一次rsyslog 引发的Structure needs cleaning问题处理

记一次rsyslog 引发的Structure needs cleaning问题处理

问题回顾:

​ 开发人员在本地服务器上pull代码的时候页面显示 Structure needs cleaning 已部署的系统中数据库无法打开。

排查过程:

​ 查阅系统日志发现是 rsyslog 报错 imjournal: fopen() failed for path: ‘/var/lib/rsyslog/imjournal.state.tmp’: Structure needs cleaning [v8.24.0-57.el7_9.1 try http://www.rsyslog.com/e/2013 ]

​ 查看服务状态

systemctl status rsyslog

​ 尝试重启服务

systemctl restart rsyslog

​ 尝试重启系统,重启后未解决

​ 必应搜索相关问题给出的结果均是需要重新挂载目录,查看了目录所在分区为根目录,无法重新挂载

​ 尝试重装rsyslog

# 删除/var/log/messages文件
rm -rf /var/log/messages
# 重装rsyslog
yum reinstall rsyslog

​ 此处出现问题,提示rpmdb open failed

​ 删除原rpm db 文件

rm -f /var/lib/rpm/__db*

​ 重建rpm数据库

rpm --rebuilddb

​ 清除所有yum的缓存

yum clean all

​ 重新安装rsyslog

​ 安装后重启rsyslog,此时之前的报错已解决

​ 重启系统,数据库自动启动,至此问题全部解决。

参考资料:

rpmdb open failed 的解决办法_凌轩志的博客-CSDN博客