爱悠闲 > 几种相关的虚拟技术简单介绍

几种相关的虚拟技术简单介绍

分类: 工作相关  |  标签: linux内核,虚拟机,service,虚拟化,vmware,linux  |  作者: carolzhang8406 相关  |  发布日期 : 2014-06-09  |  热度 : 587°

这篇文章是我在网上总结和搜索的一些资料整理出来的,起因主要是因为今天India 问了我的VM是啥hypervisour,有点二楞子了。后来才知道他问的VM相关的一些虚拟管理架构。所以我就找了写KVM,ESX等相关资料看看,也算是给自己扫盲。

  • 从虚拟机架构上目前可以分为两大类:
      第一种叫做寄居架构,也就是说虚拟化管理层是运行在主机操作系统之上,依靠主机操作系统来模拟硬件设备,以便在其上运行虚机,其优点是对物 理硬件要求低,但是性能相对差。常见的例子有微软的Virtual PC/Virtual Server;VMware的VMware Workstation/VMware Server等。
    寄居架构图:

  •   第二种叫作裸金属架构,直接在硬件上跑虚拟化管理层,其优点是性能比较好。裸金属架构的虚拟化管理层,一般叫做Hypervisor,或者VMM(Virtual Machine Monitor)

裸金属架构:

 

 

  • Hyper-V

Hyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware和Citrix开源Xen一样的基于hypervisor的技术。它是 一种系统管理 程序虚拟化技术。

 

架构特点:

Hyper-V采用微内核的架构,兼顾了安全性和性能的要求。

Hyper-V底层的Hypervisor运行在最高的特权级别下,微软将其称为ring -1(而Intel则将其称为root mode),而虚拟机 的OS内核和驱动运行在ring 0,应用程序 运行在ring 3下,这种架构就不需要采用复杂的BT(二进制特权指令翻译)技术,可以进一步提高安全性。

 

Hyper-V采用基于VMbus的高速内存总线架构,来自虚机的硬件请求(显卡、鼠标、磁盘、网络),可以直接经过VSC,通过 VMbus总线发送到根分区的VSP,VSP调用对应的设备驱动 ,直接访问硬件,中间不需要Hypervisor的帮助。   这种架构效率很高,不再像以前的Virtual Server,每个硬件请求,都需要经过用户模式、内核模式的多次切换转移。

 

从架构上讲Hyper-V只有“硬件-Hyper-V-虚拟机”三层,本身非常小巧,代码简单,且不包含任何第三方驱动,所以安全可靠、执行效率高,能充分利用硬件资源,使虚拟机系统性能更接近真实系统性能。   

 

http://imgsrc.baidu.com/baike/pic/item/e49cf911a5273687a6ef3f2e.jpg

 

Hyper-V的结构原理:
Hyper-V中的“虚拟机(guest)”和所谓的“宿主机(host)” 都是运行在同一个层次的,虚拟机操作系统并不是运行在另一个操作系统的内部,也就是说Hyper-V中并没有“真实操作系统”和“虚拟操作系统”之分,你可以认为它们都是虚拟的或者都是真实的。

 

  • VM ESX:

    ESX主要可被分为两部分:其一是用于提供管理服务的Service Console,其二是ESX的核心,也是主要提供虚拟化能力的VMKernel。他是一种裸金属架构。

  • service console

    简单的来说,Service Console就是一个简化版Redhat Enterprise OS。虽然其不能实现任何虚拟化功能,但是对这个ESX架构而言,它却是一个不可分割的一部分。主要有五个方面功能:

  • 启动VMKernel,当ESX主机启动的时候,首先会启动Service Console,接着在Linux runlevel 3上启动VMKernel,之后将全部硬件资源的管理权移交给VMKernel。当VMKernel启动成功之后Service Console就成为运行VMKernel上面的第一个虚拟机。
  • 提供各种服务接口,比如命令行,Web接口,SDK接口等,并安装VirtualCenter Agent以支持很多需要和Virtual Center配合的高级服务,比如,vMotion和DRS等。
  • 性能检测,因为所有VMkernel的性能数据都会记录在Service Console的/proc目录下,所以不仅能够通过脚本来处理这些性能数据,而且还能使用Service Console自带的ESXTOP命令来观测。
  • 认证,Service Console提供多种认证机制。
  • 负责主机部分硬件的管理,比如,鼠标,键盘,显示屏和CD-ROM等等。

注:虽然Service Console提供了许多功能,但因为其本身资源所限的原因(关于这点,我曾经和一位VMware工程师有过聊天,好像整个Service Console大概只能占有280MB内存和少量的I/O),所以不适合在Service Console中执行一些重量级的任务,比如:上传或者复制虚拟磁盘(Virtual Disk)。

VMKernel

VMKernel是由VMware开发的基于POSIX协议的操作系统,它提供了很多在其它操作系统中也能找到的功能,比如,创建和管理进程,信号(Signal),文件系统和多线程等。但它是为运行多个虚拟机而“度身定做”的。它的核心功能是资源进行虚拟化。

 

  • KVM

    KVM是一个基于内核的虚拟机。KVM是kernel virtual module的简写,是rhel5.4推出的最新虚拟化技术,目前红帽只支持在64位的rhel5.4上运行kvm,同时硬件需要支持VT技术,使用kvm虚拟机的时候需要关闭selinux;    Red Hat从2009年6月中旬开始在部分企业级用户那里开始了对Red Hat Enterprise Virtualization(RHRV)的beta测试。RHEV是Red Hat去年收购虚拟化厂商Qumranet获得的一项hypervisor技术。 Citrix通过收购获得的Xen就是因为Linux hypervisor而被人们所熟知。不过Red Hat的KVM被认为是将成为未来Linux hypervisor的主流。 KVM最大的好处就在于它是与Linux内核集成。

    kvm是一个独特的管理程序,kvm开发者们发明了一个方法让Linux内核自身变成一个管理程序,通过将KVM作为一个内核模块实现,在虚拟环境 下Linux内核集成管理程序将其作为一个可加载的模块可以简化管理和提升性能。这可能是开发者将KVM添加到内核的主要原因。这种方法有许多优势,通过添加虚拟化功能到一个标准的Linux内核,虚拟环境能从所有正在Linux内核上运行的工作中受益,在这种模式下,每个 虚拟机都是一个常规的Linux进程,通过Linux调度程序进行调度,通常,一个标准的Linux进程都有两个执行模式:内核模式和用户模式。对于应用 程序而言用户模式是默认模式,当它需要一些来自内核的服务时就进入内核模式,如往磁盘上写入时。KVM添加了第三个模式:客户模式。


    客户模式进程是运行在虚拟机内的,它非常象正常模式(无虚拟实例),有它自己的内核和用户空间变量、在客户模式下可以使用正常的kill和ps命 令,因为无虚拟实例,KVM虚拟机表现为一个正常的进程,能象其他进程一样被杀掉,KVM利用硬件虚拟技术虚拟处理器的形态,虚拟机的内存管理由内核直接 处理,目前的版本I/O在用户空间处理,主要通过QEMU完成。

    架构图