分享

虚拟无限--对虚拟机与虚拟化的简单整理 - ||| 54baishi.126.com ||...

 ShangShujie 2006-11-19
 虚拟无限
                                       ---------对虚拟机与虚拟化的简单整理

                     BaiShi   http://baishi.

作者的话

  这些天想装个虚拟机来学习用,于是便找找相关的资料,为和我一样为虚拟机的选择而困惑的朋友写下了这篇文章.我这个人就是喜欢总结和整理一些东西.:)不小心接触到了高深的Virtualization(虚拟化)技术,由于个人水平有限,只是对网上的相关资料做了些整理,希望能给大家一些参考,有不足和错误的地方,请不吝指教.

 

 

一.虚拟机与虚拟化

虚拟机(virtual machine) 

虚拟机(VM)是支持多操作系统并行运行在单个物理服务器上的一种系统,能够提供更加有效的底层硬件使用。

虚拟机原理:

在虚拟机中,中央处理器芯片从系统其它部分划分出一段存储区域,操作系统和应用程序运行在“保护模式”环境下。如果在某虚拟机中出现程序冻结现象,这并不会影响运行在虚拟机外的程序操作和操作系统的正常工作。

 在真实计算机系统中,操作系统组成中的设备驱动控制硬件资源,负责将系统指令转化成特定设备控制语言。在假设设备所有权独立的情况下形成驱动,这就使得单个计算机上不能并发运行多个操作系统。虚拟机则包含了克服该局限性的技术。虚拟化过程引入了低层设备资源重定向交互作用,而不会影响高层应用层。通过虚拟机,客户可以在单个计算机上并发运行多个操作系统。

溯源

早在上个世纪60年代IBM就开发了一套名为VM/370的操作系统。VM/370在不同的程序之间提供抢先式多任务,作法是在单一实际的硬件上模式出多部虚拟机器。典型的VM/370会话,使用者坐在电缆连接的远程终端前,经由控制程序的一个IPL命令,模拟真实机器的初始化程序装载操作,于是一套完整的操作系统被载入虚拟机器中,并开始为使用者着手创建一个会话。这套模拟系统是如此的完备,系统程序员甚至可以运行它的一个虚拟副本,来对新版本进行除错。

虚拟机软件

  所谓虚拟机软件,是一种以原有的操作系统为基础,在宿主机上使用额外的硬盘空间通过软件级的模拟,(提供一组标准的 API和可选的实时编译器,仿真一个标准的CPU及操作系统的 API 集,虚拟机从其自定义的 API 到操作系统 API 之间进行“翻译”)创建一个或多个的运行有单独互不干扰的操作系统的虚拟计算机,并可将其连成一个网络的软件。

与虚拟机有关的几个术语。(由于VMware、Virtual PC并没有提供相应的中文文档,其并没有得到有关厂商的书面认可。)

宿主机(Host Machine): 就是安装虚拟机软件的计算机,也就是我们所使用的物理计算机。

虚拟机(Virtual Machine): 与宿主机相对应的一个概念,它是指利用虚拟机工具在宿主机里构造出来的虚拟计算机。具有和物理计算机一样的表现,有自己的BIOS,有一套完整的硬件设备,包括内存、硬盘、光驱、网卡、声卡、显卡等,可以有自己的操作系统,可以在里面运行自己的应用软件。

宿主操作系统(Host OS): 在宿主机里安装的操作系统就是宿主操作系统,例如我们在一台Windows XP的计算机里安装了VMware,这里的Windows XP就是宿主操作系统。

客户操作系统(Guest OS): 在虚拟机里安装的操作系统就是客户操作系统,客户操作系统和宿主操作系统天然隔离,但是彼此之间又不是完全隔绝,而是可以通过虚拟网络互相联系。

虚拟机体系结构。

1.“一对一映射”,其中以 IBM 虚拟机最为典型。

2.由机器虚拟指令映射构成,其中以 Java 虚拟机最为典型。VirtualPC采用完全模拟的方式

3.直接映射部分指令,Unix 虚拟机模型和 OSI 虚拟机模型.Vmware就是将一些操作传给Host由Host系统来执行

4.直接调用操作系统功能。

虚拟化Virtualization

 “虚拟化”是一个软件层,能够将软件与硬件隔离,将所有可用的计算和存储资源以资源池的方式组成一个单一的整合视图,通过提供虚拟功能,将资源看作一个单一公共的平台,最终资源池就像我们日常生活中的水和电一样,成为企业信息系统中的“公用设施”(Utility Computing)。其做为虚拟机的扩展技术。

