KVM 虚拟化架构和实现原理

目录

  • 目录
  • KVM虚拟化架构
    • devkvm
    • QEMU
  • OpenstackKVMQEMU 的关系
  • KVM的虚拟化实现

KVM虚拟化架构

KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载的GuestOS。所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的HostOS操作系统层。在这样的环境中HostOS就是一个VMM。

每个由KVM创建的GuestOS都是HostOS(或VMM)上的一个单个进程。而在GuestOS上的User-space中运行的Applications可以理解为就是进程中的线程。

需要注意的是:KVM只是虚拟化解决方案的一部分,想要实现全虚拟化,还需要其他的条件:
1. CPU处理器提供的虚拟化支持(VT-x 硬件辅助虚拟化,可以为GuestOS创建虚拟化处理器,本质是对寄存器的隔离模拟和对指令集的划分)。
2. 内存可以通过kvm虚拟化成独立的虚拟化地址(/dev/kvm)
3. I/O虚拟化(QEMU)

==> KVM虚拟化 = KVM内核模块 + /dev/kvm + QEMU

/dev/kvm

Linux操作系统标准内核中的KVM内核模块生成了一个名为/dev/kvm的设备,有了/dev/kvm设备,使得GuestOS的地址空间(内存地址、磁盘地址)能够独立于标准内核或其他任何GuestOS的地址空间。Linux操作系统目录结构包含的/dev目录树下的设备对于所有User-space进程或线程(无论是在GuestOS上,还是在VMM上)来说都是通用的,但是每个打开/dev/kvm设备的不同的进程或线程,所能使用的都是唯一且各不相同的地址映射(为了支持GuestOS间的隔离)。

KVM内核模块通过/dev/kvm设备提供了内存虚拟化,给予GuestOS与内核或者其他GuestOS相对独立的地址空间。每个GuestOS都有自己的地址空间,并且这些地址空间是在实例化GuestOS时创建映射的。映射给GuestOS的物理内存实际上是映射给这个GuestOS在VMM中相应进程的虚拟内存。
有两种支持Guest地址到Host(VMM)地址的转换方法:

  • 应用LinuxOS维护的一组影子页表(shadow page table)
  • CPU也可以通过在访问未经映射的内存位置时使用VMM(主机内核)来支持内存转换进程。

所以总的来说,/dev/kvm设备的作用就是:将不同的GuestOS之间的地址隔离,或将GuestOS和HostOS(VMM)之间的地址隔离

QEMU

QEMU是一个I/O虚拟化解决方案,能够对一个完整的计算机物理层环境进行虚拟化(EG. 磁盘、图形适配器、网络设备)。

在GuestOS中生成的所有I/O请求都会被QEMU中途截获,并重新发送到QEMU进程模拟的User Mode中。

Openstack、KVM、QEMU 的关系

KVM 用来模拟 CPU 的运行,但缺少了对 Network 和 I/O 的支持。QEMU-KVM 是一个完整的模拟器,它基于 KVM 上,提供了完整的 Network 和 I/O 支持。其中 Openstack 为了跨 VM 性,所以不会直接控制 QEMU-KVM,而是通过 libvit 的库去间接控制 QEMU-KVM 。

KVM的虚拟化实现

KVM内核模块为Linux标准内核引入了一种除现有的Kernel ModeUser Mode之外的新进程模式。这种新模式就称为Guest Mode模式,顾名思义,它用来执行GuestOS的代码。
Linux标准内核的执行模式可以针对不同的运行内容和目的进行定义。Guest Mode的存在就是为了执行GuestOS的代码,但是只针对那些非I/O的代码。I/O代码还需要QEMU来作为支持。

GuestOS可以在两种模式下运行:

  • 在Guest Mode中运行的GuestOS可以支持标准的内核。
  • 在User Mode下运行的GuestOS则支持自己的内核和User-space(Applications)。

相同的是,GuestOS只能够在User Mode下执行I/O操作,而且这是单独使用QEMU-KVM进行管理的。

时间: 2024-09-19 03:24:33

KVM 虚拟化架构和实现原理的相关文章

《Linux KVM虚拟化架构实战指南》——第2章 实战环境的搭建 2.1 实战环境拓扑

第2章 实战环境的搭建 本书是基于Linux KVM的实战指南,所涉及的知识点较多,为了保证实战的效果,需要构建完整的实战环境,特别涉及部分第三方服务器的安装服务,根据需要分为两部分:第一部分实战环境针对红帽企业虚拟化(Red Hat Enterprise Virtualization,RHEV),第二部实战环境针对其他版本的KVM虚拟化. 2.1 实战环境拓扑 Linux KVM虚拟化架构实战指南 RHEV虚拟化对整体平台要求较高,特别是RHEV-H(红帽企业虚拟化主机)无法安装在虚拟设备上,

