提問:我想要分配一塊物理網卡到用KVM創建的虛擬機上。我打算為這台虛擬機啟用網卡的PCI直通。請問,我如何才能在virt-manager裡面通過PCI直通方式來增加一個PCI設備到虛擬機上?
如今的hypervisor能夠高效地在多個虛擬操作系統間共享和模擬硬件資源。然而,虛擬資源共享不是總能使人滿意,甚至在虛擬機性能是重點考量 時,或者是虛擬機需要硬件DMA的完全控制時,應該避免共享。一項名叫“PCI直通”的技術可以用在一個虛擬機需要獨享PCI設備時(例如:網卡、聲卡、 顯卡)。本質上,PCI直通穿透了虛擬層,直接將PCI設備放到虛擬機裡,而其他虛擬機則不能訪問該設備。
如果你想要為一台HVM實例開啟PCI直通(例如,一台KVM創建的全虛擬化的虛擬機),你的母系統(包括CPU和主板)必須滿足以下條件。如果你的虛擬機是半虛擬化的(由Xen創建),你可以跳過這步。
為了在 HVM虛擬機上開啟PCI直通,系統需要支持VT-d (Intel處理器)或者AMD-Vi (AMD處理器)。Intel的VT-D(“英特爾直接I/O虛擬化技術”)是適用於最高端的Nehalem處理器和它的後繼者(例 如,Westmere、Sandy Bridge的,Ivy Bridge)。注意:VT-d和VT-x是兩個獨立功能。intel/AMD處理器支持VT-D/AMD-VI功能的列表可以查看這裡。
在確認你的設備支持VT-d/AMD-Vi後,還有兩件事情需要做。首先,確保VT-d/AMD-Vi已經在BIOS中開啟。然後,在內核啟動過程 中開啟IOMMU。IOMMU服務,是由VT-d/AMD-Vi提供的,可以保護虛擬機訪問的主機內存,同時它也是全虛擬化虛擬機支持PCI直通的前提。
Intel處理器中,通過將“intel_iommu=on傳給內核啟動參數來開啟IOMMU。參看這篇教程了解如何通過GRUB修改內核啟動參數。
配置完啟動參數後,重啟電腦。
我們已經完成了開啟PCI直通的准備。事實上,只需通過virt-manager就可以給虛擬機分配一個PCI設備。
打開virt-manager的虛擬機設置,在左邊工具欄點擊‘增加硬件’按鈕。
選擇從PCI設備表一個PCI設備來分配,點擊“完成”按鈕
最後,啟動實例。這樣,主機的PCI設備已經可以由虛擬機直接訪問了。
在虛擬機啟動時,如果你看見下列任何一個錯誤,這個錯誤有可能由於母機VT-d (或 IOMMU)未開啟導致。
Error starting domain: unsupported configuration: host doesn't support passthrough of host PCI devices Error starting domain: Unable to read from monitor: Connection reset by peer
請確保"intel_iommu=on"啟動參數已經按上文敘述開啟。
譯文:https://linux.cn/article-5570-1.html