虚拟化的一些基本常识

本文从以下几个方面介绍虚拟化的一些常识:
虚拟化层次的分类及举例;
系统虚拟化简史;
VMM分类;
典型的虚拟化产品;
Xen。

虚拟化层次分类及举例

指令级虚拟化

Bochs

QEMU

硬件级虚拟化

VMware

Xen

KVM

操作系统级虚拟化

Linux-VServer

OpenVZ

编程语言级虚拟化

JVM

.NETCLI

程序级虚拟化

Wine

系统虚拟化简史(硬件级虚拟化)

历史上第一个虚拟机是1965年左右IBM公司开发的system/360 model 40 VM。其最初的设计目的是将当时最先进的虚拟内存的概念延展到计算机的其他子系统,搭建一个时分共享的系统,运行多个单用户的操作系统,以实现多个用户对 昂贵的物理计算机资源的共享。

之后,随着时分多用户操作系统的发展,虚拟化技术真正成熟是在15年后的IBM VM/370系统中。作为一个标志性的系统,VM/370的许多原理至今还在IBM的z系统大型机上使用。VM/370运行在IBM System/370大型机上,并虚拟出同体系结构的System/370虚拟机。由于System/370硬件的优秀设计,对VM/370的实现提供了 完整而高效的支持,以VM/370为代表的虚拟机和系统虚拟化技术完整实现了虚拟机的思想。

VM/370上实现的是完全虚拟化(Full Virtualization),他所抽象的虚拟计算机具有完全的物理计算机特性。

在同一个时代,IBM M44/44x系统中,出现了半虚拟化(partial-virtualization)(某些书中将para virtualization称为半虚拟化,他们不是一个概念),半虚拟化(partial-virtualization)提供了对底层硬件的部分模 拟,以满足某些专门的软件的执行环境,但是不能运行所有可能运行在物理机上的软件。

伴随着硬件的发展,从20世纪90年代后期开始,台式计算机的性能逐渐达到支持多个系统同时运行的水平。在大型机上沉寂一时的虚拟化技术,在小型机 和微型机领域开始迅速升温。1997年,在斯坦福大学开发的Disco系统中探索了在共享内存的大规模多处理器系统上运行普通的桌面操作系统。基于 Disco系统的研究经验,Disco开发者们继续进行了个人计算机虚拟化技术的研究,之后就有了1998年的Vmware公司的诞生。

在个人计算机领域广泛使用x86体系结构的先天设计,存在对系统虚拟化的支持缺陷或虚拟化漏洞(virtualization hole)。 在x86体系结构上的虚拟化技术,都需要用软件的方法来弥补系统结构设计上的不足。例如,采用代码扫描或修补方法(Scan and patch)或二进制代码翻译(binary translation)技术来实现基于软件的完全虚拟化,但这样做势必带来性能上的损失及非常大的软件复杂度。

这种情况下,学术界提出了另一种思路来客服体系结构上的缺陷,叫类虚拟化技术(Para virtualization)(一些书上称半虚拟化)。其主要思想是通过客户机操作系统与虚拟化管理层的协同设计,由虚拟化管理层软件提供一个近似于原 物理系统,但又不完全相同(与原系统)的虚拟平台,以避免虚拟化漏洞和实现更高的虚拟化效率。虚拟化技术需要修改操作系统的源代码来与下层的虚拟化管理层 软件协同工作,从而避免体系结构上的缺陷。

美国华盛顿大学的Denali项目和原子英国剑桥大学的Xen项目都支持类虚拟化。

虽然上诉两种基于软件的方法都能够实现系统虚拟化,但他们各自存在不可回避的问题。基于软件的完全虚拟化方法不可避免的导致性能的下降,同时伴随着一些兼容性上的损失(这里的兼容性是指?);而修改操作系统的方法对于现有系统的移植和伴随着内核升级的维护提出了要求 ,并且对于非开源的操作系统也有局限性。

从根本上解决系统结构上的缺陷,最好的方法是从体系结构本身入手。intel和AMD在2006年后都逐步推出了带有硬件虚拟化支持的处理器,从根 本上保证了x86架构是一个可虚拟化的架构。VMM软件可以利用这些硬件虚拟化技术,实现基于硬件的全虚拟化,这样操作系统不需要做任何修改就可以运行在 虚拟机上。

除了x86处理器架构加入了硬件虚拟化支持,IBM power 2001年,Sun SPARC 2005年也在处理器中加入了虚拟化的支持。但IBM和Sun都采用了基于硬件的类虚拟化策略,除了在硬件中加入了对虚拟化的支持,还在固件层加入了相应 的类虚拟化VMM层,上层的操作系统 需要根据 VMM层接口进行修改。提供了从处理器到固件层到操作系统层对虚拟化的全面协同支持。

