首页/云/云平台与虚拟化速查/KVM 内核模块与嵌套参数
虚拟化基础63 条

KVM 内核模块与嵌套参数

KVM 由通用模块 kvm 与厂商模块 kvm_intel/kvm_amd 组成;模块参数控制嵌套虚拟化、EPT 等行为,卸载厂商模块前必须先停掉全部虚机。

云平台与虚拟化速查云更新于 2026-10-13

KVM 模块与嵌套参数

KVM 由内核模块组成:通用模块 kvm 提供虚拟化基础,厂商模块 kvm_intel 或 kvm_amd 提供硬件辅助支持。行为由模块参数控制,最常用的是嵌套虚拟化开关 nested;参数会暴露在 /sys/module/<模块>/parameters/ 下,可以临时修改,也可以写进 /etc/modprobe.d/ 永久生效(需要重建 initramfs 并重启)。

基本信息

通用模块kvm
厂商模块kvm_intel(Intel)/ kvm_amd(AMD)
关键参数nested(嵌套虚拟化)、ept/npt 等
参数目录/sys/module/kvm_intel/parameters/
永久生效写入 /etc/modprobe.d/kvm.conf 后重建 initramfs 并重启

典型使用场景

  • 确认宿主是否加载了 KVM 模块与硬件辅助支持
  • 在虚机里再跑虚机(嵌套虚拟化)做实验或搭建测试平台
  • 调整模块参数验证性能或兼容性问题
  • 排障虚机启动报错,确认是否为模块参数导致
  • 自动化部署时把嵌套开关固化到镜像或配置管理里

查看与临时开启嵌套虚拟化

查看与临时开启嵌套虚拟化
lsmod | grep kvm                            # 确认已加载的模块
cat /sys/module/kvm_intel/parameters/nested  # 期望 Y 或 1
sudo modprobe -r kvm_intel && sudo modprobe kvm_intel nested=1   # 临时开启,需先停掉虚机
cat /etc/modprobe.d/kvm.conf                 # 永久配置:options kvm_intel nested=1
sudo dracut -f && sudo reboot                # RHEL 系重建 initramfs 后重启生效

模块与参数读法

模块/参数作用注意
kvm虚拟化基础模块缺失时 /dev/kvm 不存在,虚机无法加速
kvm_intelIntel 平台的硬件辅助模块与 kvm_amd 互斥,取决于 CPU 厂商
kvm_amdAMD 平台的硬件辅助模块参数名与 Intel 平台略有差异
nested控制嵌套虚拟化是否允许关闭时虚机内看不到 vmx/svm 标志
ept/npt二级地址转换相关参数关闭会影响虚机内存性能
modprobe -r 卸载厂商模块时会因虚机在运行而拒绝执行;永久生效需写入 /etc/modprobe.d/kvm.conf 并重建 initramfs 后重启。
嵌套虚拟化的实际能力还取决于外层平台:公有云实例是否开放 CPU 虚拟化标志由厂商与实例规格决定,嵌套参数打开也不代表一定可用。

操作顺序与注意事项

  • 先 lsmod 确认模块已加载、/dev/kvm 存在,再谈参数调整
  • 临时改参数前先停掉该宿主上的所有虚机,卸载模块会被直接拒绝
  • 确认参数写入 /etc/modprobe.d 后重建 initramfs,重启后复查参数值
  • 用同一套配置管理覆盖所有宿主,避免部分主机开启、部分未开启
  • 记录变更时间与验证结果,嵌套类问题往往在几天后才暴露

易错点

  • 用 rmmod 强行卸载导致宿主上虚机全部中断
  • 忘记嵌套开关在宿主重启后失效,实验环境隔天又起不来
  • 把嵌套参数写进配置却未重建 initramfs,重启后配置没有生效
  • 在公有云实例上开嵌套却不确认规格支持,白折腾一轮

数据来源与参考

  • Linux 内核文档 Documentation/virt/kvm
  • Red Hat 文档:嵌套虚拟化
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