很多用过VMware Workstation的朋友认为,虚拟化就是将一个操作系统在另一个操作系统中运行的技术。其实不然,虚拟化(Virtualization)这个定义比我们想象的要大得多,但是并不遥远。比如我们熟悉的磁盘RAID、Apache中的虚拟主机,这些都是虚拟化的例子。
虚拟化的定义:
        我们可以简单的认为,虚拟化就是将计算机的资源不断抽象化的过程。
虚拟化的分类:
(1)资源虚拟化:主要将计算机某些系统资源抽象化,如存储设备、网络、网络名称等。磁盘分区、RAID就是存储设备虚拟化的一个例子,虚拟主机也是网络名称虚拟化的例子。
(2)应用软件虚拟化:主要将软件抽象化,使之不需要以来特定的运行环境,就是常听说的“绿色软件”(Portable)。常用的应用软件虚拟化工具包括微软的APP-V、Citrix的XenApp以及VMware的ThinApp。
(3)平台虚拟化:主要就是将计算机的主要资源(CPU、内存、网卡)抽象化,并且让访问这些资源的对象都通过抽象层访问。常用的平台虚拟化软件有微软的Hyper-V Server、Citrix的XenServer以及VMware的ESXi。
我们为什么要使用虚拟化技术?
        大部分的操作系统在开发时,出于安全、性能、商业上的考虑,都会针对硬件直接控制。如果将硬件抽象出来再安装多个操作系统时,很可能出现兼容性的问题。比如我们在VMware中创建的虚拟机中会出现无法识别声卡、网卡等现象,但是这些现象还是很容易解决的。上次在VMware Server 2.0中创建ESXi的虚拟机,提示无法识别SCSI Controller,这下就愁坏了我们!因此在使用虚拟机时,软、硬件的设计和架构就成了是否能顺利运行的重点,而不同的虚拟化架构,当然是针对不同的资源的,因此针对不同的资源,就有不同类别虚拟化。咋说起来跟绕口令似的呢?
常见的虚拟机软件:
        VMware Workstation/Server。
        Microsoft Virtual PC/Virtual Server/Windows Virtual PC。
        Citrix Xen。
        Sun VirtualBox。
不同的虚拟化技术:
(1)完全虚拟化(Full Virtualization):目前主流的虚拟平台产品都是这样的,主要是指客户端操作系统在这种虚拟平台上运行时,不需要做任何修改。
(2)硬件辅助虚拟化(Hardware-Assisted Virtualization):或者称为“硬件虚拟机”(HVM),主要是指操作系统在这里运行虚拟机时,必须靠系统的硬件来完成虚拟化的过程。在Intel的VT和AMD的AMD-V推出之后,主流虚拟机厂商也在现有产品基础上推出新版本来融入此功能。如VMware的Workstation6.5、7.0(测试中……)
(3)部分虚拟化(Partial Virtualization):此类虚拟机产品在运行时,系统之提供部分的虚拟化,无法正常安装完整的操作系统。
(4)半虚拟化(Para Virtualization):或者称为“泛虚拟化”。操作系统在这里运行时,必须就该核心才能顺利安装,早期的Xen就属于此类。
虚拟机产品运行层:
        不管是那一种架构,所有的虚拟机既然要抽象化计算机的硬件资源,就必须有一个管理机制来管理抽象化之后的资源,这个机制一般称为:Hypervisor或者Virtual Machine Monitor。大家不要看名字里有一个Hyper-V,就以为这个跟微软的产品有关系哦~两者名字上的偶同不能影响我们对Hypervisor的理解。我们使用的虚拟机也就是Hypervisor这一层的软件。虚拟机在安装时,会在系统的硬件之上插入一层Hypervisor接管硬件。之后再安装的操作系统都是在Hypervisor之上,和硬件之间几乎没有任何关系。
