虚拟化把事物从一种形式改变为另一种形式. 计算机的虚拟化使单个计算机看起来像多个计算机或完全不同的计算机.
虚拟化技术也可以使多台计算机看起来像一台计算机. 这叫做服务器聚合(server aggregation)或网格计算(grid computing).
首先我们回顾一下虚拟化技术的历史.
虚拟化技术的历史
虚拟化技术不是一个新的主题实际上, 它已有40年的历史. 最早使用虚拟化技术的是IBM 7044计算机, 它是基于MIT(麻省理工学院)为IBM704计算机开发的分时系统CTSS(Compatible Time Sharing System), 和曼彻斯特大学的Atlas项目(世界最早的超级计算机之一), 首次使用了请求调页和系统管理程序调用.
硬件虚拟化
IBM早在1960年就认识到虚拟化技术的重要性, 于是开发了型号为Model 67的System/360主机. Model 67主机通过虚拟机监视器(VMM, Virtual Machine Monitor)虚拟所有的硬件接口. 在早期的计算中, *** 作系统被称做Supervisor. 能够运行在其它 *** 作系统之上的 *** 作系统被称做hypervisor(名称首次出现在1970年).
VMM直接运行在底层硬件上, 允许执行多个虚拟机(VMs). 每一个VM(虚拟机)运行自己的 *** 作系统实例 -- 早期时候称为CMS, 或会话监视系统(CMS, Conversational Monitor System). 然后VM继续发展. 今天你能够在System z9主机上发现VM, 它能够向后兼容, 甚至是System/360.
处理器虚拟化
另外一个早期使 用的虚拟化技术, 仿真处理器, 也叫做P-code(or pseudo-code)机. P-code是一种机器语言, 运行在虚拟机上而不是实际的硬件. 知名的P-code语言在1970年由加州大学圣地亚哥分校的Pascal系统项目组开发. 它可以把Pascal程序编译成P-code代码, 然后在具有P-code功能的虚拟机上运行. P-code程序具有高度可移植性, 能够运行在任何具有P-code功能的虚拟机上.
1960年的BCPL语言(基本组合程序设计语言, Basic Combined Programming Language)也使用了同样的概念, 它是C语言的前身. 编译器首先把BCPL代码编译成一个中间机器代码: O-code. 然后, O-code被编译成目标机器代码. P-code模型已被广泛使用到各种编译器当中, 从而为编译器移植到新的主机架构提供了复杂性.(通过一个中间语言分成前端和后端).
Java虚拟机(JVM)
Java虚拟机也采用了P-code模型. 从而我们可以简单通过移植JVM程序到新架构的机器上来广泛发布Java程序.
指令虚拟化
近来频繁出现的虚拟化概念: 指令虚拟化, 也叫做二进制翻译. 在这个模型中, 虚拟指令被动态翻译成底层硬件的物理指令. 程序执行后, 代码一段一段地被翻译. 如果出现分支, 一套新的代码指令将被引入和翻译. 这十分类似于缓存 *** 作, 指令块从内存移动到本地的快速缓存内存中执行.
近来Transmeta公司设计的Crusoe中央处理器使用了该模型. 二进制翻译由Code Morphing专利技术实现. 类似的一个实例, 全虚拟技术通过使用动态生成代码扫描来发现和重定向特权指令(解决特殊处理指令集中的问题).
虚拟化技术的类型
现在不只存在一种虚拟化技术. 事实上有多种方法可以使用不同层次的抽象来实现同样的结果. 本章介绍Linux上三种最常用虚拟化技术的优点和弱点. 业届有时使用不同的术语来描述同一个虚拟化技术. 为了保持连续性, 下面使用的术语参考了其它的术语.
虚拟化技术和游戏
一篇虚拟化技术的文章如果没有提到复合式大型电玩模拟器(MAME)就不是一篇完整的文章. MAME, 就如名字一样, 是一个能够模拟以往arcade游戏的机器模拟器(全部). 做一个补充, 整个机器是被虚拟的, 包括声音和图形还有控制硬件. MAME是一个非常棒的应用程序, 你也可以通过仔细阅读源码来了解它是如何实现的.
硬件模拟器
无可否认, 最复杂的虚拟化技术是硬件模拟器. 在这个方法中, 首先在主机系统上创建硬件VM, 然后模拟硬件的功能, 如图1显示:
图1. 硬件模拟器: 使用VM模拟需要的硬件
正如你可能猜到, 硬件模拟器的主要问题是速度极慢. 因为每一个指令在底层硬件都需模拟, 所以速度慢了100倍. 高保真模拟还包含了循环校验, 用于模拟CPU的管道和缓存行为, 实际速度会慢了1000倍.
硬件模拟有自己的优点. 比如, 使用硬件模拟, 你能够在基于ARM处理器的主机上模拟运行基于PowerPC未经任何修改的 *** 作系统. 你甚至能在每个不同模拟处理器上运行多个虚拟机.
模拟器和开发
硬件模拟器最有意思的一个应用是firmware(固件)和硬件协作开发. firmware开发人员无需等待最新硬件的推出, 他们可以使用目标硬件的虚拟机来验证实际代码中的许多概念.
全虚拟化
全虚拟化(Full virtualization), 也称为原始虚拟化技术, 是另一种虚拟化方法. 该模型使用虚拟机协调客户 *** 作系统和原始硬件(见图2). 这里"协调"是一个关键词, 因为VMM在客户 *** 作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟机管理程序)来捕获和处理. 因为 *** 作系统是通过Hypervisor来分享底层硬件.
图2. 全虚拟化: 使用Hypervisor分享底层硬件
全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要占用一些资源. 全虚拟化最大的优点是 *** 作系统没有经过任何修改. 它的唯一限制是 *** 作系统必须能够支持底层硬件(比如, PowerPC).
老机器上的Hypervisors
一些老的硬件如x86, 全虚拟化遇到了问题. 比如, 一些敏感的指令需要由VMM来处理(VMM不能设置陷阱). 因此, Hypervisors必须动态扫描和捕获特权代码来处理问题.
半虚拟化
半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户 *** 作系统集成了虚拟化方面的代码. 该方法无需重新编译或引起陷阱, 因为 *** 作系统自身能够与虚拟进程进行很好的协作.
图3. 半虚拟化: 通过客户 *** 作系统分享进程
上面提到过, 半虚拟化需要客户 *** 作系统做一些修改(配合Hypervisor), 这是一个不足之处. 但是半虚拟化提供了与原始系统相近的性能. 与全虚拟化一样, 半虚拟化可以同时能支持多个不同的 *** 作系统.
*** 作系统级的虚拟化
最后一个我们需要了解的虚拟化技术是 *** 作系统级的虚拟化(Operating system-level virtualization), 它使用不同于上面的虚拟化方法. 该技术在 *** 作系统之上虚拟多个服务器, 支持在单个 *** 作系统上简单隔离每一个虚拟服务器(见图4).
图4. *** 作系统级的虚拟化: 隔离单个服务器
*** 作系统级的虚拟化需要修改 *** 作系统内核, 它的优点是具有原始主机的性能.
为什么虚拟技术如此重要?
在了解当今主流的linux虚拟化技术之前, 我们先来看虚拟化技术的优点.
从商业角度来看, 使用虚拟化技术有非常多的原因. 不过大多是用于服务器加固. 简单来说, 如果你能够在单个服务上虚拟多个系统, 这样少数的几台计算机显然能够节省耗电, 空间, 冷却和管理开支. 考虑到确定服务器利用状况的困难, 虚拟化技术支持动态迁移(Live Migration). 动态迁移允许 *** 作系统能够迁移到另一台全新的服务器上, 从而减少当前主机的负载.
虚拟化技术对开发人员来说 也非常重要. Linux内核占用了一个单一的地址空间, 这意味内核或任何驱动程序错误都能导致整个 *** 作系统停止工作. 而通过虚拟化你可以运行多个 *** 作系统, 如果其中一个系统由于错误而宕机, Hypervisor和其它的 *** 作系统不会受到任何影响. 这对调试内核来说就如同调试用户空间程序一样.
1、早期的虚拟化模型被称为Type 1,或者叫本地虚拟化(native virtualization)。2、后来出现了主机虚拟化(hosted virtualization)模式,被称为Type 2,hypervisor运行在 *** 作系统之上,在同一平台上允许两个或更多的 *** 作系统共存。
3、更加传统的虚拟化解决方案是平台虚拟化,或者叫做硬件虚拟化,具有两种主要的形式,完全虚拟化( full-virtualization)和半虚拟化(para-virtualization)。
4、平台虚拟化:如Citrix的Xen是一个流行的解决方案,可以同时执行Type1和Type2型hypervisor,Amazon的EC2就采用Xen来进行服务器的虚拟化。另一个重要的hypervisor是Linux Kernel Virtual Machine(KVM),同样都支持本地虚拟化和主机虚拟化模型。
5、 *** 作系统虚拟化: *** 作系统虚拟化是另外一个重要的虚拟化技术,正如其名,是对 *** 作系统本身进行虚拟化,而不是平台。在这种方式下, *** 作系统提供一组用户空间(User-Space)彼此隔离,而应用被限制在每个用户空间里面,就好像一个独立的主机。这种形式的虚拟化在虚拟主机环境中非常流行,让多个独立的用户可以共享一个 *** 作系统。
6、其他Linux虚拟化技术:
CoLinux,或者叫做协作Linux,是一种利用协作虚拟机的虚拟化方式。
用户模式(User-Mode)Linux,即UML,和CoLinux有些类似,但是更加灵活。
Wine和Cygwin也是有趣的虚拟化解决方案。
一、如何理解安装部署多台Linux虚拟机
1、什么是Linux虚拟机?
虚拟机简单的你可以把它理解为虚拟的电脑,从功能角度来说,这个虚拟的电脑和真实的电脑几乎完全一样,只是说虚拟机的硬盘是在一个文件中虚拟出来的。这个简单了解一下就行。实际上在搭建虚拟机的过程中也可以发现这个特点。
2、怎么搭建一台Linux虚拟机?
实际上也是通过虚拟化的软件来实现的。就是说在你的一台真实的电脑上通过安装一个虚拟化软件来实现虚拟机的搭建。也就是说安装一个虚拟化的软件就行了。
3、选择安装哪一种、什么版本的虚拟化软件呢?
当然虚拟化软件有很多,比如用于服务器的,还有就是用于个人电脑的,这里我们先只关注用于个人电脑的虚拟化软件,常见的有VMware workstations和virtualbox. 简单使用的话,两者其实差不多,只是可能在有些功能支持上virtualbox比 VMware要差一点,所以这里我们就选择使用VMware workstation。
然后就是选择软件版本,版本9,10,11,12都可以,这里我们选择使用版本11,还有要注意30天试用期的问题,如果出现该提示,只需要在网上搜到对应版本的序列号然后输入即可。
所以说我们最终选择的虚拟化软件为VMware workstation 11。
二、VMware虚拟机介绍
1、VMware公司简介
威睿(英语:VMware, Inc.)是一家全球著名的软件的公司,它提供云计算和硬件虚拟化的软件和服务,并号称是第一个商业化的成功的虚拟化的x86架构。公司成立于1998年,VMware的总部设在加利福尼亚州帕洛阿尔托。2004年,威睿被易安信公司收购控股持有,然后,在2007年8月14日,易安信公司在纽约证券交易所上市公司所出售的15%控股。该公司在符号VMW下交易。
2、旗下的产品
1) VMware Workstation
2) VMware Player
3) VMware Fusion
4) VMware Server
5) VMware ESX服务器
6) VMware ESXi服务器
7) VMware vSphere
8) 数据中心
9) 其它产品
3、VMware工作站的描述
VMware工作站(VMware Workstation)是VMware公司销售的商业软件产品之一。该工作站软件包含一个用于英特尔x86兼容电脑的虚拟机套装,其允许用户同时创建和运行多个x86虚拟机。每个虚拟机可以运行其安装的 *** 作系统,如(但不限于)Windows、Linux、BSD变生版本。用简单术语来描述就是,VMware工作站允许一台真实的电脑在一个 *** 作系统中同时打开并运行数个 *** 作系统。其它VMware产品帮助在多个宿主电脑之间管理或移植VMware虚拟机。
4、虚拟机的技术描述
运行VMware工作站进程的计算机和 *** 作系统被称为宿主机(host)。在一个虚拟机中运行的 *** 作系统实例被称为虚拟机客户(guest)。类似仿真器,VMware工作站为客户 *** 作系统提供完全虚拟化的硬件集–例如,客户机只会检测到一个AMD PCnet网络适配器,而和宿主机上真正安装的网络适配器的制造和型号无关。VMware在虚拟环境中将所有设备虚拟化,包括视频适配器、网络适配器、以及硬盘适配器。它还为USB、串行和并行设备提供传递驱动程序(pass-through drivers,指将对这些虚拟设备的访问传递到真实物理设备的驱动程序)。
由于与宿主机的真实硬件无关,所有虚拟机客户使用相同的硬件驱动程序,虚拟机实例是对各种计算机高度可移植的。例如,一个运行中的虚拟机可以被暂停下来,并被拷贝到另外一台作为宿主的真实计算机上,然后从其被暂停的确切位置恢复运行。借助VMware的VirtualCenter(虚拟机中心)产品中一种称为Vmotion的新功能,甚至可以在移动一个虚拟机时不必将其暂停–就是说现在即使在向不同的宿主机上移植虚拟机时,这些虚拟机仍然可以保持运行。
简单概括:
VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器.
VMWare虚拟机软件来测试软件、测试安装 *** 作系统(如linux)、测试病毒木马等。
VMWare是真正“同时”运行,多个 *** 作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个 *** 作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,可以通过网卡将几台虚拟机用网卡连接为一个局域网。
5、相关功能
1)不需要分区或重开机就能在同一台PC上使用两种以上的 *** 作系统。
2)完全隔离并且保护不同OS的 *** 作环境以及所有安装在OS上面的应用软件和资料。
3)不同的OS之间还能互动 *** 作,包括网络、周边、文件分享以及复制贴上功能。
4)有复原(Undo)功能。
5)能够设定并且随时修改 *** 作系统的 *** 作环境,如:内存、磁碟空间、周边设备等等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)