2018-12-16 09:35:52 m0_37329910 阅读数 1323

版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk https://blog.csdn.net/Jmilk/article/details/51853511

目录

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进行管理的。

2017-07-27 01:09:11 achuDk 阅读数 847

KVM 虚拟化介绍及原理

kvm : Kernel-based Virtual Machine

虚拟化的目的:将底层硬件虚拟化,形成一个将既有的可用资源整合起来的大平台,方便在大平台上分隔出多个具有一部分资源的、独立的子空间,在子空间中建立实例,有些类似于磁盘管理的中逻辑卷的功能。

虚拟化技术的分类、主流技术及实现其技术的应用

1.模拟:Emulation ,硬件被模拟后的结果可以和上一层宿主机的硬件在架构上完全不同

Qemu, PearPC, Bochs, …

2.完全虚拟化:Full Virtualization,Native Virtualization

完全虚拟化的特性:

  1. 为了避免在不同虚拟机之间或虚拟机与宿主机之间的特权指令发生冲突,需要将特权指令隔离开,将 CPU “环零(特级权限)” 中的指令以完全软件模拟或者以提供 “环负一” 的方式来执行,如果宿主机CPU等硬件支持 “环负一” 技术,宿主机的特权指令在 “环负一” 执行,虚拟机的特权指令在 “环零” 中执行;如果宿主机不支持 “环负一” 技术,则虚拟机的特权指令依靠纯软件虚拟出的CPU中执行。

  2. 对于完全虚拟化,虚拟机不知道自己运行在其他操作系统之上。

完全虚拟化技术及其实现

  • BT/hvm

  • VMWare Workstation, VirtualBox, VMWare Server, Parallels Desktop, KVM(hvm), XEN(hvm)

3.半虚拟化:Para-Virutalization

特点:

  1. GuestOS明确知道自己运行在其他操作系统或虚拟机之上

  2. 半虚拟化的性能较为接近真实性能,性能损耗较少。

半虚拟化技术的实现 :xen, UML(user-mode linux)

4.容器级虚拟化

特点:抛弃GuestOS的虚拟化内核空间,将宿主机的用户空间切割分离为多个彼此隔离的空间,实现资源分割的目的

主流技术及其实现 :LXC, OpenVZ, libcontainer, runC, rkt, Linux V Servers, Virtuozzo, …

5.库级别虚拟化

如:wine

6.程序级虚拟化

为某程序的运行而实现的虚拟化,如:jvm, pvm, …

主机虚拟化

Emulation, Full Virtualization, Para-Virutalization

  • Type-I:Hypervisor直接运行于硬件;

  • Type-II:Hypervisor运行主机OS之上;

云栈的类别

IaaS, PaaS, SaaS, FWaaS, DBaaS, LBaaS, …

KVM的组件

  • (kvm.ko)/dev/kvm:工作为hypervisor,在用户空间可通过系统调用ioctl()与内核中的kvm模块交互,从而完成虚拟机的创建、启动、停止、删除等各种管理功能

  • qemu-kvm进程:工作于用户空间,用于实现IO设备模拟;用于实现一个虚拟机实例

KVM 架构

KVM模块load进内存之后,系统的运行模式:

  1. 内核模式:GuestOS执行IO类的操作时,或其它的特殊指令操作时的模式;它也被称为“Guest-Kernel”模式

  2. 用户模式:Host OS的用户空间,用于代为GuestOS发出IO请求

  3. 来宾模式:GuestOS的用户模式;所有的非IO类请求

KVM 的工具栈

KVM 两套工具栈

1.原生的工具栈 :Qemu-KVM

其他任何工具栈需要依赖此原生的工具栈才能工作

  • 组件:

    1. qemu-kvm

    2. qemu-img

    3. qemu-io

2. libvirt 工具栈

需要安装 libvirt 程序并启动 libvirtd 服务

  • 组件:

    1. virsh :CLI 接口的管理工具

    2. virt-viewer :virt查看器

    3. virt-manager :GUI 接口的管理工具

    4. virtinst :创建实例的命令行工具

virtinst 包含 virt-install , virt-image , virt-convert , virt-clone 几个子组件

2019-08-25 14:42:53 hzj_001 阅读数 35

1.《关于Linux虚拟化技术KVM的科普 科普一(先用起来!)