硬件支持虚拟化:
        之前有的朋友问我,为什么我不能在虚拟机中安装64位操作系统?我的机器不能安装ESXi?我跟朋友说用一个小工具能够测试主板、CPU是否支持虚拟化,也就是之前一篇文章中提到的secruable。现在因为Intel的VT或者AMD的AMD-V技术的存在,主流的主板、CPU全部支持虚拟化。
企业级虚拟化平台的应用
寄居架构和原生架构:
        不管是VMware的Workstation还是Microsoft的Virtual PC,都必须安装在一个操作系统之上。如果这个操作系统崩溃了,所有运行在这台宿主机的虚拟操作系统就全部停止。这种情况在正式的应用场合是不允许发生的,因此来说,一个不依靠任何操作系统的虚拟化平台概念就诞生了。
寄居架构:
        这一类产品最大的特色就是必须在一个已经安装好的操作系统上运行,称为寄居架构(Hosted)。这样的好处就是硬件兼容性强。只要寄居的操作系统能使用的硬件,虚拟操作系统上都能使用。然而宿主机操作系统出现问题时,虚拟操作系统将无法使用,这便无法使用在重视安全及稳定的企业中。哪个企业不怕自己的服务器崩溃?不怕数据在崩溃时丢失?因此运行在一个独立的内存空间并能完全掌握硬件资源的虚拟机产品是极其必要的。
原生架构:
        相对于寄居架构的就是原生架构,或者称为裸架构。在原生架构上,虚拟机产品直接运行在硬件上,将所有的硬件资源接管过来,仅负责和虚拟操作系统通信以及资源协调,崩溃的几率很小。在其上的任何一个虚拟操作系统崩溃了,都不会影响其他虚拟操作系统,因此对于企业应用来说是非常合适的。
        原生架构的虚拟操作系统为了保持其稳定性,自然不可能将所有桌面产品的驱动程序都添加,因此最大的问题就是硬件兼容性。但是大部分原生架构产品都支持主流服务器及存储设备,如iSCSI、SAN、SAS,并且声明经过官方测试,为的就是保证在企业运行环境中的稳定性。
企业环境究竟需要什么样的虚拟机?
1、服务器隔离原则
        企业环境和桌面应用在本质上就有极大差异,在讲究安全、稳定、高可用和便捷管理的企业环境来说,服务的隔离是一个基本的原则。比如说我们在自己的电脑上同时安装QQ和MSN客户端,能够同时一两种不同的方式来进行交流,但是当企业中的Web服务器和Oracle数据库同时安装在一台服务器上,二者同时进行对系统资源的竞争会让服务器变得很慢,而操作系统、Web服务器或者Oracle数据库中任何一方的崩溃将导致整个企业应用的崩溃。因此很多企业都强调,在一个操作系统中只安装一个服务,就是为了确保企业应用的稳定性。
2、提高硬件资源效率
        随着网络环境的过度膨胀,加上服务器的空间、耗电、散热成本的提高,CPU资源的利用率过低,虚拟机厂商将目标定为“在单一实体服务器上运行多个操作系统”。这样我们可以让每一个系统服务都以独占操作系统的方式,共存于一台实体服务器中,也就是服务器的合并。这不仅保持了服务的隔离,更让前面提到的所有问题得到解决。
3、高可用性
        服务器合并之后,由于虚拟机的硬件在抽象化之后,比实体机更有利于存在于企业应用环境。打个比方来说,企业最在乎的高可用(HA)、容错、负载均衡、备份等之前必须靠复杂的技术或者昂贵的设备所能解决的问题,使用虚拟化竟然能够一并解决。
除此之外,虚拟机更可以解决目前设备无法解决的问题,包括动态的主机迁移、统一的桌面管理,甚至是创建永远不会崩溃的企业集成环境,使用虚拟化技术都能够一并实现。
哈哈,就先到这里吧。面对枯燥的文字,产生了意睡~
今天的重点就是:企业为什么需要虚拟化技术,以及需要什么样的虚拟化技术?