virtualization并不是一个新技术,早在60/70年代,IBM就已经在360/67370等硬件体系实现上virtualization Virtualization通过VMM(Virtual Machine Monitor)把一个硬件虚拟成多个硬件(VM,Virtual Machine),各VM之间可以认为是完全隔离的。这个隔离不同于各进程之间的地址空间隔离。无论是内存,设备,还是处理器等对各VM来讲,都被认为是自已独一套的。在VM上可以运行任何的操作系统(称为Guest OS)而不会对其它的VM产生影响。

它首先出现在大型主机上,现在在Unix服务器上也已经普及,并正在向配置英特尔公司至强处理器的服务器上蔓延。微软和VMware采用基于软件的方法实现“虚拟化”和分区,但英特尔公司则计划通过硬件提供对虚拟化的支持。英特尔正酝酿把两种相关的虚拟功能纳入Pentium 、Xeon和Itanium 处理器,赋予这些芯片支持多重操作系统的能力。就桌面型芯片而言,此功能称为Vanderpool技术(VT),就服务器而言称为Silvervale技术(ST)。Silvervale和Vanderpool会提供界面功能,让操作系统得知例如有网络信息传入等硬件中断的情况。这些功能会随下一代Windows 操作系统(代号“Longhorn”)推出。能够被EMC公司的VMWare、微软公司未来的VirtualPC和VirtualServer、以及Linux虚拟软件使用,CPU层面实现仿真。AMD也会在未来推出名为Pacifica的类似于Intel Vanderpool和Silvervale的自有技术。

 对于用户来说,虚拟计算资源将带来非常明显:首先,会提高资源利用率,避免复杂的系统集成和大规模的设备占用空间,降低投资成本;其次,可以简化管理的复杂性,能对整体系统运行环境进行统一监管和动态分配,从而能够降低计算管理和运行成本;第三,可以充分利用整体平台的优势,更好地发挥系统的效能;第四,从总体上可以提高全系统的可靠性。

  服务器虚拟化---虚拟计算资源可提供资源整合、更高可用性和基础设施灵活性,从而提高IT投资的回报率,并降低计算基础设施的总体拥有成本。

在未来的几年时间内,虚拟化将成为计算机技术中最具发展潜力的领域。

 

应用

1.反病毒技术

http://www./antivirus/rviruslore/rvirus028.htm

http://www./antivirus/rviruslore/rvirus021.htm

http://www./articles/200310/622.html

2.网络安全

搭建一个windows下的蜜罐系统http://we./InfoView/Article_334.html

http://www./showart.asp?art_id=917&cat_id=4

3.程序开发

程序员编写的程序,需要在多种环境及多个系统下运行。利用虚拟机,可以在一台计算机上安装多种虚拟机和配置多种环境进行测试,这样有利于发现问题和快速反馈问题。利用客户或服务器性能,公司配置他们的开发环境,并允许软件工程师在一个单独的盒子里开发、测试多等级的应用程序和安全脚本。例如,利用一个虚拟机环境提供 Microsoft .NET 测试第二版的开发环境,使多个开发者利用这个开发环境在数据中心共享虚拟机上工作。或向开发者提供他们的标准桌面,并且使开发者可以在虚拟机上运行他们所有的开发平台。如果需要的话,开发平台能很容易的被备份,重建,拷贝或移动到更快的机器上。

4.软件测试与破解

对于软件测试人员个破解爱好者,常常对一些软件测试或破解,软件安装多了,系统也就杂乱无章,常常出现一些内存共享的错误.。虚拟机可以保证自己的正常工作,又能满足测试或破解软件的需要。

5..应用学习

虚拟机生成的只是一个文件,你完全可以通过分区、格式化等方式放心大胆地运行系统和软件,即使出现错误也只要删除这个文件并重新安装一次即可。而且将虚拟机的文件复制到另一台计算机上仍可以运行,这就大大节约了我们宝贵的时间。

另外,由于SolarisMac OS都需要专业计算机的支持,如果你没有条件购置这些计算机的话,通过虚拟机完全可以免费给你打造一个真实的操作系统环境。即使对于Windows用户来说,在虚拟机上安装几个Windows 2000就能够体味到域、活动目录管理等平时难以接触到的知识,尤其适合那些准备MCSE考试的朋友。

6.娱乐

游戏玩家用虚拟机来玩不同平台上的游戏。例如用Virtual PC来玩老版本的DOS游戏

7.公用设施计算