2.KVM虚拟机代码揭秘

            《 KVM虚拟机代码揭秘——QEMU代码结构分析》、

             《KVM虚拟机代码揭秘——中断虚拟化》、

             《KVM虚拟机代码揭秘——设备IO虚拟化》、

              《KVM虚拟机代码揭秘——QEMU的PCI总线与设备(上)》、

              《KVM虚拟机代码揭秘——QEMU的PCI总线与设备(下)

               《qemu对虚机的内存管理 (一)

               《qemu对虚机的内存管理(二)

               《KVM MMU EPT内存管理

 

3.From OenHan

              《KVM源代码分析1:基本工作原理》、

              《KVM源代码分析2:虚拟机的创建与运行》、

              《KVM源代码分析3:CPU虚拟化》、

              《KVM源代码分析4:内存虚拟化》、

              《KVM源代码分析5:IO虚拟化之PIO》               

4.From humjb_1983

                《虚拟化相关概念

                《虚拟机中GUEST OS时钟(TIMEKEEP)问题的探讨

                《影子页表Shadow Page Table

                《Intel虚拟化相关技术(网络)

                《KVM基本原理和架构一-概念和术语

                《 KVM基本原理和架构二-基本原理

                《 KVM IO性能测试数据

                《KVM基本原理及架构三-CPU虚拟化

                《KVM基本原理及架构四-内存虚拟化

                 《KVM基本原理及架构六-KVM API

                  《KVM基本原理及架构七-KVM内核模块中重要的数据结构

                  《qemu-kvm-0.12.3主要函数路径

 

                  

5.From 世民谈云计算

               KVM 介绍(1):简介及安装

               KVM 介绍(2):CPU 和内存虚拟化

               KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]

               KVM 介绍(4):I/O 设备直接分配和 SR-IOV [KVM PCI/PCIe Pass-Through SR-IOV]

               KVM 介绍(5):libvirt 介绍 [ Libvrit for KVM/QEMU ]

               KVM 介绍(6):Nova 通过 libvirt 管理 QEMU/KVM 虚机 [Nova Libvirt QEMU/KVM Domain]

               KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)

               KVM 介绍(8):使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 [Nova Libvirt QEMU/KVM Live Migration]

               

2013-11-12 09:23:17 lihang421 阅读数 971

kvm虚拟化技术:实战与原理解析


在具体内容上,本书不仅系统介绍了 KVM虚拟机的功能、特性和使用方 法,而且还深入地剖析了 KVM虚拟机的核心技术和工作原理,对 KVM做了全面而透彻的讲解。


对其内容详细阅读

2017-04-08 12:42:30 weixin_36908057 阅读数 1220

《kvm虚拟化技术 实战与原理解析》

1、kvm原理简介

 x86平台虚拟化技术中,新引入的虚拟化层通常称为虚拟机监控器(Virtual Machine Monitor,VMM),也叫做Hypervisor.
 宿主机是真实的物理平台,客户机是虚拟出来的平台。
 虚拟化实现的技术方式有多种,比如软件虚拟化和硬件虚拟化,再比如准虚拟化和全虚拟化。准虚拟化需要修改客户机操作系统。
 Xen是开源准虚拟化技术的例子,是取代内核由自身管理系统资源的架构。
 KVM全称 kernel Virtual Machine,内核虚拟机。它作为一个模块,成为linux内核的一部分。它是全虚拟化的解决方案,部分准虚拟化。
 虚拟级监控器的主要职能是管理真实的物理平台,并为每个虚拟客户机提供对应的虚拟硬件平台。
 虚拟机的架构分为类型一和类型二。类型一是虚拟机在系统上电后首先加载运行虚拟机监控程序,而传统的操作系统运行在创建的虚拟机上。类型二是系统上电后运行一般意义上的操作系统,虚拟机监控程序作为特殊的应用程序,视作操作系统功能的扩展。
 虚拟机的创建和运行是一个用户空间的应用程序(QEMU)和KVM模块相互配合。大部分的输入和输出设备交给QEMU来负责。

2、kvm核心基础功能

  1. 内存管理
  2. 存储
  3. cpu
  4. 网络
  5. 显示

3、kvm管理功能

它们一般对qemu-kvm命令进行封装和功能增强,提供更友好的用户交互接口。基于libvirt API, openstack提供一个模块化的web用户界面。libvirt API为其他虚拟化管理工具提供一套通用的API管理包括qemu/kvm的多种Hypervisor.

4、kvm性能测试以及参考数据

  1. 内存性能测试
    1. 磁盘I/O性能测试
    2. cpu性能测试
    3. 网络性能测试

开源KVM虚拟化技术

阅读数 1036

没有更多推荐了,返回首页