歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何在虛擬機上配置PCI直通

如何在虛擬機上配置PCI直通

日期:2017/2/27 15:49:00   编辑:Linux教程

提問:我想要分配一塊物理網卡到用KVM創建的虛擬機上。我打算為這台虛擬機啟用網卡的PCI直通。請問,我如何才能在virt-manager裡面通過PCI直通方式來增加一個PCI設備到虛擬機上?

如今的hypervisor能夠高效地在多個虛擬操作系統間共享和模擬硬件資源。然而,虛擬資源共享不是總能使人滿意,甚至在虛擬機性能是重點考量 時,或者是虛擬機需要硬件DMA的完全控制時,應該避免共享。一項名叫“PCI直通”的技術可以用在一個虛擬機需要獨享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設備到虛擬機

我們已經完成了開啟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
Copyright © Linux教程網 All Rights Reserved