From 764a716dfe8c17c679b215f5aca484f4ad496da3 Mon Sep 17 00:00:00 2001 From: Tsanie Lily Date: Fri, 31 May 2019 16:18:12 +0800 Subject: [PATCH] article: PCI-e-Passthrough.md --- source/_posts/PCI-e-Passthrough.md | 160 ++++++++++++++++++ .../PCI-e-Passthrough/01-insert-pcie.png | Bin 0 -> 24048 bytes 2 files changed, 160 insertions(+) create mode 100644 source/_posts/PCI-e-Passthrough.md create mode 100644 source/_posts/PCI-e-Passthrough/01-insert-pcie.png diff --git a/source/_posts/PCI-e-Passthrough.md b/source/_posts/PCI-e-Passthrough.md new file mode 100644 index 0000000..0665a6b --- /dev/null +++ b/source/_posts/PCI-e-Passthrough.md @@ -0,0 +1,160 @@ +--- +title: Proxmox 5.4 上的 PCI(e) 直通 +date: 2019-05-31 12:49:43 +tags: +--- +{% blockquote %} +本文根据 {% link Proxmox 官方文档 https://pve.proxmox.com/wiki/PCI(e)_Passthrough %} 翻译而成。 +{% endblockquote %} + +## 一般需求 ## + +由于直通是一种需要硬件支持的功能,所以这里有些要求并且需要做一些准备工作。 + + + +### 硬件 ### + +CPU 和主板需要支持 `IOMMU` (I/O Memory Management Unit) 中断重映射。 + +通常带有 VT-d 的 Intel 平台和带有 AMD-Vi 的 AMD 平台支持此功能。但由于硬件不规范或者没有高质量驱动程序,并不能保证一切都能开箱即用。 + +此外,服务器级硬件通常比消费级硬件更好的支持这点,但即使如此,许多现代系统也都可以支持这个功能。 + +请咨询你的硬件供应商,以确定他们是否在 Linux 下支持此功能。 + +### 配置 ### + +一旦确保硬件支持直通,你还需要做一些配置来启用 PCI(e) 直通功能。 + +### IOMMU ### + +必须在内核命令上激活 IOMMU。最简单的方法是通过 grub 来启用,编辑 `/etc/default/grub`,在 `GRUB_CMDLINE_LINUX_DEFAULT` 变量中加入以下参数: + +* Intel 处理器: +{% codeblock %} +intel_iommu=on +{% endcodeblock %} + +* AMD 处理器: +{% codeblock %} +amd_iommu=on +{% endcodeblock %} + +执行以下命令使修改生效: +```shell +# update-grub +``` + +### 内核模块 ### + +必须确保加载以下模块,添加以下行到 `/etc/modules` 中来实现。 +``` +vfio +vfio_iommu_type1 +vfio_pci +vfio_virqfd +``` + +{% raw %}

修改模块后需要刷新 initramfs,在 Proxmox VE 中执行以下命令完成:

{% endraw %} +```shell +# update-initramfs -u -k all +``` + +### 完成设置 ### + +重启服务器使设置生效,并用以下命令检查: +```shell +# dmesg | grep -e DMAR -e IOMMU -e AMD-Vi +``` + +应该显示 `IOMMU, Directed I/O` 或者 `Interrupt Remapping` 已启用,取决于硬件和内核,详细的消息可能会有所不同。 + +想要直通的设备位于**单独的** `IOMMU` 组中也很重要。可以通过以下命令检查: +```shell +# find /sys/kernel/iommu_groups/ -type l +``` + +有些设备(例如带有 HDMI 音频设备的显卡)需要在同一分组以正常工作。 + +{% blockquote %} +**PCI(e) 插槽** +有些平台处理 PCI(e) 插槽的方式有所不同,如果没有取得想要的 `IOMMU` 分组的话可以尝试把设备插在不同的插槽上。 +{% endblockquote %} + +{% blockquote %} +**非安全中断** +对于一些平台,有可能需要允许非安全中断。可以在 `/etc/modprobe.d/` 下创建一个以 `.conf` 为扩展名的文件: +{% codeblock %} +options vfio_iommu_type1 allow_unsafe_interrupts=1 +{% endcodeblock %}请注意,此选项可能会导致系统不稳定。 +{% endblockquote %} + +### 显卡直通说明 ### + +无法在 Proxmox VE 网页界面上通过 NoVNC 或者 SPICE 来显示显卡的帧缓冲区。 + +当你直通了显卡并且想获得图形输出时,可以直接把显示器物理连接到显卡上,或者在客户机配置远程桌面工具(例如 VNC 和 RDP)。 + +而如果你只是用显卡来作为硬件加速器,例如使用 OpenCL 或者 CUDA 的话,就不必须连接到显示器。 + +## 主机设备直通 ## + +最常用的方式是直通一整张 PCI(e) 卡,例如显卡或者网卡。 + +### 主机配置 ### + +这种方式下,主机不可以占用这张。有两种方式来实现: + +* 传递设备 IDs 到 `vfio-pci` 模块的选项中,把以下代码 +{% codeblock %} +options vfio-pci ids=1234:5678,4321:8765 +{% endcodeblock %} +添加到 `/etc/modprobe.d/` 下的一个 `.conf` 为扩展名的文件中。其中设备 IDs 通过以下命令获得: +{% codeblock lang:shell %} +# lspci -nn +{% endcodeblock %} + +* 将驱动程序列入主机的黑名单以确保设备可以自由绑定直通,把以下代码 +{% codeblock %} +blacklist DRIVERNAME +{% endcodeblock %} +添加到 `/etc/modprobe.d/` 下的一个 `.conf` 为扩展名的文件中。 + +这两种方式都需要再次 [更新 `initramfs`](#update_initramfs) 并重启主机。 + +### 虚拟机配置 ### + +切换到虚拟机 **硬件** 选项卡,点击 **添加** - **PCI 设备**。 +{% asset_img 01-insert-pcie.png 添加 PCI(e) 设备 %}配置好需要的选项,点击 **添加**。 + +{% raw %}

以下是选项说明:

{% endraw %} + +* 所有功能 +如果该设备具有多个功能(例如显卡 `01:00.0` 和 `01:00.1`),勾选此选项会一起传递。 + +* 主 GPU (`x-vga=on|off`) +标记该设备为虚拟机主显卡,勾选后虚拟机将会忽略配置中的 **显示** 选项。 + +* PCI-Express (`pcie=on|off`) +告诉 Proxmox VE 使用 PCIe 还是 PCI 端口。一些设备组合需要 PCIe 而非 PCI。PCIe 只在 `q35` 机型上有效。 + +* ROM-Bar (`rombar=on|off`) +使固件 ROM 对客户机可见。默认已勾选,有些 PCI(e) 设备需要禁用。 + +也可以通过命令行,在虚拟机配置中设置 `hostpciX` 选项: +```shell +# qm set -hostpci0 01:00.0 +``` +有些参数可能需要设置,见上述 [选项说明](#option_readme),额外有一个 `romfile=` 参数,可以指定设备使用的 ROM 文件,参数值为 `/usr/share/kvm/` 的相对路径。 + +#### 举例 #### + +以下是把显卡直通为虚拟机主显卡的设置: +```shell +# qm set -hostpci0 01:00,x-vga=1,pcie=1 +``` + +### 注意事项 ### + +当直通显卡时,为了达到最高兼容性,请使用 `q35` 作为机器类型,BIOS 使用 `OVMF (EFI)` 替换 `SeaBIOS`,并勾选 PCI-Express。注意,如果想使用 `OVMF` 来直通显卡,那么显卡需要有一个 EFI 兼容的 ROM,否则请选择 `SeaBIOS`。 diff --git a/source/_posts/PCI-e-Passthrough/01-insert-pcie.png b/source/_posts/PCI-e-Passthrough/01-insert-pcie.png new file mode 100644 index 0000000000000000000000000000000000000000..535688dd84ae27fd4a0acebc7b8dbc3899a99e47 GIT binary patch literal 24048 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 literal 0 HcmV?d00001