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. C语言:输出大写的三角形字母表(进阶)

    //该程序只支持输入大写字母,输入G,就输出A~G的三角形字母表 /*       从A到Z的输出数量应该是1 3 5 7 9.....       */ 利用这个特性,对空格和字母进行输出 A字母在 ...

  2. kubernets之pod的生命周期容器启动后钩子以及容器结束前钩子

    一 先来介绍容器启动后钩子 1.1  容器启动后钩子,并不是容器启动之后才会执行的操作,而是在容器启动过程中,异步的和容器进行启动的一种钩子它有2种表现形式,包括我们后面提到的容器结束前钩子一样 在一 ...

  3. AIAGC导航(aiagc.com): 最全的AI工具导航网站

    AIAGC导航是一个专注于AI人工智能工具网站推荐的导航网站,可以帮助大家发现最新.最好用.最有趣的AI绘画.AI智能写作助手.AI聊天机器人.AI配音.AI音乐.AI换脸等各种AI工具应用软件,让A ...

  4. Dockerfile PHP镜像制作

    1 PHP镜像制作: 1.1 php-dockerfile FROM centos:7 LABEL maintainer www.chenleilei.net RUN yum install -y c ...

  5. RTMP推流与B帧的关系

    一.H264数据结构 一个原始的H.264 NALU 由一个接一个的 NALU 组成的,而它的功能分为两层,VCL(视频编码层)和 NAL(网络提取层). VCL:包括核心压缩引擎和块,宏块和片的语法 ...

  6. Kafka--Rebalance重平衡

    Rebalance总览 Rebalance触发条件 (1)消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃 (2)消费者组订阅的主题数量发生变更 (3)消费组订阅主题的分区数发生变更 避免 ...

  7. OpenAI正式发布第一个官方.NET版本库的测试版

    尽管 Microsoft 和 OpenAI 长期以来一直是紧密相连的合作伙伴,但他们现在才开始为 .NET 开发人员发布官方 OpenAI 库,加入现有的社区库.这项工作的第一个测试版是支持 .NET ...

  8. 剑指Offer-65.矩阵中的路径(C++/Java)

    题目: 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中的 ...

  9. ABC351

    我多久没更新这个系列了啊 E 把格子分成两类,每一类之间的坐标均可互相走到. 然后将这里面的点都旋转 \(45\) 度,于是这个问题就被转换成曼哈顿距离的问题了. 我们可以把 \(x\) 和 \(y\ ...

  10. ABC330

    D 记录每一行,每一列有多少个 o,然后统计答案即可. code E 想到 \(mex^{i \le n}_{i = 1} a_i \le n\) 这整个题就可做了(赛时因为没想到这个,痛失 \(47 ...