kvm虚拟化

本文介绍了两种虚拟化方式,包括完全虚拟化和半虚拟化,并详细讲解了KVM(Kernel-based Virtual Machine)的原理和工作流程。KVM是一种完全虚拟化的解决方案,依赖硬件支持,如Intel VT或AMD V技术。它与QEMU结合,通过libkvm接口在Linux内核中创建和管理虚拟机。QEMU则模拟硬件,提供I/O设备支持。此外,还涵盖了QEMU的特性以及KVM的安装配置和虚拟机管理命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现虚拟化的方式两种:

1、vmm (Virtual Machine Monitor,虚拟机监控器 )直接运行在硬件平台上,控制所有硬件并管理客户的操作系统,如xen,vmware
2、vmm运行在一个传统的操作系统里,在系统之上运行一套软件,在软件之上运行客户的操作系统,如kvm
完全虚拟化:
通过客户机和宿主机直接通过一个虚拟化逻辑层hypervisor来完全模拟底层硬件细节,客户机的操作系统无需任何修改
在这里插入图片描述
半虚拟化:
事先修改客户机操作系统内核,共享宿主机底层硬件来实现的,虚拟主机内核能直接管理底层硬件
在这里插入图片描述
相比完全虚拟化使用灵活,性能不够强,半虚拟化直接管理底层硬件,性能很好,但需要修改系统内核,使用繁琐

一、 KVM概述

KVM是Kernel-based Virtual Machine的缩写,即基于Linux内核的虚拟机,是一种的完全虚拟化的解决方案,也就是说普通的操作系统不需经过修改就可以在KVM上运行。它使用linux自身的调度器进行管理,所以相对于xen,其核心源码很少。KVM的虚拟化需要硬件的支持(如intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。

准确来说,KVM是Linux的一个模块。可以用modprobe去加载KVM模块。加载了模块后,就可以使用KVM模块创建虚拟机,实现虚拟内存的分配,虚拟CPU寄存器的读写以及管理虚拟CPU的运行。但仅有KVM模块是远远不够的,因为用户无法直接控制内核模块去作事情,所以还必须有一个用户空间的工具才行。这个用户空间的工具,开发者选择了已经成型的开源虚拟化软件 QEMU,使用它来模拟PC硬件的用户空间组件,模拟I/O设备模型以及提供访问外设的途径。后边会详细的介绍QEMU,这里先知道它用了QEMU就好了。

KVM基本架构如下图所示。
在这里插入图片描述
其中KVM被加入到标准的Linux内核中,被组织成Linux中标准的字符设备(/dev/kvm)。Qemu利用KVM提供的LibKvm应用程序接口,通过ioctl系统调用创建和运行虚拟机。KVM Driver使得整个Linux成为一个虚拟机监控器。并且在原有的Linux两种执行模式(内核模式和用户模式)的基础上,新增加了客户模式,客户模式拥有自己的内核模式和用户模式。在虚拟机运行下,三种模式的分工如下:

客户模式:执行非I/O的客户代码,虚拟机运行在客户模式下。

内核模式:实现到客户模式的切换,处理因为I/O或者其它指令引起的从客户模式的退出,KVM Driver工作在这种模式下。

用户模式:代表客户执行I/O指令Qemu运行在这种模式下。

## KVM的具体工作流程如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值