KVM理论(1)

KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine):

是一种开源的虚拟化解决方案,它是基于Linux内核的虚拟化技术

允许在一台物理服务器上同时运行多个虚拟机,每个虚拟机可以独立运行不同的操作系统。

利用了Linux内核的虚拟化扩展(Intel VT或AMD-V)来提供硬件辅助虚拟化,这使得虚拟机的性能接近于原生系统。

KVM的工作原理:

将Linux内核转变为一个虚拟化管理程序,称为Hypervisor,结合硬件虚拟化技术和 Linux 内核的虚拟化模块,创建出一个虚拟化层,将物理服务器划分为多个虚拟机,并为每个虚拟机提供一个虚拟化的环境,从而实现资源共享和隔离。

Hypervisor负责管理和分配物理资源给每个虚拟机,并提供虚拟机的隔离性和安全性。

KVM使用QEMU(Quick Emulator)作为虚拟机监控器,为每个虚拟机提供了一个虚拟化的环境,它提供了对虚拟硬件设备的模拟和管理。

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

kvm架构 :

  • Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O 设备驱动等),被 KVM 置于一种受限制的 CPU 模式下运行。
  • KVM:运行在内核空间,提供CPU 和内存的虚级化,以及客户机的 I/O 拦截。Guest 的 I/O 被 KVM 拦截后,交给 QEMU 处理。
  • QEMU:修改过的为 KVM 虚机使用的 QEMU 代码,运行在用户空间,提供硬件 I/O 虚拟化,通过 IOCTL /dev/kvm 设备和 KVM 交互。

QEMU-KVM:
是一个纯软件实现的虚拟化系统,所以其性能低下。

VM 运行期间,QEMU 会通过 KVM 模块提供的系统调用进入内核,由 KVM 负责将虚拟机置于处理的特殊模式运行。遇到虚机进行 I/O 操作,KVM 会从上次的系统调用出口处返回 QEMU,由 QEMU 来负责解析和模拟这些设备。

从 QEMU 的角度看,也可以说是 QEMU 使用了 KVM 模块的虚拟化功能,为自己的虚机提供了硬件虚拟化加速。除此以外,虚机的配置和创建、虚机运行说依赖的虚拟设备、虚机运行时的用户环境和交互,以及一些虚机的特定技术比如动态迁移,都是 QEMU 自己实现的。

KVM:
KVM 内核模块在运行时按需加载进入内核空间运行。KVM 本身不执行任何设备模拟,需要 QEMU 通过 /dev/kvm 接口设置一个 GUEST OS 的地址空间,向它提供模拟的 I/O 设备,并将它的视频显示映射回宿主机的显示屏。它是KVM 虚机的核心部分,其主要功能是初始化 CPU 硬件,打开虚拟化模式,然后将虚拟客户机运行在虚拟机模式下,并对虚机的运行提供一定的支持。

 KVM如何实现硬件加速虚拟化

 KVM是一种基于Linux内核的虚拟化技术,它通过利用处理器的硬件虚拟化扩展来实现硬件加速虚拟化。具体来说,KVM利用了Intel的VT(Virtualization Technology)和AMD的AMD-V(AMD Virtualization)等硬件虚拟化扩展。

KVM的硬件加速虚拟化实现主要包括以下几个方面:

1. 虚拟化扩展支持:KVM利用处理器的硬件虚拟化扩展,如Intel的VT-x和AMD的AMD-V,来提供硬件级别的虚拟化支持。这些扩展提供了一组新的指令和特权级别,使得虚拟机可以直接运行在处理器的特权级别上,而不需要通过软件模拟。

2. 虚拟机监控器(VMM):KVM通过在Linux内核中实现一个轻量级的虚拟机监控器(VMM),将其作为一个内核模块加载到Linux内核中。VMM负责管理和控制虚拟机的创建、销毁、调度和资源分配等操作。

3. 虚拟设备模拟:KVM通过模拟虚拟设备来提供对客户机的硬件访问。例如,KVM可以模拟虚拟的CPU、内存、磁盘、网络接口等设备,使得客户机可以像访问真实硬件一样访问这些虚拟设备。

4. I/O虚拟化:KVM利用虚拟化扩展提供的I/O虚拟化功能,将客户机的I/O请求转发到宿主机的物理设备上。这样,客户机可以直接访问宿主机的物理设备,而无需通过VMM进行中间转发,从而提高了I/O性能。

5. 内存管理:KVM使用内核的内存管理机制来管理虚拟机的内存。它通过使用处理器的页表机制和内存虚拟化扩展,将虚拟机的内存映射到宿主机的物理内存上。

KVM具有以下特点:

1、完全虚拟化:KVM支持硬件辅助虚拟化技术,能够在x86架构的处理器上实现完全虚拟化,使得虚拟机可以直接访问物理硬件,性能较高。

2、集成性:KVM是Linux内核的一部分,可以与Linux内核进行深度集成,充分利用Linux内核的特性,如安全、稳定、高性能等。

3、可扩展性:KVM可以在物理服务器上同时运行大量的虚拟机,满足不同规模的应用需求

 其他虚拟化技术相比,KVM具有以下优势:

1. 性能优越:KVM利用硬件虚拟化扩展(如Intel VT和AMD-V)来提供硬件辅助虚拟化,使得虚拟机的性能接近于物理机。这种硬件加速可以提供更好的性能和更低的延迟。

2. 完全虚拟化支持:KVM可以实现完全虚拟化,即在虚拟机中运行未经修改的操作系统。这意味着几乎所有的操作系统都可以在KVM上运行,包括Windows、Linux、BSD等。

3. 弹性和可扩展性:KVM支持动态添加和删除虚拟机,可以根据需求灵活地调整资源分配。此外,KVM还支持多核心和多线程,可以在多个物理CPU上同时运行多个虚拟机。

4. 安全性:KVM使用Linux内核作为底层,因此可以受益于Linux内核的安全性和稳定性。同时,KVM还提供了安全增强功能,如SELinux(Security-Enhanced Linux)和硬件加密等。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值