《Linux KVM虚拟化架构实战指南》——1.3 RHEV虚拟化介绍

1.3 RHEV虚拟化介绍 RHEV(Red Hat Enterprise Virtualization)的中文意思为红帽企业虚拟化.RHEV是RedHat公司推出的功能强大且全面的服务器虚拟化平台,是基于KVM的虚拟化架构. RHEV是一款针对服务器和桌面虚拟化的完整虚拟化管理解决方案,是第一个成熟的.完全开源的企业虚拟化平台.RHEV寻求更好的总拥有成本.更快的投资回报.加快收支平衡,以及从单一供应商解脱出来的虚拟化备选方案. 对于企业级KVM虚拟化,需要的是轻松的KVM管理.高可用性.最佳

《Linux KVM虚拟化架构实战指南》——1.2 KVM虚拟化介绍

1.2 KVM虚拟化介绍 Kernel-based Virtual Machine(基于内核的虚拟机)最初是由以色列的一个创业公司Qumranet开发的,作为他们的VDI产品的虚拟机. 1.2.1 KVM虚拟化技术简介为简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择了基于Linux kernel,通过加载新的模块使Linux Kernel本身变成一个Hypervisor. 2006年10月,在先后完成了基本功能.动态迁移以及主要的性能优化之后,Qumrane

《Linux KVM虚拟化架构实战指南》——2.3 本章小结

2.3 本章小结 本章分为两个部分,详细介绍了RHEV虚拟化实战环境.KVM虚拟化实战环境和实战操作需要的服务器的安装配置. 需要注意的是,RHEV虚拟化架构对DNS解析要求相当严格,安装过程中如果无法解析可能会导致安装无法进行,除可以使用本章介绍的基于Windows Server 2008 R2的Active Directory域服务器提供DNS解析外,也可以使用Linux系统提供的DNS服务.

《Linux KVM虚拟化架构实战指南》——导读

**前言**越来越多的用户考虑在IT环境中实施多种虚拟化hypervisor,开源成为不错的选择.基于内核的虚拟机KVM技术逐渐流行,它由世界最大的Linux提供商红帽支持并推广,还有IBM提供管理技术. 多数主流Linux版本现在都内置KVM,如Red Hat Enterprise Linux,或者将KVM作为独立hypervisor获取,如Red Hat Enterprise Virtualization.红帽的这两个方案都提供KVM虚拟化,但在管理.功能与实施中有重大区别. 目录 **[第

《Linux KVM虚拟化架构实战指南》——第1章 KVM虚拟化概述 1.1XEN虚拟化介绍

第1章 KVM虚拟化概述 Kernel-based Virtual Machine(基于内核的虚拟机)是开源的系统虚拟化模块,从Linux 2.6.20内核之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所以相对于XEN,其核心源码很少,KVM目前在开源系统中大规模使用.本书以Red Hat Enterprise Virtualization(红帽企业虚拟化)为主要平台,配合其他版本的KVM进行介绍. 1.1 XEN虚拟化介绍 XEN虚拟化技术是英国剑桥大学计算机

《Linux KVM虚拟化架构实战指南》——2.2 安装配置RHEV虚拟化所需服务器

2.2 安装配置RHEV虚拟化所需服务器 RHEV虚拟化架构需要DNS.RHEL等服务器支持,本节将搭建一个完整的RHEV虚拟化实战环境. 2.2.1 配置RHEV虚拟化所需服务器一:活动目录服务器 在RHEV虚拟化环境下,DNS服务器相当重要,可以通过安装配置1台Windows服务器或Linux服务器来实现DNS解析功能.由于RHEV虚拟化实战操作会涉及AD活动目录,所以本节的实战操作将使用Windows Server 2008 R2构建AD活动目录服务器,同时提供DNS.DHCP等功能,关于

《Linux KVM虚拟化架构实战指南》——1.4 OpenStack技术介绍

1.4 OpenStack技术介绍 OpenStack是一个云平台管理的项目,它不是一个软件,它是美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目.这个项目由几个主要的组件组合起来完成一些具体的工作. 1.4.1 OpenStack技术简介 OpenStack是一个旨在为公共云及私有云的建设与管理提供软件的开源项目.它的社区拥有超过130家企业及1 350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)

《Linux KVM虚拟化架构实战指南》——1.5 本章小结

1.5 本章小结 本章对基于开源Linux虚拟化所使用的主流技术XEN.KVM以及基于KVM的红帽RHEV虚拟化技术进行了介绍,主要涉及其特点.应用领域.优缺点以及今后的发展趋势,最后对OpenStack进行了简要介绍,使读者对基于开源Linux的虚拟化技术有基本的了解.至于如何选择,读者应根据生产环境的实际情况,多做测试后再决定.