当前位置:首页>Linux>针对 Linux 内核 6.19+ 上 MongoDB 8 启动失败的故障排除指南

针对 Linux 内核 6.19+ 上 MongoDB 8 启动失败的故障排除指南

  • 2026-10-11 06:49:07
针对 Linux 内核 6.19+ 上 MongoDB 8 启动失败的故障排除指南

针对 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 内核的启动不兼容限制。

最新文章

随机文章