概述:本文将从服务器虚拟化技术的历史沿革、如何解决存储 I/O 问题以及其目前的优缺点等方面着重分析该技术的发展现状。本系列文章的下篇将着重讨论全新的创新型解决方案(尤其是面向 I/O 虚拟化的解决方案)如何解决有关问题,及如何实现独立服务器向完全虚拟化平台的完美过渡。
Luca Bert,LSI公司知名存储技术专家
什么是服务器虚拟化,我们为什么要采用服务器虚拟化技术?
虚拟化技术旨在降低总拥有成本 (TCO) 的同时提高服务器部署与管理效率。从整体角度上看,服务器虚拟化分两个阶段进行,首先是整合服务器,其次是提高使用效率。
在整合阶段,该技术主要解决服务器利用率普遍偏低的问题(2007 年初,IDC 研究发现,一般可接受的平均利用率仅为7%)。但我们却要支付服务器的全部费用,整体加以部署,而且服务器整体要消耗大量电力。解决上述问题首先也是最简单的方法就是将运行在不同服务器上的各种操作系统与应用整合在单个平台上,这样做的主要好处是能够大幅降低采购成本(即资本支出),同时还有助于降低功耗。
在第二阶段,我们更注重的是提高服务器的使用效率。利用多个虚拟化服务器来动态管理资源,在服务器之间移动虚拟机,并对停机时间、升级和维护工作进行透明化的计划安排,以及自动实现故障转移。本阶段主要侧重于降低平台的管理成本与运营支出。目前,软硬件也正在向虚拟化这一发展方向上齐头并进:首先,根据标准硬件进行实施,通过二进制补丁等软件技术创建虚拟层。随后,硬件通过添加 Intel VT-x 与 VT-i以及AMD-V 等虚拟技术,有助于从每个客操作系统 (Guest OS) 中抽象出(abstract) CPU 和存储器。
接下来,我们还是先通过软件方式将系统管理程序基础架构从二进制补丁转移到仿真和半虚拟化中来提高系统管理程序的效率,并降低系统开销。
最后,就是将虚拟环境从GB级降到数十MB的水平,从而减小软件对资源的开销。
被遗忘的 I/O
由于最初侧重点主要放在软件基础架构上,因此所有努力都是为了解决 CPU 和存储器领域常见的软件瓶颈问题。
一直以来,我们把 I/O 作为大众产品资源,系统管理程序从操作系统(客操作系统 (GOS))中抽象出 I/O,好像每个客操作系统都拥有全部 I/O 一样。事实上,这种解决方案现在仍能正常工作,尤其是在最近仿真和半虚拟化技术取得长足发展的情况下,上述解决方案依然适用。
不过,这种解决方案的问题在于,I/O 硬件仍然是单一的元素,有着其内在的局限性,受系统管理程序的影响,只能为单个操作系统服务,而不能满足一系列虚拟 GOS 的要求。由于 I/O 和 GOS 之间缺乏相互了解,因此简化了部署工作(OS 和 I/O 彼此不了解,毋需对其进行修改),但这会影响效率,且存在安全隐患问题。
系统管理程序是最基本的管理机制,GOS 的每个 I/O 请求都要经系统管理程序处理。系统管理程序可提供抽象服务 (abstraction service)、处理 GOS 队列、中断服务并处理异常情况等。
从积极方面来说,目前这种模型为改进 I/O 和存储功能提供了新的机遇。最直接、最简单的例子就是,系统管理程序可通过作为集合点的内部文件系统(例如 VMware 中的 VMFS)来虚拟化软件层上的所有存储空间,然后根据需要将软件重新分配给各个客操作系统。
这种方法提供了一些此前只有 SAN 才具备的特性:我们可以对存储空间进行精简配置,创建快照,并通过存储池或其他技术抽象存储空间。我们不需要将一系列服务器连接到 SAN,而是从系统管理程序文件系统连接到 GOS 存储系统,而且存储系统位于物理盒子内。
不过,这种方法也存在一些局限性:
- 性能:如今不能用非虚拟化服务器的常规指标(如MB/秒或 IO/秒)来衡量虚拟化服务器的性能。这是因为系统管理程序同时用系统 CPU 来处理抽象工作(这样减少了生产力应用的 CPU 资源占用),且数据在提交给发出请求的 GOS 之前必须进行转换。这就导致每个 GOS 都会面临较长的时延,从而降低 GOS 的工作效率。对通过快速反应时间来提高效率的事务处理型应用而言,这种影响尤其突出。
- 安全性:由于所有数据都整合到了系统管理程序中,因此数据安全性完全取决于系统管理程序。一旦系统管理程序出现故障,或者操作人员管理失误,抑或遭到病毒攻击等,运行在该平台上的所有数据和 OS/应用,无一幸免都会受到影响。系统管理程序只能通过系统管理程序软件来确保其安全性。尽管一些应用可以接受这种安全级别,但很多应用仍然需要更高的安全机制。
- 服务质量 (QoS):服务质量也取决于系统管理程序,也就是说,需要运行更多代码来确保 QoS(从而占用系统资源),而且代码的功能也仅限于系统管理程序的功能。由于 I/O 不了解虚拟化,因此在 I/O 控制器层调解虚拟化 QoS 是不可能的,这就远不能实现最佳实施技术。
此外,虚拟化技术还能为 DAS RAID 控制器提供类似于 SAN 的优势,尽管这些控制器并不了解虚拟层。其中最明显的优势就是存储整合,这也是先前基于 SAN 的 RAID 技术最为显著的优势之一。出于对性能和可靠性方面的考虑,用户往往不得不对非虚拟化服务器的配置过量存储空间,而这通常会导致资源浪费及部署成本的提高。虚拟化服务器的配置与 SAN 一样,可以根据需要将存储空间整合起来,然后通过创建 LUN 并将其分配给每个 GOS(或分配至系统管理程序自己的文件系统),最后并利用各种常见的 SAN 技术来实现配置。
最后要提的一点是,I/O(尤其是 DAS 存储 I/O)具有平台本地化特性。虽然可将存储空间抽象至运行在本服务器上的 GOS,但却不能将其抽象至另一个服务器上的 GOS,因为找不到有效的通信路径,而且如果服务器发生故障时所有本地存储设备都会发生故障,不能再满足其他服务器的要求。因此,VM 移动技术的当前实施方案要求存储设备必须与 SAN 相连。
不过,产生这种不足的原因在于,我们在服务器虚拟化的第一阶段完全致力于 CPU 和存储器的管理问题,而要让系统管理程序在没有硬件的支持下来解决抽象问题。
附注:随着虚拟化技术的不断普及,I/O 虚拟化的重要性也不断提高。在此情况下,新技术开始涌现,有望打破虚拟系统中I/O的局限性,同时保留所有技术优势。本领域最有前景的技术就是 Single-Root IO 虚拟化 (SrIOV) 和 Multi-Root IO 虚拟化 (MrIOV) 技术。我们将在下篇文章中对其加以探讨。