针对 Linux 内核 6.19+ 上 MongoDB 8 启动失败的故障排除指南
1. 故障现象:服务无法启动
在运行 Linux 内核 6.19 或更高版本的系统上安装 MongoDB 8 后,尝试启动服务时,mongod 进程会立即失败退出,状态码显示为 status=1/FAILURE。
root@mydb:~# systemctl status mongod
× mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; disabled; preset: enabled)
Active: failed (Result: exit-code) since Thu 2026-06-04 00:22:15 UTC; 5s ago
Duration: 48ms
Invocation: 35be25dd5c9a42019550b40036d495f0
Docs: https://docs.mongodb.org/manual
Process: 3165 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=1/FAILURE)
Main PID: 3165 (code=exited, status=1/FAILURE)
Mem peak: 14.3M
CPU: 34ms
Jun 04 00:22:15 mydb systemd[1]: Started mongod.service - MongoDB Database Server.
Jun 04 00:22:15 mydb mongod[3165]: {"t":{"$date":"2026-06-04T00:22:15.976+00:00"},"s":"F", "c":"CONTROL", "id":12257600,"ctx":"main","msg":"M>
Jun 04 00:22:15 mydb systemd[1]: mongod.service: Main process exited, code=exited, status=1/FAILURE
Jun 04 00:22:15 mydb systemd[1]: mongod.service: Failed with result 'exit-code'.
2. 原因诊断:检查系统日志
由于标准的 systemctl status 输出可能会截断关键错误信息,我们需要查看系统日志(例如通过 journalctl 或 /var/log/syslog)来精确定位问题。日志中明确指出了 MongoDB 与新版 Linux 内核之间的不兼容性。
2026-06-04T00:21:59.633000+00:00 mydb kernel: audit: type=1400 audit(1780532519.631:198): apparmor="DENIED" operation="open" class="file" profile="who" name="/usr/share/coreutils/locales/uucore/en-US.ftl" pid=3115 comm="who" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
2026-06-04T00:22:15.931395+00:00 mydb systemd[1]: Started mongod.service - MongoDB Database Server.
2026-06-04T00:22:15.977273+00:00 mydb mongod[3165]: {"t":{"$date":"2026-06-04T00:22:15.976+00:00"},"s":"F", "c":"CONTROL", "id":12257600,"ctx":"main","msg":"MongoDB cannot start: Linux kernel versions 6.19 and newer has a known incompatibility with this version of MongoDB. See https://jira.mongodb.org/browse/SERVER-121912 for more information."}
2026-06-04T00:22:15.979431+00:00 mydb systemd[1]: mongod.service: Main process exited, code=exited, status=1/FAILURE
2026-06-04T00:22:15.979543+00:00 mydb systemd[1]: mongod.service: Failed with result 'exit-code'.
核心错误信息提取:
MongoDB cannot start: Linux kernel versions 6.19 and newer has a known incompatibility with this version of MongoDB. See https://jira.mongodb.org/browse/SERVER-121912 for more information.(翻译:MongoDB 无法启动:Linux 内核 6.19 及更高版本与当前版本的 MongoDB 存在已知的不兼容问题。请参阅 https://jira.mongodb.org/browse/SERVER-121912 获取更多信息。)
3. 解决方案:调整 GLIBC Tunables 参数
该问题的根本原因在于新版本 Linux 内核对可重启序列(Restartable Sequences, 简称 rseq)的内存管理机制发生了变化。为了绕过这个限制,我们需要修改 MongoDB 的 systemd 服务文件,显式传入 GLIBC_TUNABLES 环境变量。
打开 MongoDB 的 systemd 服务配置文件(通常位于 /usr/lib/systemd/system/mongod.service,或者通过 systemctl edit mongod 安全地进行配置覆盖),调整 Environment 指令。
将配置从:
Environment="GLIBC_TUNABLES=glibc.pthread.rseq=0"
修改为:
Environment="GLIBC_TUNABLES=glibc.pthread.rseq=1"
(注意:确保此行内容位于配置文件的 [Service] 配置节之下)。
4. 验证结果:重载并重启服务
修改完 systemd 服务文件后,必须先重新加载 systemd 管理器配置,然后重启服务使改动生效。
# 1. 重新加载 systemd 配置,应用服务文件修改
root@mydb:~# systemctl daemon-reload
# 2. 重启 MongoDB 服务
root@mydb:~# systemctl restart mongod
# 3. 验证服务是否已成功运行
root@mydb:~# systemctl status mongod
预期输出:
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; disabled; preset: enabled)
Active: active (running) since Thu 2026-06-04 00:37:44 UTC; 5s ago
Invocation: 9ab634e2194c466984e4ced4a5e3e4d7
Docs: https://docs.mongodb.org/manual
Main PID: 3554 (mongod)
Memory: 112M (peak: 112.1M)
CPU: 259ms
CGroup: /system.slice/mongod.service
└─3554 /usr/bin/mongod --config /etc/mongod.conf
Jun 04 00:37:44 mydb systemd[1]: Started mongod.service - MongoDB Database Server.
Jun 04 00:37:44 mydb mongod[3554]: {"t":{"$date":"2026-06-04T00:37:44.513+00:00"},"s":"I", "c":"-", "id":8991200, "ctx":"main","msg":"S>
Jun 04 00:37:44 mydb mongod[3554]: {"t":{"$date":"2026-06-04T00:37:44.517+00:00"},"s":"I", "c":"CONTROL", "id":7484500, "ctx":"main","msg":"E>
此时,数据库已成功进入 active (running) 状态,顺利绕过了新版 Linux 内核的启动不兼容限制。