當(dāng)下,數(shù)據(jù)中心的全面虛擬主機(jī)化成為一種趨勢(shì),無(wú)論是存儲(chǔ)網(wǎng)絡(luò)還是IP網(wǎng)絡(luò),其發(fā)展目標(biāo)都必須適應(yīng)這一潮流,因此虛擬主機(jī)I/O(Virtual I/O)技術(shù)便有了廣闊的應(yīng)用前景。如果我們希望在服務(wù)器虛擬主機(jī)化和桌面虛擬主機(jī)化應(yīng)用場(chǎng)景中,創(chuàng)建一個(gè)更高效且更經(jīng)濟(jì)的存儲(chǔ)基礎(chǔ)架構(gòu),并滿足虛擬主機(jī)化應(yīng)用的I/O請(qǐng)求特點(diǎn)的話,虛擬主機(jī)I/O是必不可少的核心技術(shù)。虛擬主機(jī)I/O是一種網(wǎng)絡(luò)連接技術(shù),既可以用在主機(jī)端,也可以在存儲(chǔ)網(wǎng)絡(luò)端實(shí)現(xiàn),當(dāng)然這兩種模式還可以一起使用,貫穿整個(gè)基礎(chǔ)架構(gòu)環(huán)境。在不同的應(yīng)用模式之間虛擬主機(jī)I/O的定義會(huì)稍有差異。下文中我們會(huì)就此展開(kāi)分析,看看這兩種模式之間的差異以及它們二者是如何協(xié)同工作的。
今天,服務(wù)器(主機(jī))所使用的處理器與4、5年前截然不同。過(guò)去,一臺(tái)服務(wù)器上只需要運(yùn)行一個(gè)應(yīng)用程序,因此這臺(tái)服務(wù)器上所有的I/O處理能力可以被單個(gè)應(yīng)用程序所獨(dú)享。但今天,在虛擬主機(jī)化的數(shù)據(jù)中心里,主機(jī)上的網(wǎng)卡和HBA卡是被多個(gè)虛擬主機(jī)機(jī)所共享的。在傳統(tǒng)的服務(wù)器平臺(tái)體系結(jié)構(gòu)中,網(wǎng)卡和HBA卡這兩種I/O適配器是相互獨(dú)立的,但現(xiàn)在,伴隨著iSCSI、NAS和FCoE等技術(shù)的發(fā)展,網(wǎng)卡和HBA卡有逐漸統(tǒng)一的趨勢(shì),或者叫融合。未來(lái)的趨勢(shì)很明顯,主機(jī)上將只有一種物理I/O端口,所有的協(xié)議都通過(guò)它來(lái)進(jìn)行通信。
混合I/O時(shí)代已經(jīng)來(lái)臨
在虛擬主機(jī)化和網(wǎng)絡(luò)融合的環(huán)境中,虛擬主機(jī)機(jī)之間要競(jìng)爭(zhēng)I/O資源,I/O適配器也必須處理多種類型的網(wǎng)絡(luò)I/O流量和存儲(chǔ)I/O流量。問(wèn)題看起來(lái)很好解決,我們只需要配置高性能、高帶寬的10 Gbps以太網(wǎng)卡、10 Gbps FCoE卡、以及8 Gbps或16 Gbps的光纖通道卡,就能讓主機(jī)端更好地處理虛擬主機(jī)機(jī)的I/O請(qǐng)求。但事實(shí)上更大的挑戰(zhàn)在于,如何確保主機(jī)能夠?qū)⒑线m的帶寬資源在合適的時(shí)間分配給需要它的虛擬主機(jī)機(jī)。
服務(wù)器虛擬主機(jī)化應(yīng)用如今已發(fā)展到第三個(gè)階段。在最初的時(shí)期,通常只有測(cè)試和開(kāi)發(fā)系統(tǒng)才使用虛擬主機(jī)機(jī);后來(lái),人們開(kāi)始在虛擬主機(jī)機(jī)上部署一些優(yōu)先級(jí)較低的系統(tǒng)和負(fù)載較輕的應(yīng)用。因此在前兩個(gè)階段,通過(guò)簡(jiǎn)單的輪詢、將I/O資源平均分配給每個(gè)虛擬主機(jī)機(jī)的機(jī)制是可行的。但進(jìn)入到第三階段,當(dāng)關(guān)鍵應(yīng)用和復(fù)雜應(yīng)用開(kāi)始部署到服務(wù)器虛擬主機(jī)化平臺(tái)之后,如何將合適的帶寬資源在合適的時(shí)間分配給需要它的虛擬主機(jī)機(jī)就顯得越發(fā)重要。
當(dāng)那些關(guān)鍵的以及對(duì)性能有較高要求的應(yīng)用系統(tǒng)虛擬主機(jī)化之后,I/O資源就不能再簡(jiǎn)單的共享,并在虛擬主機(jī)機(jī)之間平均分配了。某些虛擬主機(jī)機(jī)需要更高的服務(wù)級(jí)別保證,需要獨(dú)享固定的帶寬。另一方面,輪詢機(jī)制會(huì)造成頻繁的系統(tǒng)中斷,對(duì)CPU的利用率產(chǎn)生負(fù)面影響。因此,確保I/O請(qǐng)求的及時(shí)響應(yīng),已成為重要應(yīng)用程序能否成功遷移到虛擬主機(jī)化環(huán)境的關(guān)鍵因素。
有一個(gè)方法可以讓關(guān)鍵業(yè)務(wù)擁有充足的I/O資源,即為每個(gè)虛擬主機(jī)機(jī)都配置一個(gè)網(wǎng)卡或HBA卡,并將運(yùn)行關(guān)鍵業(yè)務(wù)的虛擬主機(jī)機(jī)與該接口卡綁定。這樣工作是沒(méi)問(wèn)題,但這種方法既不經(jīng)濟(jì),可能也沒(méi)有足夠的物理空間,而且,如果采用這個(gè)方案,那么每臺(tái)主機(jī)上運(yùn)行的虛擬主機(jī)機(jī)的數(shù)量也會(huì)受到限制。
另一個(gè)可用的方案是為主機(jī)準(zhǔn)備足夠的,甚至是超出需求的可用存儲(chǔ)和網(wǎng)絡(luò)帶寬,以便主機(jī)能夠有充足的I/O資源處理請(qǐng)求,并滿足其上運(yùn)行的每個(gè)虛擬主機(jī)機(jī)的性能要求。但這種方法也不是非常劃算,因?yàn)榇蟛糠?a href='http://www.sunshares.net' target='_blank'>虛擬主機(jī)機(jī)并非每時(shí)每刻都需要較高I/O性能。此外,Hypervisor通常使用循環(huán)的排隊(duì)策略來(lái)分配共享的可用的帶寬,因此這種方法也需要頻繁的系統(tǒng)中斷操作,效率方面也有損失。
基于網(wǎng)絡(luò)適配器的虛擬主機(jī)I/O技術(shù)
網(wǎng)絡(luò)適配器層的I/O虛擬主機(jī)化技術(shù)主要由Brocade、Emulex和QLogic等幾家公司提供,他們都可以提供支持虛擬主機(jī)I/O功能的高速網(wǎng)絡(luò)適配器產(chǎn)品。雖然這種適配器仍然要被多個(gè)虛擬主機(jī)機(jī)所共享,但它仍然能夠保證運(yùn)行關(guān)鍵業(yè)務(wù)的虛擬主機(jī)機(jī)有較高的服務(wù)級(jí)別。比如說(shuō),一個(gè)支持虛擬主機(jī)I/O功能的10GigE物理網(wǎng)絡(luò)適配器既可以劃分成多個(gè)虛擬主機(jī)網(wǎng)絡(luò)適配器,也可以為指定的虛擬主機(jī)機(jī)群組按百分比分配固定的帶寬。
在以上場(chǎng)景中,單塊10 GigE的物理網(wǎng)卡可以分成10個(gè)1GigE的虛擬主機(jī)網(wǎng)卡并靈活使用。比如,一個(gè)虛擬主機(jī)網(wǎng)卡專門用于虛擬主機(jī)機(jī)的遷移;另外幾個(gè)指定分配給那些特殊的虛擬主機(jī)機(jī),以便保證關(guān)鍵應(yīng)用的性能水平;而其余的虛擬主機(jī)網(wǎng)卡則納入資源池,供其它的虛擬主機(jī)機(jī)共享使用。
因?yàn)樗械腎/O虛擬主機(jī)化工作都由硬件適配器處理,因此主機(jī)端hypervisor虛擬主機(jī)化管理軟件層的負(fù)擔(dān)相當(dāng)小,主機(jī)可以回收大量的CPU資源。換句話說(shuō),CPU的內(nèi)核不需要為管理I/O共享而進(jìn)行頻繁的中斷操作。這種虛擬主機(jī)I/O技術(shù),不僅自身可以支持更大密度的虛擬主機(jī)機(jī)數(shù)量,而節(jié)約的CPU處理能力也可以用來(lái)運(yùn)行更多的虛擬主機(jī)機(jī)。
基于網(wǎng)絡(luò)適配器的虛擬主機(jī)I/O技術(shù)的另一個(gè)特性是可以在網(wǎng)卡上創(chuàng)建一個(gè)虛擬主機(jī)交換機(jī)。這個(gè)技術(shù)非常有價(jià)值,尤其是在服務(wù)器虛擬主機(jī)化環(huán)境中,它可以極大地降低出入服務(wù)器的網(wǎng)絡(luò)流量。利用這個(gè)功能,同一臺(tái)主機(jī)上的兩個(gè)虛擬主機(jī)機(jī)可以直接相互通訊(這種情況很常見(jiàn))。以往,這種流量都需要經(jīng)過(guò)外部的物理交換機(jī)處理。現(xiàn)在,虛擬主機(jī)交換機(jī)可以識(shí)別本地流量,并將這些流量限制在物理主機(jī)的內(nèi)部。這個(gè)功能不但可以為主機(jī)內(nèi)部的虛擬主機(jī)機(jī)提升性能,而且還可以提高整個(gè)網(wǎng)絡(luò)環(huán)境的效率。
最后要說(shuō)的是,那些支持I/O虛擬主機(jī)化的網(wǎng)絡(luò)適配器還可以虛擬主機(jī)所用存儲(chǔ)協(xié)議的類型。例如,有些卡同時(shí)支持FC、FCoE、10Gbps以太網(wǎng)和iSCSI協(xié)議,那么用戶就能夠在不中斷服務(wù)器或虛擬主機(jī)機(jī)運(yùn)行的前提下隨時(shí)變更端口的用途。今天,有些適配器還需要reboot才能變更配置,不過(guò)這種情況未來(lái)肯定會(huì)得到改變。
基于(網(wǎng)絡(luò))設(shè)施的虛擬主機(jī)I/O技術(shù)
在基礎(chǔ)網(wǎng)絡(luò)架構(gòu)層同樣可以實(shí)現(xiàn)I/O虛擬主機(jī)化。基于網(wǎng)絡(luò)設(shè)施的虛擬主機(jī)化既可以單獨(dú)使用,也可以與支持虛擬主機(jī)化的網(wǎng)絡(luò)適配器協(xié)同工作。在基礎(chǔ)網(wǎng)絡(luò)設(shè)施層,I/O的虛擬主機(jī)化有兩種實(shí)現(xiàn)方式。第一種是交換機(jī)自身支持虛擬主機(jī)化,本質(zhì)上是主機(jī)適配器端虛擬主機(jī)I/O功能的延伸與擴(kuò)展;另一種則以網(wǎng)關(guān)設(shè)備的形式出現(xiàn),它需要在主機(jī)端與網(wǎng)關(guān)之間構(gòu)建出一個(gè)私有的I/O通道網(wǎng)絡(luò),能夠?qū)崿F(xiàn)更廣泛的I/O虛擬主機(jī)化功能,所以它通常也叫I/O網(wǎng)關(guān)。
基于交換機(jī)的虛擬主機(jī)I/O.由于能夠控制并分配網(wǎng)絡(luò)帶寬,主機(jī)內(nèi)部的虛擬主機(jī)I/O網(wǎng)絡(luò)適配器無(wú)疑具有相當(dāng)重要的價(jià)值。但是,如果另一端的交換機(jī)設(shè)備不知道如何管理它的話,那么其中很多優(yōu)化功能將無(wú)法發(fā)揮作用。因此,像Brocade和Cisco等公司都推出了支持虛擬主機(jī)I/O的交換機(jī)產(chǎn)品,能夠在網(wǎng)絡(luò)層的各個(gè)方面確保虛擬主機(jī)機(jī)的性能保持在所需的水平。通過(guò)這些交換機(jī),用戶可以識(shí)別虛擬主機(jī)機(jī)并且設(shè)置一定的策略,包括那些與性能相關(guān)的參數(shù),比如設(shè)置QoS的低/中/高,或者調(diào)整總體可用帶寬的百分比。
只不過(guò),虛擬主機(jī)I/O的管理策略不僅僅涉及性能部分,還可以針對(duì)每個(gè)虛擬主機(jī)機(jī)甚至是每個(gè)物理端口設(shè)置安全部分和其他參數(shù)。在服務(wù)器虛擬主機(jī)化應(yīng)用環(huán)境里,當(dāng)一個(gè)虛擬主機(jī)機(jī)從一臺(tái)主機(jī)遷移到另一臺(tái)主機(jī)時(shí),這些網(wǎng)絡(luò)設(shè)置也能夠同虛擬主機(jī)機(jī)一起遷移。
讓人興奮的是,一些廠商開(kāi)發(fā)的虛擬主機(jī)I/O解決方案支持交換機(jī)端與網(wǎng)絡(luò)適配器端相互通訊,那些在網(wǎng)絡(luò)適配器層設(shè)置的策略就可以在主機(jī)和交換機(jī)之間移動(dòng),甚至可達(dá)網(wǎng)絡(luò)設(shè)施的任何層面。如果沒(méi)有這些通訊機(jī)制,那么針對(duì)虛擬主機(jī)機(jī)的虛擬主機(jī)I/O設(shè)置將無(wú)法隨虛擬主機(jī)機(jī)一同遷移。(比如在某主機(jī)上針對(duì)某個(gè)虛擬主機(jī)機(jī),我們將可用網(wǎng)絡(luò)I/O帶寬的25%分配給其專用,但當(dāng)該虛擬主機(jī)機(jī)從本機(jī)遷移到另一臺(tái)主機(jī)之后,以上配置將丟失)。交換機(jī)層的虛擬主機(jī)I/O技術(shù)能夠支持這類配置隨虛擬主機(jī)機(jī)一起在虛擬主機(jī)化環(huán)境中任意遷移。