虚拟机(Virtual Machine)指通过 软件模拟的具有完整 硬件系统功能的、运行在一个完全 隔离环境中的完整 计算机系统。
虚拟系统通过生成现有 操作系统的全新虚拟 镜像,它具有真实 windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行 软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作 系统。虚拟系统和传统的 虚拟机( Parallels Desktop, Vmware, VirtualBox, Virtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动 windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有 操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且 虚拟机需要模拟底层的硬件指令,所以在 应用程序运行速度上比虚拟系统慢得多。
流行的 虚拟机软件有 VMware( VMWare ACE)、 Virtual Box和 Virtual PC,它们都能在 Windows系统上虚拟出多个计算机。
- 中文名 虚拟机 外文名 virtual machine
- 分 类
- 微软虚拟机等
- 解 释
- 运行在一个完全 隔离的 计算机系统
虚拟机技术
虚拟机技术是虚拟化技术的一种,所谓虚拟化技术就是将事物从一种形式转变成另一种形式,最常用的虚拟化技术有操作系统中内存的虚拟化,实际运行时用户需要的内存空间可能远远大于物理机器的内存大小,利用内存的虚拟化技术,用户可以将一部分硬盘虚拟化为内存,而这对用户是透明的。又如,可以利用虚拟专用网技术(VPN)在公共网络中虚拟化一条安全,稳定的“隧道”,用户感觉像是使用私有网络一样。
虚拟机技术最早由 IBM 于上世纪六七十年代提出,被定义为硬件设备的软件模拟实现,通常的使用模式是分时共享昂贵的大型机。 虚拟机监视器(Virtual Machine Monitor,VMM)是虚拟机技术的核心,它是一层位于操作系统和计算机硬件之间的代码,用来将硬件平台分割成多个虚拟机。VMM 运行在特权模式,主要作用是隔离并且管理上层运行的多个虚拟机,仲裁它们对底层硬件的访问,并为每个客户操作系统虚拟一套独立于实际硬件的虚拟硬件环境(包括处理器,内存,I/O 设备)。VMM 采用某种调度算法在各个虚拟机之间共享 CPU,如采用时间片轮转调度算法。[1]
就是以现有的硬件为基础,再虚拟出一个具有相同硬件的类似的一个设备,也仅仅只是设备机器而已。
分类
微软虚拟机 | Mac虚拟机 | IBM虚拟机 | HP虚拟机 |
SWsoft虚拟机 | SUN虚拟机 | Intel虚拟机 | AMD虚拟机 |
Java虚拟机 | BB虚拟机 | Linux虚拟机 |
常用
VMware Workstation
在详细介绍之前,有几个 概念要说明:
1. VM(Virtual Machine)—— 虚拟机,指由Vmware 模拟出来的一台虚拟的计算机,也即 逻辑上的一台计算机。
2. HOST——指 物理存在的计算机,Host′s OS指HOST上运行的 操作系统。
3. Guest OS——指运行在VM上的 操作系统。例如在一台安装了Windows NT的计算机上安装了Vmware,那么,HOST指的是安装Windows NT的这台计算机,其Host′s OS为 Windows NT。VM上运行的是Linux,那么Linux即为Guest OS。
特点
1.可同时在同一台PC上运行多个 操作系统,每个OS都有自己独立的一个 虚拟机, 就如同 网络上一个独立的PC。
2.在Windows NT/2000上同时运行两个VM,相互之间可以进行对话,也可以在 全屏方式下进行 虚拟机之间对话,不过此时另一个 虚拟机在后台运行。
3.在VM上安装同一种 操作系统的另一发行版,不需要重新对 硬盘进行分区。
4.虚拟机之间 共享文件、应用、 网络资源等。
5.可以运行C/S方式的应用,也可以在同一台计算机上,使用另一台 虚拟机的所有 资源。
使用Vmware,你可以同时运行 Linux各种发行版、Dos、Windows各种版本,Unix等,你甚至可以在同一台计算机上安装多个Linux发行版、 多个Windows版本。笔者安装了Windows NT下的Vmware后,在VM上安装 Red Hat Linux,成功 运行了Xwindow,同时也在虚拟机下安装了Windows 98。这简直令人难以置信!但是,这一切发生了,是Vmware帮助的结果!
Vmware对 虚拟硬盘大小有限制,创建后以后就不允许用户再更改了。 虚拟硬盘实际上是Windows NT下的一个文件,而对于 Guest OS,它则永远被看作是一个IDE硬盘。在虚拟机中,尚没有SCSI、RAID的概念。
不过,你不必担心,尽管在虚拟机中不支持SCSI盘,但是, 虚拟磁盘却可以建立在任何种类的硬盘上,包括IDE、SCSI甚至RAID阵列上。这些盘上的文件系统可以是FAT16、FAT32、NTFS等。此外, 虚拟盘也可建立在一个可移动的磁盘上,还可以建立在一个 网络 文件服务器上。如果用户愿意,也可以放置在一个已划分好的分区上。
在Vmware的窗口上,模拟了多个 按键,分别代表打开虚拟机电源、关闭虚拟机电源、Reset键等等。 这些按键的功能就如同真正的按键一样。如果你的Guest OS是Linux ,而你不是通过halt命令或 reboot命令关闭Linux 系统的。那么,下次启动Linux的时,Linux就会自动进行文件系统的检查与修复。因为它认为上次关机是一次真实的断电事故。
VMware 可以使你在一台机器上同时运行二个或更多 Windows、 DOS、 LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个 操作系统在主系统的平台上,就像标准Windows 应用程序那样切换。而且每个 操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台 虚拟机用网卡连接为一个局域网,极其方便。安装在VMware 操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。 使我们可以在同一台PC机上同时运行Windows NT、Linux、Windows 9x、FreeBSD……可以在使用Linux的同时,即时转到Win 9x中运行Word。如果要使用Linux,只要轻轻一点,又回到Linux之中。就如同你有两台计算机在同时工作。实现的工具就是: 虚拟计算平台——Vmware。
Parallels Desktop
Parallels Desktop是适用于 Mac OS平台上的虚拟机解决方案。无需重启即可在同时一台Mac电脑上随时访问Windows和Mac两个系统上的众多应用程序。与VMware最大的区别在于
Parallels Desktop无需重启,两个系统同时运行。两系统间可以实现文件互传,素材共用。[2]
融合模式( Coherence)支持不显示Windows但是仍使用其应用程序,或者在Mac上保留熟悉的Windows背景与开始菜单。两种同时运行Windows与Mac应用程序的方式都不会对性能产生任何影响。
多虚拟机支持: Windows、 Linux、 Chrome OS、 Mac OS、 Android OS等。
Virtual PC
Virtual PC是 微软公司(Microsoft) 收购过来的,最早不是微软开发的。Virtual PC可以允许你在一个工作站上同时运行多个 PC 操作系统,当你转向一个新 OS时,可以为你运行传统应用提供一个安全的环境以保持 兼容性,它可以保存重新配置的时间,使得你的支持,开发,培训工作可以更加有效。
Virtual PC 在使用 PowerPC处理器的Mac OS X版本上,其模拟机“使用”Intel Pentium 4处理器及440BX 系列的 主板;而在Windows版本上,会使用电脑本身的处理器。模拟电脑上使用一块标准的SVGA VESA图卡,并与S3 Trio 64 PCI 8 MByte Video RAM版本的兼容。 主板使用American Megatrends (AMI)的BIOS。并有“内置”的 Creative Labs Sound Blaster 16 PnP声卡 (Vista上或运行模拟Vista环境时,则使用Vista本身的音效系统,因为Vista并不支援Creative Labs Sound Blaster)及DEC 21041 或 DEC 21140的Ethernet网卡。
目录
-
模拟环境
-
基于Intel的苹果机支持
-
USB支援
-
其他
-
英文释义
-
Windows7中加载Virtual PC映像技巧
模拟环境
即使Virtual PC的兼容性很高,但不是所有 软件都能在Virtual PC中正常地运行,因为那些软件可能使用一些未公开的硬件或使用一些不支援的指令。一些人或组织借此贬低他,比如,在VirtualPC 2004 SP1中,如果有打印机使用LPT1端口,则 虚拟机不能识别。这个漏洞在Virtual PC 2007中得到改善。
苹果 麦金塔电脑版本的Virtual PC用动态重新编译转换x86的机械码至相等的PowerPC机械码,使Mac可以执行标准pc的程序。
微软Windows版本的Virtual PC也是用动态重新编译,因为原本就能执行使用者模式和virtual 8086 mode的x86机械码,所以就只是转换核心模式和真实模式到使用者模式的x86机械码。
通常还提供一些 客户端的呼叫函式库(特别是使用某些客户端的延伸功能),来加速模拟或提供更多的功能像整合原执行主机 环境变量。
Virtual PC 可以在你的电脑上能同时模拟多台电脑,虚拟的电脑使用起来与一台真实的电脑一样,可以进行bios设定,可以给它的硬盘进行分区,格式化, 操作系统你可以安装 DOS,Windows 95, Windows 98,Windows ME,Windows 2000,Windows XP,Windows Server 2003,UNIX,LINUX等等,你可以在你的 Windows XP 里运行 Linux。
基于Intel的苹果机支持
微软宣布在2006 年8月7 日, 真正个人计算机认为Mac不会被端起对英特尔Mac 平台。 微软陈述了 “可选择的解决方案由苹果计算机公司和其它贩卖者提供, 与窗口的一个充分地被包装的零售拷贝被结合, 将满足这需要。”
苹果计算机公司宣布了和早先运输了新兵训练所预览发行。根据苹果计算机公司, 新兵训练所的一个完成的版本将运输以Mac OS x 10.5 "Leopard." 新兵训练所将允许Windows XP 被安装在新基于 英特尔的橡皮防水布硬盘的另外分开。这允许用户解雇入或Mac OS x 或窗口, 虽然不同时。一的包括对连续窗口根据应用的解决办法在Macintosh 硬件减少需要对于真正个人计算机的英特尔版本。
有并且只能选其中之一的产品从Parallels, Inc. 告诉的Parallels Desktop 为Mac 。这种应用被设计利用Intel's 新技术叫做是新 英特尔核心处理器的一部分多数Apple's 最新的计算机使用的英特尔Virtualization 技术。由使用I-VT, 它增加客人 操作系统的表现, 使它更加实用至于规则使用。平行 桌面并且看齐更新的硬件比 微软真正个人计算机。VMware 和VirtualBox 并且宣布, 他们发布他们的 软件的Mac OS x 版本。
USB支持
在Virtual PC 2007推出之前,大众都期待新的版本可以支持USB设备,因为Mac版本的Virtual PC是可以使用USB设备的。可是,结果这功能依然没有被加入(不过在Windows 7的XP模式下,Virtual PC是支持USB设备的),使用户在需要USB的支援时,仍然需要使用其他支持USB设备的产品。
资源分配
虚拟机资源涉及多个方面:CPU、内存、网络以及磁盘。在规划虚拟机时应该考虑这些资源之间的关系,否则,分配的资源不合理将导致虚拟机内的应用程序性能表现不佳。
CPU
虚拟机每个vCPU只运行在一个物理核心之上,因此CPU频率越高虚拟机的运行速度也就越高,vCPU数量越多有助于提升应用的性能表现。一个比较复杂的因素就是在ESXi服务器内,所有的虚拟机共享使用物理CPU。ESXi服务器的核心数越多,每个vCPU获得的核心份额也就越大,因此多核心的性能表现要强于核心频率高但数量少的情况。
如果虚拟机需要占用大量的CPU时间,那么可以考虑为虚拟机分配第二个vCPU,但是,为虚拟机分配两个以上vCPU并不一定让应用运行的更快,因为只有多线程应用才能有效地使用多个vCPU。
RAM
ESXi服务器内RAM资源通常有限,因此在给虚拟机分配RAM时需要格外小心。VMkernel在处理RAM时非常巧妙;允许虚拟机使用ESXi服务器所有的物理内存而且会尽量避免占用物理内存却没有真正使用的情况。
物理内存被完全用完后,VMkernel必须确定哪些虚拟机能够保留物理内存,哪些虚拟机要释放物理内存。这称之为“内存回收”。当虚拟机占用的物理内存被回收后,存在的一个风险就是会对虚拟机的性能造成影响。虚拟机被回收的内存越多,相应的风险也就越大。
最明智的是只为虚拟机分配完成工作所需要的内存。分配额外的内存将会增加回收风险。另一方面,当虚拟机操作系统将未被使用的内存用作磁盘缓存时,将会显著降低对磁盘系统的性能要求,所以这里有一个折衷问题。
对于数据库服务器以及VDI桌面来说,为虚拟机分配更多的内存往往更划算—在一台ESXi服务器上运行更少的虚拟机—而不是购买高性能的磁盘阵列。关键在于针对虚拟机的负载分配足够多内存而且没有浪费。
网络带宽
网络带宽包括两个方面:一是虚拟机和虚拟交换机之间的带宽,二是虚拟交换机与外部网络之间的带宽。如果希望虚拟机获得最大带宽那么应该使用VMXNET3网络适配器,VMXNET3在最小的CPU开销下提供了最好的吞吐量。如果情况允许,所有的虚拟机都应该使用VMXNET3网络适配器。
对于与外部物理网络的连接,一定要确保ESXi主机具备速度最快的物理网卡;10Gb是一个不错的选择,即使物理网卡的数量很少,但10Gb能够允许虚拟机承受突发的网络流量。
请记住,进行大量网络传输的虚拟机,虚拟机以及数据包的传输都会消耗CPU时间。因此,运行在CPU受限的ESXi服务器之上的虚拟机由于CPU无法快速响应请求可能会面临网络吞吐量不高的情况。
磁盘性能
磁盘性能往往是无声的性能杀手。虚拟机磁盘性能受阵列磁盘数量、类型以及运行在其上的虚拟机的数量的限制。因为集中地共享存储架构将导致通过同一位置访问所有的虚拟机磁盘,阵列的存储控制器以及磁盘过载情况很容易出现,只剩下虚拟机在等待存储的响应。
虚拟机等待磁盘IO、虚拟机CPU空闲对性能的影响有很大不同。等待IO的虚拟机无法做其他工作,因此高I/O等待时间意味着性能肯定会下降。进行周密的存储设计以避免上述情况的发生至关重要。[3]
合理选择磁盘 提升虚拟机性能
在虚拟化中,hypervisor将工作负载从运行在底层的物理硬件中抽象出来,允许快速分配并共享计算资源,迁移工作负载。尽管hypervisor以及与虚拟化兼容的处理器性能开销很小,但是虚拟化层的存在却对性能有影响。
当磁盘性能对工作负载至关重要时,某些管理员可能会选择以直通模式配置LUN,允许虚拟机的操作系统绕过hypervisor与直接LUN进行通信。例如,Windows服务器虚拟机可能使用直通模式绕过Hyper-V直接访问磁盘,这对SQL Server数据库的性能有些许提升。然而,由于客户操作系统(采用直通模式)以及hypervisor试图同时访问磁盘,那么hypervisor必须被配置为忽略直通LUN。
直通模式存在的问题是其不被某些重要的虚拟化功能比如虚拟机快照或者集群所支持。因此,虚拟机在实际上可能会受益于虚拟化提供的各种功能特性而非采用直通模式所带来的处于边缘地位的性能提升。管理员需要评估虚拟机的需求并确定直通模式的适宜性。
除直通模式外,Hyper-V以及其他hypervisor还提供了其他磁盘存储选项。例如,当.VHD文件被创建时,大小固定的磁盘将分配所有的数据块。一旦被创建,大小固定的磁盘就不能够进行调整了。然而,动态扩展磁盘从一开始创建的就是没有数据块的.VHD文件,当数据写入到.VHD文件中后磁盘空间才会被分配出去。这和精简配置类似,尽管在逻辑上创建了一块磁盘,但实际的磁盘空间只有数据写入时才会被用到。
差分磁盘是一种特殊的动态扩展磁盘类型。其设计思路是父磁盘拥有固定的镜像而且差分磁盘与父磁盘相关联,因此写入到磁盘的数据被存放在差分磁盘而非.VHD文件中。读请求首先检查差分磁盘的.VHD文件,如果没有更改,就会读父.VHD文件。当需要标准化的磁盘镜像而且回滚功能很重要时,差分是一个不错的主意,但是管理员在维护父子磁盘配置时可能会面临挑战。[4]
其他
Microsoft Virtual PC 2007并不支持Windows的家用版。若在家用版Windows上安装Virtual PC 2007,系统会有弹出信息提示,指“系统并不支援现时的架构”。不过,具体来说,Virtual PC 2007在家用版Windows上依然可以正常运行。
英文释义
Virtual: [ˈvə:tjuəl]
a. 虚拟的,实质的
词形变化:
名词:virtuality
个人电脑
Windows7中加载Virtual PC映像技巧
首先,我们点击“开始-所有程序-管理工具-计算机管理”命令打开“计算机管理”窗口。接着在左侧选择“存储-磁盘管理”功能,这时就显示所有的磁盘分区的使用状况,需要注意的是加载VPC映像的前提是不运行该映像的虚拟机系统。然后,我们可以点击右侧的“磁盘管理”下的“更多操作”旁边的箭头选择“附加VHD”命令。在出现的“附加虚拟硬盘”的窗口点击“浏览”按钮找到VPC映像文件,可以勾选“Read-only”来只读方式加载,确定后即可加载成功了。这时,我们可以在“磁盘管理”窗口发现VPC映像是以普通磁盘分区的方式加载的,分区的盘符是和原来的接续的。 打开“计算机”,我们发现VPC映像的分区可以被随意访问,文件操作也和其他分区是完全一样的。这样一来就大大便利了主机和虚拟机之间的文件共享操作。不过,加载了VPC映像后会出现启动虚拟机的错误,多次启动无法成功进入Windows。这是由于虚拟机无法写入映像导致的。我们只需卸载VPC映像即可。那么,怎么做呢?首先,关闭VPC,然后,进入刚才的磁盘管理窗口。右键单击加载的VPC虚拟磁盘,选择“分离VHD”命令即可。
Oracle VM VirtualBox
Oracle VM VirtualBox 是由Sun Microsystems公司出品的 软件(Sun Microsystems 于 2010年被Oracle收购),原由德国innotek公司开发。2008年2月12日,Sun Microsystems宣布将以购买股票的方式收购德国Innotek 软件公司,新版不再叫做Innotek VirtualBox,而改叫Sun xVM VirtualBox。2010年1月21日,欧盟终于同意Oracle收购Sun,VirtualBox再次改名变成 Oracle VM VirtualBox。VirtualBox是开源 软件。VirtualBox 3.2.0支持的 操作系统包括:Debian, Fedora, Linux, Mac OS (Intel), Mandriva, OpenSolaris, PCLiunxOS, Red Hat, SUSE Linux, Solaris 10, Ubuntu, Windows, Xandros, openSUSE等。Oracle VM VirtualBox 支持的 客户端 操作系统包括:从 3.1到Vista的所有版本的Windows、Linux 2.2、2.4和 2.6 内核、Solaris x86、OS/2、、OpenBSD、 Netware 、FreeBSD 和 DOS 。在 2007 年 1 月,InnoTek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进位版本及 开放源码版本的代码。最新版本是VirtualBox 4.3.12-93733。
VMLite
VMLite是全球首款中国人自己设计的高速 虚拟机,VMLite发布的短短几周内已经吸引了全球上万名虚拟机玩家注册下载并使用VMLite 软件。
VMLite是一个 虚拟机软件,其附带的VMLite XP模式与 微软推出的Windows XP模式几乎一模一样,但是却不要求你的CPU非得支持虚拟化才能运行。VMLite允许你直接使用从 微软网站上下载下来的Windows XP模式安装文件,来建立Windows XP 虚拟机。VMLite XP模式配置完成后,在Windows 7的 开始菜单中也会出现 虚拟机中安装的 软件的 快捷方式;在 虚拟机中运行的程序,可以无缝的在Windows 7 桌面上显示,看起来就跟在本机 中运行一样。
VMLite 系列产品
目前为止,VMLite已经包括VMLite XP Mode、VMLite Workstation、MyOldPCs、VMLite VirtualApps Studio、VMLite VirtualApps Player、VBoot 六大产品,非常全面。
VMLite XP Mode
VMLite XP Mode的作用是在host(真实系统中)像直接使用普通 软件一样使用其他系统中才能使用的软件。其原理是只虚拟一个 软件,虚拟机在后台运行。该功能常常用于Vista和Win7 使用只能在Xp下使用的 软件,即虚拟出Xp来使用部分软件,所以该功能约定俗成成为XP Mode。
XP Mode最早由 微软的 虚拟机软件Virtual PC在配合Win7系统时推出。之后Vmware 、Virtual box也跟进该项功能。
VMLite的最大特点是不需要硬件级别的虚拟化支持! 即CPU不需要支持intel的VT-x或者AMD的AMD-V。这意味着较早的CPU以及部分性能高却不支持硬件虚拟的CPU也能够使用XP Mode。(注意:这里有误区。Win7 的XP mode必须要CPU支持 虚拟化技术才可以使用。但是XP mode的真身Virtual PC以及其他所有的 虚拟机软件都不一定要支持硬件虚拟的CPU,只不过慢一点罢了。 虚拟机技术早于硬件发展的,早期用虚拟机大家都不支持硬件虚拟化。)
根据VMLite官方说法:即使你的机器的CPU支持硬件虚拟化,也推荐使用VMLite。因为它运行更加快速并且支持3D/2D加速
VMLite的优点
1)VMLite是世界上运行速度最快的 虚拟机
2)VMLite对硬件安装没有任何要求,就是对你的计算机配置没有任何要求, 比如不需要兼容VT-x或者AMD-V
3)Vmlite不运行远程程序所以速度非常快
4)VMLite文件共享快
5)VMLite拥有超大磁盘容量:2TB
6)VMLite支持 32位和64位系统
7)VMLite支持多个虚拟CPU同时运行
8)VMLite支持3D动画效果拥有32位高清晰显卡,可以高清晰度的欣赏google earth以及让玩家玩遍对画质要求高的最时尚的网游
linux
一种安装在Windows上的虚拟linux操作环境,就被称为 linux 虚拟机。它实际上只是个文件而已,是虚拟的 linux环境,而非真正意义上的 操作系统。但是它们的实际效果是一样的。所以安装在 虚拟机上使用好。
windowsXP 虚拟机 vmware下安装Linux 我们在实际的Windows XP中(宿主计算机)再虚拟出一台电脑(虚拟机),并在上面安装Linux系统,这样,你就可以放心大胆地进行各种Linux练习而无须担心操作不当导致宿 主机系统崩溃了。并且你可以举一反三,将一台电脑变成三台、四台,再分别安装上其他的系统。(运行 虚拟机软件的 操作系统叫Host OS,在虚拟机里运行的操作系统叫Guest OS)
windowsXP虚拟机vmware下安装Linux过程
第一步:
启动VMware,在其主界面“主页”标签页中点击“新建 虚拟机”按钮打开新建向导。
第二步:
单击“下一步”按钮,进入 虚拟机配置界面,这里有两个选择:一是“典型”方式,它根据虚拟机的用途自动调整配置;二是“自定义”方式,它允许用户自行设置虚拟机的主要参数。典型方式要比自定义方式简单,但缺少一定的灵活性。方便起见,这里我们选择典型方式。
第三步:
单击“下一步”按钮进入 虚拟机 操作系统选择界面,可以看到Windows、Linux、Novell等多种不同的系统,这里我们点选“Linux”。Linux又分为多种版本,笔者手头有一套 红帽子Linux 8.0,自然要选择“Red Hat Linux”项了。
用处
1.演示环境,可以安装各种演示环境,便于做各种例子
2.保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序,或者测试用的程序在 虚拟机上运行
3.避免每次重新安装,银行等常用工具,不经常使用,而且要求保密比较好的,单独在一个环境下面运行
4.想测试一下不熟悉的应用,在 虚拟机中随便安装和彻底删除
5.体验不同版本的 操作系统,如Linux、Mac等。
终端虚拟化由于其带来的维护费用的大幅降低而受到追捧——如能降低 占用空间,降低购买软硬件设备的成本,节省能源和更低的维护成本。它比实际存在的终端设备更加具备性价比优势。但这些并非是教育行业和厂商对 虚拟化技术情有独钟的惟一原因。另一方面,我们一般较少提及,那就是: 虚拟化技术能大幅提升系统的安全性。
安装
VMware Workstation 虚拟机是一个在Windows或Linux计算机上运行的 应用程序,它可以模拟一个基于x86的标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、 显卡、 声卡、 网卡、软驱、硬盘、 光驱、串口、并口、USB控制器、SCSI控制器等设备,提供这个 应用程序的窗口就是 虚拟机的显示器。
在使用上,这台 虚拟机和真正的 物理主机没有太大的区别,都需要分区、格式化、安装 操作系统、安装 应用程序和 软件,总之,一切操作都跟一台真正的计算机一样。虚拟机可以为 电脑爱好者进行的一系列系统攻击行为做一个示范或演练,可以让我们熟悉各种的系统攻击行为,从而保护电脑。
过程
下面通过例子,介绍使用VMware Workstation创建 虚拟机的方法与步骤。
1.运行VMware Workstation 6,单击“File→New→Virtual Machine”命令,进入创建 虚拟机向导,或者直接按“Crtl+N” 快捷键同样进入创建虚拟机向导。
2.在弹出的欢迎页中单击“下一步”按钮。
3.在“Virtual machine configuration”选项区域内选择“Custom” 单选按钮。
4.在Choose the Virtual Machine Hardware Compatibility页中,选择 虚拟机的硬件格式,可以在Hardware compatibility下拉列表框中,在VMware Workstation 6、VMware Workstation 5或VMware Workstation 4三者之间进行选择。通常情况下选择Workstation 6的格式,因为新的 虚拟机硬件格式支持更多的功能,选择好后单击“下一步”按钮。
5.在Select a Guest Operating System对话框中,选择要创建 虚拟机类型及要运行的 操作系统,这里选择Windows 2000 Professional操作系统,单击“下一步”按钮。
6.在Name the Virtual Machine对话框中,为新建的 虚拟机命名并且选择它的保存路径。
7.在Processors选项区域中选择 虚拟机中CPU的数量,如果选择Two, 主机需要有两个CPU或者是 超线程的CPU。
8.在Memory for the Virtual Machine页中,设置 虚拟机使用的内存,通常情况下,对于Windows 98及其以下的系统,可以设置64MB;对于Windows 2000/XP,最少可以设置96MB;对于Windows 2003,最低为128MB;对于Windows Vista虚拟机,最低512MB。
9.在Network Type页中选择 虚拟机网卡的“联网类型”
选择第一项,使用 桥接 网卡(VMnet0 虚拟网卡),表示当前 虚拟机与 主机(指运行VMware Workstation 软件的计算机)在同一个 网络中。
选择第二项,使用NAT 网卡(VMnet8 虚拟网卡),表示 虚拟机通过 主机单向访问主机及主机之外的 网络,主机之外的 网络中的计算机,不能访问该 虚拟机。
选择第三项,只使用本地 网络(VMnet1 虚拟网卡),表示 虚拟机只能访问 主机及所有使用VMnet1虚拟网卡的虚拟机。主机之外的网络中的计算机不能访问该 虚拟机,也不能被该虚拟机所访问。
选择第四项,没有 网络连接,表明该虚拟机与 主机没有网络连接。
10.在Select I/O Adapter Type页中,选择 虚拟机的SCSI卡的型号,通常选择默认值即可。
11.在Select a Disk页中,选择Create a new virtual disk(创建一个新的 虚拟硬盘)。
12.在Select a Disk Type页中,选择创建的 虚拟硬盘的 接口方式,通常选择默认值即可。
13.在Specify Disk Capacity页中设置 虚拟磁盘大小,对于一般的使用来说,选择默认值即可。
14.在Specify Disk File页的Disk file选项区域内设置 虚拟磁盘文件名称,通常选择默认值即可,然后单击完成按钮。
安装 操作系统
注意事项
在 虚拟机中安装 操作系统,和在真实的计算机中安装没有什么区别,但在虚拟机中安装操作系统,可以直接使用保存在 主机上的安装 光盘镜像(或者 软盘镜像)作为虚拟机的光驱(或者软驱)。
可以用打开前文创建的Windows 2000 虚拟机配置文件,在Virtual Machine Settings页中的Hardware选项卡中,选择CD-ROM项,在Connection选项区域内选中Use ISO image 单选按钮,然后浏览选择Windows 2000安装 光盘镜像文件(ISO格式)。如果使用安装光盘,则选择Use physical drive并选择安装光盘所在光驱。
选择光驱完成后,然后单击 工具栏上的播放按钮,打开 虚拟机的电源,用鼠标在虚拟机工作窗口中单击一下,进入虚拟机。
如果想从 虚拟机窗口中切换回 主机,需要按下Ctrl+Alt热键。
安装VMware Tools
在 虚拟机中安装完 操作系统之后,接下来需要安装VMware Tools。VMware Tools相当于 VMware虚拟机的主板芯片组驱动和 显卡驱动、 鼠标驱动,在安装VMware Tools后,可以极大提高虚拟机的性能,并且可以让虚拟机分辨率以任意大小进行设置,还可以使用鼠标直接从虚拟机窗口中切换到主机中来。
1.从VM 菜单下选择安装VMware Tools。
2.按照提示安装,最后重新启动 虚拟机即可。
VMware
VMware是 EMC 公司旗下独立的软件公司,1998 年 1 月,Stanford 大学的 Mendel Rosenblum 教授带领他的学生 Edouard Bugnion 和 Scott Devine 及对虚拟机技术多年的研究成果创立了 VMware 公司,主要研究在工业领域应用的大型主机级的虚拟技术计算机,并于 1999 年发布了它的第一款产品:基于主机模型的虚拟机 VMware Workstation。尔后于 2001 年推出了面向服务器市场的 VMware GSX Server 和 VMware ESX Server。今天 VMware 是虚拟机市场上的领航者,其首先提出并采用的气球驱动程序(balloon driver),影子页表(shadow page table),虚拟设备驱动程序(Virtual Driver)等均已被后来的其它虚拟机如 Xen 采用。[1]
VMware在最新的Workstation 7中添加了对Aero Glass等功能的支持。
除了支持Aero效果,VMWare Workstation 7还新增了很多功能,下面列出部分新增功能:
*完善了对3D的支持
*支持最新Windows 7 WDDM驱动
*支持vSphere 4.0和ESX
*可直接使用 虚拟机进行打印
*AutoProtect
*支持对 虚拟机进行加密
*支持IPv6、ALSA
* 虚拟磁盘可扩展,无需使用额外 软件Java虚拟机
Java
Java 虚拟机(JVM)是Java Virtual Machine的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的。Java 虚拟机有自己完善的硬件架构,如处理器、 堆栈、寄存器等,还具有相应的 指令系统。
为什么要使用Java虚拟机
Java语言的一个非常重要的特点就是与平台的无关性。而使用Java 虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的 目标代码。而引入Java语言 虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java 虚拟机屏蔽了与具体平台相关的信息,使得Java语言 编译程序只需生成在Java 虚拟机上运行的 目标代码( 字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行 字节码时,把字节码解释成具体平台上的 机器指令执行。
谁需要了解Java 虚拟机
Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的 软件人员,Java语言的 编译器作者以及要用硬件芯片实现Java 虚拟机的人来说,则必须深刻理解Java 虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的 字节码,你也需要深入地了解Java虚拟机。
Java 虚拟机支持的 数据类型
Java 虚拟机支持Java语言的基本 数据类型如下:
byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2 字节无符号Unicode 字符
几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的 字节码(指令)本身就已经指出了 操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。 虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的 数组则是用byte数组来处理的。 虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行Java数值计算程序时,可能会非常慢。
虚拟机支持的其它数据类型包括:
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令
注:Java 数组被当做object处理。
虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对 指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java 虚拟机的 字节码表示的程序应该遵守类型规定。Java 虚拟机的实现应拒绝执行违反了类型规定的 字节码程序。Java虚拟机由于 字节码定义的限制似乎只能运行于32位 地址空间的机器上。但是可以创建一个Java 虚拟机,它自动地把 字节码转换成64位的形式。从Java虚拟机支持的 数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可
移植性。
体系结构
Java 虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java 虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。
Java 指令集
Java 虚拟机支持大约248个 字节码。每个 字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器, 子程序转移等。Java指令集相当于Java程序的汇编语言。
Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个 操作数,提供操作所需的参数或数据。许多指令没有 操作数,仅由一个单字节的操作符构成。
虚拟机的内层循环的执行过程如下:
do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)
由于 指令系统的简单性,使得 虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中 操作数的数量和大小是由操作符决定的。如果 操作数比一个 字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:
第一个字节*256+第二个字节 字节码 指令流一般只是 字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节 边界对齐。
寄存器
Java 虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。
Java 虚拟机的寄存器有四种:
pc:Java 程序计数器。
optop:指向 操作数栈顶端的 指针。
frame:指向当前执行方法的执行环境的 指针。
vars:指向当前执行方法的 局部变量区第一个变量的 指针。
Java虚拟机
Java 虚拟机是栈式的,它不定义或使用 寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。
所有寄存器都是32位的。
栈
Java 虚拟机的栈有三个区域:局部变量区、运行环境区、 操作数区。
(1) 局部变量区
每个Java方法使用一个固定大小的 局部变量集。它们按照与vars 寄存器的字 偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个 局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的 局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的 存储空间。) 虚拟机规范并不要求在 局部变量中的64位的值是64位对齐的。 虚拟机提供了把 局部变量中的值装载到 操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。
(2)运行环境区
在运行环境中包含的信息用于 动态链接,正常的方法返回以及 异常传播。
· 动态链接
运行环境包括对指向当前类和当前方法的解释器 符号表的指针,用于支持方法代码的 动态链接。方法的class文件代码在引用要调用的方法和要访问的 变量时使用符号。 动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把 变量访问翻译成与这些变量运行时的 存储结构相应的 偏移地址。动态链接方法和 变量使得方法中使用的其它类的变化不会影响到本程序的代码。
·正常的方法返回
如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的 寄存器,并把调用者的 程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。
·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:① 动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用
·程序使用了throw语句。
当异常发生时,Java 虚拟机采取如下措施:
·检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的 异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。
·由于 虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的 异常处理器都按序排列到一个表中,对任意可能的 程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。
·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的 异常处理块,那么这种错误传播将被继续下去。如果错误被传播到最顶层,那么系统将调用一个缺省的 异常处理块。
(3) 操作数栈区 机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非 通用寄存器的机器(如Intel486)上,也能够高效地模拟 虚拟机的行为。 操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是 操作数栈顶的两个字。这两个字是由先前的指令压进 堆栈的。这两个整数将从 堆栈弹出、相加,并把结果压回到 操作数栈中。
每个原始 数据类型都有专门的指令对它们进行必须的操作。每个 操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。 操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的 虚拟机实现中,这个限制由 字节码验证器强制实行。但是,有少数操作(操作符dupe和swap),用于对运行时数据区进行操作时是不考虑类型的。
无用单元收集堆
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。
方法区
方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和 符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java 虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun公司的Java虚拟机规范。
云中配置
部署法则
启动和停止 虚拟机是使用 云计算资源的例行公事。在云中部署 虚拟机有两个基本的选项:客户可以拷贝一个预先配置好的 虚拟机镜像(也被称为最终版),或者他们可以按照需求装配一个自定义的虚拟机镜像。
要启用一个 虚拟机,首先要从云目录中选择一个机器镜像。当部署一个跟Apache Web或者是Jboss 应用服务器有关的应用时,最好选择一个预先装好这些组件的Linux镜像。如果你是一个.NET程序员,最好选择一个预先安装并配置好开发工具的Windows操作系统。除了选择一个安装好必备 软件的虚拟机镜像之外,还必须确认这些软件是最新的并且打过补丁。一旦你选择好了镜像,下一步就是在云中部署这个镜像。
完成版镜像
使用最终版 镜像有几大优势。最主要的是它可以保证 虚拟机的一致性。此外,以一个已有的镜像开始可以节省很多精力和时间。终端客户不必去关心怎么安装程序库或者附加的包;他们可以依靠云管理员来维护最终版镜像。
终端用户拥有的选项受限是这个方法的缺陷;镜像目录通常会包含常用的镜像而不是一些不常用的组件集合。对于一个专业的 虚拟机镜像,你可以选择一个最终版并且安装所需的组件。如果一个终端用户经常部署自定义的镜像,那么他必须保留一个镜像的副本,但是这就意味着用户必须自己打补丁,从而失去了使用最终版的优势。
考虑专业的云中实例并不是很重要的情况:你的网页应用已经在你配置负载均衡后的环境中运行了几周,如果你的应用突然发生了中断,你可能会考虑为负载均衡集群增加几台服务器。在这种情况下,你需要在 集群中运行完全相同的 镜像以保持一致性。如果你以前重做过这个 镜像,那么系统中就可能出现不同版本的组件。这种情况也会发生在一个组件在两次部署期间发布了新版本。
按需装配
每次部署新镜像时创建自定义镜像使终端用户可以自己安装所需的组件。云用户喜欢以一个基础系统镜像开始,然后安装 应用程序组件(数据库,应用服务器和web服务器)。然而,如果没有工具的帮助,创建所需的云对于经常性的部署是不切实际的。在这种情况下,应考虑使用 配置管理工具(例如Chef或者Puppet),它们允许你指定你想包含在 镜像中的组件。如果最新版本的应用和补丁对于 镜像至关重要,按需装配它们是最好的选择。举例来说,如果你有一份 数据库服务器的标准配置,创建一个Chef或者Puppet脚本来创建 镜像可以保证你拥有最新版本的组件。
按需装配还有助于在多服务器中保持一致性,因为 数据库管理员不太喜欢点对点的为一个过时的最终版镜像打补丁。
这两种部署云中 虚拟机方法(创建最终版镜像和创建按需迭代镜像)并不是相互独立的。当举例来说,当你需要创建一个服务器集群时,你应该建立脚本来装配一个自定义的镜像并使它成为最终版。首先通过 配置管理工具创建多个 虚拟机 镜像然后使用这个 镜像创建多个虚拟机实例。在这个场景中,只要你需要为集群添加新的 虚拟服务器就要保留最终版镜像。
这里并没有单一的途径来在云环境中装配和部署镜像。最终版镜像在以一致性为主的案例中运作良好;而装配按需版本则可以保证你的环境中运行着最新的组件。
私有配置
行业对话已经超越了解什么是 云计算,企业IT环境中要决定如何能更好的 部署它。这种演变与过去的虚拟化候选人的辩论相似——懂得如何确定 物理服务器能否成为一个好的 虚拟机。
1.云负荷需要什么样的 网络呢?如虚拟服务器的线程、内存的需求、网络资源的总负荷、私有云中的 应用程序的消耗,这些都是极为重要的。
繁忙的 网络资源负荷的需求,在局域网中链接到其他服务器,这样是不会制造出最好的云候选者。把这些负荷放入到私有云中,可能会造成带宽或延迟等问题,会影响云的整体性能。衡量 云服务器和位于本地 数据中心的其他服务器的 网络利用率。
2、还有什么其他服务与 私有云互连吗?考虑到云负荷与其他 网络中的云工作量负荷之间的交流。例如,几乎所有基于Windows的IT服务都倾向于Active Directory认证,因为 桌面操作系统都是这样做的。 域控制者必须处理大量的通信,所以把它们完全转移到云中可能是一个坏主意。
另外,服务与本地 数据中心的其他服务有一些交互,不太可能因为位置的迁移而受影响。延迟影响不大。查看 虚拟机中的互操作,是一个好的办法,可以找到云中就绪的资源。
3、私有云中的工作负荷和其他工作负荷之间是否存在明显的分隔(例如,“硬线”)?隔离云服务可以作为良好的云候选人和坏的之间的分隔线。孤立服务,可以制造出杰出的云候选人,例如,那些服务是否位于你的DMZ中。按照设计,DMZ有“硬线”环绕着它的服务,尤其是防火墙中,可以把它在 网络和局域网中分隔出来。分隔意味着你可以非常容易的把所有内容从DMZ移到云中。DMZ可以很明确的划分,什么可以制造出优秀的 私有云候选者。结合不同云服务、DMZ服务之间的虚拟防火墙的隔离,很有可能在云中获得成功。
4、 云服务可以友好的复制吗?一些IT服务已经在心里开始设计复制了:设计通信是为了支持延迟、带宽的类型,你会在局域网与云通信中体验。这些服务可能包括 异地备份、服务器故障转移、或者其他服务的协议,为不能满足局域网速度的 网络做准备。
5、如果私有云中的数据妥协,你会多痛苦呢?最后的检查,确实是早期围绕 云安全和数据所有权的关注的一个直接结果。选择把 虚拟机放到云中的时候,围绕数据的 安全、所有权和管理问题必须是要考虑的因素,一些 虚拟机和某些IT资源与数据一起工作,如果丢失或者妥协,会为企业带来明显的痛苦。
注意,一个潜在的启用云 虚拟机的 数据类型可以处理。如果丢失或者暴露,数据的价值大于迁移到云中,那么最好把虚拟机放在 数据中心。
为私有云选择正确的 虚拟机,你要分析每一个虚拟机和服务所用的 资源。你也需要检查把这些资源移向云中的风险。有了正确的调查,就可以找到最好的资源和服务,并且可以相对容易的部署到私有云中。
杀毒技术
虚拟机并不是新技术, 操作系统,已经成为许多评测人员和 计算机病毒分析人员必需工作条件。而将 虚拟机技术应用到杀毒方面,却是一个杀毒业界一直在追求和探索的课题。由于大部分的病毒及木马都会加密加壳,所以在未激活的状态下杀毒软件是无法进行扫描的。而 “ 虚拟机杀毒技术”即是在电脑中创造一个虚拟CPU环境,将病毒在 虚拟环境中激活,根据其行为特征,从而判断是否是病毒。有专家认为,所谓 虚拟机技术,就是用 软件先虚拟一套运行环境,让病毒先在该 虚拟环境下运行,从而观察病毒的执行过程。这个技术主要用来应对加壳和加密的病毒,因为这两类病毒在执行时最终还是要自身脱壳和解密的,这样, 杀毒软件就可以在其“现出原形”之后通过特征码 查毒法对其进行查杀。
卸载
相信很多的朋友在虚拟机VMware的使用过程中都会遇到,安装的VMware无法卸载,或者想升级VMware时出现错误信息。如果你还保留了虚拟机VMware的安装程序,那么再次重新安装时,就会出现Modify/Change(更改)、Repair(修复)和Remove(移除)。这里,选择Remove(移除)即可。