2021-05-12 14:32:11
Linux系統入門學習:在虛擬機器上設定PCI直通
提問:我想要分配一塊物理網絡卡到用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"啟動引數已經按上文敘述開啟。
via: http://ask.xmodulo.com/pci-passthrough-virt-manager.html
作者:Dan Nanni 譯者:Vic020/VicYu 校對:wxy
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-06/118452.htm
相關文章