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. Scala中集合中的View用法

    设想以下这个计算 def eval(i: Int): Option[Int] = { println(s"invoke with $i") if (i % 2 == 0) { No ...

  2. Github打不开解决办法(最新有效)

    Github打不开解决办法(最新有效) 1.  先看没解决之前的截图: 2.  解决方法(手动修改DNS): 2.1  以win11为例,第一步:打开 设置 - 网络和Internet,找到 高级网络 ...

  3. Asp-Net-Core开发笔记:使用原生的接口限流功能

    前言 之前介绍过使用 AspNetCoreRateLimit 组件来实现接口限流 从 .Net7 开始,AspNetCore 开始内置限流组件,当时我们的项目还在 .Net6 所以只能用第三方的 现在 ...

  4. sqlServer 重复数据项处理,只选其中一条,保留一条

    select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....]) --删除 from tab ...

  5. 微信小程序预约视频号直播

    一.概述 微信小程序提供了可以唤起预约视频号直播弹窗的接口 reserveChannelsLive,该接口接收一个参数 noticeId,通过 getChannelsLiveNoticeInfo 接口 ...

  6. React 中的 useRef 与 useState

    React 是一个流行的 JavaScript 库,用于构建用户界面.它提供了几个钩子,使开发人员能够管理状态并执行副作用. React 中两个常用的钩子是 useRef 和 useState .虽然 ...

  7. Understanding Swift’s value type thread safety - 代码分析(二)

    示范代码 ` func testScenarioA2() throws { var store: Int = 100 DispatchQueue.concurrentPerform(iteration ...

  8. NOIP模拟95(多校28)

    T1 嗑瓜子 解题思路 \(f_{i,j}\) 表示操作 \(i\) 次,拿走了 \(j\) 个瓜子的概率,转移就比较直接了: \[f_{i+1,j+1}\leftarrow f_{i,j}\time ...

  9. 一款WPF的精简版MVVM框架——stylet框架的初体验(包括MVVM绑定、依赖注入等操作)

    今天偶然知道一款叫做stylet的MVVM框架,挺小巧的,特别是它的命令触发方式,简单粗暴,让人感觉很巴适,现在我做一个简单的demo来顺便来分享给大家. 本地创建一个WPF项目,此处我使用.NET ...

  10. 【二分答案】P2390 地标访问

    \(\color{black}\text{P2390 地标访问 (传送门)}\) 学过区间 DP 的,看到这题的第一反应都是:访问的地标一定是一个区间,并且在不断扩大,区间 DP!可看到数据范围,又瞬 ...