SR-IOV

Windows中運行的磁碟設備

SR-IOV可能允許Windows操作系統和微軟Hyper-VVMware的ESXi等hypervisor對伺服器的磁碟I/O設備,如現在SR-IOV對網卡設備一樣進行封裝,管理甚至共享。

設備簡介


現在對Windows伺服器版核心處理組件進行虛擬化僅僅是個開始。SR-IOV技術正如傳統虛擬化技術能提高CPU和內存的利用率和靈活性一樣SR-IOV技術也能極大地提高I/O設備的利用率。
現在磁碟設備ISR-IOV最大的挑戰就是怎樣釋放被hypervisor強制佔用的伺服器資源——減少或消除對傳統伺服器的處理器使用以及從物理外圍I/O設備到虛擬機監視器再到虛擬主機系統之間的數據流傳輸時間延遲。現在已經出現如SR-IOV這樣的能減少數據傳輸時間,並且虛擬系統能直接連接到I/O外接設備的關鍵技術。本文主要對SR-IOV技術進行概述,同時介紹使用中的一些基本概念。
儘管Windows Server 2012支持SR-IOV技術,但SR-IOV不是原創於微軟或Windows Server操作系統,相反SR-IOV做為外圍PCIe規範來源於 PCI Special Interest Group組織。現在有很多外圍SR-IOV設備使用PCIe協議,但SR-IOV技術現主要在網路外圍設備上使用。
SR-IOV技術現已可以開始把具有SR-IOV功能的設備定義成為一種外圍設備物理功能模塊(PF)並且使之能與主機hypervisor系統直接相互交互信息。PF主要用於在伺服器中告訴hypervisor系統關於物理PCI設備運行的狀態是否可用。
SR-IOV在操作系統層,現在能在所有的外圍物理設備PF下,創建不只一個的虛擬功能設備(VFs)。VFs能共享外圍設備的物理資源(像網卡埠或網卡緩存空間)並且與SR-IOV伺服器上的虛擬機系統進行關聯。SR-IOV能允許一個物理PCIe設備把自身虛擬為多個虛擬PCIe設備。
每個PF和VF都會收到唯一的PCIe標識符,這樣就允許hypervisor系統中的SR-IOV虛擬內存管理器來區分不同的網路流量,並且能使用DMA內存直接訪問技術進行重新映射內存地址,在SR-IOV外圍設備和目標虛擬主機之前進行數據遷移時進行地址轉換。這樣從根本上避免了hypervisor系統所帶來的處理開銷和延時。
使用SR-IOV技術,虛擬機系統能經過DMA直接與PCIe設備一起工作,所以這種方式就不需在經過hypervisor系統時使用虛擬傳輸介面、虛擬交換機或其它翻譯器。SR-IOV直接交互技術在實際使用中的通信性能已經接近非虛擬化水平。

設備特點


經驗告訴我們如果使用SR-IOV(Single-root I/O virtualization,單根I/O虛擬化),Windows Server 2012的SR-IOV網路會使處理器利用率和網路延遲降低50%,而且會增加30%的網路吞吐率。通過網路性能的優化,可以在不花錢投資SR-IOV網路基礎設施的情況下,在同樣一台SR-IOV伺服器上支持更多的虛擬機,或在高I/O負載的機器上很好地運行VM。SR-IOV提供的低延遲可以讓對延遲敏感的網路流量(例如交易型數據或流媒體)有更好的網路性能。
SR-IOV還支持Live Migration,不過這個功能並不需要遠程端(目標端)對SR-IOV的支持,也就是說你可以將一個在SR-IOV伺服器上的虛擬機(VM)移動到另一台伺服器上,不管這台伺服器是不是支持SR-IOV。這允許了組織機構在不需要完整的SR-IOV承諾的基礎上,有組織地、系統地進行實驗和部署SR-IOV平台。
不過SR-IOV同樣也有一些限制,比方說系統需求。SR-IOV部署並不是自動化的;PCIe卡(NIC)、主板、BIOS和宿主機都需要支持SR-IOV以便虛擬機能使用虛擬化功能(VF)。有些組織機構可能要等到下一次伺服器技術更新才能去更新支持SR-IOV的伺服器硬體和PCIe卡。
另外一個SR-IOV問題是最大VF支持數。理論上一塊SR-IOV網卡最大的VF支持數量是256個,但是實際的數量要比這個數量少很多,因為SR-IOV網卡本身需要消耗一些基本的資源。記住,SR-IOV只是提供了一種共享PCIe設備的方法——SR-IOV並沒有增加現有設備的能力——所以如果一個網卡共享過渡,SR-IOV會超負荷工作。舉個例子,一個1Gb網卡實際上能支持達8個VF,而一個10Gb網卡實際上能支持達64個VF。SR-IOV需要高負載的環境可能會讓這個數字減少,所以在把SR-IOV部署到生產環境中前測試共享和評估負載通信的性能是非常重要的。
VM移植可能也會成為一個問題。基本上SR-IOV允許一個VM和PCIe設備進行直接地交互,將一個VM遷移到另一個SR-IOV伺服器(即使這個伺服器支持Live Migration)上會有問題,除非宿主機可以將負載從SR-IOV伺服器上遷移到非SR-IOV伺服器上。這也是另一個在SR-IOV部署到生產環境中前需要做好研究的功能。直接交互的負載可能在遷移開始時就出現故障。
最後,要考慮到當SR-IOV部署的時候對外界網路交換機和流量的影響。記住,一個SR-IOV伺服器可能可以完美地識別和管理很多VM,但是使用的SR-IOV交換機埠是沒有辦法去區分這些虛擬機流量的。舉個例子,從一個VF到另一個VF的流量可能在同一個SR-IOV物理口上,不過SR-IOV外部交換機不需要知道流量需要經過這個口。這可能會帶來交換問題或者讓人困惑。確保在SR-IOV部署的時候讓IT網路架構師也參與進來。
在SR-IOV數據中心伺服器虛擬化標準中,現在的焦點轉移到了SR-IOV優化上,技術在進化以至於可以減緩SR-IOV宿主機虛擬化層帶來的任何延遲,同時增強了SR-IOV系統性能到了裸物理機的等級。SR-IOV就是一項PCI-SIG開發和維護的技術,由硬體廠商前沿的OS廠家支持的技術。