天天看點

Proxmox VE(PVE) 進行網卡直通我的裝置介紹添加CPU支援,開啟iommu新增所需子產品添加PCI裝置驗證IOMMU有效IOMMU中斷重映射參考

文章目錄

  • 我的裝置
  • 介紹
  • 添加CPU支援,開啟iommu
    • 查詢網卡資訊
    • Intel CPU
    • AMD CPU
  • 新增所需子產品
  • 添加PCI裝置
    • 指令模式添加
    • web頁面模式添加
  • 驗證IOMMU有效
  • IOMMU中斷重映射
    • 檢視中斷重映射
    • 啟用中斷重映射
  • 參考

我的裝置

  • ECS Z270H4-I
  • E3 1235L V5
  • DDR4 2133 24G
  • WD 240G SSD

介紹

PCI直通允許您在VM内部使用實體PCI裝置(圖形卡,網卡)(僅限KVM虛拟化)。如果您“PCI passthrough”裝置,該裝置将不再可用于主機。

注意:PCI passthrough是Proxmox VE中的一項實驗性功能

要啟用硬體直通的話先要確定硬體支援VT-D和VT-X,CPU必須支援硬體虛拟化(為了使用 kvm)和 IOMMU(為了使用 VGA 直通)并保證主機闆中相關功能的開啟

添加CPU支援,開啟iommu

  • IOMMU 是 Intel VT-d 和 AMD-Vi 的通用名稱。
  • VT-d 指的是直接輸入/輸出虛拟化(Intel Virtualization Technology for Directed I/O),不應與VT-x(x86平台下的Intel虛拟化技術,Intel Virtualization Technology)混淆。VT-x 可以讓一個硬體平台作為多個“虛拟”平台,而 VT-d 提高了虛拟化的安全性、可靠性和 I/O 性能。

設定完之後最好重新啟動一下

reboot
           

查詢網卡資訊

lspci | grep -i ethernet 
           

顯示

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
[email protected]:~# lspci | grep -i ethernet 
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM
01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.2 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
01:00.3 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 16)
[email protected]:~# 
           

Intel CPU

修改grub

  • 編輯檔案/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其為“GRUB_CMDLINE_LINUX_DEFAULT=“quiet intel_iommu=on”
  • 使用update-grub更新
  • 驗證其有效性,從指令行運作“dmesg | grep -e DMAR -e IOMMU”。如果沒有輸出,則出現問題。極有可能是bios設定的問題,需要啟動cpu的vt-x支援。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改為 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU
           

AMD CPU

修改grub

  • 編輯檔案/etc/default/grub
  • 修改行“GRUB_CMDLINE_LINUX_DEFAULT=“quiet”
  • 使其為“GRUB_CMDLINE_LINUX_DEFAULT=“quiet amd_iommu=on”
  • 使用update-grub更新
  • 驗證其有效性,從指令行運作“dmesg | grep -e DMAR -e IOMMU”。如果沒有輸出,則出現問題。極有可能是bios設定的問題,需要啟動cpu的vt-x支援。
vi /etc/default/grub

找到  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
修改為 GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

update-grub

dmesg | grep -e DMAR -e IOMMU
           

新增所需子產品

修改檔案/etc/modules,加入如下的行

vi /etc/modules
           
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
           

執行指令來更新initramfs

update-initramfs -u -k all.
           

添加PCI裝置

指令模式添加

  1. 使用指令找到網卡PCI的位址,位址應采用以下形式:01:00.0
  2. 打開檔案進行手工添加
  • 叢集:/etc/pve/nodes/你的叢集名稱/qemu-server/虛拟機id.conf
  • PCI:/etc/pve/qemu-server/vmid.conf
  • PCIE: /etc/pve/qemu-server/.conf
查找網卡ID
lspci | grep net


或者
lspci


添加PCI
vi /etc/pve/qemu-server/vmid.conf
添加一個pci位址:  
hostpci0: 01:00.0
添加多個pci位址方式1:  
hostpci0: 01:00.0;01:00.1
添加多個pci位址方式2:  
hostpci0: 01:00.0
hostpci1: 01:00.1
添加統稱所有pci位址,自動傳遞所有功能:  
hostpci0: 01:00


添加PCIE
vi /etc/pve/qemu-server/111.conf
machine: q35
hostpci0: 01:00.0,pcie=1
           

web頁面模式添加

硬體->添加,選擇PCI裝置->選擇,完成

如需更改為PCIE,可設定機器為q35

如果添加了PCI裝置開啟虛拟機正常使用那後面的就不需要看了

如果添加了PCI裝置無法開啟虛拟機的話需要允許不安全的中斷

  1. 先驗證IOMMU是否有效
  2. 再檢視IOMMU是否可以中斷重映射
  3. 後啟用中斷重映射,允許不安全的中斷

驗證IOMMU有效

要讓pci passthrough正常工作,您需要為您的pci裝置提供專用的iommu組

find / sys / kernel / iommu_groups / -type l
           

輸入指令後有相關東西輸出,則表示正常

如果沒有則需要進行IOMMU中斷重映射,隻有每個IOMMU都支援中斷重映射,才會啟用中斷重映射。

IOMMU中斷重映射

沒有中斷重映射就不可能使用PCI passthrough。

對于KVM使用者,裝置配置設定将失敗,出現’Failed to assign device "[device name]"的錯誤,即“無法配置設定裝置”[裝置名稱]“:操作不允許”錯誤,并且’未找到中斷重映射硬體,将裝置傳遞到非特權域是不安全的。

不支援中斷重映射的系統:

  • 所有使用AMD處理器和晶片組的系統都支援AMD I / O虛拟化(AMD-Vi)。這種硬體具有中斷重映射支援; 但是,上遊尚未提供軟體支援。
  • 所有使用英特爾處理器和晶片組的系統都支援英特爾定向I / O虛拟化技術(VT-d),但不支援中斷重映射。新的處理器和晶片組提供了中斷重映射支援。要确定您的系統是否支援中斷重映射:

檢視中斷重映射

  1. 運作“dmesg | grep ecap”指令。
  2. 在IOMMU行上,“ecap”之後的十六進制值表示是否支援中斷重映射。如果該值的最後一個字元是8,9,a,b,c,d,e或f,則支援中斷重映射。例如,“ecap 1000”表示沒有中斷重映射支援。“ecap 10207f”表示中斷重映射支援,因為最後一個字元是“f”。

啟用中斷重映射

  • 官方文檔是這個

If your system doesn’t support interrupt remapping,

you can allow unsafe interrupts with:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
           
  • 或者添加驅動黑名單
vi /etc/modprobe.d/pve-blacklist.conf

檔案裡面添加一行
options vfio_iommu_type1 allow_unsafe_interrupts=1
來啟用不安全的中斷
           

之後就可以通過圖形化界面執行PCIE裝置的直通操作了

參考

  • Proxmox VE Pci passthrough 官方文檔
  • PCI passthrough via OVMF (簡體中文)
  • Proxmox 直通實體網卡
  • 家用存儲娛樂伺服器 篇三:軟體搭建篇

繼續閱讀