搭载KVM与Docker的Rocky Linux 8运行数天后无响应求助
排查Rocky Linux 8主机无响应及KVM虚拟机MCE硬件错误问题
问题背景
在Intel(R) Core(TM) i5-3570K + 32GB DDR3硬件上部署了支持KVM与Docker的Rocky Linux 8系统,配置桥接网络、2台KVM虚拟机及若干Docker容器。系统初始运行正常,数天后突然无响应:主机仍在运行,但键鼠无响应、显示器无输出。
已执行操作:
- 启用持久化journalctl日志,未发现系统崩溃相关有效信息,仅能看到Docker网桥创建的常规日志
- 多次重启系统
- 分别通过NetworkManager和network-scripts配置桥接网络,问题依旧
- 启用kdump后,捕获到一台KVM虚拟机崩溃日志,显示MCE硬件错误:内部奇偶校验错误
此前在CentOS 7上运行相同配置一切正常,需排查问题根源。
一、硬件层面排查(优先,MCE错误指向硬件故障)
1. CPU与内存检测
- 直接读取MCE错误详情:
mcelog --daemon=off --no-syslog,重点关注错误关联的CPU核心、内存地址段 - 内存稳定性测试:在单用户模式下运行
memtester 16G 5(根据空闲内存调整参数),或使用BIOS内置的内存诊断工具 - CPU散热检查:执行
sensors查看CPU温度,清理散热器灰尘、重新涂抹硅脂,排除过热导致的硬件异常
2. 存储与PCI设备检查
- 磁盘健康检测:
smartctl -a /dev/sda(替换为系统盘路径),查看SMART告警、坏道信息 - PCI设备排查:
lspci -v查看虚拟化相关设备(如VT-d/IO-MMU)状态,重新插拔网卡等PCI设备,排除接触不良问题
二、软件层面排查
1. KVM虚拟化配置优化
- 调整虚拟机CPU模式:确保使用
host-passthrough或host-model模式,避免指令集兼容性问题。编辑虚拟机XML配置:<cpu mode='host-passthrough' check='none'/> - 优化NUMA配置(若硬件不支持则禁用):在虚拟机XML中添加:
<numa> <cell id='0' cpus='0-3' memory='16384' unit='MiB'/> </numa> - 更新KVM组件:
dnf update qemu-kvm libvirt virt-manager,修复已知虚拟化兼容性bug
2. 内核与系统参数调整
- 切换长期支持内核:
dnf install kernel-lt,重启后选择该内核启动,排查默认内核兼容性问题 - 添加虚拟化相关内核参数:在
/etc/sysctl.conf中写入:
执行vm.nr_hugepages = 1024 kvm.ignore_msrs = 1sysctl -p使参数生效,缓解CPU指令集冲突 - 规避Docker与KVM网络冲突:确保Docker网桥与KVM桥接网络网段不重叠,修改
/etc/docker/daemon.json:
重启Docker服务:{ "bip": "192.168.100.1/24" }systemctl restart docker
3. 日志深度分析
- 分析kdump生成的vmcore文件:使用
crash工具加载崩溃镜像:
执行crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/127.0.0.1-2024-xx-xx-xx:xx:xx/vmcorelog查看崩溃时内核日志,bt查看调用栈,定位崩溃模块 - 实时监控内核日志:
journalctl -f -k,重点追踪kvm、mce相关日志,捕获问题发生时的细节
内容的提问来源于stack exchange,提问作者Ivan Vlaho Vlašić
相关产品推荐
相关产品推荐

