到底哪种模式最好?
虚拟化如今已经成为一个被过分夸大的流行语。
在大型机领域,它已经是一张盘桓了数年的老面孔。它的主要功绩在于将原本只为大型科技服务的概念移植到了x86机之中,并让人民大众从中得到帮助。
虚拟化这种一方面简单明了、另一方面却实施模型有限的技术一旦爆发,可以想象其影响力之巨大。如今每一个我们能想象的地方都有它的身影,即使是在智能手机中也不例外。
新功能完全没有为极力避免使用虚拟化的不同意见者提供任何帮助。有些人认为这一选择值得大力推广,另一些则宣称使用所涉及的技术是“唯一正确的发展方向”。
直接连接型虚拟化与分布式模式,二者的冲突给意识形态带来了新的战场。
直接连接型虚拟化比较简单,说起来也就是一台服务器,配备着托管数套虚拟机的本地存储。它们利用由管理程序提供的虚拟交换机(即vSwitch)进行互相通信,而无需将数据包经过网络接口卡(简称网卡)发送至网络的每个角度。
讨论环节
通常情况下,托管在直接连接方案中的虚拟机能够与处于主机系统之外的服务器及客户机进行沟通,但大部分交流仍然发生在同一套系统中的虚拟机之间。
分布式虚拟化则完全不同。主机服务器被尽可能当作一套彻头彻尾的一次性处理单元。存储资源采用集中式管理方案,并通过存储区域网络(简称SAN)中虚拟机与物理交换机之间的通信被提供给多台主机。
不过每种模式都有各种的局限性。
直接连接式虚拟化速度更快。每块10Gb 网卡(目前SAN的标准接口)在理论上可以提供最大1280兆字节每秒(MBps)的传输速度。而目前相当普遍的PCIe 8x 2.0 RAID卡理论上的传输速度更高达4000MBps。
不过一用在实际工作中数字就没那么乐观了。我在10Gb网络附加存储系统上所能得到的上限速度仅为900MBps,而我自己的RAID卡(SSD RAID 10)也只能带来2200MBps的实际表现。不过2200MBps已经足以将900MBps碾压到不成人形,并且这样的存储速度优势已经极具价值,而且请记住,这种优势是直接连接模式所提供的。
网上有这样一个类似的故事。某款管理程序的虚拟交换机为每台虚拟机提供了一块10Gb的虚拟网卡。这使得处于同一台主机内的每套本地虚拟机系统以10Gb的理论数值进行通信;如果如果大家愿意为某台指定的虚拟机搭配多套虚拟网卡,那么速度还将进一步提升。
困境
当将分布式的非主机设备引入余下的网络中时,这些虚拟机就要为争夺硬件所提供的有限带宽资源而奋战。如果我们有三十套虚拟机系统,那么为它们各自配备10Gb带宽,与只拿出一块10Gb带宽的网卡让它们共同使用、而由物理交换机负责网络处理是完全不同的感觉。
如果仅从目前提出的数字出发,那么分布式虚拟化看起来简直就是疯狂而不可理喻的。但它仍然具备独特的优势,而对于许多而言,一切缺点在这优势面前都可以算是必要的成本。
直接连接式虚拟化所无法实现的就是从一台主机上的虚拟机中迅速迁移至另一台。虚拟机本身可能就体积庞大,因此通过网络实施迁移无疑会耗费大量时间。
但这对分布式虚拟化所采用的集中式存储模式来说就不叫个事儿。不仅如此,分布式虚拟化还允许我们对不同主机上处于运行状态的虚拟机系统进行实时迁移。
高度的可用性是分布式虚拟化的另一大重要卖点。
直接连接式虚拟化依靠强劲且具备高度容错性的虚拟主机来实现优秀的可用性。分布式虚拟化则会在一台主机出现故障并重启时,将所有虚拟机在集群中的其它主机上加以运行。大家使用的主机越多,分布式模式的优势就越明显。
信息直观性
分布式虚拟化的另一大优势是,尽管在传输速度上有所限制,但强制将所有流量通过物理交换机处理使得网络管理员具备更强的直观性及可管理性。
企业级网络通过工具运行网络设备,进而直接为每一个端口提供终端到终端的管理。它们可以为链接、流量隔离、监控、服务质量以及标记框等功能提供加密机制。
而一旦采用虚拟交换机,这些好处就荡然无存了。虚拟交换机所使用的管理语言与物理网络设备完全不同。比起后者拥有的对网络中每个系统中任何数据包的控制能力,使用虚拟交换机使我们管理的目标被限定在了主机服务器上。
设计概念
说到这里,这两款模式可谓不分伯仲。大家可以根据自己的需要选择合适的模式并加以部署,但这似乎还不能完全令人满意。而在伟大的IT传统观念中,也根本没有不可能一词,基于创新的思维方式,混合虚拟化模式开始出现。
新一代网卡已经开始模糊二者之间的界线,而其中至关重要的一环是类似802.1Qbg的尖端标准。这一标准也被称为边缘虚拟格拉或者虚拟以太网端口聚合(简称VEPA)。
VEPA网卡自身所具备的能力足以被称为交换机。在使用中,主机上的虚拟机绕过虚拟交换机,直接与网卡中集成的交换机对话。而网卡则能够与管理软件直接对话,这样一来我们就既拥有了分布式网络带来的种种优势,又不必担心由于所有虚拟机流量都被发往物理交换机而引起传输速度瓶颈。
与VEPA展开激烈竞争的机制是802.1Qbh,也被称为桥口扩展或者VN标签。它几乎完全是由思科公司一手打造,并需要对当前以太网规范加以延伸;换言之,我们需要为之采用很多新的硬件。
这与VEPA形成了鲜明的对比,因为VEPA并不需要我们为之更新网络设备,也同样提供了一套虚拟环境中的终端管理可行方案。
在同一台主机上通过差异化配置来实现同时使用直接连接式存储与分布式存储的作法也开始出现。我最近就完成了一套部署,其中每台主机都拥有大量本地存储以辅助备份工作。
每台主机都拥有一套虚拟备份设备(简称VBA),其作用是为分配给该主机的虚拟机进行基于镜像的备份,并将镜像存储于本地缓冲驱动器中。这使得备份速度变得飞快。
中央VBA会从每台主机上读取备份内容,并不断将其转写至磁带上。磁带驱动器是被直接从主机映射到VBA上的,而不是作为从网络接入的设备。
这种混合式处理方案尚未见诸白皮书,但其产生无疑与对当前设备高效利用的诉求息息相关。它的工作状态相当令人赞赏,只要再稍加改进,我一定会在未来的部署工作中再次加以使用。
进步无止境
新技术组合的不断引入使得任何一套虚拟化模式都无法长久保持不变。目前最新的上佳方案是IOMMU,它承诺为单独的虚拟机系统提供直接访问系统设备(例如显卡)的能力。
虚拟机将有能力充分发挥GPGPU计算带来的强大性能,而处理速度的提升也会要求数据输入量达到光线通道传输能力的级别,这是分布式技术所无法满足的。
硬件容错能力的提高使单台主机方案更具可靠性,而新的网络技术则将带宽扩大至40Gb、100Gb甚至更高。
到这里我们又说回起点。虚拟化始于大型机,而虚拟化又推动了x86在采纳新技术的道路上渐行渐远,这使得台式机与大型机的运作方式越来越接近。
抛开相似之处不谈,大型机与x86虚拟主机集群之间仍然存在着本质性差异。
大型机的设计初衷是作为一套单独的运行实体。机架挨着机架、节点毗邻节点,从操作系统到个别节点连接绑定,一切都将大型机作为一台单独的巨型计算设备处理,最后对整体资源进行分割,进而分配给每个任务。
x86虚拟集群则迥异于大型机。无论是直接连接式、分布式还是混合式,每个处理节点都是特色鲜明的独立单位。每节点都必须进行配置、授权、加以独立设计并考虑个体与整体间的协调。
大型机成本高昂,我们为之定制的软件在设计上也要求高质量,以配合系统的高性能。X86虚拟集群则是多套低廉系统的集合,使用现有软件即可满足需求。
大型机适用于那些运营着金融系统的客户,对于他们而言数毫秒的延迟都可能带来数百万美元的损失。如果我们的应用程序能够将工作量拆分为一个个小的组成部分,那么大型机的并行处理能力将带来耀眼的强劲表现。
x86虚拟化从另一个角度来看类似于组装机。
数十年来,我们始终以单线程为核心开发并使用软件,对环保意识也不够重视,此外同一系统上的不同程序在运行时需要彼此隔离。改变这一切的方式就是发展x86虚拟化。
x86虚拟化模式无疑将继续前进,而这种趋势也必将适应x86应用程序自身的多样性。
如今不少方案都能帮我们高效地完成大量计算任务。大家既可以采购一台大型机,也可以将带有必要应用程序的多套x86系统安装在裸机上。
我们完全可以大胆迈入x86虚拟化领域,并探索它所能带来的无数种可能性。我们甚至可以根据自己的意愿用数千台手机搭建一个难用无比的Beowulf集群。
当下,在完成工作的道路上再也没有所谓“惟一正确的途径”。我们软件的需求以及硬件所能提供的性能将最终决定实现目标的路线。
转载请注明:IT运维空间 » 运维技术 » 如何为服务器虚拟化挑选合适的模式
发表评论