当前位置:网站首页 > 容器化与Kubernetes > 正文

kvm是虚拟化技术吗(kvm虚拟化是哪个厂商)



基于内核的虚拟机,Kernel-Based Virtual Machine。以色列公司 Qumranet 开发,于 2007 年 2 月被正式合并到 Linux2.6.20 核心中。

KVM 基于虚拟化扩展(Intel VT-x 或 Amd-V)的 x86 硬件,是 Linux 完全原生的全虚拟化解决方案。

在 KVM 架构中,虚拟机实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度。实际上,每个虚拟 CPU 显示为一个常规的 Linux 进程。这使得 KVM 能够享受 Linux 内核的所有功能。

KVM 本身不执行任何模拟,需要用户空间成程序通过 dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟 IO,并将它的视频显示映射回宿主的显示屏。目前,这个程序就是 Qemu 。

KVM 模块是 “KVM 虚拟机” 的核心部分。其主要功能是初始化 CPU 硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚拟客户机的运行提供一定的支持。

为了软件的简洁性并保证其性能,KVM 仅支持硬件虚拟化。“CPU 虚拟化” 和 “Memory 虚拟化” 都是由 KVM 模块完成。

QEMU 全称是 "Quick Emulator"。它是一个开源的机器模拟器和虚拟化环境,能够模拟多种处理器架构,广泛用于开发、测试、虚拟化和其他应用场景。

它是一个完整的可以运行的软件,非常灵活且可移植,能够模拟一台能够独立运行操作系统的虚拟机。

虚拟机认为自己在和硬件打交道,但其实是和 Qemu 模拟出来的硬件打交道,Qemu 再将这些指令转译给真正的硬件。

QEMU 对虚拟机的模拟是通过纯软实现的,所有指令都要经过 Qemu 处理,导致性能很低。

实际上,大多数的做法都是配合 KVM 来完成虚拟化工作,KVM 是硬件辅助的虚拟化技术,主要负责比较繁琐的 CPU 和 Memory 虚拟化,而 Qemu 负责 IO 虚拟化,两者合作各自发挥自身的优势,相得益彰。

在支持 Qemu 本身编译运行的平台上就可以实现虚拟机的功能,虚拟机甚至可以和宿主机并不是同一个架构。

作为一个存在已久的虚拟机,Qemu 代码中有整套的虚拟机实现,包括 CPU 虚拟化、Memory 虚拟化以及 KVM 使用到的虚拟设备模拟(如网卡、显卡、存储控制器和硬盘等)。

左侧部分是一个标准的 Linux 操作系统,KVM 内核模块在运行时按需加载进入内核空间运行。

KVM 本身不执行任何设备模拟,需要用户空间程序 Qemu 通过 /dev/kvm 接口设置一个虚拟客户机地址空间,向它提供模拟的 IO 设备,并将它的视频显示映射回宿主机的显示屏。

为了简化开发和进行代码重用,KVM 在 Qemu 基础上进行了修改。虚拟机运行期间,Qemu 会通过 KVM 模块提供的系统调用进入内核,由 KVM 模块负责将虚拟机置于处理器的特殊模式运行。遇到虚拟机进行输入输出操作,KVM 模块会从上次的系统调用出口处返回 Qemu,由 Qemu 负责解析和模拟这些设备。

从 Qemu 角度来看,Qemu 使用了 KVM 模块的虚拟化功能,为自己的虚拟机提供硬件虚拟化的加速,从而极大提高了虚拟机的性能。除此之外,虚拟机的配置和创建、虚拟机运行依赖的虚拟设备、虚拟机运行时的用户操作环境和交互,以及一些针对虚拟机的特殊技术(诸如动态迁移),都是由 Qemu 自己实现的。

Qemu 是一个独立的虚拟化解决方案,通过 Intel-VT 或 AMD SVM 实现全虚拟化,安装 Qemu 的系统,可以直接模拟出另一个完全不同的系统环境,虚拟化的创建通过 Qemu-image 即可完成。

Qemu 本身可以不依赖于 KVM,但是如果有 KVM 的存在并且硬件(处理器)支持如 Intel VT 的功能,那么 Qemu 在对处理器虚拟化这一块可以利用 KVM 提供的功能来提升性能。

简单来说:

CPU 和 Memory 的虚拟化是由 HostOS Linux 内核中的 KVM 模块完成。

虚拟机的 IO 和视频映射由用户空间中的 Qemu 模拟器完成。

Qemu 可以通纯软的方式来模拟虚拟机,但是这样性能太低了。为了提高性能,Qemu 将对 CPU 和 Memory 的虚拟化借助 KVM 实现,因此 KVM 位于 Linux 内核中,可以直接对 CPU 和 Memory 实现虚拟化功能。这样,虚拟化的性能就大大提升了。

虚拟机以及镜像文件的操作管理主要还是 Qemu 负责,所以平时在 console 使用的还是 qemu 命令。

到此这篇kvm是虚拟化技术吗(kvm虚拟化是哪个厂商)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 重启docker守护进程不关闭容器(docker 重启会不会影响正在运行的容器)2025-10-03 18:45:09
  • 启动docker容器命令失败(docker容器启动失败怎么查找原因)2025-10-03 18:45:09
  • docker run启动容器(dockerfile容器启动命令)2025-10-03 18:45:09
  • latex代码转换成pdf(latex代码转化为word)2025-10-03 18:45:09
  • kubernetes英语怎么读(kubectl怎么读)2025-10-03 18:45:09
  • rknn模型可视化(risk score 可视化)2025-10-03 18:45:09
  • kubernetes日志收集(kubectl logs查看日志)2025-10-03 18:45:09
  • 公司阶级分化(公司阶级分化严重)2025-10-03 18:45:09
  • 字符编码转化(字符编码转化为数字)2025-10-03 18:45:09
  • kubelet怎么发音(kubernetes发音)2025-10-03 18:45:09
  • 全屏图片