IBM、HP、微软、Sun等业界巨头正在寻求新的途径,将多台服务器、存储系统连接起来,以公用计算的方式形成计算资源池。通过管理员或是自动化的管理软件,将计算任务从一个硬件系统方便地传递给另一个硬件系统,使计算资源得到充分、合理的利用。虚拟化技术使得硬件升级变得很容易,并能方便地根据计算任务的需求调配资源;一旦某一设备出现故障,计算任务可以方便地转移,从而大大加强系统的安全性和稳定性。

VMware已经宣布计划开发名为VirtualCenter的管理软件和一组开发工具集,这些工具将帮助IBM、HP等公司可以更容易地将VMware 软件集成到它们的公用计算技术中。VMware称,BMC软件、CA、Veritas、HP和IBM都在各自的集成任务中使用这一套件。目前,VMware的软件产品线主要针对用于数据存储和处理的联网服务器,

8.培训环境

关于技术培训最大的抱怨,是公司不能在相同的环境下使用他们自己的产品来进行训练。使用VM技术,可以为培训创建一个综合的多服务器环境,并且允许它可以在单独的机器上或一个共享服务器上运行。如Volant Training公司提供的有计划利用VM环境的课件。

9.应用程序迁移

一个关键驱动程序,当迁移到新的平台上时,它提供给企业继续运行遗留的原OS应用程序的能力。通过附加到Windows 2003服务器上的VM技术应用,公司利用强化的多个原OS的服务器可以实现成本效率。

10.服务器加强

为数据中心和远程办公提供极大的好处。举例说明,假设在你的100个分支点,在每个点上,你希望运行一个ISA 服务器、Exchange 2000、和作为主要域控制器的Windows 2003副本。如果没有VM技术,那么你仍需要为每个点购置三台机器,即使它们的利用效率很低。使用VM技术,只需购买一台有1个或2个处理器的机器,并在主机操作系统上运行PDC(个人数字系统:Personal Digital System),在VM上运行ISA和Exchange。通过数据中心,可以取得它们各自硬件要求的多种应用程序,并且在VM上通过一个单独的多处理器运行它们。

价格:在正式推出了Virtual PC 2004 版本,售价129 美元,比Connectix 时期的229 美元下降不小,用以冲击同领域的加入EMC 旗下的VMware

11.服务器整合

很多企业因为历史原因或者其他因素,每个部门都有一台服务器,或者其中几个重要部门都配置有服务器。这些服务器功能都比较单一,应用也比较少,但这些应用各不相同,它们不能共存于一台服务。在以前,只能为这些部门各配置一台服务,这无形中增加了硬件投资及管理成本。而现在,企业面临升级的问题,不能再给每个部门购买一台服务器,但原来的服务怎样保存下来呢?一步升级到位是不太现实的,也需要有个过程。

利用虚拟机系统,可以安装多台虚拟的服务器,为每个部门分配一个虚拟的服务器,这些虚拟的服务器与真正的服务器没有任何的不同,这样就减少了硬件的投资及管理维护的成本。

12. 调解程序间的冲突

随着以Windows为首的多任务操作系统的出现,程序需要共享资源。但是当一个程序共享另一个程序相同的系统资源时,这两个程序就会发生冲突。为了缓和这种供求矛盾,虚拟机(VirtualMachine)就应运而生了。在Windows系统中,所有的程序都必须在虚拟机中运行。Windows系统利用虚拟机来让运行的程序相信自己对所有的系统硬件拥有排它的访问。为了便于理解,可以把Windows系统看作一个资源管理员,它始终监视各运行程序正在使用的硬件和资源,同时它还创建运行程序驻留的虚拟机。当程序把消息发给某一特定设备时,Windows系统将截获这一消息,然后在另一程序没有使用该设备时,把消息按规定路径发给那个设备和内存存储单元。Windows系统就是以这种方式管理整个系统资源,而不是单个程序。(Windows系统中只存在2种类型的虚拟机:SYSTEMVM(系统虚拟机)和MS-DOSVMDOS虚拟机)。系统虚拟机:16Windows程序和32Windows程序都运行在系统虚拟机上。所有基于Windows16位程序在SYSTEM VM上共享一个空间。由于共享,这些16位程序可能交叉占用各自的资源,当这种情况发生时,用户将收到一个或多个GPF(一般性保护错)信息。32Windows程序在SYSTEM VM上有各自的地址空间,因为这些32位程序不共享资源,因此它们就不能交叉占用各自的资源,因此,纯32位程序之间几乎不会出现死机,这也是为什么Windows NT的稳定性远远高于Windows 95/98系统的根本原因(NT是纯32位操作系统)!;MS-DOS虚拟机 :由于各个MS-DOS程序对所有的系统资源拥有排它的访问,故MS-DOS的应用程序同一时间只能运行一个,因此所有的基于MS-DOS的程序只能在各自的虚拟机上运行。 

