文章目錄
- 我的裝置
- 介紹
- 添加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裝置
指令模式添加
- 使用指令找到網卡PCI的位址,位址應采用以下形式:01:00.0
- 打開檔案進行手工添加
- 叢集:/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裝置無法開啟虛拟機的話需要允許不安全的中斷
- 先驗證IOMMU是否有效
- 再檢視IOMMU是否可以中斷重映射
- 後啟用中斷重映射,允許不安全的中斷
驗證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),但不支援中斷重映射。新的處理器和晶片組提供了中斷重映射支援。要确定您的系統是否支援中斷重映射:
檢視中斷重映射
- 運作“dmesg | grep ecap”指令。
- 在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 直通實體網卡
- 家用存儲娛樂伺服器 篇三:軟體搭建篇