收起左侧

飞牛OS 应用中心加载失败、应用全部消失

3
回复
42
查看
[ 复制链接 ]

1

主题

6

回帖

0

牛值

江湖小虾

悬赏1飞牛币未解决

今天感觉网络不太正常重启后就这样了。

所有已安装应用图标全部消失,应用中心显示加载失败,刷新无效。
文件管理,个人文件一直加载中,管理员视角,提示创建存储空间。

Docker可以手动启动。虚拟机无法使用。

存储空间:b05-0一直未存储数据,前几天卸载的。现在挂在显示数据库读写错误。
点击存储空间容量详情,提示获取存储空间容量异常。

硬盘状态检测显示正常。

image.png

将系统诊断日志导出到磁盘,让ChatGPT 5.4分析,结果如下:

结论
这次“应用中心加载失败、已安装应用全部消失”,不是应用被批量卸载,而是系统数据库 PostgreSQL 当时不可用,导致应用中心、应用入口服务以及一串依赖数据库的系统服务同时起不来。更深一层看,今天上午先出现的是存储层异常,高概率是卷映射或阵列/块设备不稳定,把数据库拖进了恢复失败或无法启动的状态。

关键证据

从 10:30 左右开始,triminit 持续报 PostgreSQL 的本地 socket 不存在;随后 trim_app_center、trim_sac、accountsrv、trim_connect、trim_sharelink、ai_manager、trim_license、cloud_storage_dav 等都因为连不上 PostgreSQL 退出或 panic。
这正好解释“应用中心打不开”和“应用都消失”:应用中心读不到数据库里的应用元数据,SAC 也起不来,容器快捷入口注册失败,所以前台看起来像全没了。
4 月 19 日的应用中心错误日志里,已经连续出现 database system is in recovery mode,说明数据库不是今天才第一次异常,而是前几天已经进入过异常恢复状态,今天进一步恶化成完全拉不起来。
存储侧也有很强的异常信号:triminit 在 09:36、09:52、10:19、10:31、10:39 多次报找不到 dm-0 对应记录,并反复做 md 恢复检查;内核随后又报系统里的 NVMe 和几块数据盘都“不能打开块设备”。这比单纯应用层故障更底层。
日志包里没有单独带出 PostgreSQL 自身日志,所以“数据库为什么没起来”我给到的是高概率判断,不是 100% 闭环;但“PostgreSQL 当时确实不可用”这一点已经被多份日志交叉证实。
我没有看到“批量卸载应用”的证据。相反,容器管理器在 09:52 还成功读到了 openspeedtest、metube、frigate、mosquitto、pharmacy-app 等项目配置,并且应用日志目录里仍保留大量已装应用日志。更像是“显示层和入口层失效”,不是“应用真的被删了”。
判断
这不是应用中心前端问题,也不是单纯网络访问商店失败。网络在故障过程中一度恢复,但数据库相关服务仍继续失败,所以核心根因不在网络。当前最合理的因果链是:

存储层不稳定
-> 卷映射或阵列状态异常
-> PostgreSQL 先进入 recovery mode,后续彻底不可用
-> trim_app_center 和 trim_sac 启动失败
-> 应用中心空白、应用入口消失、看起来像“应用全没了”

补一句:启动过程中有一次 NTP 校时回拨,所以内核日志和系统日志时间相差大约 6 分钟,但它们属于同一轮故障,不是两次独立事件。

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

6

回帖

0

牛值

江湖小虾

6 小时前 楼主 显示全部楼层

系统分区写满?

image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

6

回帖

0

牛值

江湖小虾

6 小时前 楼主 显示全部楼层

结论
根因已经查清了:这次应用中心异常的直接触发点不是 /vol1、/vol2 主存储损坏,也不是你手动卸载的 /vol3,而是系统分区 / 被写满,导致 PostgreSQL 在做 checkpoint 时崩溃。

你贴出的 PostgreSQL 原始日志里,最关键的报错是这两组:

2026-04-19 21:11:48
PANIC: could not write to file "pg_logical/replorigin_checkpoint.tmp": No space left on device

自动恢复后马上又在结束恢复的 checkpoint 再次报:
PANIC: could not write to file "pg_logical/replorigin_checkpoint.tmp": No space left on device

这说明数据库不是先坏了再没空间,而是先遇到磁盘无可用空间,checkpointer 直接崩掉,随后实例反复进入恢复态。应用中心日志从 21:11:49 开始持续出现 database system is in recovery mode,正好和这个时间点严丝合缝对上。

怎么理解这次故障
现在可以把故障链写成一条很清楚的因果链:

4 月 19 日晚,系统分区 / 写满。
PostgreSQL checkpoint 时要写 pg_logical/replorigin_checkpoint.tmp,结果报 No space left on device。
checkpointer 进程 PANIC,数据库实例被迫终止并重启恢复。
恢复日志里的 redo starts at、redo done at 说明 WAL 重放本身走到了尾部。
但恢复结束时还要再做一次 checkpoint,又因为空间不足再次 PANIC。
所以 PostgreSQL 一直卡在 recovery 或 failed,最终到 4 月 21 日 10:30 左右,5432 的本地 socket 根本没创建出来。
依赖数据库的应用中心、trim_sac、accountsrv、ai_manager、share_service 等一起报错,看起来就像“应用全没了”。
这里还有一个容易误判的点:
日志里的 invalid record length at 0/869EE48: wanted 24, got 0,在这段上下文里不是主因,更像 WAL 到末尾时的正常结束提示。真正致命的是后面的 No space left on device。

另外,你贴出来那条 postgres@appcenter FATAL 后面接着 root@mikoshi...,这是终端粘贴把日志输出打断了,不是 PostgreSQL 本身的完整报错正文。

当前状态
我刚才在终端里补查过:

/ 挂载在 /dev/nvme1n1p2。
当前仍然是 63G 总量、61G 已用、可用 0、使用率 100%。
inode 使用率只有 38%,所以不是 inode 耗尽,而是块空间真的满了。
PostgreSQL 数据目录还在,这对恢复是好消息。
从目前证据看,这更像“空间耗尽导致数据库起不来”,而不是“数据库文件已经明显损坏到必须先做 pg_resetwal”。
接下来该怎么做
现在最重要的不是修数据库,而是先把系统分区 / 腾出空间。只要能先释放出几 GB,可恢复的概率很高。

在你当前的 root shell 里,先只做只读定位,不做删除:

看根分区大户:
du -xhd1 /var/lib /var/log /usr /root 2>/dev/null | sort -h

继续细看 /var/lib 里面谁最大:
du -xhd1 /var/lib/* 2>/dev/null | sort -h | tail -n 50

查有没有“已删除但仍被进程占着”的大文件:
lsof +L1 | sort -k7 -n | tail -n 50

查系统分区里的超大文件:
find / -xdev -type f -size +500M -printf '%s %p\n' 2>/dev/null | sort -n | tail -n 100

我建议先别做这些操作:

不要执行 pg_resetwal
不要重建 PostgreSQL cluster
不要删除 PostgreSQL 数据目录
不要先重启数据库碰运气
后续你只要把上面几条只读结果贴出来,我就能继续帮你判断:

该清哪一类文件最安全
先释放多少空间最稳妥
释放空间后是不是只需要启动 postgresql@15-main 就有机会恢复

1

主题

6

回帖

0

牛值

江湖小虾

6 小时前 楼主 显示全部楼层

频繁构建镜像导致缓存占满,已经解决

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则