存储网络中的虚拟I/O技术

当下,数据中心的全面虚拟化成为一种趋势,无论是存储网络还是IP网络,其发展目标都必须适应这一潮流,因此虚拟I/O(Virtual I/O)技术便有了广阔的应用前景。如果我们希望在服务器虚拟化和桌面虚拟化应用场景中,创建一个更高效且更经济的存储基础架构,并满足虚拟化应用的I/O请求特点的话,虚拟I/O是必不可少的核心技术。虚拟I/O是一种网络连接技术,既可以用在主机端,也可以在存储网络端实现,当然这两种模式还可以一起使用,贯穿整个基础架构环境。在不同的应用模式之间虚拟I/O的定义会稍有差异。下文中我们会就此展开分析,看看这两种模式之间的差异以及它们二者是如何协同工作的。

今天,服务器(主机)所使用的处理器与4、5年前截然不同。过去,一台服务器上只需要运行一个应用程序,因此这台服务器上所有的I/O处理能力可以被单个应用程序所独享。但今天,在虚拟化的数据中心里,主机上的网卡和HBA卡是被多个虚拟机所共享的。在传统的服务器平台体系结构中,网卡和HBA卡这两种I/O适配器是相互独立的,但现在,伴随着iSCSI、NAS和FCoE等技术的发展,网卡和HBA卡有逐渐统一的趋势,或者叫融合。未来的趋势很明显,主机上将只有一种物理I/O端口,所有的协议都通过它来进行通信。

混合I/O时代已经来临

在虚拟化和网络融合的环境中,虚拟机之间要竞争I/O资源,I/O适配器也必须处理多种类型的网络I/O流量和存储I/O流量。问题看起来很好解决,我们只需要配置高性能、高带宽的10 Gbps以太网卡、10 Gbps FCoE卡、以及8 Gbps或16 Gbps的光纤通道卡,就能让主机端更好地处理虚拟机的I/O请求。但事实上更大的挑战在于,如何确保主机能够将合适的带宽资源在合适的时间分配给需要它的虚拟机。

服务器虚拟化应用如今已发展到第三个阶段。在最初的时期,通常只有测试和开发系统才使用虚拟机;后来,人们开始在虚拟机上部署一些优先级较低的系统和负载较轻的应用。因此在前两个阶段,通过简单的轮询、将I/O资源平均分配给每个虚拟机的机制是可行的。但进入到第三阶段,当关键应用和复杂应用开始部署到服务器虚拟化平台之后,如何将合适的带宽资源在合适的时间分配给需要它的虚拟机就显得越发重要。

当那些关键的以及对性能有较高要求的应用系统虚拟化之后,I/O资源就不能再简单的共享,并在虚拟机之间平均分配了。某些虚拟机需要更高的服务级别保证,需要独享固定的带宽。另一方面,轮询机制会造成频繁的系统中断,对CPU的利用率产生负面影响。因此,确保I/O请求的及时响应,已成为重要应用程序能否成功迁移到虚拟化环境的关键因素。

有一个方法可以让关键业务拥有充足的I/O资源,即为每个虚拟机都配置一个网卡或HBA卡,并将运行关键业务的虚拟机与该接口卡绑定。这样工作是没问题,但这种方法既不经济,可能也没有足够的物理空间,而且,如果采用这个方案,那么每台主机上运行的虚拟机的数量也会受到限制。

另一个可用的方案是为主机准备足够的,甚至是超出需求的可用存储和网络带宽,以便主机能够有充足的I/O资源处理请求,并满足其上运行的每个虚拟机的性能要求。但这种方法也不是非常划算,因为大部分虚拟机并非每时每刻都需要较高I/O性能。此外,Hypervisor通常使用循环的排队策略来分配共享的可用的带宽,因此这种方法也需要频繁的系统中断操作,效率方面也有损失。

基于网络适配器的虚拟I/O技术

网络适配器层的I/O虚拟化技术主要由Brocade、Emulex和QLogic等几家公司提供,他们都可以提供支持虚拟I/O功能的高速网络适配器产品。虽然这种适配器仍然要被多个虚拟机所共享,但它仍然能够保证运行关键业务的虚拟机有较高的服务级别。比如说,一个支持虚拟I/O功能的10GigE物理网络适配器既可以划分成多个虚拟网络适配器,也可以为指定的虚拟机群组按百分比分配固定的带宽。

在以上场景中,单块10 GigE的物理网卡可以分成10个1GigE的虚拟网卡并灵活使用。比如,一个虚拟网卡专门用于虚拟机的迁移;另外几个指定分配给那些特殊的虚拟机,以便保证关键应用的性能水平;而其余的虚拟网卡则纳入资源池,供其它的虚拟机共享使用。

