當下,數據中心的全面虛擬化成為一種趨勢,無論是存儲網絡還是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技術的另一個特性是可以在網卡上創建一個虛擬交換機。這個技術非常有價值,尤其是在服務器虛擬化環境中,它可以極大地降低出入服務器的網絡流量。利用這個功能,同一臺主機上的兩個虛擬機可以直接相互通訊(這種情況很常見)。以往,這種流量都需要經過外部的物理交換機處理?,F在,虛擬交換機可以識別本地流量,并將這些流量限制在物理主機的內部。這個功能不但可以為主機內部的虛擬機提升性能,而且還可以提高整個網絡環境的效率。
最后要說的是,那些支持I/O虛擬化的網絡適配器還可以虛擬所用存儲協議的類型。例如,有些卡同時支持FC、FCoE、10Gbps以太網和iSCSI協議,那么用戶就能夠在不中斷服務器或虛擬機運行的前提下隨時變更端口的用途。今天,有些適配器還需要reboot才能變更配置,不過這種情況未來肯定會得到改變。