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"

  • 运行以下命令启用:

    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)

VirtualBox中Ubuntu 22.04 Server支持kvm的更多相关文章

  1. VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题

    VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题   在VirtualBOx虚拟机中Ubuntu 14.04设置屏幕分辨率,怎么点都没反应. 方法一:安装与你的Ubuntu-Gu ...

  2. 记一次Ubuntu 16.04 server安装中的坑

    最近博主搞了一台迷你主机,又刚好有时间去折腾,所以我打算把这台机子打造成一台迷你服务器,用来跑跑爬虫.挂挂网站 介于我我这台机子的配置比较垃圾(intel J1900+4G+64G),跑起Window ...

  3. Qemu/Limbo/KVM镜像 Ubuntu 22.04 精简版,可运行Windows软件,内存占用不到200M

    镜像特征: Ubuntu 22.04系统 内置Wine 7.8,可运行大量Windows 软件 高度精简,内存占用仅200M不到. 自制UI,Windows3.1风格. 完全开源 镜像说明: 用户名为 ...

  4. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(三)——计算节点的安装

    序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 计算节点: 1.准备结点 安装好ubuntu 12.04 Server 64bits后,进入ro ...

  5. Ubuntu 12.04 Server OpenStack Havana多节点(OVS+GRE)安装

    1.需求 节点角色 NICs 控制节点 eth0(10.10.10.51)eth1(192.168.100.51) 网络节点 eth0(10.10.10.52)eth1(10.20.20.52)eth ...

  6. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】——序

    OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE](一)——控制节点的安装 OpenStack Havana 部署在Ubuntu 12.04 Serve ...

  7. Ubuntu 18.04 server安装+搭建Seacms v10.1网站

    0x00 写在前面 以前我天真的认为,ubuntu Desktop会安装了,server就无所谓了,其实完全不然,server还是有一些坑点的. 之所以选择Seacms搭建网站,是因为这个SeaCMS ...

  8. VirtualBox 安装 Ubuntu 20.04 全流程

    VirtualBox 安装 Ubuntu 20.04 全流程 内容概要 这个作业属于哪个课程 2022面向对象程序设计 这个作业要求在哪里 2022面向对象程序设计寒假作业1 这个作业的目标 在虚拟机 ...

  9. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(二)——网络节点的安装

    序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 网络节点: 1.安装前更新系统 安装好ubuntu 12.04 Server 64bits后,进 ...

  10. OpenStack Havana 部署在Ubuntu 12.04 Server 【OVS+GRE】(一)——控制节点的安装

      序:OpenStack Havana 部署在Ubuntu 12.04 Server [OVS+GRE] 控制节点: 1.准备Ubuntu 安装好Ubuntu12.04 server 64bits后 ...

随机推荐

  1. 【活动访谈】发力数字基座 推动物联创新—航天科技控股集团AIRIOT4.0平台发布会活动专访

    近日,由航天科技控股集团股份有限公司主办的"数字基座 智慧物联-AIRIOT4.0平台发布会"在北京圆满落幕.航天三院科技委总工程师王连宝应邀出席本次会议并接受媒体采访,共同参与访 ...

  2. Visual Studio编程效率提升技巧集(提高.NET编程效率)

    前言 本文大姚将为你介绍一些Visual Studio的使用技巧和建议,旨在帮助.NET开发者更加高效地利用Visual Studio进行编程工作.无论你是.NET初学者还是经验丰富的.NET开发者, ...

  3. docker构建镜像——Dockerfile

    from RUN CMD EXPOSE LABEL ENV COPY 格式 COPY [--chown=<用户>:<组>]<源>...<目的> COPY ...

  4. taro 使用taro中的vue来完成小程序的开发

    网址:https://taro-docs.jd.com/taro/docs/README 2.1.简介 Taro 是一个开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发 ...

  5. INFINI Labs 产品更新 | Console 告警中心 UI 全新改版,新增 Dashboard 全屏模式等功能

    本次 INFINI Labs 产品更新主要发布 Console v1.7.0,重点优化了 Console 告警中心和数据看板 Dashboard 可视化功能.详细介绍如下: 优化告警中心 UI 上个版 ...

  6. 5 分钟小工具:使用 dive 分析 docker 镜像

    需求 拿到一个镜像之后,我想知道: 分层查看镜像里都有哪些文件 各层使用了什么命令构建的这个镜像 镜像里比较大的文件有哪些(可能需要优化) dive 工具介绍 dive 工具可以做这些分析.dive ...

  7. Mybatis if判断中使用了Ognl关键字导致报错解决方法

    mybatis xml中使用OGNL解析参数,如果直接使用了关键字则会导致解析失败. 常见的关键字有: 字段 mybatis关键字 bor (字符|)的英文 xor 字符^的英文 and 字符& ...

  8. spring事务传递特性-REQUIRES_NEW和NESTED

    spring对于事务的实现的确是它的一大优点,节省了程序员不少时间. 关于事务,有许多可以聊的内容,例如实现方式.实现原理.传递特性等. 本文讨论传递特性中的REQUIRES_NEW,NESTED. ...

  9. apisix~14在自定义插件中调用proxy_rewrite

    在 Apache APISIX 中,通过 proxy-rewrite 插件来修改上游配置时,需要确保插件的执行顺序和上下文环境正确.你提到在自己的插件中调用 proxy_rewrite.rewrite ...

  10. 什么是spring,它能够做什么?

    1.什么是SpringSpring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情. ...