到底哪种模式最好?
虚拟化如今已经成为一个被过分夸大的流行语。
在大型机领域,它已经是一张盘桓了数年的老面孔。它的主要功绩在于将原本只为大型科技服务的概念移植到了x86机之中,并让人民大众从中得到帮助。
虚拟化这种一方面简单明了、另一方面却实施模型有限的技术一旦爆发,可以想象其影响力之巨大。如今每一个我们能想象的地方都有它的身影,即使是在智能手机中也不例外。
新功能完全没有为极力避免使用虚拟化的不同意见者提供任何帮助。有些人认为这一选择值得大力推广,另一些则宣称使用所涉及的技术是“唯一正确的发展方向”。
直接连接型虚拟化与分布式模式,二者的冲突给意识形态带来了新的战场。
直接连接型虚拟化比较简单,说起来也就是一台服务器,配备着托管数套虚拟机的本地存储。它们利用由管理程序提供的虚拟交换机(即vSwitch)进行互相通信,而无需将数据包经过网络接口卡(简称网卡)发送至网络的每个角度。
讨论环节
通常情况下,托管在直接连接方案中的虚拟机能够与处于主机系统之外的服务器及客户机进行沟通,但大部分交流仍然发生在同一套系统中的虚拟机之间。
分布式虚拟化则完全不同。主机服务器被尽可能当作一套彻头彻尾的一次性处理单元。存储资源采用集中式管理方案,并通过存储区域网络(简称SAN)中虚拟机与物理交换机之间的通信被提供给多台主机。
不过每种模式都有各种的局限性。
直接连接式虚拟化速度更快。每块10Gb网卡(目前SAN的标准接口)在理论上可以提供最大1280兆字节每秒(MBps)的传输速度。而目前相当普遍的PCIe8x2.0RAID卡理论上的传输速度更高达4000MBps.
不过一用在实际工作中数字就没那么乐观了。我在10Gb网络附加存储系统上所能得到的上限速度仅为900MBps,而我自己的RAID卡(SSDRAID10)也只能带来2200MBps的实际表现。不过2200MBps已经足以将900MBps碾压到不成人形,并且这样的存储速度优势已经极具价值,而且请记住,这种优势是直接连接模式所提供的。
网上有这样一个类似的故事。某款管理程序的虚拟交换机为每台虚拟机提供了一块10Gb的虚拟网卡。这使得处于同一台主机内的每套本地虚拟机系统以10Gb的理论数值进行通信;如果如果大家愿意为某台指定的虚拟机搭配多套虚拟网卡,那么速度还将进一步提升。
困境
当将分布式的非主机设备引入余下的网络中时,这些虚拟机就要为争夺硬件所提供的有限带宽资源而奋战。如果我们有三十套虚拟机系统,那么为它们各自配备10Gb带宽,与只拿出一块10Gb带宽的网卡让它们共同使用、而由物理交换机负责网络处理是完全不同的感觉。
如果仅从目前提出的数字出发,那么分布式虚拟化看起来简直就是疯狂而不可理喻的。但它仍然具备独特的优势,而对于许多而言,一切缺点在这优势面前都可以算是必要的成本。
直接连接式虚拟化所无法实现的就是从一台主机上的虚拟机中迅速迁移至另一台。虚拟机本身可能就体积庞大,因此通过网络实施迁移无疑会耗费大量时间。
但这对分布式虚拟化所采用的集中式存储模式来说就不叫个事儿。不仅如此,分布式虚拟化还允许我们对不同主机上处于运行状态的虚拟机系统进行实时迁移。
高度的可用性是分布式虚拟化的另一大重要卖点。
直接连接式虚拟化依靠强劲且具备高度容错性的虚拟主机来实现优秀的可用性。分布式虚拟化则会在一台主机出现故障并重启时,将所有虚拟机在集群中的其它主机上加以运行。大家使用的主机越多,分布式模式的优势就越明显。
信息直观性
分布式虚拟化的另一大优势是,尽管在传输速度上有所限制,但强制将所有流量通过物理交换机处理使得网络管理员具备更强的直观性及可管理性。
企业级网络通过工具运行网络设备,进而直接为每一个端口提供终端到终端的管理。它们可以为链接、流量隔离、监控、服务质量以及标记框等功能提供加密机制。
而一旦采用虚拟交换机,这些好处就荡然无存了。虚拟交换机所使用的管理语言与物理网络设备完全不同。比起后者拥有的对网络中每个系统中任何数据包的控制能力,使用虚拟交换机使我们管理的目标被限定在了主机服务器上。