Hyper-V深度評(píng)測(cè)第一篇:網(wǎng)絡(luò)方面的改進(jìn)
譯文本文將著重介紹Hyper-V在虛擬機(jī)網(wǎng)絡(luò)方面的改進(jìn),具體來(lái)說(shuō)指單根輸入/輸出虛擬化(SR-IOV)、接收端擴(kuò)展和服務(wù)質(zhì)量(QoS)。
單根輸入/輸出虛擬化
SR-IOV可能是為Windows Server 2012中網(wǎng)絡(luò)方面的種種改進(jìn)所添加的最值得關(guān)注的功能之一,它有特定的應(yīng)用和局限性,你在規(guī)劃部署新的Hyper-V集群時(shí)需要注意。
在虛擬機(jī)管理程序虛擬化的早期,英特爾和AMD認(rèn)識(shí)到:如果它們把某些功能從軟件卸載到處理器本身上面,就有助于提供更好的性能。這項(xiàng)機(jī)制現(xiàn)在分別被稱為Intel-VT和AMD-V,也是大多數(shù)現(xiàn)代虛擬機(jī)管理程序的一項(xiàng)要求。SR-IOV同樣將網(wǎng)絡(luò)功能從軟件轉(zhuǎn)移到硬件上,以提高性能和靈活性。如果你有一臺(tái)BIOS里面支持SR-IOV的服務(wù)器,又有能夠支持SR-IOV的網(wǎng)卡,該服務(wù)器就能向虛擬機(jī)提供虛擬功能(Virtual Functions)——實(shí)際上這些就是服務(wù)器本身的虛擬副本。如果你想廣泛使用SR-IOV,就要明白如今支持它的網(wǎng)卡在它們所提供的虛擬功能數(shù)量方面很有限;有些網(wǎng)卡每塊只支持4項(xiàng)虛擬功能,有些支持32項(xiàng),有些最多支持64項(xiàng)。
并不是因帶寬而需要SR-IOV,因?yàn)橹挥腥f(wàn)兆以太網(wǎng)連接才能被Hyper-V虛擬機(jī)總線塞滿,但是它占用大約一個(gè)處理器核心用于計(jì)算。所以,如果你要求處理器的使用率很低,那么SR-IOV是最穩(wěn)妥的選擇。如果延遲時(shí)間極其重要,SR-IOV為你提供了近似本地裸機(jī)的網(wǎng)絡(luò)性能,所以那是SR-IOV大放異彩的另一個(gè)場(chǎng)景。
你在享用SR-IOV好處的同時(shí)要付出一些代價(jià),尤其是在靈活性方面。如果你使用Hyper-V可擴(kuò)展交換機(jī),又配置了端口的訪問(wèn)控制列表(ACL),可能還配置了一個(gè)或多個(gè)擴(kuò)展,這些都會(huì)因SR-IOV而被繞過(guò),因?yàn)榻粨Q機(jī)從來(lái)看不到SR-IOV流量。你也無(wú)法聚合主機(jī)上多塊支持SR-IOV的網(wǎng)卡;不過(guò),你可以在主機(jī)上有兩塊(或更塊)物理SR-IOV網(wǎng)卡,把這些網(wǎng)卡提供給虛擬機(jī);而且可以在虛擬機(jī)里面,利用虛擬網(wǎng)卡組建一個(gè)網(wǎng)卡群,以提升性能和故障切換機(jī)制。
SR-IOV的確可與實(shí)時(shí)遷移(Live Migration)協(xié)同使用,這是VMware的vSphere 5.1所做不到的。在每項(xiàng)虛擬功能的后臺(tái),Hyper-V利用平常的虛擬機(jī)總線網(wǎng)卡組建“輕型”網(wǎng)卡群;如果你把虛擬機(jī)實(shí)時(shí)遷移到?jīng)]有SR-IOV網(wǎng)卡的主機(jī),它只是切換到軟件網(wǎng)卡。
如果想更深入地了解中Hyper-V的SR-IOV,請(qǐng)參閱Hyper-V開(kāi)發(fā)小組的John Howard所寫(xiě)的這個(gè)博客系列(http://blogs.technet.com/b/jhoward/archive/2012/03/12/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-1.aspx),然后點(diǎn)擊此處(http://blogs.technet.com/b/jhoward/archive/2012/03/21/everything-you-wanted-to-know-about-sr-iov-in-hyper-v-part-8.aspx),即可了解故障排查方面的技巧。
注意:當(dāng)你為SR-IOV網(wǎng)卡創(chuàng)建虛擬交換機(jī)時(shí),就得在當(dāng)時(shí)啟用SR-IOV;之后你無(wú)法轉(zhuǎn)變非SR-IOV交換機(jī)。
圖1:如果你的系統(tǒng)滿足要求,啟用SR-IOV是很簡(jiǎn)單的事情。
動(dòng)態(tài)擴(kuò)展
在物理服務(wù)器上,接收端擴(kuò)展(RSS)負(fù)責(zé)處理入站網(wǎng)絡(luò)流量,那樣流量速度不會(huì)因單個(gè)處理器核心而減慢。這通過(guò)把計(jì)算任務(wù)分配到多個(gè)處理器核心上來(lái)實(shí)現(xiàn)。對(duì)有多個(gè)虛擬機(jī),入站流量又很大的Hyper-V主機(jī)而言,動(dòng)態(tài)虛擬機(jī)隊(duì)列(dVMQ)執(zhí)行的操作就好比RSS為物理服務(wù)器執(zhí)行的操作。目的MAC地址進(jìn)行了散列處理;傳送到某個(gè)虛擬機(jī)的流量被送入到特定隊(duì)列,處理器核心的中斷操作經(jīng)過(guò)了分布式處理。這一切通過(guò)把這些功能卸載到網(wǎng)卡上來(lái)處理。
VMQ出現(xiàn)在Windows 2008 R2中的Hyper-V里面,但是你不得不管理中斷結(jié)合(Interrupt Coalescing),這可能需要好一番手動(dòng)調(diào)優(yōu)。在Windows Server 2012中的Hyper-V里面——dVMQ功能在默認(rèn)情況下已被啟用,這項(xiàng)功能可以為你處理調(diào)優(yōu)和跨節(jié)點(diǎn)均衡負(fù)載等任務(wù)。要是該功能由于某種原因而被禁用,你可以在GUI中或通過(guò)PowerShell cmdlet Enable-NetAdapterVmq來(lái)啟用它。
監(jiān)控和捕獲
服務(wù)器虛擬化和虛擬網(wǎng)絡(luò)方面的一個(gè)問(wèn)題是,許多傳統(tǒng)的故障排查方法根本不管用,或者必須經(jīng)過(guò)改動(dòng),才能適應(yīng)虛擬化環(huán)境。Hyper-V中新的可擴(kuò)展交換機(jī)讓你可以將端口定義為監(jiān)控端口(端口鏡像),就像你在物理交換機(jī)上定義端口那樣,好讓諸如Wireshark和Network Monitor之類的工具可以捕獲通過(guò)交換機(jī)傳送的流量。與這項(xiàng)功能緊密配合的是統(tǒng)一跟蹤(Unified Tracing),這個(gè)新的參數(shù)(capturetype)用于netsh跟蹤命令。它讓你可以定義是捕獲通過(guò)虛擬交換機(jī)(=vmswitch)傳送的流量,還是通過(guò)物理網(wǎng)絡(luò)(=physical)傳送的流量,還是說(shuō)這兩種流量都捕獲。想了解Windows Server 2012中netsh跟蹤方面的更多信息,請(qǐng)?jiān)L問(wèn)此處(http://technet.microsoft.com/en-us/library/dd878517.aspx)。
使用端口ACL還讓你可以計(jì)量某個(gè)虛擬機(jī)與指定的IP地址范圍之間的網(wǎng)絡(luò)流量(入站流量或出站流量)。雖然用PowerShell(Add-VMNetworkAdapterAcl –VMName name –RemoteIPAddress x.y.z.v/w –Direction Outbound –Action Meter)來(lái)計(jì)量蠻有意思,但我還是希望這項(xiàng)功能可以集成到SCVMM 2012等綜合日志和監(jiān)控解決方案中。
服務(wù)質(zhì)量
服務(wù)質(zhì)量(QoS)在Windows Server 2012和Hyper-V中都得到了改進(jìn)。它提供了帶寬管理、分類與標(biāo)記、流量控制及基于策略的QoS。雖然之前版本的Windows Server有***帶寬這個(gè)概念,但是版本2012還提供了最小帶寬概念。這意味著,沒(méi)有出現(xiàn)流量擁塞時(shí),工作負(fù)載可以使用分配給它的***帶寬;但是出現(xiàn)流量擁塞時(shí),工作負(fù)載只能使用最小保障帶寬。你可以使用***帶寬或最小帶寬,也可以同時(shí)使用,這取決于一個(gè)虛擬機(jī)或一組虛擬機(jī)所在的環(huán)境。
注意:如果你使用服務(wù)器消息塊直通(SMB Direct),Windows Server 2012的這項(xiàng)新功能在兼容網(wǎng)卡上實(shí)現(xiàn)了遠(yuǎn)程直接內(nèi)容訪問(wèn)(RDMA)技術(shù),以便網(wǎng)絡(luò)流量的延遲時(shí)間比較短,處理器開(kāi)銷比較小,那么QoS就被繞過(guò)了。在這種情況下,你可以實(shí)施支持?jǐn)?shù)據(jù)中心橋接(DCB)以控制流量的網(wǎng)卡,這類似QoS。DCB允許對(duì)八類不同的流量進(jìn)行定義,并且在擁塞期間為它們分配最小帶寬。
在之前版本中,你不得不自行對(duì)流量進(jìn)行分類;Windows Server 2012在PowerShell中隨帶內(nèi)置過(guò)濾器,可以針對(duì)iSCSI、NFS、SMB和實(shí)時(shí)遷移等常見(jiàn)流量進(jìn)行分類。除了目前基于IP報(bào)頭的標(biāo)記外——這項(xiàng)功能立足于差異化服務(wù)代碼點(diǎn)(DSCP),Windows Server 2012還添加了在第2層以太網(wǎng)幀進(jìn)行的802.1p標(biāo)記;因而,它可以適用于非IP數(shù)據(jù)包。
基于策略的QoS使用組策略(Group Policy),為你的物理網(wǎng)絡(luò)和主機(jī)制定和實(shí)施QoS策略,并簡(jiǎn)化部署和管理工作,因?yàn)槟阋呀?jīng)用組策略來(lái)實(shí)施其他策略。參閱本文(http://technet.microsoft.com/en-us/library/jj159288.aspx),即可深入了解如何面向QoS的組策略。
不過(guò)就Hyper-V而言,微軟把QoS部分與可擴(kuò)展虛擬交換機(jī)結(jié)合起來(lái),通過(guò)按照交換機(jī)端口號(hào),使用PowerShell或WMI,控制最小帶寬和***帶寬,從而確保穩(wěn)定的網(wǎng)絡(luò)性能,進(jìn)而讓主機(jī)能夠遵守服務(wù)級(jí)別協(xié)議(SLA)。當(dāng)然,這些功能在私有云基礎(chǔ)設(shè)施中同樣很有用,可使用SCVMM 2012 SP1加以管理。有了這種細(xì)粒度的QoS控制,還有可能拿來(lái)一塊或多塊萬(wàn)兆以太網(wǎng)網(wǎng)卡,把它們“切分”,用于分管存儲(chǔ)流量、實(shí)時(shí)遷移流量和虛擬機(jī)流量,就像如今的許多服務(wù)器有多塊專用的千兆網(wǎng)卡用于分管不同類型的流量那樣。
圖2:如果是小環(huán)境,很容易針對(duì)每個(gè)虛擬機(jī)配置最小帶寬和***帶寬。
再來(lái)說(shuō)說(shuō)網(wǎng)卡聚合(NIC teaming),我們會(huì)在下一篇當(dāng)中有所介紹。網(wǎng)卡聚合本身內(nèi)置在Windows Server中;我們會(huì)集中到目前為止介紹的所有功能,看看它們會(huì)如何影響你在將來(lái)如何設(shè)計(jì)集群和數(shù)據(jù)中心。
http://virtualizationreview.com/articles/2013/03/06/hyper-v-dive-3-network.aspx