虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。
物理机我们一般称为宿主机(Host),宿主机上面的虚拟机称为客户机(Guest)

KVM属于完全虚拟化,功能组件上由两部分组成,KVM Driver(内核态)和Qemu(用户态)。KVM Driver负责模拟虚拟机的CPU运行,内存管理,设备管理等;Qemu则模拟虚拟机的IO设备接口以及用户态控制接口。

Qemu在最上层,将虚拟机的整体呈现到host用户上,可以理解成客户模式;Qemu通过中间层libkvm或者ioctl等控制/dev/kvm设备接口,从而掌握内核态中kvm驱动进行的资源分配,即用户态模式;

kvm驱动接收用户态操作指令,控制虚拟机在内核态的资源分配,称之为内核模式。在HOST里面,客户模式的体现就是一个虚拟机内部环境,用户态则是虚拟机进程。

KVM工作原理:用户模式的QEMU通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLAUCH指令进入客户模式。加载Guest OS并执行。如果Guest OS发生外部中断或者影子页表却也之类的情况,会暂停Guest OS的执行,退出客户模式进行异常处理,执行客户代码。如果发生I/O事件或者信号队列有信号到达,就会进入用户模式处理。

KVM 由处于内核态的 KVM 模块和用户态的 QEMU 两部分构成。内核模块实现了 CPU 和内存虚拟化等决定关键性能和核心安全的功能并向用户空间提供了使用这些功能的接口,QEMU 利用 KVM 模块提供的接口来实现设备模拟、 IO 虚拟化和网络虚拟化等。单个虚拟机是宿主机上的一个普通 QEMU 进程,虚拟机中的 CPU 核(vCPU)是 QEMU 的一个线程,VM 的物理地址空间是 QEMU 的虚拟地址空间

因此在虚拟机运行时,有三种模式:

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

用户模式:代表用户执行I/O指令,QEMU运行在这个模式下。

内核模式:实现客户模式的切换,处理因为I/O或者其他指令引起的从客户模式退出(VM_EXIT)。kvm模块运行在这个模式下。

kvm模型中,每一个Guest OS都是作为一个标准的Linux进程,都可以使用Linux进程管理命令管理。

KVM原理的更多相关文章

  1. KVM原理及使用

    Qemu 和 Qemu-kvm Qemu: http://qemu-project.org/Download Qemu-kvm:https://sourceforge.net/projects/kvm ...

  2. 《KVM虚拟化技术实战和原理解析》读书笔记(十几篇)

    第一章和第二章 第一章 虚拟化和云计算 Saas(软件即服务):将已经部署好的软件作为一种服务来提供,比如:Google Docs, Google Apps Paas(平台即服务):将开发环境作为一种 ...

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

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  4. kvm 虚拟化的使用

    kvm原理:基于内核空间虚拟化,加载内核模块,来做到虚拟化(简称内核空间).基于qemu连接内核,driver驱动连接kvm的API接口(简称用户空间): hypervisor 管理硬件设备,传统的虚 ...

  5. KVM(八)使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机

    1. QEMU/KVM 迁移的概念 迁移(migration)包括系统整体的迁移和某个工作负载的迁移.系统整理迁移,是将系统上所有软件包括操作系统完全复制到另一个物理机硬件机器上.虚拟化环境中的迁移, ...

  6. kvm详细介绍

    KVM详解,太详细太深入了,经典 2016-07-18 19:56:38 分类: 虚拟化 原文地址:KVM详解,太详细太深入了,经典 作者:zzjlzx KVM 介绍(1):简介及安装 http:// ...

  7. 虚拟化原理到K8s实践经验路线总结

    以下这些内容均为自行学习总结的内容,很多内容没有写概括介绍,看起来可能会有些突兀,但并不影响整体性,我自己的学习经验告诉我,这些内容还仅仅是最精简的核心部分,周边还有很多可扩展内容,主要是操作系统生态 ...

  8. Qemu/kvm虚拟化源码解析学习视频资料

    地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践​https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...

  9. 使用BAT方法结束进程

    @echo off taskkill /f /im GAM.exe taskkill /f /im GCL10.exe http://www.cnblogs.com/FKdelphi/p/501540 ...

随机推荐

  1. Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑

    ----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...

  2. 最大连续数列和 牛客网 程序员面试金典 C++ Python

    最大连续数列和 牛客网 程序员面试金典 C++ Python 题目描述 对于一个有正有负的整数数组,请找出总和最大的连续数列. 给定一个int数组A和数组大小n,请返回最大的连续数列的和.保证n的大小 ...

  3. hdu 5083 Instruction (稍比较复杂的模拟题)

    题意: 二进制指令转汇编指令,汇编指令转二进制指令. 思路: 额,条理分好,想全,思维不能乱. 代码: int findyu(char yu[50],char c){ int l=strlen(yu) ...

  4. Nessus home版插件更新

    1,进入服务器停止服务 service nessusd stop 2,进入目录执行命令获取Challenge code cd /opt/nessus/sbin/ ./nessuscli fetch - ...

  5. Mysql 5.7 集群部署,keepalived

    参考文章: https://blog.csdn.net/f18770366447/article/details/80703347 https://www.cnblogs.com/benjamin77 ...

  6. BootStrap_1 浓缩版本

    BootStrap(基于JQuery框架) 商业互吹:Bootstrap是最受欢迎的HTML.CSS和JS框架,用于开发响应式布局,移动设备优先选择的WEB项目... 特色:1.响应式布局 2.基于f ...

  7. Xshell Error Report,Program has stopped working

    xftp和xshell突然都无法运行并报错如图 图中的意思是,xshell有错误,官方想收集错误.可是也不能给你发送了,还这样啊. 解决办法 1.卸载Xshell和Xftp,重新安装. 参考:http ...

  8. CSS基础-行快属性,hover

    CSS基础 1.行快属性 在css中有很多标签,分为行内标签,块标签,标签行内块标签,他们有着不同的属性.     块标签         div,ul,li,ol,h1~h6,p         可 ...

  9. 第四周PTA笔记 好吃的巧克力+特殊的翻译+下次一定(续)+走迷宫

    好吃的巧克力 超市正在特价售卖巧克力,正好被贪吃的Lucky_dog看见了. 巧克力从左到右排成一排,一共有N个,M种. 超市有一个很奇怪的规定,就是你在购买巧克力时必须提供两个数字a和b,代表你要购 ...

  10. 菜鸡的Java笔记 第二十七 - java 链表基本概念

    链表基本概念        1.链表的基本形式        2.单向链表的完整实现            认识链表        链表= 可变长的对象数组,属于动态对象数组的范畴        链表 ...