今天的大部分服务器和台式机处理器都已经有了对虚拟化的支持,但只是解决了处理器层如何更好的支持虚拟化的问题,为了使虚拟化解决方案更加高效,计 算机系统各个层次都在逐渐加入对虚拟化的硬件支持,逐渐形成一个对虚拟化更好支持的虚拟化生态系统。以intel为例,除了处理器中的vt技术外,芯片中 开始提供针对I/O虚拟化功能的vt-d技术,网卡中也开始提供更好的网络虚拟化支持的多队列的VMDq技术。与此同时PCI标准组织也在积极的指定在 PCI设备级对虚拟化进行支持的单根PCI桥IOV和多跟PCI桥IOV标准。

从20世纪90年代发展至今,虚拟化软件取得了长足的发展。非常多的虚拟机软件涌现除了,如KVM、virtualbox、微软的virtual pc 、hyper-v、Sun的xVm、Oracle的Oracle VM。

VMM分类(硬件级虚拟化)

按虚拟平台分类

根据VMM所根据的虚拟平台类型可以将VMM分成两类:

第一类VMM虚拟的是现实存在的平台,并且在客户机操作系统看来,虚拟的平台和现实的平台是一样的,客户机操作系统察觉不到是运行在一个虚拟平台上。这样的虚拟平台可以运行现有的操作系统,无须对操作系统进行任何修改,因此这种方式被称为完全虚拟化(full virtualization)。完全虚拟化有软件辅助的完全虚拟化硬件辅助的完全虚拟化

第二类VMM虚拟的平台是现实中不存在的,而是经过VMM重新定义的,这样的虚拟平台需要对所运行的客户机操作系统进行或多或少的修改使之适应虚拟环境,因此客户机操作系统知道其运行在虚拟平台上,并且会去主动适应。这种方式被称为类虚拟化(para virtualization)。另外,一个VMM可以既提供完全虚拟化的虚拟平台,又提供类虚拟化的虚拟平台。

按VMM实现结构分类

Hypervisor模型

在Hypervisor模型中,VMM可以看作是一个完备的操作系统,不过和传统操作系统不同的是,VMM是为虚拟化而设计的,具备虚拟化功能。

在Hypervisor模型中,VMM同时具体物理资源的管理功能和虚拟化功能,因此,物理资源的虚拟化的效率会高一些,同时他不依赖于其他操作系统,虚拟机的安全只与VMM安全有关,不像宿主型的VMM,虚拟机的安全与VMM和操作系统相关。

同样由于Hypervisor模型中,VMM完全拥有物理资源,因此需要对物理资源进行管理,包括设备驱动,这些开发的工作量是很大的。

宿主模型

物理资源由宿主机操作系统管理,宿主机操作系统是传统操作系统,VMM通过调用宿主机操作系统的服务来获得资源提供虚拟化服务。VMM创建出虚拟机之后,通常将虚拟机作为宿主机操作系统的一个进程参与调度。

宿主模型最大的优点是可以充分利用现有操作系统的设备驱动程序,VMM无须为各类I/O设备重新实现驱动程序,可以专注于物理资源的虚拟化。宿主模型也可以利用宿主机操作系统的调度、电源管理灯其他功能。

由于宿主操作系统设计开发之初并没有考虑虚拟化的支持,因此VMM虚拟化的效率和功能会受到一定影响。另外虚拟机的安全会依赖于VMM和宿主机操作系统的安全。

混合模型

混合模型是上述两种模式的汇合体,VMM仍然位于最底层,用于所有物理资源。但与Hypervisor模型不同的时,VMM不会控制大部分I/O设 备,会有一个运行在特权虚拟机中的特权操作系统控制大部分硬件,分担VMM的一些职责。处理器和内存的虚拟化由VMM完成,I/O的虚拟化则由VMM和特 权操作系统共同合作来完成。

典型的虚拟化产品

VMware ESX Server 3

基于Hypervisor模型,直接运行在物理硬件上,无须操作系统,是一款面向企业级应用的产品。既支持完全虚拟化也支持类虚拟化,新版本中也开始采用了硬件虚拟化技术。

VMware Server

宿主模型,面向服务端入门级产品,宿主操作系统可以是windows或者linux。由于采用宿主模型,VMware Server支持的硬件种类要比ESX Server多,此外VMware Server是免费的。

VMware Workstation

也是宿主模型,是VMware面向桌面的主打产品。宿主操作系统可以是windows或者linux。VMware Workstation支持完全虚拟化。与VMware Server不同,VMware workstation专门针对桌面应用做了优化。

VMware Fusion

宿主模型,与VMware Workstation基本相同,VMware Workstation运行在Windows和Linux上,VMware Fusion运行在基于Intel Mac硬件平台的Mac OS X。

 Virtual PC

