现在很流行什么大数据,虚拟化,云计算什么一堆堆的,听着就高端大气上档次,那么什么是虚拟化呢,笔者也在学习中,和大家分享下最近学的虚拟化,希望大家一起学习


虚拟化前言
在生产环境中,可能会需要很多服务来应用,但是有的服务可能占用的资源会很少,如果每个服务用一台服务器来跑的话,可能会很浪费资源,而且增大消费,但是如果把很多服务在一台服务器上跑的话,文件会很混乱。所以希望服务运行在很多个不会影响的OS,并且减少服务器数量。因此,虚拟化技术应用而生,简单的说,虚拟化技术就是一台服务器上运行多个OS。
列如VMware workstation虚拟机来说,VMware只是服务器上的一个进程,而它上面可以运行很多个虚拟机, 如Centos、Ubantu、03、08等各种系统,它们只是进程VMware里面的进程,这些虚拟机都城为Guest OS,而宿主机为Host OS
虚拟化技术原理
虚拟化概念
再分层架构中,提供虚拟化平台的层称为hypervisor,又叫VMM。虚拟化的核心技术就是VMM(虚拟机监控器),它是一个管理中间层软件,运行在系统和硬件之间,可以让多个OS共享一套硬件。VMM具有管理、部署、规划虚拟机硬件的功能。VMM和虚拟机一起运行,并且相互不为影响。当运行VMM时,VMM会分配给每台虚拟机指定的CPU、Memory、I/O等硬件资源,并加载Guest OS。当然,虚拟机里的操作同样也是由VMM来接收再转发给硬件。
VMM必须满足三个要求:1、程序在虚拟环境中和真实环境中运行必须完全相同。 2、指令集中的绝大部分指令可以直接在CPU上运行(排除电源关闭等指令集) 3、VMM能完全控制所有系统资源。
虚拟化技术原理
虚拟化类型
虚拟化根据不同的标准有很多种分类,如:完全虚拟化、半虚拟化、硬件虚拟化、跨平台虚拟化等。

完全虚拟化
在完全虚拟化中,Guest OS就像在运行在正常的服务器上一样,完全不知道自己运行在虚拟化平台上,可以向机器发出指令,Guest OS发出的指令,全程由VMM接受,再转发送给CPU,但对于一些敏感的指令,VMM会过滤掉。
列如Guest OS发出power off的指令,如果不经过过滤CPU会直接关闭电源。这里VMM会接受并修改这个指令,再转发给CPU,仅让CPU关闭虚拟机的电源。
硬件虚拟化
硬件虚拟化是由CPU厂商直接在芯片上提供了对虚拟化的支持。比如Intel的vt和AMD的amd-v都为CPU增加了新的执行模式。Intel对指令集重新设计,使得原本不能通过先陷入后模拟的方式执行的指令都可以顺利执行。开启vt-x后,可以把一个CPU逻辑上转换为多个CPU。新的指令集增加了Root模式位于Ring 0的下面,可以理解为在硬件级别增添了Ring -1,让VMM运行Ring -1(相当于普通服务器Ring 0),而Guest OS运行在Non-Root模式——Ring 0。当切换到Guest模式时,CPU提供了先前完整的特权等级,让Guest OS可以不加修改的运行在物理的CPU上。此时,VMM通过一个位于内存的数据结构(Intel称为VMCS,AMD称为VMCB)来控制Guest OS与Host OS的交互,以完成整个平台的虚拟化
虚拟化技术原理
笔者现在也就学了这么多,希望大家有什么多指出来,大家一起学习