13.桌面分发与管理desktop-ondemand

关于这方面的功能SoftricityVMWare合作写过相关的白皮书(桌面随需:《衡量SoftricityVMWare对桌面分发与管理有什么优势》并由运软公司翻译http://www./transoft/partners/manuals/vmware-softricity-desktop-ondemand.doc

 

一些常见的虚拟机

SYSTEMVM(系统虚拟机)

VDM(DOS虚拟机,它用来在32位保护模环境中运行16实模式代码)

Vmware(商业软件,极小部分源代码开放2003年底被存储巨头EMC收购http://www./  http://www.vmware.cn/

Virtual PC(美国Connectix公司,2003年2月19日被微软收购其虚拟机软件和相关专利,随后微软在windows Server2003中加入虚拟机,微软今后会将它嵌入到Windows环境中,并在其核心功能之上开发出更多的功能。http://www.microsoft.com/windows/virtualpc/default.mspx)

Bochs(开源软件,历史悠久的X86模拟器,原来的Plex86,可运行Windows/Linux/*BSD/DOS,最大的优点是,OpenSource,Free。http://bochs./)

QEMU( MIPS R3k/ARM7|9/PowerPC模拟器http://fabrice.bellard./qemu/

PearPC(与Virtual PC、Vmware这样的虚拟机类似,不过它虚拟的是G3处理器,所以能在PC上的Windows系统中模拟苹果电脑环境来运行MacOS)

mips64emul(mips64emul可以运行在大多数的Unix上,至少目前在Linux/netBSD host上运行得很好。可以模拟32/64位的MIPS CPU,支持netbsd, openbsd, linux, Ultrix, Irix的MIPS版本。支持boot模式安装系统和user模式直接运行elf/coff格式可执行文件)。

Virtuozzo(商业软件SWsoft开发 http://www./products/virtuozzo/

Cygwin(参见我的另一篇文章《cygwin与漏洞攻击程序的编译》http://blog.csdn.net/baishi_/archive/2004/12/13/215365.aspx

twoostwo(另一个小巧的X86虚拟机,功能与vmware类似。

http://www./

simics,(目前为止模拟系统类型最多的虚拟机,支持 Alpha, ARM, IA-64, MIPS, PowerPC, SPARC V9, x86, and AMD64平台,不过它的速度可真的不是一般的慢,如果你的机器低于4个CPU,还是最好不要跑它了)

QuickTransit(Transitive一种电脑虚拟机软件并努力将其定义为“硬件视图(Hardware Visualization) ,能够模仿几乎所有的操作系统,运行在模仿器上的异种程序的性能并不会减慢多少。 )

JVM (Java 虚拟机,不多说了)

plex86(针对X86的开源虚拟机,类似于VMWare

 

二. VMWare与Virtual PC区别

主要说说VMWare与Virtual PC区别因为我和许多朋友一样都在为二者的取舍而困惑。

内存篇

VMWare占用你为虚拟机分配好的内存并用不释放,可调。

VPC根据你实际使用情况来动态增加。

评论:看起来好像是VPC的方式更加好,但是实际运行速度绝对是VMWare快很多。

硬盘篇

VMWare其硬盘容量不可调(指定大小后就不可以更改,但可以类似PC去加第二块硬盘。)能把物理硬盘并到虚拟机中使用。

VPC,可以动态扩展硬盘,会送你一块40G的虚拟出来的硬盘,该硬盘可依你在虚拟机中安装的东西而变化。不会把物理硬盘并到虚拟机中使用。Virtual PC的虚拟磁盘默认为16G,但它实际的大小是动态分配的,存放多少文件,虚拟磁盘文件在宿主机上看就是多大。(随着虚拟机里文件的添添减减,虚拟磁盘占用的空间会只大不小,这时候可千万别尝试“磁盘整理”,一整理会让虚拟磁盘文件更大。微软提供给我们一个压缩工具——Precompact,在虚拟的平台上运行后,就可以使用Virtual PC提供的磁盘压缩功能了。据说这个工具并未公开发布,所以很多Virtual PC的用户对那个磁盘压缩功能十分不解——压缩前后,虚拟磁盘还和原来一样大。就是因为没有运行这个东东的缘故。)

评论:实际使用VMWare的磁盘效率远远高于VPC

网络篇

VMWare是通过模拟网卡实现网络共享的

VirtualPC是通过在现有网卡上绑定VirtualPCemulatedswitch服务实现网络共享的。对于win2000/xp等操作系统,如果网线没插或没有网卡的时候,要安装Microsoft的loopback软网卡,才能实现网络共享。在VirtualPC的globalsetting里,当有网卡并插好网线的时候,将Virtualswitch设成现实的网卡;当没有网卡或网线没插的时候,将Virtualswitch设成msloopback软网卡,即可实现网络共享。

msloopback软网卡的安装方法,以win2000为例:

控制面板->添加/删除硬件->添加/排除设备故障->添加新设备->否,从列表选择->网卡->制造商选microsoft->microsoftloopbackadapter。)

显卡篇

VMWare没有模拟显卡,要通过vmware-tools才能用上高分辨率和真彩色,否则只能用VGA。

VirtualPC模拟了一个比较通用的显卡:S3Trio32/64(4M)。从这一点看,VirtualPC比VMWare通用,但显示性能不如VMWare。

硬件篇

vmware能提供硬件级的模拟(有一些程序,如HD-COPY,只能在VMWare下运行,如果你使用Image文件作为软驱的话)。可以设置虚拟机的BIOS,可提供USB和其他更多端口的服务。

Virtual PC不可以,不能在虚拟机中添加多块网卡,没有提供USB和其他更多端口的服务,不能在虚拟机中添加多块网卡,提供的远程控制功能要差。

光盘篇

vpc与VMware软件均有虚拟光驱的功能

VMware光驱设置项目中直接选择 做好的*.iso作为光驱,并注意将它的属性设为 IDE1:0  也就是IDE接口的主盘。

 vpc中右键点击光盘图标,选择capture image ... ,就可以装入ISO文件。

启动篇

Mware更像一台新机,其加载时是不能动态改变硬件设置的,启动是绝对的冷启动,校验硬件,比较慢,但是启动系统完毕后,操作时速度明显比VPC快的多,兼容性好很多。

 VPC比VMware用起来启动快,其可以动态改变设置,加载各种镜像,如果是光用来检验刻录的*.iso的启动等功能,的确省时间。

 注意:VMware调用很多真实系统的配置,真实系统的优化对它的运行速度影响很大!

 

环境篇

VMWare可运行在Windows(WinNT以上)和Linux操作系统上。(不支持98系统)

 Virtaul PC可运行在Windows(Win98以上)和MacOS上。(为了减小竞争,Microsoft 在收购了Connectix后,就取消了其上Linux的官方支持实际上Virtual PC 2004 依然能够支持用户运行Linux/Unix 操作系统)

 

方向策略篇

VMware该软件的设计本意是用于软件调试和扩充大型机和工控机的应用范围,为管理员管理和程序员开发跨平台的应用软件提供一个理想的解决方案,方便开发人员在各个系统之间进行切换。主攻战场是服务器--用于企业数据中心,策略是使其软件成为在业界被炒得很热的效用计算概念的一部分。

Virtual PC微软公司计划使用这一技术对必须在新的硬件系统上运行原来软件的客户并说服企业向Windows XP升级,主要面向PC。

选择篇

专业用户选择VMware,最求简单方便和兼容性的WINDOWS用户选择Virtual PC

 

三.虚拟机研究与技术讨论会

2004年5月6日和7日USENIX举办了第三届虚拟机研究与技术讨论会(VM‘04)。该讨论会的前身是举办过两届的Java虚拟机技术讨论会(JVM‘01和JVM‘02)。由于在过去几年中虚拟机技术被广泛应用,因此本届讨论会不再局限于Java虚拟机,而是包括了Microsoft.NET,以及较低层的虚拟机环境如VMware、ConnectixVirtualPC和SWSoftVirtuozzo等等方面的研究和技术。

USENIXVM‘04的详细内容参见

http://www./events/vm04/

会议上提交的部分论文参见:

http://www./events/vm04/tech/

 

附:

Virtualization(虚拟化)技术http://blog.csdn.net/wkkii/archive/2004/07/15/42295.aspx

 

数据中心的存储革命――虚拟化http://www./info/solution/2004-07-07/0001815719.shtml

虚拟化的未来  http://media./media/swm/212/08601.htm

中国科学院存储与虚拟化课题主页http://www./div7/san/index.htm

透过虚拟化构架节约成本http://www.yesky.com/ServerIndex/77132944006709248/20041116/1876318.shtml

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多