虚拟机概述
或许你和我一样,是一个喜欢评测软件的人,很可能你也和我一样,常常遇见因为安装了某个软件导致系统崩溃最后不得不重装系统的郁闷情况。这种情况一直持续直到我使用虚拟机,此后,我就再也没有遇到因为软件评测而导致重装系统的情况。
当然,这不代表我所评测的软件没有问题,而是我将风险转嫁到了虚拟机上,而不是我真正使用的计算机。通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行工作。因此,当我在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,我可以马上恢复虚拟机到安装软件之前的状态。
通过虚拟机,你可以在一台计算机上同时运行多个(种)操作系统,从而具有以下好处:
-
轻松移植应用程序。如果某个应用程序和新版本的操作系统不兼容,必须运行在某个旧版本的操作系统中,那么你可以在物理计算机上的宿主操作系统之上运行虚拟机软件,然后在虚拟机中安装旧版本的操作系统,从而运行这个应用程序。这样,避免了为了运行此应用程序而专门使用一台计算机。
-
便于测试应用程序、操作系统、网络部署等等。通过虚拟机,你可以在一台物理计算机上轻松的完成多种环境下的应用程序、操作系统的测试;你也可以模拟多台计算机组成的网络,从而完成各种网络部署的测试。
从我2003年接触虚拟机开始,我已经离不开它了。同时,我建议大家学习掌握虚拟机的使用,这样对你的工作和学习会有很大的帮助。
虚拟机术语
为了在后面更好的对虚拟机进行介绍,首先介绍一下虚拟机中所使用的术语:
术语 | 定义 |
虚拟机 (Virtual Machine) | 通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在本站所有的关于虚拟机的技术文章中,虚拟机指的是通过Virtual PC或者Virtual Server所模拟实现的虚拟计算机系统。 |
客户操作系统 (Guest Operating System) | 运行在虚拟机中的操作系统。注意,在此它不等于桌面操作系统(Desktop Operating System)和客户端操作系统(Client Operating System),因为虚拟机中的客户操作系统可以是服务器操作系统。 |
物理计算机 (Physical Computer) | 运行虚拟机软件(Virtual PC 和 Virtual Server)的物理计算机硬件系统,又称为宿主机。 |
宿主操作系统 (Host Operating System) | 在物理计算机(宿主机)上运行的操作系统,在它之上运行虚拟机软件(Virtual PC 和 Virtual Server)。 |
虚拟网络 (Virtual Network) | Virtual PC 和 Virtual Server所模拟出来的网络,虚拟机可以连接到虚拟网络中。在Virtual Server中,你可以创建和配置无限多个虚拟网络,并且虚拟网络可以连接到物理计算机所连接到的物理网络。 |
.vmc | Virtual PC 和 Virtual Server用于存储虚拟机配置的文件的扩展名。 |
.vhd | Virtual PC 和 Virtual Server用于存储虚拟机硬盘数据的文件的扩展名。 |
.vsv | Virtual PC 和 Virtual Server用于存储保存的虚拟机状态的文件的扩展名。 |
.vnc | Virtual Server用于存储虚拟网络配置的文件的扩展名。 |
.vud | Virtual PC 和 Virtual Server用于存储虚拟机恢复磁盘数据的文件的扩展名。 |
目前运行在Windows上的虚拟机软件主要有微软、Vmware和Parallels的产品,它们之间各有特色。我过去一直使用Vmware的产品,后来因为微软虚拟机软件具有最为强大的网络环境构建功能,所以从2004年开始使用微软的虚拟机软件。
微软推出了两款虚拟机软件:Virtual PC和Virtual Server,它们主要具有以下特性:
Virtual PC
Virtual PC目前的最新版本是Virtual PC 2004 SP1(版本号为5.3.582.27),它主要针对桌面操作系统,为需要在一台物理计算机上同时运行一个或多个桌面操作系统的桌面用户而设计,因此为桌面用户的使用设计了一些特性,如用户可以在虚拟机和宿主机之间拖放文件、任意修改虚拟机窗口大小、通过共享目录功能允许虚拟机访问宿主机上的文件、支持声卡、支持剪贴板复制等等。
Virtual PC主要使用在以下场景:
-
支持使用旧版本桌面操作系统的应用程序。例如某个应用程序只能使用在Windows 98中,你可以在宿主操作系统为Windows XP的物理计算机中安装虚拟机软件,然后在虚拟机中安装Windows 98,从而运行此应用程序。
-
桌面技术支持。如果你是桌面技术支持,你可以使用Virtual PC来模拟多个桌面操作系统环境,从而模拟桌面客户的操作系统环境,帮助客户解决他们的问题。
-
桌面应用程序测试。如果你是一个开发人员,你可以通过Virtual PC来构建一个测试环境,从而测试你所开发的软件在不同桌面操作系统下的表现。
-
培训。如果你是一个讲师,你可以使用Virtual PC来构建你的培训场景,这样,通过一台计算机,你就可以模拟多个培训场景,并且利用Virtual PC的“Undo”功能,你可以禁止别人对虚拟机的修改,从而能够快速的恢复你的培训场景。
Virtual Server
Virtual Server目前的最新版本是Virtual Server 2005 R2(版本号为1.1.465.292 EE R2),它具有32位的x86和64位的x64两个版本,分别支持在32位和64位操作系统下运行。和Virtual PC不同,它主要针对服务器操作系统,基于企业级应用程序测试和企业管理的需求而设计,并且和Virtual PC相比,它没有对桌面用户提供更多的支持,而是提供了更多的企业级管理和扩展特性,例如虚拟机的远程管理、虚拟机所使用的CPU和系统资源分配等等。
Virtual Server主要设计用于运行企业服务器操作系统和企业级应用,它主要使用在以下场景:
-
测试服务器应用程序。当企业需要部署某个服务器应用程序时,你可以在Virtual Server中对它进行测试;Virtual Server可以完美的虚拟多个(种)真实的服务器环境,从而让你很轻松的完成部署测试;
-
提高服务器利用率。许多企业中不同部门或者不同的分公司具有不同的操作系统或应用程序需求,因此具有不同的服务器,但是这些服务器的利用率往往不高。通过Virtual Server,你可以将这些不同的服务器需求通过虚拟机来实现,从而将它们整合到一台物理服务器中,提高服务器的利用率。而对于具有这些服务器需求的用户来说,他们不会感觉到在虚拟机上运行的服务器和物理计算机上运行的服务器具有多大的区别。
应用程序移植。许多企业中具有要求使用旧版本服务器操作系统(例如 Windows NT Server 4.0)的服务器应用程序,你可以在Windows Server 2003上运行Virtual Server,然后在虚拟机中安装Windows NT Server 4.0来运行此应用程序,从而完成应用程序的移植。
共享特性
Virtual PC 和 Virtual Server 之间具有一些相同的特性,包括:
-
相同的基本文件架构。Virtual PC 和 Virtual Server 均使用相同的虚拟机文件类型和虚拟机资源文件。例如,虚拟机配置文件使用.vmc文件,虚拟机硬盘使用.vhd文件等等,这样保证了在Virtual PC 和 Virtual Server 之间可以共享虚拟机系统。
-
网络。Virtual PC 和 Virtual Server 允许在虚拟机和物理计算机之间进行网络通讯,并且在Virtual Server中,你可以创建和配置无限多个虚拟网络。
-
虚拟机控制选项。Virtual PC 和 Virtual Server 具有相同的虚拟机控制选项,例如启动、暂停、关闭和保存状态等等。
-
磁盘特性。Virtual PC 和 Virtual Server 中均具有恢复(“Undo”)磁盘和差异磁盘。
Virtual PC 和 Virtual Server 的不同之处
当然,Virtual PC 和 Virtual Server 由于定位不同,也具有不同的特性,它们之间详细的特性区别如下表所示:
项目 | Virtual PC | Virtual Server |
支持的宿主操作系统 |
| x86(32位)版本的Virtual Server支持以下宿主操作系统:
x64(64位)版本的Virtual Server支持以下宿主操作系统:
|
支持的客户操作系统 | 微软官方说明支持的客户操作系统:
另外经测试,Virtual PC同样支持使用32位服务器操作系统(例如Windows Server 2003系列、Windows 2000服务器系列)作为客户操作系统,但是可能支持程度不如Virtual Server紧密。 | 微软官方说明的x86(32位)版本Virtual Server支持的客户操作系统:
另外经测试,x86(32位)版本Virtual Server同样支持使用其他32位桌面操作系统(例如Windows 2000 Pro、Windows ME/9x等)作为客户操作系统,但是可能支持程度不如Virtual PC紧密。 |
运行方式 | 作为应用程序运行 | 作为服务运行 |
模拟声卡 | 支持 | 不支持 |
在虚拟机和宿主机之间拖放文件 | 支持 | 不支持 |
任意修改虚拟机窗口大小 | 支持 | 不支持 |
允许虚拟机访问宿主机上的文件 | 支持 | 不支持 |
支持剪贴板复制 | 支持 | 不支持 |
NAT网络共享 | 支持 | 不支持 |
支持64位操作系统 | 不支持 | 支持 |
虚拟机软件的远程管理 | 不支持 | 支持使用基于Web站点的管理,支持使用SSL |
虚拟机的远程管理 | 未提供额外工具 | 提供Virtual Machine Remote Control (VMRC)工具进行远程管理,支持使用SSL |
脚本管理 | 不支持 | 支持 |
WMI集成 | 不支持 | 支持 |
与其他Windows服务器管理产品兼容 | 不支持 | 支持ADS,SMS SP1,MOM 2005 |
委派管理 | 不支持 | 支持 |
系统日志记录 | 不支持 | 支持 |
SCSI磁盘支持 | 不支持 | 支持 |
宿主机多处理器支持 | 不支持(只支持使用1个CPU) | 支持 (标准版本最多支持4个CPU,企业版本支持的CPU数只受宿主操作系统的限制) |
多线程技术 | 不支持 | 支持 |
支持的宿主机最大内存容量 | 4G | 64G |
支持在64位操作系统上运行 | 不支持 | 仅64位版本支持 |
支持在虚拟机中运行64位操作系统 | 不支持 | 不支持 |
配置运行虚拟机的用户账户 | 不支持 | 支持 |
CPU和系统资源分配 | 不支持 | 支持 |
虚拟网络 | 具有1个NAT共享网络和1个虚拟网络 ,虚拟网络不能连接到宿主计算机所连接的网络。不过虚拟机可以连接到宿主计算机的网络适配器从而连接到宿主计算机所连接的网络。 | 可以创建无限多个虚拟网络,并且每个虚拟网络都可以连接到宿主计算机所连接的网络。 |
群集支持 | 不支持 | 只支持双节点群集,应仅在试验环境中使用。 |
支持的CD-ROM驱动器数量 | 1个 | 最大为4个 |
因此当你在选择所使用的虚拟机软件产品时,请根据以下原则进行选取:
首先根据宿主操作系统进行判定,如果宿主操作系统为Windows 2000 Professional和Windows XP Tablet PC Edition,你只能使用Virtual PC;当宿主操作系统为服务器操作系统时,你只能使用Virtual Server。不过Windows XP Professional是个特例,你可以同时在Windows XP Professional上运行Virtual PC和Virtual Server,例如我现在就是这样。不过Virtual PC和Virtual Server对于虚拟机系统的处理还是有些区别,它们可以共享部分虚拟机系统文件而不是全部,因此我还是建议你根据虚拟机上所运行的客户操作系统来选取一种虚拟机软件:如果是更多的运行服务器操作系统则选择Virtual Server;如果是更多的运行桌面操作系统则选择Virtual PC。Virtual PC和Virtual Server之间是完全独立的,不要同时在Virtual PC和Virtual Server中运行虚拟机。
在Virtual PC 和 Virtual Server 之间移植虚拟机系统
当在Virtual PC 和 Virtual Server之间移植虚拟机系统时,需要注意以下几点:
-
模拟声卡;Virtual PC支持在虚拟机中使用模拟声卡,但是Virtual Server不支持。因此当虚拟机系统需要从Virtual PC移植到Virtual Server时,请记住在Virtual PC中禁止使用模拟声卡。
-
SCSI磁盘支持;Virtual Server提供SCSI磁盘支持,但是Virtual PC不支持。因此如果要同时在Virtual PC 和 Virtual Server中使用虚拟磁盘时,请记住将虚拟磁盘连接到Virtual Server的IDE总线。
-
配置文件;Virtual PC 和 Virtual Server的虚拟机配置文件(.vmc)基本兼容,但是并不完全兼容。如果某个虚拟机处于保存的状态,那么不要移植此虚拟机,因此Virtual PC 和 Virtual Server之间的状态保存文件(.vsv)不兼容。
-
CD-ROM驱动器;Virtual Server允许一个虚拟机使用多个CD-ROM驱动器,但是Virtual PC只支持一个虚拟机使用一个CD-ROM驱动器。如果你需要将虚拟机从Virtual Server移植到Virtual PC,那么此虚拟机只能配置为使用一个CD-ROM驱动器并且连接到辅助通道0。
最后,需要提醒一下的是,你不能在微软的虚拟机中运行微软的虚拟机软件,例如在Virtual PC或者Virtual Server所模拟的虚拟机中再运行Virtual PC或者Virtual Server,虽然可以运行第三方的虚拟机软件,但是不推荐这样,在绝大多数情况下,你也只能进入它们的管理界面而不能运行它们所配置的虚拟机。