kvm简介

  • KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术。

  • 使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。

  • KVM 允许虚拟机直接访问物理硬件资源,从而提供出色的性能和稳定性,同时还支持许多常见的操作系统和应用程序。

  • KVM 使用 QEMU (Quick Emulator) 作为其默认的虚拟机监控程序。

  • KVM 支持多种嵌入式和云计算场景,并且得到了广泛的应用。

  • KVM使用硬件虚拟化技术,即通过 intel VT-x 和 AMD-V 等 CPU 虚拟化指集的支持,将虚拟化性能提升到接近原生性能。

在虚拟机中启用kvm

环境

  • 宿主机系统: windows11家庭版

  • Virtualbox版本:7.0

  • 虚拟机系统:Ubuntu 22.04 Server

详细过程

1. 查看是否支持kvm

在需要查看是否支持kvm的主机(本情景下为虚拟机)上使用如下命令:

egrep -c '(vmx|svm)' /proc/cpuinfo

即输出/proc/cpuinfo中出现vmxsvm的行数,其中:

  • vmx 是Intel处理器支持虚拟化技术(VT-x)的标识。

  • svm 是AMD处理器支持虚拟化技术(AMD-V)的标识。

若返回的值大于0,则支持,否则不支持。

最开始时,我的返回结果为0,即不支持。解决方案是在VirtualBox对该虚拟机打开嵌套 VT-x/AMD-V

2. 修改Virtualbox设置

欲使虚拟机支持,需在VirtualBox的设置-系统-处理器中勾选启用嵌套 VT-x/AMD-V,但最开始勾选框为灰色,无法启用:

3. 启用嵌套 VT-x/AMD-V

使用VBoxManage工具开启(先把虚拟机关机):

  • 在VirtualBox安装目录下应该有VBoxManage.exe程序

  • 在命令行中运行:

    VBoxManage.exe list vms
    

    查看已有虚拟机。以我的为例,返回结果为:

    “ubuntu2204compute1” {9718367d-93a4-42f7-a69d-3a94f9680454}

  • 运行以下命令启用:

    VBoxManage.exe modifyvm "ubuntu2204compute1" --nested-hw-virt on
    
  • 运行完则已经成功启用(此处为灰色是因为虚拟机已经开机):

注:运行上述命令后,界面会显示已勾选,但实际上未必真的启用了,可能只是UI显示。

4. 再次查看是否支持

再次打开虚拟机,查看是否支持:

egrep -c '(vmx|svm)' /proc/cpuinfo

第一次进行上述操作后 ,我的结果为6,已经支持kvm。

遇到问题并解决

步骤4仍显示为0

运行完“详细过程”的步骤后,步骤3中已显示启用,但步骤4中仍显示为0。(我关机重启后便遇到了该问题)

解决:

关闭系统冲突项:

  1. Hyper-V:微软官网中说明了Hyper-V会与虚拟机冲突(禁用 Hyper-V 以运行虚拟化软件 - Windows Client | Microsoft Learn):

    许多第三方虚拟化应用程序无法与 Hyper-V 协同工作。 受影响的应用程序包括 VMware Workstation 和 VirtualBox。 这些应用程序可能无法启动虚拟机,或者可能会回退到较慢的模拟模式。

    运行 Hyper-V 虚拟机监控程序时会引入这些故障。 某些安全解决方案也依赖于虚拟机监控程序,例如:

    • Device Guard
    • Credential Guard

    许多虚拟化应用程序依赖于大多数新式处理器上可用的硬件虚拟化扩展。 它包括 Intel VT-x 和 AMD-V。 一次只能有一个软件组件使用此硬件。 无法在虚拟化应用程序之间共享硬件。

    若要使用其他虚拟化软件,必须禁用 Hyper-V 虚拟机监控程序、Device Guard 和 Credential Guard。 如果要禁用 Hyper-V 虚拟机监控程序,请按照后续两个部分中的步骤操作

    由于我的系统为家庭版,故没有默认安装Hyper-V。(我还在网上找了脚本,安装了Hyper-V,再关闭之,结果无效。不推荐这么干。)

  2. Windows虚拟机监控程序平台与虚拟机平台:控制面板-程序-启用或关闭Windows功能,取消勾选Windows虚拟机监控程序平台虚拟机平台

  3. 内核隔离:关闭“内核隔离”

我的情况:
第3步有效。运行完第3步后成功,再将前2项打开依然成功,将第3项打开则失败。

参考资源

  1. 【超详细~KVM】KVM概述、安装及简单操作-------从小白到大神之路之学习运维第91天-CSDN博客
  2. VirtualBox启用嵌套VT-x/AMD-V - 古道轻风 - 博客园 (cnblogs.com)
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