下面是在实现虚拟化时常常使用的一些模式和技术:
1. 单一资源的多个逻辑表示 这种模式是虚拟化最广泛使用的模式之一。它只包含一个物理资源,但是它向消费者呈现的逻辑表示却仿佛它包含多个资源一样。消费者与这个虚拟资源进行交互时就仿佛自己是惟一的消费者一样,而不会考虑他正在与其他消费者一起共享资源。虚拟机就是这种模式的一个例子。硬件物理分区和逻辑分区(如 IBM System p、System z 和 System i 服务器)或软件产品(如 VMware、Microsoft Virtual Server 和 Xen)都实现了服务器的虚拟化。数据库视图的使用将数据与消费者隔离开来,这样可以基于消费者的角色和身份验证对资源进行访问,即使在所有消费者同时访问相同的数据库时,也不会出现任何问题。另外,网格使用虚拟化技术来管理网络上的数据,并在逻辑上将其作为一个系统呈现给消费者。下面的两个图示说明了服务器和信息的虚拟化。
图 2. 单一资源的多个逻辑表示
2. 多个资源的单一逻辑表示 这种模式包含了多个组合资源,以便将这些资源表示为提供单一接口的单个逻辑表示形式。在利用多个功能不太强大的资源来创建功能强大且丰富的虚拟资源时,这是一种非常有用的模式。存储虚拟化就是这种模式的一个例子。IBM 的 SAN Volume Controller 可以将几个存储卷组合在一起,将它们呈现为一个大型的单一存储设备。消费者并不知道自己的数据被分散到了多个磁盘上。在服务器方面,集群技术可以提供这样的幻想:消费者只与一个系统(头节点)进行交互,而集群事实上可以包含很多的处理器或节点。实际上,这就是从 IT 技术设施的角度看到的网格可以实现的功能。多种资源集都是通过一个简化的用户界面呈现出来,例如用户使用的门户,或应用程序使用的标准接口。从计算角度来看,网格在接受任务请求,对任务负载进行调度和管理,并在提供资源和返回结果的同时提供任务负载虚拟化的能力。
图 3. 多个资源的单一逻辑表示
图 4. 网格对基础设施进行虚拟化
3. 在多个资源之间提供单一逻辑表示 这种模式包括一个以多个可用资源之一的形式表示的虚拟资源。虚拟资源会根据指定的条件来选择一个物理资源实现,例如资源的利用、响应时间或临近程度。尽管这种模式与上一种模式非常类似,但是它们之间有一些细微的差别。首先,每个物理资源都是一个完整的副本,它们不会在逻辑表示层上聚集在一起。其次,每个物理资源都可以提供逻辑表示所需要的所有功能,而不是像前一种模式那样只能提供部分功能(例如,前一种模式是文件的一部分,这种模式是文件的一个完全副本)。这种模式的一个常见例子是使用应用程序容器来均衡任务负载。在将请求或事务提交给应用程序或服务时,消费者并不关心到底是几个容器中执行的哪一个应用程序的副本为请求或事务提供服务。消费者只是希望请求或事务得到处理。一个具体的例子是 IBM 的 WebSphere? Application Server Extended Deployment。另外一个例子是文件虚拟化,其中为了满足冗余或性能的需要,可能为数据维护提供多个副本。当消费者访问文件时,文件系统(如通用并行文件系统 (GPFS))就会定位这些文件众多副本中的一个,但是消费者并不知道正在使用的文件副本的具体位置。
图 5. 在多个资源之间提供单一逻辑表示
4. 单个资源的单一逻辑表示 这是用来表示单个资源的一种简单模式,就仿佛它是别的什么资源一样。启用 Web 的企业后台应用程序就是一个常见的例子。在这种情况下,我们不是修改后台的应用程序,而是创建一个前端来表示 Web 界面,它会映射到应用程序接口中。这种模式允许通过对后台应用程序进行最少的修改(或根本不加任何修改)来重用一些基本的功能。也可以根据无法修改的组件,使用相同的模式构建服务。
图 6. 单个资源的单一逻辑表示
5. 复合或分层虚拟化 这种模式是刚才介绍的一种或多种模式的组合,它使用物理资源来提供丰富的功能集。信息虚拟化是这种模式一个很好的例子。它提供了底层所需要的功能,这些功能用于管理对资源、包含有关如何处理和使用信息的元数据以及对信息进行处理的操作的全局命名和引用。IBM WebSphere Information Server 就是这样一个例子,它提供了一些利用到异构资源和统一元数据的广泛连接来集成、丰富和传递信息所需的功能,有些体系架构或框架,例如 Open Grid Services Architecture(OGSA)或者 Grid Computing Components,实际上都是虚拟化的组合或虚拟化的不同层次。这个框架中的每一层都是更低一层的抽象,它为上层提供了一个定义好的接口。随着我们在这个架构中的层次(或框架堆栈)的上升,底层提供的资源都组合成了更复杂的功能。例如,任务负载虚拟化和信息虚拟化就为已经虚拟化过的基础设施(系统、存储和网络)提供了更高级的虚拟化。
图 7. 网格计算组件