因为所有的I/O虚拟化工作都由硬件适配器处理,因此主机端hypervisor虚拟化管理软件层的负担相当小,主机可以回收大量的CPU资源。换句话说,CPU的内核不需要为管理I/O共享而进行频繁的中断操作。这种虚拟I/O技术,不仅自身可以支持更大密度的虚拟机数量,而节约的CPU处理能力也可以用来运行更多的虚拟机。

基于网络适配器的虚拟I/O技术的另一个特性是可以在网卡上创建一个虚拟交换机。这个技术非常有价值,尤其是在服务器虚拟化环境中,它可以极大地降低出入服务器的网络流量。利用这个功能,同一台主机上的两个虚拟机可以直接相互通讯(这种情况很常见)。以往,这种流量都需要经过外部的物理交换机处理。现在,虚拟交换机可以识别本地流量,并将这些流量限制在物理主机的内部。这个功能不但可以为主机内部的虚拟机提升性能,而且还可以提高整个网络环境的效率。

最后要说的是,那些支持I/O虚拟化的网络适配器还可以虚拟所用存储协议的类型。例如,有些卡同时支持FC、FCoE、10Gbps以太网和iSCSI协议,那么用户就能够在不中断服务器或虚拟机运行的前提下随时变更端口的用途。今天,有些适配器还需要reboot才能变更配置,不过这种情况未来肯定会得到改变。

基于(网络)设施的虚拟I/O技术

在基础网络架构层同样可以实现I/O虚拟化。基于网络设施的虚拟化既可以单独使用,也可以与支持虚拟化的网络适配器协同工作。在基础网络设施层,I/O的虚拟化有两种实现方式。第一种是交换机自身支持虚拟化,本质上是主机适配器端虚拟I/O功能的延伸与扩展;另一种则以网关设备的形式出现,它需要在主机端与网关之间构建出一个私有的I/O通道网络,能够实现更广泛的I/O虚拟化功能,所以它通常也叫I/O网关。

基于交换机的虚拟I/O.由于能够控制并分配网络带宽,主机内部的虚拟I/O网络适配器无疑具有相当重要的价值。但是,如果另一端的交换机设备不知道如何管理它的话,那么其中很多优化功能将无法发挥作用。因此,像Brocade和Cisco等公司都推出了支持虚拟I/O的交换机产品,能够在网络层的各个方面确保虚拟机的性能保持在所需的水平。通过这些交换机,用户可以识别虚拟机并且设置一定的策略,包括那些与性能相关的参数,比如设置QoS的低/中/高,或者调整总体可用带宽的百分比。

只不过,虚拟I/O的管理策略不仅仅涉及性能部分,还可以针对每个虚拟机甚至是每个物理端口设置安全部分和其他参数。在服务器虚拟化应用环境里,当一个虚拟机从一台主机迁移到另一台主机时,这些网络设置也能够同虚拟机一起迁移。

让人兴奋的是,一些厂商开发的虚拟I/O解决方案支持交换机端与网络适配器端相互通讯,那些在网络适配器层设置的策略就可以在主机和交换机之间移动,甚至可达网络设施的任何层面。如果没有这些通讯机制,那么针对虚拟机的虚拟I/O设置将无法随虚拟机一同迁移。(比如在某主机上针对某个虚拟机,我们将可用网络I/O带宽的25%分配给其专用,但当该虚拟机从本机迁移到另一台主机之后,以上配置将丢失)。交换机层的虚拟I/O技术能够支持这类配置随虚拟机一起在虚拟化环境中任意迁移。

像服务器虚拟化一样,有些交换机产品甚至可以实现交换机虚拟化。在这样的场景中,网络中的多个独立的交换机看起来就好像一台大的交换机,因为用户可以在一点登录并实施管理,而不需要登录到每一台独立的交换机, 所以执行系统配置和策略管理都更加简单。交换机虚拟化还可以提供更好的网络可用性,即使其中一台交换机发生故障,整个网络环境依然可用。

虚拟I/O网关。业内提供虚拟I/O网关设备的公司包括Xsigo System公司以及Virtensys公司(Virtensys近期被Micron Technology公司收购)。虚拟I/O网关设备是一种类似于交换机的装置,里面安装了存储接口卡和网络接口卡,该装置(及其上的I/O卡)可以被网络中多台服务器所共享。如果使用了虚拟I/O网关,那么多台服务器之间的通讯就锁定在一个由网关构建的私有的平面网络体系之内。从某种程度上说,我们可以把虚拟I/O网关设备看成是服务器总线向外的扩展,I/O网关相当于服务器外部的PCI Express总线插槽,只不过这个扩展的总线是被多个主机所共享的。

用户需要在服务器端安装一个专用接口卡,用于与I/O网关互联。有些厂商用的是PCIe总线扩展卡,但大部分厂商选择使用Infiniband适配器或10Gbps以太网适配器。无论在服务器上安装什么卡,其目的都是为了以相对较低的成本获得最高的性能,以便实现PCI总线的对外扩展。

