当前位置:首页>Linux>Linux虚拟机中MongoDB无法启动问题

Linux虚拟机中MongoDB无法启动问题

  • 2026-09-03 14:19:16
Linux虚拟机中MongoDB无法启动问题

1. 问题

环境:Oracle VM VirtualBox + CentOS 8.5 + MongoDB 5.0.28。

现象:MongoDB服务无法启动,报“非法指令(Illegal instruction)”错误:

[root@bogon ~]# mongod --dbpath /var/lib/mongo --logpath /var/log/mongodb/mongod.logIllegal instruction (core dumped)

gdb调试宕机堆栈:

[root@bogon ~]# gdb /usr/bin/mongod......Program received signal SIGILL, Illegal instruction.0x000055555966d59a in tcmalloc::SizeMap::Init() ()(gdb) bt#0  0x000055555966d59a in tcmalloc::SizeMap::Init() ()#1  0x0000555559675eb7 in tcmalloc::Static::InitStaticVars() ()#2  0x0000555559677907 in tcmalloc::ThreadCache::InitModule() ()#3  0x0000555559677a9d in tcmalloc::ThreadCache::CreateCacheIfNecessary() ()#4  0x0000555559721275 in tcmalloc::allocate_full_malloc_oom(unsigned long) ()#5  0x00007ffff606c00f in __fopen_internal () from /lib64/libc.so.6#6  0x00007ffff3768dc2 in selinuxfs_exists () from /lib64/libselinux.so.1#7  0x00007ffff3760d0c in init_lib () from /lib64/libselinux.so.1#8  0x00007ffff7ddf8ba in call_init.part () from /lib64/ld-linux-x86-64.so.2#9  0x00007ffff7ddf9ba in _dl_init () from /lib64/ld-linux-x86-64.so.2#10 0x00007ffff7dd0fda in _dl_start_user () from /lib64/ld-linux-x86-64.so.2#11 0x0000000000000001 in ?? ()#12 0x00007fffffffe620 in ?? ()#13 0x0000000000000000 in ?? ()

查看Linux系统日志:

Sep 24 20:58:22 bogon kernel: traps: mongod[4061] trap invalid opcode ip:55ad7638859a sp:7ffe93a191a0 error:0 in mongod[55ad7226f000+5288000]Sep 24 20:58:22 bogon systemd[1]: Started Process Core Dump (PID 4062/UID 0).Sep 24 20:58:22 bogon systemd-coredump[4063]: Resource limits disable core dumping for process 4061 (mongod).Sep 24 20:58:22 bogon systemd-coredump[4063]: Process 4061 (mongod) of user 0 dumped core.

2. 原因

MongoDB 5.0之后版本需要CPU支持AVX指令集。

虚拟机的宿主机CPU是支持AVX指令集的,但是没有配置好虚拟机的环境。

3. 解决方法

3.1 禁用Hyper-V

管理用户启动cmd,执行命令:

bcdedit /set hypervisorlaunchtype off

注:如果想要重新开启Hyper-V,则执行:

bcdedit /set hypervisorlaunchtype auto

重新启动虚拟机。

确认指令集是否可用,Linux执行命令:

cat /proc/cpuinfo |grep avx2

3.2 VirtualBox启用虚拟化

在启用CPU虚拟化之前,可以看到虚拟机的处理器配置“启用嵌套VT-x/AMD-V”选项是灰的,无法勾选。

宿主机种以管理员身份运行cmd:

Microsoft Windows [版本 10.0.22621.2283](c) Microsoft Corporation。保留所有权利。C:\Windows\System32>cd C:\Program Files\Oracle\VirtualBox\C:\Program Files\Oracle\VirtualBox>VBoxManage.exe list vms"RHL8.5-x86_64" {c053a82f-5df6-4783-b83a-40318bc1f3f3}C:\Program Files\Oracle\VirtualBox>VBoxManage.exe modifyvm "RHL8.5-x86_64" --nested-hw-virt on

现在可以看到,“启用嵌套VT-x/AMD-V”已经处于可用状态:

4. 参考

[1]. MongoDB 5.0 报错 Illegal instruction 解决:

https://blog.csdn.net/qq_27566167/article/details/127118447

[2].【avx2】VitrualBox 安装centos7 支持avx2:

https://blog.csdn.net/fox20210812/article/details/125300988

[3]. VirtualBox启用嵌套VT-x/AMD-V的问题:

https://www.jb51.net/article/234134.htm

最新文章

随机文章