Code Monkey home page Code Monkey logo

learn-kvm's Introduction

KVM学习笔记

仓库介绍

本参考主要内容为KVM相关知识的学习笔记,可以打开相应GitBook站点阅读。

Something I hope you know before go into the coding~
First, please watch or star this repo, I'll be more happy if you follow me.
Bug report, questions and discussion are welcome, you can post an issue or pull a request.

相关站点

GitBook访问地址:https://yifengyou.gitbooks.io/learn-kvm/content/

GitHub访问地址:https://github.com/yifengyou/learn-kvm

目录

KVM相关站点

Kernel Virtual Machine:http://www.linux-kvm.org/page/Main_Page

KVM早起源码pkgs:https://src.fedoraproject.org/lookaside/pkgs/qemu/

SourceForge KVM页:https://sourceforge.net/projects/kvm/

Qemu社区:https://www.qemu.org

kvm.git:https://git.kernel.org/pub/scm/virt/kvm/kvm.git/

KVM历史大事件

  • 2005年11月,Intel发布奔腾四处理器第一次正式支持VT技术
  • 2006年5月,AMD发布支持AMD-V处理器。
  • KVM虚拟机最初是由一个以色列的创业公司Qumranet开发的,作为他们的VDI产品的虚拟机。为了简化开发,KVM的开发人员并没有选择从底层开始新写一个Hypervisor,而是选择了基于Linux kernel,通过加载新的模块从而使Linux Kernel本身变成一个Hypervisor。
  • 2006年8月,在先后完成了基本功能、动态迁移以及主要的性能优化之后,Qumranet正式对外宣布了KVM的诞生并推向Linux内核社区。同年10月,KVM模块的源代码被正式接纳进入Linux Kernel,成为内核源代码的一部分。
  • 2007年2月发布的Linux 2.6.20是第一个带有KVM模块的Linux内核正式发布版本。
  • 2008年9月4日,同内核社区保持着很深渊源的著名Linux发行版提供商—Redhat公司出人意料地出资1亿700百万美金,收购了Qumranet,从而成为了KVM开源项目的新东家,投入较多资源在KVM虚拟化开发中。
  • 2010年11月,Redhat公司推出了新的企业版Linux—RHEL 6,在这个发行版中集成了最新的KVM虚拟机,而去掉了在RHEL 5.x系列中集成的Xen。KVM成为RHEL默认的虚拟化方案

国内云团队

  • 阿里云
  • 腾讯云
  • 盛大云
  • 新浪SAE
  • 百度BAE

常用概念

  • 虚拟机监视器VMM(Virtual Machine Monitor) = Hypervisor
  • 内核同页合并(Kernel Same-page Merging,KMS)

思维导图

1531909971346.png

1534161835343.png

  • kvm_x86_ops针对具体CPU架构进行虚拟化时的函数指针,分别对应kvm-intel.ko和kvm-amd.ko

1534161866401.png

  • struct KVM 结构体唯一代表一个虚拟机

1534165263011.png

参考书目

1529509835592.png

1531984957300.png

1531984933724.png

1531985038880.png

1531985125215.png

1529509896727.png

1531985313149.png

1531985350356.png

个人的一些看法

  • KVM从一开始就必须要硬件虚拟化支持。现有的源码追溯到2006年11月2号,那个时候KVM还是有以色列创业公司Qumranet研发,分成两个部分,一部分是Qemu-kvm-patch,一部分是kvm-module。

总结

  1.基础永远值得花费90%的精力去学习加强。厚积而薄发~
  2.要理解一个软件系统的真正运行机制,一定要阅读其源代码~

learn-kvm's People

Contributors

yifengyou avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.