面向小型企业的虚拟化
在过去一两年里,我们目睹了虚拟化从一个鲜为人知的概念,变成了一个被大肆炒作的行业流行词,在每一场涉及技术的对话中被人们不停地谈论。毫无疑问,虚拟化正在当今的 IT 格局中扮演着重要角色,但我们要问的问题是,在当前阶段虚拟化是否适用于中小型企业市场。
这个问题的简短答案是:绝对适用。许多技术价值存疑,或者带来了对小型企业而言可能并不合适的极大技术复杂性、风险和开销,而虚拟化与之不同,它是一项成熟的技术(IBM CP/CMS,约 1968 年),人们对其有充分的理解,它提供了一层硬件抽象,能够使任何规模的 IT 组织受益,而且对小型企业 IT 部门的适用程度,甚至可能比在大型企业领域还要更高。
在审视虚拟化如何能使中小企业市场受益之前,我想先提供一些定义,以确保我们讨论的是同一组技术。在当今的 IT 格局中,出于营销原因将常见技术重新贴上“虚拟化”标签已蔚然成风,而这不必要地使问题复杂化了。
真正的虚拟化指的是对整个操作系统的虚拟化。维基百科使用平台虚拟化这一术语,我也将沿用它。从技术上讲,我们可以将其称为“系统虚拟化”或“操作系统虚拟化”,以将其与一些关系松散的技术区分开来——后者或许也有理由使用同一个笼统的术语。
平台虚拟化的基本概念,涉及在一台计算机上运行一个抽象层来模拟硬件本身。通过抽象与模拟的结合,我们得到了所谓的虚拟机。这台虚拟机是一台完全可以运转的“计算机”,我们可以在其上安装操作系统,就如同我们安装到一台专用机器的裸机之上一样。我们不再局限于每台计算机只能安装一个操作系统映像,借助平台虚拟化,我们现在可以将相同或不同操作系统的多个副本安装到同一台硬件之上。这确实是一个强大的概念。
这项技术效用之显而易见,引出了一个同样显而易见的问题:“如果平台虚拟化早在 1968 年就已问世,为什么它直到最近才开始变得流行和重要?”这是一个极好的问题。其答案其实相当简单。
传统的平台虚拟化技术需要计算机硬件本身提供大量支持。数十年来,IBM 一直在将这类支持内建到其大型机系统中,而像 Sun 这样的大型 UNIX 供应商多年来也一直在其高端 UNIX 服务器中提供这类支持。这些系统高度专门化,通常运行它们自己定制的操作系统。一般而言,只有大型 IT 企业才负担得起如此规模的服务器,而小型企业并不能便捷地接触到这些技术。对于那些过去曾使用过此类设备的 IT 专业人士而言,虚拟化的理念往往已如此深深地融入平台之中,以致很少被专门讨论,因为它被视为这些高端服务器系统的一个固有方面,而未必是一个独立成立的概念。
最近发生变化的,是将平台虚拟化引入到由 AMD 和 Intel(x86_64)处理器所占据的商用硬件领域,这些处理器为大多数中小型企业以及更大的企业所采用。第一步举措是仅凭软件就在 x86 处理器家族上实现这一点。这一领域的早期参与者是 VMWare 和 Microsoft,它们推出了 VMWare Workstation、Virtual PC、VMWare GSX 和 MS Virtual Server 等产品。这些产品表明,无需特殊硬件就能有效地虚拟化整个操作系统,并开始让各种规模的公司得以尝试虚拟化其现有商用平台这一概念。这种形式的虚拟化被称为“基于宿主的虚拟化”,因为它需要一个宿主操作系统,虚拟化环境将在其上运行。
紧随这些纯软件解决方案之后,商用领域的大型处理器供应商 AMD 和 Intel 开始将虚拟化能力内建到处理器之中,从而带来了更高的灵活性、安全性和性能,并使商用 x64 硬件市场与大型铁机服务器中常见的其他处理器家族的传统产品更为接近。如此一来,虚拟化市场便真正迎来了爆发式增长,既来自供应商一方——越来越多的供应商开始提供与虚拟化相关的产品,也来自客户一方——虚拟化开始得到更好的理解,其使用也变得更加普遍。在最新几轮采购中,大多数小型 IT 企业所购买的服务器(往往还有台式机)即便并非有意为转向虚拟化做准备,也已支持硬件级虚拟化,这使得这一算式往往自然而然地朝那个方向倾斜。这种受硬件支持的虚拟化模型被称为“基于虚拟机监控程序的虚拟化”,因为所有操作系统都运行在一个被称为虚拟机监控程序(hypervisor)的微型内核之上,没有传统操作系统直接运行在硬件之上。
既然我们已经对平台虚拟化是什么、以及它为何现在成为我们可选的方案有了清晰的认识,接下来我们就来看看平台虚拟化为何可能在中小型企业领域对我们大有裨益。
有两样东西是我们可以轻易虚拟化的(在不涉及深奥内容、也不开始虚拟化我们的路由和交换基础设施的前提下)——服务器和台式机。其中更为容易、也更为显而易见的选择,无疑是服务器的虚拟化。
对服务器基础设施(或其中一部分)进行虚拟化,是当今大多数 IT 企业最先着眼于虚拟化潜力的地方。大多数公司发现,它们的大部分服务器都极度未被充分利用,过剩的 CPU、内存和磁盘容量处于闲置状态,而额外的工作负载却由于预算限制、空间或实施时间的缘故无处安放。虚拟化前来救援。
通过虚拟化,我们有机会在单台服务器硬件上运行多台虚拟服务器。我们可以仅虚拟化单一的服务器系统,但这不会为我们带来任何利用率上的优势;又或者,理论上,如果我们的硬件能够承受,我们可以虚拟化数百台服务器。通常情况下,小型企业可以将若干常见的服务器角色虚拟化到单台物理服务器之上。当然,虚拟机的密度既取决于负载特征,也取决于可用的硬件。显然,虚拟化会占用大量内存和存储,因此必须做出周密的规划。如今内存和存储相对廉价,而且无疑远比采购额外的服务器硬件并为之支付支持费用要便宜得多。对小型企业而言,在单台硬件上轻松地至少虚拟化六台服务器是司空见惯的,而期望达到二十台或更多也并非不合理的数字。
许多小型企业会立即得出结论,认为虚拟化需要昂贵的 SAN 存储。事实完全并非如此。即便不使用 SAN 存储基础设施,虚拟化也能提供一系列益处,企业可以立即加以利用。当然,将 SAN 与虚拟化以及高可用性或负载均衡技术结合使用,确实能带来一些显著的优势。不过,这些高可用性和负载均衡能力往往是虚拟化出现之前并不存在的额外功能,并非企业从虚拟化中获得显著益处所必需的,但它们确实呈现了一个未来改进的机会,可待预算允许之时再加以利用。
小型企业即便以小规模实施虚拟化,也将立即从中看到诸多优势。其中一些益处显而易见,另一些则不那么明显。
我们的第一项优势,正如我上文所提到的,就是硬件成本。通过消除按每个操作系统为单位采购和支持昂贵服务器硬件的需要,我们现在能够以更低的单系统成本部署更多系统。在许多情况下,这不仅是一笔成本节约,还将提供更充裕的资金,使企业得以从较为简陋的服务器转向数量更少但更具企业级品质的产品,这些产品具备重要的性能、稳定性和支持特性,例如集成的电源管理,以及通过带外管理控制台实现的 KVM over IP。
我们的第二项优势,是通过降低功耗带来的成本节约。如今公司关注自身的“绿色”程度十分时髦,而且理由充分,IT 虚拟化在部门的绿色化进程中扮演着关键角色。在单台物理服务器上增加虚拟机,通常意味着功耗的增加微不足道,甚至难以测量。而增加额外的物理服务器,当然会带来可观的功耗增长,即便对于那些轻度使用或仅偶尔使用的系统也是如此。
我们的第三项优势,在于降低备份的复杂性。虚拟化服务器可以使用完全传统的方法进行备份,例如从操作系统本身进行文件系统级备份,正如 NetBackup、BackupExec、Amanda、Bacula 等传统备份系统所普及的那样。因此,如果我们希望沿用当前的备份策略,我们完全可以做到,而不会增加任何复杂性;但如果我们想转向基于映像的备份,我们也可以相当轻松地做到。将系统映像用作备份未必是虚拟化所独有的新事物,但虚拟化使这一点对许多用户而言变得显而易见且易于实现。事实上,借助虚拟化,仅凭常规文件系统就可以获取系统映像(即整个系统的副本,而不仅仅是其各个文件的副本)——无需任何专门的软件。只需关闭虚拟服务器、复制其虚拟文件系统(往往是单个庞大的文件),然后再次启动该系统,便可获取一份完整的系统备份。恢复一套系统可以简单到,将一个映像文件从备份存储设备复制到虚拟服务器并将其重新启动。恢复完成。系统重新上线。这已经简单到不能再简单了。
我们的第四项优势,在于置备的便捷性。对大多数企业而言,直接在硬件上构建一套新的服务器操作系统是一项耗时的工作。如果使用了某种以前未曾用过的新硬件类型并出现任何意外,情况尤其如此。可能会有缺失的驱动程序,或者支持该硬件所需的特殊操作系统设置和参数。借助虚拟化,目标平台始终是完全相同的,这就从这一过程中消除了许多意外,使其既更快又更可靠。在许多情况下,部署也更快,仅仅是因为准备基础机器的过程要快得多。要在一台传统物理服务器上启动一次手动的 Linux 安装,我必须先采购该服务器、安装到机架中、连接电源和网络、置备网络、开启服务器、更新固件、配置带外管理系统、对硬件进行老化测试、装入安装介质,然后才开始安装。而在某些虚拟化环境中,我只需在命令行用一条命令就能启动整个过程。部署一台新服务器所需的时间,可以从数小时或数天缩短到数分钟。这甚至还没有开始触及在虚拟环境中克隆现有系统的那种简便性。
虚拟化的第五项“软”优势在于,进行虚拟化时往往会带来可观的软件成本节约。一些供应商,例如提供 Suse Linux 的 Novell,允许你在单台物理机器上虚拟化任意数量的服务器,而只需为单台机器的许可证付费。Red Hat 允许你进行多次安装,但不像 Novell 那样不限数量。Microsoft 则根据你的需求提供一系列虚拟化定价选项,包括一种按处理器计费的不限数量部署许可证。在最坏的情况下,你将需要为额外的操作系统和其他软件许可证付费,其方式与你以物理方式运行这些相同机器时完全一样;但在几乎所有情况下,对于多台虚拟化主机,都有更大的定价灵活性,而且往往能带来显著的成本降低。
第六项益处在于能够“回滚”整个操作系统。大多数虚拟化平台都支持这样一个概念:为系统拍摄一份快照,对活动系统进行更改,然后在完成后将系统恢复到其原始状态。这对于软件测试极为有利,尤其适用于操作系统补丁的测试,或任何关键的更新过程——在这些过程中,一旦出现差错就可能导致你的系统失去响应、甚至可能无法修复。能够“穿越回”最近一次快照(在应用补丁或进行有风险的配置更改之前数秒所拍摄)的能力,可谓救命稻草。当然,拍摄一份映像备份也可以用于同样的目的,但快照由于其与原始文件系统的“邻近性”,能够实现更为迅速的恢复。
上述所有这些益处都伴随着向虚拟化的转变而来,并且不需要为软件或硬件付出额外成本。如果我们的预算允许且确有需要,还有一个选项,即添加一台或多台虚拟化服务器,并让这些服务器共享一个 SAN 来存储虚拟机映像。这至少会使硬件成本大致增至三倍,但提供了双倍的处理能力以及一些真正令人惊叹的功能。真正令这一解决方案令人印象深刻的主要功能,是实时迁移这一概念。实时迁移,是指一个虚拟操作系统可以在运行的同时,从一台物理虚拟化服务器迁移到另一台。这样做可以出于负载均衡、灾难测试,或在灾难真正发生时得以幸存的目的。借助某些实时迁移解决方案(通常作为高可用性出售),这种迁移可以发生得如此之快,以致它实际上提供了“零停机”,甚至连使用频繁的 Web 服务器都能在一台物理服务器丢失的情况下幸存,而客户完全不会察觉到有一台物理服务器曾经宕机。虚拟机宿主节点之间的切换对最终用户而言是完全透明的。
这里有一个重大的需要注意之处。当然,在灾难恢复场景中依赖一个 SAN,会制造出另一个故障点——SAN 系统本身。因此,当计划使用 SAN 来提高你虚拟机的可靠性时,务必不要使用其冗余程度不及(或仅相当于)你服务器自身的 SAN,否则你可能会在增加成本的同时,意外地降低了可靠性和性能。
对一般的小型企业而言,不仅虚拟化部分服务器基础设施、而且虚拟化其全部或几乎全部基础设施,很可能是合理之举。虚拟化的优势如此之多,而其弊端又如此之少且轻微,以致在小型企业领域,能够证明专用硬件服务器之合理性的工作负载实属罕见。
既然我们已经审视了服务器虚拟化为何合理,我们就可以开始着眼于桌面虚拟化了。与真实的台式机和服务器不同,虚拟化的台式机往往会因授权要求而增加一些复杂性,尤其是在涉及 Microsoft Windows 台式机时。
虚拟化台式机还有几分复杂,因为在物理上提供桌面有许多种模式。显然,一旦我们开始谈论虚拟化桌面基础设施,我们实际上谈论的是一系列解决方案,因为总得有某种设备始终存在于“桌面上”,提供键盘、鼠标和显示器(这些是无法被虚拟化的),而桌面操作系统本身则必须在别处运行。即便没有虚拟化,这种做法也已经非常普遍(有时也被宣传为虚拟化,而事实上它只是远程访问而已),其实现方式包括桌面刀片、机架式台式机或终端服务器。所有这些解决方案都将桌面移入数据中心,并通过瘦客户端前端、或仅通过软件向远程用户的现有机器(例如在家登录办公室的用户)提供对它的访问。
我们先从终端服务器这一概念入手,因为它是最容易虚拟化、也最为直截了当的。无论我们谈论的是虚拟化运行 Microsoft Terminal Server(现称为 Remote Desktop Services)的服务器、Citrix XenApp,还是仅仅是一台标准的 Linux 远程桌面终端服务器,我们所需做的,不过是将该服务器安装到一个虚拟环境中,而非安装到一个物理环境中。这其实是一个服务器虚拟化的问题,而非桌面虚拟化的问题——它只是被最终用户感知为与他们的桌面相关而已。
桌面虚拟化的另一种方法,我将称之为“真正的桌面虚拟化”,是在一台虚拟服务器上实际运行桌面操作系统映像,就如同它们是专属于某个用户的普通台式机一样。这意味着虚拟化诸如 Windows XP、Windows Vista 或 Windows 7 这样的操作系统,每个映像都专属于单一用户,就如同它是一台物理台式机一样。理论上,我们可以用 Linux 或其他某种 Unix 风格的系统做同样的事情,但由于那些系统并没有按用户计费的授权或专门的桌面版本,而且由于它们的桌面始终以服务器模式运行,因此我们只能从用法上、而非通过任何严格的技术手段来区分一台真正虚拟化的桌面和一台基于 Unix 的终端服务器,因为二者本是一回事。只有 Windows 才真正提供了一种专属桌面模型,使得这种特定方式下的运行得以实现,而不涉及多个用户同时共享访问单一映像的概念。
由于 Microsoft 的授权限制,Windows 桌面必须按每用户一个映像的方式安装,即便存在能够从技术上使这一点变得不必要的技术也是如此,但这种模型仍有其益处。虚拟化桌面的重大益处,无疑要归于那些拥有在内部或乃至外部流动办公员工的公司。
相较于提供笔记本电脑,使用虚拟化桌面为公司提供了多得多的掌控力。笔记本电脑可能被盗、丢失或损坏。笔记本电脑会磨损,需要定期更换。一台可从公司外部访问的虚拟桌面,可以以笔记本电脑所无法企及的方式得到保护和防护。升级要简单得多,而且不必担心虚拟桌面会与公司网络隔绝、从而无法得到 IT 人员的支持。
几乎任何在办公室使用计算机的员工,在家里都已经有一台供个人使用的计算机,并且除了高速互联网接入之外往往还有一台笔记本电脑。因此,提供对办公室某台虚拟桌面的远程访问,对公司或员工而言可能不会产生任何额外的硬件开支,同时还能减轻管理负担、降低功耗并提高安全性。有些员工将始终需要笔记本电脑,但许多人则不需要。
对于那些仍坐在公司办公室内传统办公桌前的员工而言,仍然需要在桌面上有某种物理设备,用以将键盘、鼠标和显示器连接到这台新虚拟化的桌面。这可以是一台原本计划退役的旧 PC、一台专用的硬件瘦客户端,乃至一台笔记本电脑。内部员工随后便可以在办公室内或办公室之间走动,坐到任何一张配有瘦客户端的空闲办公桌前,登录到他们自己专属的虚拟桌面,并完全如同坐在自己办公桌前一样工作。之后,如果获得允许,他们也可以回家并在家里工作。
与虚拟化服务器一样,如果确有需要,桌面也可以使用传统手段、或仅通过拍摄完整的系统映像而轻松地进行备份。其灵活性在于,可以采取在你的环境中最为合理的任何做法。
由于授权的复杂性和意料之外的成本,以及除纯远程用户之外无法彻底摆脱桌面端硬件这一点,桌面虚拟化绝非像服务器虚拟化那样是一个无需多想的选择。桌面虚拟化将需要逐案进行审慎分析,以确定它是否能够满足各个组织的成本和易用性需求。大多数选择走这条路的组织,很可能会选择只进行部分虚拟化——仅在最为合理的情形下加以使用,例如针对流动用户和远程工作者,而对那些极少有机会利用这项技术的用户则保留传统台式机。使用终端服务器选项往往会比“真正的桌面虚拟化”常见得多,后者往往只在面向高级用户、开发人员,或为了支持某些在终端服务器模式下运行不佳的应用时才显得合理。
还有虚拟化的最后一种用法值得讨论,仅仅因为理解它在企业环境中的用途十分重要。这最后一种类型的虚拟化,并非用于将操作系统放入数据中心的服务器硬件之上,而是用于在传统台式机和笔记本电脑上运行额外的操作系统映像。对于那些需要测试多个操作系统以进行支持或开发的人而言,这是一种常见的场景。它对生产系统并无用处,并且通常不在本文讨论的范围之内。这是对该技术一种极为有用的运用,但它更像是一种小众场景,主要用于兼容性测试。
在所有这些讨论中,相当引人注目的是,始终没有提及 Apple 的 Mac OSX 产品。这其中是有原因的。Apple 并不授权 Mac OSX 使其能够在非 Apple 硬件上被虚拟化,而且 Apple 也没有为其自身平台准备好一款企业级就绪的虚拟化产品。虚拟化 Mac OSX 的唯一途径,是为每一个操作系统实例购买完整的额外许可证,从而消除了这一方法的大部分成本益处,并且要在像 VMWare Fusion 或 Parallels 这样的基于宿主的虚拟化产品上运行它——而这些产品是为在桌面之上使用而设计的,并非服务器级产品。这是 Mac OSX 产品组合中的一个重大缺口,也是 Apple 在能力上、以及在对其商业客户需求的理解上,持续落后于市场其余者的方式之一。倘若 Apple 改变其围绕虚拟化的授权策略,Mac OSX 无论从服务器还是桌面的角度来看,都将证明自己是一款极受欢迎且十分有用的、值得虚拟化的操作系统。
虚拟化是一个绝佳的机会,能够为任何规模的企业降低成本、提升生产力,同时降低风险,而所需预算可以低至零。许多技术承诺为企业带来重要的改进,但大多数在带来实实在在成本的同时,所创造的价值却存疑。虚拟化带来的是实实在在、可衡量的价值,同时往往毫无花费,并且常常能立即削减开支。对许多企业而言,虚拟化正是它们一直梦寐以求的那项技术,而事实上,它如今已触手可及。