虚拟I/O网关与支持虚拟I/O的网络适配器之间最主要的差别在于,多个服务器可以共享一块安装在虚拟I/O网关上的接口卡。从这个意义上来说,虚拟I/O网关在连接的灵活性以及资源优化方面具有比较明显的优势。

服务器上究竟要插哪种接口卡(连到I/O网关),这取决于厂商的技术,既可以是定制的专用卡,也可以是现成的PCIe接口卡。通常,基于专用卡(的网关)具有更好的多主机共享能力。而基于现成PCI卡的网关则可以提供更多的灵活性,不过受限于今天所能采用的PCI卡的类型,其共享能力会受到一定的限制。

虚拟I/O网关的另一个好处是在未来升级时可以保护现有投资。因为接口卡和软件驱动都由I/O网关厂商提供,所以实现不同网络和存储协议之间的转换是很容易的事情。

举个例子,如果当前存储系统与服务器之间的连接通过光纤通道,那么当增加一个新的iSCSI存储之后,主机端就需要换掉原来的光纤通道接口卡,或者在原有通道卡之外再增加以太网卡(除非服务器上已经使用了前文提到的支持虚拟I/O的网络适配器)。而如果使用虚拟I/O网关方案,那么服务器上的接口卡可以保持不变,只需要在网关设备上安装一块共享的iSCSI卡即可。所以说,主机端只需要一块卡就能实现光纤通道和iSCSI两种连接功能。主机端唯一需要做的变化是软件配置的升级,而任何一台主机的物理配置都可以保持不动。这种方式不仅为网络类型和协议的变更提供了最大的灵活性,而且因配置变更导致的服务器本身的宕机时间也更少。

虚拟I/O技术的选择策略

用户究竟应该选择哪种虚拟I/O策略用于他们的数据中心,很大程度上取决于用户眼前的需求以及长期的业务目标。比方说,如果用户把提高主机端存储和网络I/O的性能作为首要改造目标的话,那么最佳方案是直接购买支持I/O虚拟化的网络接口卡,而不是购买普通的(没有I/O虚拟化功能)10GigE网卡。这个方案能够帮助用户更有效地利用万兆网络的带宽,并且保证其中关键业务的优先服务水平。

如果用户正在更新或者扩展他们的网络和存储基础设施,那么增加一些I/O虚拟化组件是很值得考虑的事情。交换机层的虚拟I/O技术可以逐步升级,并且作为(支持虚拟I/O的)网络接口卡方案的完美补充。

当企业中已有设施面临升级时,利用虚拟I/O网关构建私有的I/O平面网络的方案也是值得考虑的。因为它可以有效的改进性能并且获得更大的灵活性。在日新月异的I/O技术市场中,网关类产品具有更好的投资保护性。

总之,不论我们选择哪种虚拟I/O方案,都可以明显改进现有基础设施的灵活性,获得一个动态性更强的架构,从而让我们的服务器基础架构能够适应不断变化的应用需求。本文提及的三种方案都具有较好的投资收益、也能够保证关键应用优先获得资源以维持高性能,更可贵的是,对于服务器虚拟化项目来说,它们都可以帮助用户获得更多的投资回报(ROI)。

相关链接一:I/O虚拟化的三种主流方案

不论哪种I/O虚拟化解决方案,其最终的目标都是一个:即解决服务器虚拟化环境中网络资源竞争问题,减少主机和存储之间的访问瓶颈。这里我们罗列了三种常见的虚拟I/O解决方案:

 基于网络适配器的虚拟I/O技术

 基于存储网络交换机的虚拟I/O技术

 基于I/O网关设备的虚拟I/O技术

相关链接二:I/O虚拟化常见术语

我们列出那些与I/O虚拟化相关的常见关键术语:

 Converged Network Adapter (CNA,融合网络适配器),融合网络适配器同时兼有以太网卡和光纤通道HBA卡的功能。

Fibre Channel over Ethernet (FCoE),是一种新的存储协议,其本质是利用以太网来承载光纤通道协议。

Network Interface Card Partitioning (NPAR),是一种由QLogic公司开发的高效分区技术,可以将一个物理网卡切成几个分区(相当于虚拟出多个网卡),以便分配给多个虚拟机使用。

PCI-SIG I/O Virtualization (IOV),是PCI组织旗下的一个特别兴趣小组,主要工作是开发基于PCI-E的共享设备技术规范。

Single Root I/O Virtualization (SR-IOV),是一种由PCI-SIG(PCI组织特别兴趣小组)提出的,关于单台主机内部使用共享虚拟化PCI设备的技术规范。

Multi-Root IOV (MR-IOV),是一种由PCI-SIG(PCI组织特别兴趣小组)提出的,关于跨多台主机(比如在一个刀片机箱中的多台刀片服务器)使用共享虚拟化PCI设备的技术规范。

相关新闻