网络技术
性能优化
知识科普
技术分享
故障处理
Devops
KVM 虚拟化
无米之炊
Charmed-Kubernetes
ChromeOS
PCI Passthrough
type
status
date
slug
summary
tags
category
icon
password
前言
为了提高虚拟机的性能,或是扩展其使用场景。有时候,我们需要让虚拟机直接访问到硬件资源。
开启 PCI Passthrough 需要硬件支持。
IOMMU
IOMMU Enable
查看当前主机是否支持
如果没有输出,则表示不支持。
修改内核启动参数
修改 /etc/default/grub
- Intel CPU
- AMD CPU
更新 grub
重新启动主机
检查 grub 是否更新成功
检查 IOMMU 是否开启
或
<!-- more -->
PT Mode
Intel 与 AMD 芯片组均能够通过添加 "iommu=pt" 参数开启 PT 模式,以 Intel 为例:
按照如下修改 /etc/default/grub 并更新 grub
PT 模式只为直通模式中使用的设备启用 IOMMU,这将防止 Linux 试图接触 (touching) 无法直通的设备。
Interrupt Remapping
要使用 PCI passthrough,Interrupt Remapping 是必须的。
Interrupt Remapping 能够工作在较新的设备上,你可以使用下面的命令查看当前的主机是否支持 Interrupt Remapping:
如果你看到了下面任何一行
那么当前的主机是能够支持 Interrupt Remapping 的。
然而,如果当前的主机不支持 interrupt remapping,你可以使用如下命令开启
unsafe interrupt remapping
:完成上述修改后,你需要更新 initramfs 并重新启动系统
另外,你也可以尝试配置 Interrupt Remapping 的内核引导参数
验证 IOMMU 分组
VFIO
Required Moudules
修改 /etc/modules,开启以下 Kernel Moudules
为 PCI 设备开启 VFIO
以 Intel 核心显卡为例:
查询 PCI 设备的 ID
绑定为 VFIO 设备
修改 /etc/modprobe.d/vfio.conf
在物理机禁用 Intel 核心显卡和音频,创建并修改 /etc/modprobe.d/custom-blacklist.conf
完成上述修改后,你需要更新 initramfs 并重新启动系统
重新启动系统后,确认 Intel 核心显卡使用的 driver 是不是 vfio-pci
现在你可以使用 virt-manager 或 Proxmox 在虚拟机上分配 PCI 设备了。
其他的内核启动参数
这里列举可能会用到的部分内核启动参数
- 尽可能多的将 iommu groups 拆分,方便直通一些板载的设备
- 禁用显卡的 frame buffering
- 禁用显卡的 vesa driver
Loading...
Last update: 2022-12-21