Miscrosoft 面向桌面的虚拟化产品,宿主模型,宿主操作系统是Windows,早期采用软件虚拟化方式,基于Binary Translation技术。新版本中已经支持硬件虚拟化技术。

Virtual Server

Miscrosoft 面向服务器的入门级虚拟化产品,也是宿主模型,宿主操作系统可以是Windows XP和Windows Server 2003等。新版本中也开始支持硬件虚拟化技术。

Windows Server 2008

2008是Miscrosoft 推出的新一代服务器操作系统,其中一项重要的新功能是虚拟化。Server 2008的虚拟化架构采用混合模型, 其重要的部件之一Hyper-V作为Hypervisor运行中最底层,Server 2008本身作为特权操作系统运行在Hyper-V之上。Server 2008采用硬件虚拟化技术,必须运行在支持Intel VT技术或者AMD-V技术的处理器上。Server2008的虚拟化功能是纯64位,只运行在Server 2008 64位版本中。客户机操作系统支持32位和64位,支持 对称多处理器的客户机操作系统等。

Xen

从技术角度来说,Xen基于混合模型。特权操作系统(Domain0)可以是Linux、Sorlaris以及NetBSD。Xen 1.0 2.0实现了类虚拟化,3.0支持基于硬件技术的完全虚拟化。

KVM

KVM采用的是基于Intel VT技术的硬件虚拟化方法。从架构上看,可以认为KVM是宿主模型,Linux是宿主操作系统。但随着越来越多的虚拟化功能被加入到Linux中,也有人认为Linux已经是一个Hypervisor,因此KVM是Hypervisor 模型。KVM和Linux内核结合的非常好,但KVM还处在发展阶段。

Xen

Xen是一个虚拟化平台,它来之于一项学术研究成果,现已发展成一个重要的开源项目。

Xen的独特之处在于,当它第一次发布时,使用了半虚拟化(para virtualization)来运行像linux这样的常规操作系统。半虚拟化需要修改运行在Xen之上的操作系统,既提升了性能又简化了Xen本身。

一般来说,操作系统内核是运行在计算机上的最有特权的软件,但在虚拟化的情况下,系统管理程序是最有特权的,操作系统内核是在相对较低的权限下运 行。如果操作系统现在试图执行一些特权指令,那他们会失败,失败的方式是至关重要的。如果他们引起系统管理程序会捕获的一个错误,系统管理程序可以恰当的 模拟这个指令并继续控制虚拟机。然后x86上存在一些默默失败而不触发系统管理程序的指令。对于虚拟化来说这是坏消息,因为这妨碍了操作系统在虚拟机上适 当的工作。普遍的技术(至少在Xen之前)是在运行时扫描操作系统代码,寻找特定的指令并用直接调用系统管理程序的代码替换他们(什么技术?怎么实 现?)。虽然这具有理想的兼容性,但在性能上有很大的开销。

当发布Xen时,它表明,通过放弃理想的兼容性,性能会显著的提高。

半虚拟化的观点是移除一个架构(如x86)中难以虚拟化或如果进行虚拟化开销很大的所有特性,用于虚拟化层直接通信的半虚拟化操作替换他们。

一个操作系统的半虚拟化就是重写与半虚拟化架构不兼容的所有代码。对linux内核,Xen只修改或增加2995行代码,就可以使它能在Xen上运行。

Xen是原生式虚拟化的一个例 子。另一种方式是宿主操作系统上运行一个系统管理程序。这种情况下,每个虚拟机实际上成了宿主操作系统的一个进程。宿主式系统管理程序通常用于工作站的虚 拟化产品中,例如vmware。这种方式的主要优点在于:安装一个宿主式的系统管理程序就像安装一个新应用程序一样简单,反之,安装一个原生的系统管理程 序(如Xen)就像安装一个新的操作系统。因此宿主式虚拟化更适合非专业的用户。

另一方面,原生式的系统管理程序的优点在于它可以获得更好的性能。宿主式虚拟机更容易用于桌面虚拟化。
Xen3.0版本开始支持基于intel vt和amd v硬件技术的全虚拟化。

原文链接:http://itblogs.ga/blog/20141217203759/
时间: 2024-08-05 04:30:11

虚拟化的一些基本常识的相关文章

云计算之--------高级虚拟化KVM

背景: 前篇在讨论完云计算后,本次我们来讨论实现云计算的基础--->虚拟化技术,虚拟化官方解释, 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率. 虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配.灵活调度.跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求. 分类和业

# 计算机操作系统基础常识

