![97c4cd4d6c75d1ff5e852965df343581.png](https://i-blog.csdnimg.cn/blog_migrate/83f9264d29c3721703c5fa1a4401cc3b.jpeg)
阅读本文大概需要5分钟。
概念解释:
物理机:客观存在的真实服务器,能看的到、摸得着的。通常也被叫做宿主机,因为虚拟机“寄宿”在上面。
虚拟机:运行在物理机上的,看不见、摸不到、但可以通过网络访问的服务器。通常也叫云服务器。
物理硬件:组成物理机的硬件。
虚拟硬件:组成虚拟机的硬件,通过虚拟化技术获得。
OS:Operating System,操作系统。
在上一篇文章《开宗明义:解剖云服务器》中提过:虚拟化技术,顾名思义,是能够在一个物理硬件平台上虚拟出多个虚拟硬件平台的技术。虚拟化技术是云计算不可或缺的基础。
目前常用的虚拟化技术是KVM,全称为Kernel Virtual Machine。KVM是基于支持Intel-VT或者AMD-V特性的X86硬件。2006年10月,KVM模块的源代码被正式接纳进入Linux Kernel,成为内核源代码的一部分。因此,KVM是Linux完全原生的硬件虚拟化解决方案。
使用KVM构建虚拟机的架构如下:
![2df9eb0a5012d22e07255f373e602130.png](https://i-blog.csdnimg.cn/blog_migrate/43e8ea8b642607cf6a9b987ed9984a9a.jpeg)
在上图中,Linux内核运行在物理硬件之上,KVM模块将Linux内核本身变成一个Hypervisor。Hypervisor是位于物理硬件和虚拟硬件之间的一个中间层,可以理解为一个代理,它将虚拟硬件要执行的指令按一定的算法调度给物理硬件去执行。有了虚拟硬件,虚拟机就可以按照正常的流程安装操作系统以及运行APP了。
Hypervisor核心工作就是对多个虚拟硬件要求的资源进行统筹协调,最主要的就是协调CPU资源和内存资源。对于CPU资源,Hypervisor通过选择合适的调度算法,把物理CPU合理的分配给虚拟CPU使用。对于内存资源,Hypervisor需要先将物理硬件的内存地址转化为虚拟硬件的物理地址,虚拟机OS会把虚拟硬件的物理地址映射为虚拟内存地址(参考OS的内存管理),进而提供给APP使用。
KVM除了对CPU和内存资源进行管理之外,还能够使用Linux支持的任何存储形式来存储虚拟机系统盘(关于虚拟系统盘,可以参考前一篇文章)。比如网络连接存储、分布式对象存储,本地磁盘存储等等。
参考文献:
[1] 顾炯炯.云计算架构技术与实践[M].北京:清华大学出版社,2016.
[2]任永杰,单海涛.KVM虚拟化技术:实战与原理解析[M].北京:机械工业出版社,2014.
入门云计算:你该了解的那些事儿www.zhihu.com![481091d036e1bbc02b5ed654b0cd3480.png](https://i-blog.csdnimg.cn/blog_migrate/1deded78a9eec00c5ffc9abf4b3f8861.jpeg)