取消
搜索历史

    六大Linux虚拟化技术全面讲解

    来源:比特网 2010-07-23 00:00Linux教程

    关于Linux虚拟化的优势我们大家已经有所了解。当前使用最多的虚拟化操作系统还是Windows系列,但是Linux的成长速度是惊人的,大有替代Windows的趋势。关于 Linux虚拟化技术大致上可以分为六个不同的方式。在这篇文章中,我们将讨论实现Linux虚拟化的这六种方式,以及Linux下的多种虚拟化解决方案。

    当我们讨论虚拟化解决方案的时候,常常都要提到具体厂商的具体产品,但是当我们提及Linux虚拟化解决方案的时候,我们更乐意讨论广泛而多样化的开源生态系统。Linux支持多种虚拟化平台,并延伸出多种技术,同样也是一个完整方案的一个元素。

    虚拟化—老树开新花

    虽然虚拟化现在如此的流行,但虚拟化不是一个新的技术,早在半个世纪之前IBM公司就已经开始部署虚拟化。最早虚拟化技术是在IBM公司 M44计算机上进行实验,然后在IBM公司 System/360大型机产品上开始普及。最早的真正意义上的整体应用虚拟化的硬件平台是IBM公司 CP-40系统,在上世纪60年代末被用在商业应用上。

    虚拟化包含多个层面,比如硬件虚拟化,这种虚拟化从底层的硬件平台直接支持软件环境;另外一种是操作系统虚拟化,这是Linux的一个亮点。

    在硬件层之上,独立于操作系统的一层软件被称之为hypervisor,或者叫做虚拟机监视器。hypervisor创建了虚拟化平台,而操作系统实例则运行在这个平台上,这使得硬件平台可以被多个操作系统和应用所共享,从而降低硬件的成本。

    运行在hypervisor上面的实体被称为虚拟机,即VM,是用来放置操作系统、应用和数据元的“容器”。虚拟机中的操作系统和应用程序的数据被存储在虚拟磁盘中,hypervisor利用虚拟磁盘来启动虚拟化平台。虚拟机被封装为一个文件,这样比分布式的文件更好管理。



    早期的虚拟化模型被称为Type 1,或者叫本地虚拟化(native virtualization),这种模型下hypervisor直接运行在硬件之上,在hypervisor上面是虚拟机。后来出现了主机虚拟化 (hosted virtualization)模式,被称为Type 2,hypervisor运行在操作系统之上,在同一平台上允许两个或更多的操作系统共存。

    Linux虚拟化技术基础

    了解了有关虚拟化的一些基本知识后,我们进入正题,来讨论一下Linux虚拟化的一些知识。首先是模拟(Emulation),是将一个操作系统(Host)的服务转换并显示成另一个操作系统(Guest)的过程,Host和Guest系统不一定是相同的,比如,Host系统可能是x86平台,可以提供PowerPC平台的模拟,即使是指令和架构完全不相同。

    另外,hypervisor的模拟器(emulator)可以提供多个平台的模拟,比如下面的图例,在Host系统上可以仿真出PowerPC 和ARM系统。模拟过程并不仅限于Type 2虚拟化模型,在虚拟化技术中都存在这个过程。



    Linux中最流行的两个模拟器(emulator)包括QEMU和Bochs(处理器和平台模拟器)。这种解决方案的优点是它们是非常“轻便的”,可以支持在不同的Host操作系统和平台上运行不同的Guest操作系统。而这种解决方案的缺点在于由于要模拟指令,导致效率比较低。QEMU通过动态编码转换的模拟方式,让内核和内部用户代码可以被加速。另外,QEMU是一个很好的嵌入式平台开发工具,可以为与主机相异的CPU开发和测试代码。QEMU还可以被用来其他虚拟化解决方案来进行设备模拟。

    更加传统的虚拟化解决方案是平台虚拟化,或者叫做硬件虚拟化,具有两种主要的形式,完全虚拟化( full-virtualization)和半虚拟化(para-virtualization)。

    完全虚拟化,虚拟化平台通过hypervisor来承载虚拟机(VM),完全虚拟化的关键在于这些虚拟机,也就是运行在这些虚拟机里面的操作系统可以在hypervisor上运行,并且不被修改,这在需要一个真正的虚拟平台时是非常理想的,但这种模式具有一个缺点。

    在完全虚拟化下虚拟机VM会把虚拟平台当作物理平台,工作在虚拟平台上的Guest操作系统驱动就好像运行在真实的硬件之上。但需要考虑这意味着什么,Guest操作系统和虚拟平台之间通讯就好像和真实平台一样,在hypervisor里面存在着另外一个模拟层,模拟硬件平台并转发虚拟机对硬件的访问,就好像虚拟机直接在使用真实的硬件。这个过程需要大量的处理,会限制Guest系统的I/O性能。

    解决这个问题的一个方法就是让Guest操作系统意识到自身是被虚拟化的,这种形式被称作半虚拟化(para- virtualization),如下图,在这种模式下,Guest系统包含了缩短硬件访问过程所需的驱动程序,这让把Guest系统从不必要的工作中解放出来,来进行更高级别的工作。



    虽然完全虚拟化是一个理想的方案,但是通过修改Guest操作系统可以最大限度的减少处理开销,获得相当大的性能提升。

    (文章为作者独立观点,不代表存储网立场,版权疑问请联系客服。)
    关于我们| 隐私条例| 版权申明| 联系我们

    2018-2022 Copyright © Stor.com.cn