计算机操作系统基础常识 计算机的发展和分类 人工操作阶段 批处理阶段 单道批处理阶段 多道批处理阶段 分时操作系统 实时操作系统 人工处理阶段,缺点是硬件利用率低,人工的输入和硬件的处理速度不匹配. 单道批处理阶段,缺点同样是硬件的处理率低,每次只能够运行一道应用程序. 多道批处理阶段,优点是内存中可以存放多个应用程序,硬件利用率搞.缺点是在程序运行以后就不能够干预程序的执行,就不能够进行人机交互. 分时操作系统阶段,将cpu的处理时间划分称为多个时间片分配给不同的用于,用于响应不同用户的输入.

运维常识整理

运维常识整理基础服务: LAMP:Linux+Apache+MySQL+(PHP\Python\Perl) 是一组用来建立web应用平台的解决方案.LNMP:Linux+ Nginx+MySQL+PHP 网站服务器架构 Apache:一款可以跨平台的Web服务器软件.Nginx:一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.MySQL:一个开源的关系型数据库管理系统.FTP:File Transfer Protocol(文件传输协议).控制文件的双向传输.DNS:

Linux 部署KVM虚拟化平台

简单介绍 KVM 是基于虚拟化扩展(Intel VT 或者 AMD-V)的 X86 硬件的开源的 Linux 原生的全虚拟化解决方案.KVM 中,虚拟机被实现为常规的 Linux 进程,由标准 Linux 调度程序进行调度:虚机的每个虚拟 CPU 被实现为一个常规的 Linux 进程.这使得 KMV 能够使用 Linux 内核的已有功能. 但是,KVM 本身不执行任何硬件模拟,需要客户空间程序通过 /dev/kvm 接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的 I/O,并将它的视频显示

C#网络程序设计(1)网络编程常识与C#常用特性

    网络程序设计能够帮我们了解联网应用的底层通信原理!     (1)网络编程常识: 1)什么是网络编程 只有主要实现进程(线程)相互通信和基本的网络应用原理性(协议)功能的程序,才能算是真正的网络编程. 2)网络编程的层次 现实中的互联网是按照"TCP/IP分层协议栈"的体系结构构建的,因此程序员必须搞清楚自己要做的是哪个层次上的编程工作. TCP/IP协议体系的实现情况: 其中,网络接口层已经被大多数计算机生产厂家集成在了主板上,也就是经常所说的网卡(NIC).windows操

学习虚拟化技术需要掌握的知识与能力(未完成版)

我从1993年学习计算机,有过短期的C语言开发经历,现在主要从事网络与系统集成的工作.我可以算是学习计算机比较"早"的一批人了. 1993年的时候,我是从MS-DOS 3.30开始,直到最后的MS-DOS 6.22.Windows系统是从Windows 3.1(中文版)开始,再到Windows 3.11.Windows 95.98一直到现在的Windows 10. 组建Windows网络是在1996年河北省国税局全省联网,是从Windows NT 3.51开始,到后来的Windows

Windwos Hyper-v嵌套虚拟化

现在微软的虚拟化越来越成熟,许多人也渐渐的开始研究微软的Hyper-V的虚拟化,但是苦于没有太多的电脑提供部署环境,再加上之前的windwos版本是不支持在虚拟机中安装Hyper-V,让大家头大. 现在的win10和win server 2016都已经支持嵌套虚拟化,也就是说可以在虚拟机中安装Hyper-V. 首先当然是安装Hyper-V,安装过程就省略了,相信大家肯定都知道. 安装完Hyper-V后新建一台虚拟机.在这里我建立一台名为test的虚拟机. 然后以管理员方式运行powershell

SQL Server虚拟化系列(3)——构建理想的基于VMware的SQL Server虚拟机

虚拟化变得越来越常见,并且在不了解虚拟化如何工作的情况下,DBA在尝试解决性能问题时会出现盲点,例如减少资源争用或改进备份和恢复操作等. 在本文中我们将主要讲述为您的SQL Server工作负载构建理想的基于VMware的虚拟机.我们的下一篇文章将介绍怎么样在Hyper-V上构建对应的SQL Server虚拟化环境. 现在,作为DBA,您可能没有访问权限来创建用于SQL Server的新虚拟机.这些操作可以交给您的VM管理员,他们将为您部署合适的VM环境. 以下详细信息适用于在Windows S

VMware (威睿) 虚拟化产品简介

VMware vSphere 是VMware(威睿)的一个虚拟化产品,VMware vSphere 是业界领先且最可靠的虚拟化平台.vSphere将应用程序和操作系统从底层硬件分离出来,从而简化了 IT操作.您现有的应用程序可以看到专有资源,而您的服务器则可以作为资源池进行管理.它包括VMware vCenter Server, VMware ESX Server,VMware ESXi Server,VMware vSphere Client,VMware Workstation 等等.举个列