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的主机(本情景下为虚拟机)上使用如下命令:

  1. 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程序

  • 在命令行中运行:

    1. VBoxManage.exe list vms

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

    "ubuntu2204compute1"

  • 运行以下命令启用:

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

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

4. 再次查看是否支持

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

  1. 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. Axure和墨刀——两款原型设计工具介绍

    Axure与墨刀是两款在原型设计领域广受欢迎的工具,各具特点和优势: Axure: Axure RP是一款功能强大的原型设计工具,广泛应用于交互设计和用户体验设计领域.它提供了丰富的交互元素库.高保真 ...

  2. 当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

    一.写在开头 依稀记得多年以前的一场面试中,面试官从Java并发编程问到了锁,从锁问到了原子性,从原子性问到了Atomic类库(对着JUC包进行了刨根问底),从Atomic问到了CAS算法,紧接着又有 ...

  3. winform cefsharp chart.js 再winform上使用chart.js 绘制动态曲线

    CefSharp 是一款开源的使用.net平台基于谷歌的 封装浏览器组件,可用于winform wpf . chart.js 也是一款开源的图表展示组件. 我所作的就是使用这两个组件再winform上 ...

  4. wblockCloneObjects 写块克隆的使用

    写块克隆可以把当前数据库的实体写入到另一个dwg文件中去.用法根deepclone类似,不过deepclone只能复制到同一数据库中,而写块克隆是在不同数据库中进行复制的.写块克隆也算是深度克隆,能把 ...

  5. redis 使用lua脚本 一次性获取多个hash key 字段值

    客户端命令行代码: eval "local rst={};local field='schoolid'; for i,v in pairs(KEYS) do rst[i]=redis.cal ...

  6. 基于 Kubernetes 的 CICD 基础设施即代码

    在上一篇基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以 ...

  7. QShop商城-快速开始-uni-app小程序

    QShop商城-快速开始-uni-app小程序 工具准备 HBuilderX 此项目为UniApp开发,开发工具为HBuilderX,下载地址: https://hx.dcloud.net.cn/Tu ...

  8. Canny边缘检测实现(Opencv C++)

    Canny边缘检测是Canny在1986年提出来的,目前仍是图像边缘检测算法中最经典.先进的算法之一.canny方法基于如下三个基本目标: 1. 低错误率:所有边缘都应被找到,并且不应有虚假响应. 2 ...

  9. 探索Native Plugins:开启大模型的技能之门

    前言 上一章节我们了解了一下Semantic Kernnel中Plugins插件的概念以及学习了的 Semantic Kernel 模板插件的创建,本章节我们来学习 Native Plugins 原生 ...

  10. javascript 生成器和迭代器

    前置知识 生成器函数会返回一种称为Generator的迭代器 迭代器是一个对象,定义一个序列,并在终止时返回一个返回值 Symbol.iterator为每一个对象定义了默认的迭代器,可以被for..o ...