01、解决步骤
报错信息
晚上发现登陆不上后台了,提示服务内部错误:disk I/O error (4874)
。查看官方仓库的issue找到了这篇文章,它又指到了官方论坛的帖子《面板报错 disk I/O error》。根据官方人员的回答表示可能是磁盘不足。
感谢反馈,刚刚在本地开发环境没有复现上述问题。
你可以先排查一下是不是由于磁盘空间不足或者磁盘故障导致的无法正常写入数据。
如果当前用户没有权限访问数据库文件,也有可能存在上述问题。
使用df -h
查看ECS磁盘信息,发现确实是磁盘满了导致的。
image.png
事出紧急,必须先恢复1Panel的服务,于是用du -ah / | sort -rh | head -n 20
列出了系统中最大的20个文件夹。
image.png
看到snapshot
瞬间反应过来可能是每日定时快照备份导致的问题,于是先执行命令rm -rf snapshot_1panel***
删除了快照文件,再执行df -h
后发现硬盘已经空出来了。
image.png
最后再执行1pctl restart
重启1Panel服务,执行1pctl status
查看1Panel运行状态,出现绿色的Runing字体时表示服务启动成功。再次查看面板后台,此时可以正常登录操作。
02、问题复盘
登录后台后第一时间查看了定时快照备份任务,确认是快照备份时出现的问题。
今日凌晨的备份失败了
整个事故时间线应该是这样的:
- 最初购买阿里云ECS时,硬盘为40G;随着时间增长,磁盘使用达到24G。
- 昨天(6月25日)1点触发系统备份,大小为9.3G(此时硬盘占用33.3G)。
- 今日凌晨1点触发系统备份,在备份时写满磁盘导致1Panel面板停止运行。
这意味着1Panel的备份逻辑应该是:先备份新快照,再删除旧快照。导致新快照备份时用光了磁盘导致服务异常。
03、其他措施
(1)清理无用文件,将服务器磁盘占用率降低到50%以下。
(2)接入UptimeRobot网站服务可用性监测平台,网站下线自动发送邮件警报。