SR-IOV技術(shù)允許多臺(tái)虛擬機(jī)同時(shí)高效共享單個(gè)I/O資源。
SR-IOV是什么?如何在虛擬服務(wù)器環(huán)境當(dāng)中進(jìn)行部署?
SR-IOV(Single-root I/O virtualization,單根I/O虛擬化)實(shí)際上是一種實(shí)現(xiàn)I/O和連接虛擬化的核心技術(shù),其允許多臺(tái)虛擬機(jī)同時(shí)高效共享單個(gè)I/O資源。事實(shí)上,SR-IOV能夠?qū)蝹€(gè)“根設(shè)備”(比如以太網(wǎng)控制器)模擬為多個(gè)相同“副本”,以滿(mǎn)足不同虛擬負(fù)載的并發(fā)需求。SR-IOV對(duì)于虛擬化技術(shù)來(lái)說(shuō)十分重要,其已經(jīng)被作為PCI Express(PCIe)協(xié)議的一種擴(kuò)展機(jī)制。
SR-IOV需要首先在網(wǎng)卡上定義一系列物理功能和虛擬功能。網(wǎng)卡的物理功能(PF)定義了設(shè)備自身以及SR-IOV能力,這些和所使用的hypervisor類(lèi)型相關(guān)。多個(gè)虛擬功能(VF)可以共享本地內(nèi)存或者網(wǎng)絡(luò)接口等設(shè)備資源。PF和每個(gè)VF都會(huì)被分配唯一的PCI Express請(qǐng)求者ID(PCIe RID),hypervisor可以使用這個(gè)ID來(lái)區(qū)分不同網(wǎng)絡(luò)流量并且處理中斷請(qǐng)求。采用這種方式,虛擬機(jī)流量就可以通過(guò)不同的VF來(lái)訪(fǎng)問(wèn)底層的根PF了,并且不會(huì)對(duì)其他VF產(chǎn)生任何影響。虛擬機(jī)流量實(shí)現(xiàn)了相互隔離,在共享網(wǎng)卡資源的同時(shí)不會(huì)對(duì)其他流量造成影響。網(wǎng)絡(luò)流量不再需要穿越hypervisor的軟件交換機(jī)層,能夠大大降低I/O系統(tǒng)開(kāi)銷(xiāo)、提升總體性能表現(xiàn)。
部署SR-IOV之前需要首先確保hypervisor支持該項(xiàng)特性(比如Hyper-V和ESXi),并且選擇合適的網(wǎng)卡和服務(wù)器硬件。服務(wù)器BIOS需要支持SR-IOV,網(wǎng)卡需要安裝兼容SR-IOV的網(wǎng)絡(luò)芯片,比如英特爾82599EB dual 10 GigE controller。因此可能需要對(duì)老式服務(wù)器進(jìn)行固件升級(jí),以保證其能夠滿(mǎn)足SR-IOV的所有需求。此外,驅(qū)動(dòng)程序是確保操作系統(tǒng)和網(wǎng)卡實(shí)現(xiàn)正常通訊的重要組成部分。Windows Server 2012默認(rèn)為部分網(wǎng)卡提供了SR-IOV驅(qū)動(dòng),包括Emulex 10 GigE OneConnect、Broadcom 10 GigE 57712以及 Intel 10 GigE X520 controller,而其他類(lèi)型的網(wǎng)卡,就需要從廠(chǎng)商那里獲取驅(qū)動(dòng)了。