在服务器虚拟化技术中,被虚拟的实体是各种各样的IT资源。按照这些资源的类型分类,我们可以梳理出不同类型的虚拟化。目前,大家接触最多的就是系统虚拟化。比如使用VMware Workstation在个人电脑上虚拟出一个逻辑系统,用户可以在这个虚拟的系统上安装和使用另一个操作系统及其上的应用程序,就如同在使用一台独立的电脑。我们将该虚拟系统称做“虚拟机”,而VMware Workstation这样的软件就是 “虚拟化软件套件”,它们负责虚拟机的创建、运行和管理。虽然虚拟机或者说系统虚拟化是当前最常使用的服务器虚拟化技术,但它并不是虚拟化的全部。下面
深圳网站建设公司为读者介绍
服务器虚拟化技术的几种常见类型。
1. 基础设施虚拟化
网络虚拟化是指将网络的硬件和软件资源整合,向用户提供虚拟网络连接的虚拟化技术。网络虚拟化可以分为局域网络虚拟化和广域网络虚拟化两种形式。在局域网络虚拟化中,多个本地网络被组合成为一个逻辑网络,或者一个本地网络被分割为多个逻辑网络,并用这样的方法来提高大型企业自用网络或者数据中心内部网络的使用效率。该技术的典型代表是虚拟局域网(Virtual LAN, VLAN)。对于广域网络虚拟化,目前最普遍的应用是虚拟专用网(Virtual Private Network, VPN)。虚拟专用网抽象化了网络连接,使得远程用户可以随时随地访问公司的内部网络,并且感觉不到物理连接和虚拟连接的差异性。同时,VPN保证这种外部网络连接的安全性与私密性。
存储虚拟化是指为物理的存储设备提供一个抽象的逻辑视图,用户可以通过这个视图中的统一逻辑接口来访问被整合的存储资源。存储虚拟化主要有基于存储设备的存储虚拟化和基于网络的存储虚拟化两种主要形式。磁盘阵列技术(Redundant Array of Inexpensive Disks, RAID)是基于存储设备的存储虚拟化的典型代表,该技术通过将多块物理磁盘组合成为磁盘阵列,用廉价的磁盘设备实现了一个统一的、高性能的容错存储空间。网络附加存储(Network Attached Storage, NAS)和存储区域网(StorageArea Network, SAN)则是基于网络的存储虚拟化技术的典型代表。
存储虚拟化是指把物理上分散存储的众多文件整合为一个统一的逻辑视图,方便用户访问,提高文件管理的效率。存储设备和系统通过网络连接起来,用户在访问数据时并不知道真实的物理位置。它还使管理员能够在一个控制台上管理分散在不同位置的异构设备上的数据。
2. 系统虚拟化
正如上文所述,目前对于大多数熟悉或从事IT工作的人来说,“虚拟化”这个词在脑海里的第一印象就是在同一台物理机上运行多个独立的操作系统,即所谓的系统虚拟化。系统虚拟化是被最广泛接受和认识的一种服务器虚拟化技术。系统虚拟化实现了操作系统与物理计算机的分离,使得在一台物理计算机上可以同时安装和运行一个或多个虚拟的操作系统。在操作系统内部的应用程序看来,与使用直接安装在物理计算机上的操作系统没有显著差异。
系统虚拟化的核心思想是使用虚拟化软件在一台物理机上虚拟出一台或多台虚拟机(Virtual Machine, VM)。虚拟机是指使用系统虚拟化技术,运行在一个隔离环境中、具有完整硬件功能的逻辑计算机系统,包括客户操作系统和其中的应用程序。在系统虚拟化中,多个操作系统可以互不影响地在同一台物理机上同时运行,复用物理机资源。在下文,尤其是第4章中,读者将会接触到各种各样不同的系统虚拟化技术,比如应用于IBM z系列大型机的系统虚拟化、应用于基于Power架构的IBM p系列服务器的系统虚拟化和应用于x86架构的个人计算机的系统虚拟化。对于这些不同类型的系统虚拟化,虚拟机运行环境的设计和实现不尽相同。但是,在系统虚拟化中虚拟运行环境都需要为在其上运行的虚拟机提供一套虚拟的硬件环境,包括虚拟的处理器、内存、设备与I/O及网络接口等,如图2.2所示。同时,虚拟运行环境也为这些操作系统提供了诸多特性,如硬件共享、统一管理、系统隔离等。
相信很多读者都曾经或者正在将系统虚拟化技术运用到我们日常所用的个人电脑上。在个人电脑上使用系统虚拟化具有丰富的应用场景,其中最普遍的一个就是运行与本机操作系统不兼容的应用程序。例如,一个用户使用的是Windows系统的个人电脑,但是需要使用一个只能在Linux下运行的应用程序,他可以在个人电脑上虚拟出一个虚拟机并在上面安装Linux操作系统,这样就可以使用他所需要的应用程序了。
系统虚拟化更大的价值在于服务器虚拟化。目前,数据中心大量使用x86服务器,一个大型的数据中心中往往托管了数以万计的x86服务器。出于安全、可靠和性能的考虑,这些服务器基本只运行着一个应用服务,导致了服务器利用率低下。由于服务器通常具有很强的硬件能力,如果在同一台物理服务器上虚拟出多个虚拟服务器,每个虚拟服务器运行不同的服务,这样便可提高服务器的利用率,减少机器数量,降低运营成本,节省物理存储空间及电能,从而达到既经济又环保的目的。
除了在个人电脑和服务器上采用虚拟机进行系统虚拟化以外,桌面虚拟化同样可以达到在同一个终端环境运行多个不同系统的目的。桌面虚拟化解除了个人电脑的桌面环境(包括应用程序和文件等)与物理机之间的耦合关系。经过虚拟化后的桌面环境被保存在远程的服务器上,而不是在个人电脑的本地硬盘上。这意味着当用户在其桌面环境上工作时,所有的程序与数据都运行和最终被保存在这个远程的服务器上,用户可以使用任何具有足够显示能力的兼容设备来访问和使用自己的桌面环境,如个人电脑、智能手机等。
3. 软件虚拟化
除了针对基础设施和系统的虚拟化技术,还有另一种针对软件的虚拟化环境,如用户所使用的应用程序和编程语言,都存在着相对应的虚拟化概念。目前,业界公认的这类虚拟化技术主要包括应用虚拟化和高级语言虚拟化。
应用虚拟化将应用程序与操作系统解耦合,为应用程序提供了一个虚拟的运行环境。在这个环境中,不仅包括应用程序的可执行文件,还包括它所需要的运行时环境。当用户需要使用某款软件时,应用虚拟化服务器可以实时地将用户所需的程序组件推送到客户端的应用虚拟化运行环境。当用户完成操作关闭应用程序后,他所做的更改和数据将被上传到服务器集中管理。这样,用户将不再局限于单一的客户端,可以在不同的终端上使用自己的应用。
高级语言虚拟化解决的是可执行程序在不同体系结构计算机间迁移的问题。在高级语言虚拟化中,由高级语言编写的程序被编译为标准的中间指令。这些中间指令在解释执行或动态翻译环境中被执行,因而可以运行在不同的体系结构之上。例如,被广泛应用的Java虚拟机技术,它解除下层的系统平台(包括硬件与操作系统)与上层的可执行代码之间的耦合,来实现代码的跨平台执行。用户编写的Java源程序通过JDK提供的编译器被编译成为平台中立的字节码,作为Java虚拟机的输入。Java虚拟机将字节码转换为在特定平台上可执行的二进制机器代码,从而达到了“一次编译,处处执行”的效果。