硬件虚拟化的魅力
Farbic7是如何实现资源的整合以及应用的整合和划分的呢?
我们以Fabric7 的产品Q160为例进行分析,图4是Q160的产品图片。
![]() |
图4 Q160产品照片
从图上可以看出,其产品架构类似于ATCA架构下的刀片服务器,采用这种架构更容易实现硬件的动态划分和基于硬件的虚拟化。在模块组成上,Fabric7同样采用了类似刀片服务器的模块结构,即应用服务CPU模块,CPU和内存系统模块,IO扩展模块,以太网络模块,系统管理模块,还有其他机箱,电源,风扇等部件。系统支持多个CPU模块,多个IO模块,最大支持16颗CPU,112个虚拟IO口。
每个应用服务CPU模块拥有两个或者4个CPU插槽,与应用服务CPU模块相对应,Fabric7 设计的Q-Par软件能够进行相应的最小两CPU粒度的划分。硬件资源的重新划分是主要基于AMD芯片内置的HyperTransport技术。模块上使用内存支持1GB,2GB和4Gb的DIMM,整个服务器采用一个拥有两个AMD处理器模块当作网络加速器,来处理TCP/IP, SSL, XML及SLB加速。系统控制器同样使用一个Opteron处理器来运行Q-Par和用于资源管理的Q-Visor软件,它同时还拥有一枚用于诊断错误ARM处理器。
在常规应用中,服务器系统面对着大量的网络接口,分别被用于数据的存储或服务器间的通讯,以及一些相关的应用程序,比如负载平衡。大量的网络接口增加了系统的复杂性和使用成本。Fabric7 使用了虚拟技术来解决这些问题,不仅是计算资源,存储资源和网络资源同样要被包含在这个虚拟系统中。
针对以上应用,Vmware, Virtual Server 和 Xen等基于软件虚拟化技术推出一些解决方案,但这样降低系统的性能, 在偏重计算的系统中这还是可以接受的,而在强调I/O性能的系统中是难以接受的,性能的降低是因为他们都需要在软件中模拟I/O接口。而采用基于硬件虚拟Fabric7服务器则可以很好的解决这样性能降低问题,下面我们就来分析一下如何实现硬件的虚拟化和IO性能提升。
![]() |
图5 Fabric7 服务器应用架构
上图是Fabric7 服务器的应用架构,其中四种基本的资源——计算,网络,以太网和光纤,是由一个高速开关联接。正是通过这个高性能的开关,使用者可以快速的改变服务器的设置,这些外部设备实现了即插即用。这是一个32*32的开关电路,提供128 Gbps的带宽,平均的来看每个联接拥有128/32=4 Gbps 的带宽。事实上每对处理器拥有最大10 Gbps的I/O带宽,而一个16路的系统拥有最大40Gbps 的服务器I/O带宽,即使对于将来的4核处理器来说,这也足够了。
例如一台典型的应用在数据中心的服务器拥有四个Gbps接口,两个用于数据传输,一个用于服务器管理,另一个用于数据的跟踪和发生错误后的恢复。此外还有两条2Gbps的光纤接口连接存储网络。 在一般情况下,整个带宽的利用率不足10%。人们很自然的想到,能不能把光纤内部分成几个频道用于不同的用途,这样就可以提高带宽利用率了。在以前这是只有大型计算机里才有的技术, 现在Fabric7第一次把这种技术引入到使用标准设备的服务器中。每台服务器可以提供多达112个虚拟I/O接口,每个接口都可由使用者来设置为以太网或光纤接口,每个接口的带宽可以在100Mbps到10Gbps的范围内设定,(可以联想一下上面给出的数据,每对处理器拥有最高10Gbps的I/O带宽)而且接口和带宽可以在服务器的运行中动态的添加。
这就是我们在前面提到的基于硬件的虚拟技术,它的性能很明显的会好于实用软件模拟的技术。在这里我们不得不对这个32*32的开关电路的性能表现出惊讶。这个高速切换电路基于IBM Prizma芯片组,IBM在九十年代后期开发成功的。
由于采用高性能的I/O开关,Fabric7服务器拥有了大带宽和低延迟的连接,在同构的服务器之间延迟小于五微秒,对异构服务器不高于20微秒。因为Fabric7的服务器可以灵活的划分成不同的硬件结构,这里的同构和异构就是指的它们硬件的划分。即不仅可以把整个系统划分为一个SMP架构的服务器,也可以把整个服务器划分成多个独立的SMP服务器。拥有了这样一个高速的网络,Fabric7的用户自然可以相应的减少一些执行专门任务的服务器,(比如负载均衡和加密)因为通过共享,少量的服务器既可满足要求。
现在我们会明白Fabric7的思路,把可以灵活划分的硬件资源用一个高速的接口连接起来。整个系统的灵活性大大加强,资源的利用率也大大的提高了。那么怎么让用户最大程度上感受到这种灵活性呢,Fabric7提供了对整个资源的管理软件(Q-Visor),它提供一个包含所有资源的界面,这样用户就可以方便的是用自己的服务器了。
