> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/learn-the-platform/zh/mo-kuai-6-xu-ni-ji/03-gpu-passthrough.md).

# GPU 与设备直通

## 概述

VergeOS 支持多种设备直通形式，允许虚拟机直接访问附加在主机节点上的物理硬件。这使得需要裸金属设备访问的工作负载——GPU 加速渲染、AI/ML 训练、硬件安全密钥、高性能网络——能够在仍然受益于 VergeOS 编排、快照和多租户能力的同时运行。

所有直通类型都共享一个基于以下内容构建的通用架构： **资源组** 以及 **资源规则**，无论设备类型如何，都能提供一致的管理体验。

```mermaid
flowchart TB
    subgraph host["主机节点"]
        PCI["PCI 设备"]
        GPU["NVIDIA GPU"]
        NIC["SR-IOV 网卡"]
        USB["USB 设备"]
    end

    subgraph rm["资源管理器"]
        RG["资源组"]
        RR["资源规则"]
    end

    subgraph targets["分配目标"]
        VM["虚拟机"]
        TN["租户"]
    end

    PCI --> RG
    GPU --> RG
    NIC --> RG
    USB --> RG
    RG --- RR
    RG --> VM
    RG --> TN
```

## BIOS 前提条件

在配置任何基于 PCI 的直通（单对一 PCI、NVIDIA vGPU 或 SR-IOV）之前，服务器 BIOS 必须启用硬件虚拟化和 IOMMU 支持：

| 厂商        | 所需设置                                                |
| --------- | --------------------------------------------------- |
| **Intel** | **VT-d** 以及 **VT-x** 已启用； **SR-IOV** 已启用            |
| **AMD**   | **AMD-Vi / AMD-V** 以及 **IOMMU** 已启用； **SR-IOV** 已启用 |

{% hint style="success" %}
不同厂商的 BIOS 设置名称各不相同。请寻找如下术语： *虚拟化技术*, *PCI 直通*, *IOMMU*，或 *PCIe ACS*。如果这些设置不太明显，请查阅硬件厂商文档。
{% endhint %}

### IOMMU 分组

同一 **IOMMU 组** 内的所有 PCI 设备都会一起直通——单个 IOMMU 组不能拆分给不同的来宾。常见的共享 IOMMU 组示例包括：

* GPU 及其配套音频控制器
* 双端口网卡的两个端口
* 在同一插槽上共享 PCI 转接卡的多个设备

你可以在 VergeOS UI 中通过以下路径查看 IOMMU 组成员关系： **基础设施 > 资源 > PCI 设备**。点击 **IOMMU** 列标题进行排序，以识别分组设备。

{% hint style="warning" %}
**关键主机设备**

**切勿** 将启动设备、主系统控制器或核心网络结构控制器直通。直通主机关键设备会使其对主机不可用，并可能导致单个节点或整个系统不稳定。在进行直通更改之前，务必确认你拥有 **IPMI 或物理控制台访问权限** 。
{% endhint %}

## 资源组与资源规则

VergeOS 为所有设备直通使用两层抽象：

### 资源组

一个 **资源组** 是同类型一个或多个物理（或虚拟功能）设备的命名池。当你将设备附加到 VM 或租户时，你选择资源组——系统会在 VM 启动时自动从池中分配一个可用设备。

资源组类型：

* **PCI** ——一对一独占直通
* **NVIDIA vGPU** ——共享的虚拟 GPU 切片
* **SR-IOV 网卡** ——虚拟功能网络适配器
* **USB** —— USB 设备直通

### 资源规则

**资源规则** 定义过滤条件，以确定哪些物理设备属于某个资源组。每条规则可以按设备名称、厂商、插槽、序列号等属性进行匹配。可用的过滤字段会因设备类型而异。

| 创建方式     | 说明                                              |
| -------- | ----------------------------------------------- |
| **自动生成** | 选择一个设备并点击 **创建资源** ——系统会自动创建规则（推荐）              |
| **手动**   | 通过以下路径创建规则： **基础设施 > 资源 > 规则 > 新建** 并使用自定义过滤表达式 |

过滤运算符包括：等于、不等于、小于/大于、以...开头、以...结尾、包含（区分大小写或不区分大小写）以及正则表达式。

## 设备直通类型

### 一对一 PCI 直通

一对一 PCI 直通会一次将单个物理 PCI 设备专用于单个 VM。来宾操作系统会像设备物理连接在本机上一样看到并控制它。

**常见用例：** 用于渲染的专用 GPU、专用 HBA、FPGA 加速器，或任何需要直接硬件访问的设备。

#### 配置演练

**主机端：**

1. 导航至 **基础设施 > 资源** （资源管理器仪表板）。
2. 单击 **PCI 设备** 以列出所有节点上检测到的设备。
3. 选择目标设备并点击 **创建资源**.
4. 选择现有的 PCI 资源组或创建新的一个（类型： **PCI**).
5. 如果系统提示，请重启相关节点（使用 **维护模式** 以避免影响工作负载）。

**VM 端：**

1. 打开目标 VM 仪表板（**虚拟机 > 列表 > 选择 VM**).
2. 单击 **设备 > 新建**.
3. 将类型设置为 **PCI**，选择资源组，并指定设备数量。
4. 单击 **提交**，然后 **重启** 该 VM 以附加设备。
5. 从硬件厂商处安装所需的来宾驱动程序。

{% hint style="info" %}
**迁移限制**

使用一对一 PCI 直通设备的 VM **无法进行热迁移** ，在节点之间移动。VM 会固定在物理设备所在的节点上。请相应规划节点维护——必须先关闭 VM，然后在同一资源组中具有可用等效设备的另一节点上重新启动。
{% endhint %}

### NVIDIA vGPU（虚拟 GPU）

NVIDIA vGPU 技术会将单个物理 NVIDIA GPU 切分为多个虚拟 GPU，使多个 VM 能够同时共享一块 GPU 硬件。这非常适合 VDI 部署、AI/ML 推理以及无需独占整块设备的 GPU 加速应用。

**相较于一对一 GPU 直通的主要优势：**

* 多个 VM 共享一块物理 GPU
* **支持热迁移（实验性）** ——vGPU VM 可在无停机的情况下在节点之间迁移（自 4.13+ 起为实验性功能）
* 可通过 NVIDIA vGPU 配置文件灵活设定大小（每个 VM 分配的帧缓冲区数量不同）

{% hint style="info" %}
**vGPU 热迁移前提条件**

vGPU 热迁移需要在集群级别启用 **允许 vGPU 热迁移** 设置（**集群 > \[集群名称] > 编辑**）。如果目标节点没有兼容的 vGPU 容量，在维护期间工作负载可能会暂时关机，而不是进行热迁移。
{% endhint %}

{% hint style="warning" %}
**许可**

vGPU 需要 NVIDIA GRID 许可。可从以下位置获取许可证： [NVIDIA 许可门户](https://nvidia.com/en-us/data-center/resources/vgpu-evaluation) ，或注册试用。
{% endhint %}

{% hint style="info" %}
**AMD GPU**

vGPU 是 **仅适用于 NVIDIA 的** 功能。VergeOS 不支持 AMD GPU 的虚拟 GPU 切分。AMD GPU 仍可通过一对一 PCI 直通使用。
{% endhint %}

#### MIG 和异构 vGPU 配置文件

从 VergeOS 26.1.3 开始，受支持的 NVIDIA GPU 可以配置额外的 vGPU 分区选项：

* **多实例 GPU（MIG）** ——单个受支持的 GPU 最多可分区为七个硬件隔离实例，为每个实例提供有保证的计算、内存和内存带宽，且没有资源争用。需要设备支持（建议使用最新的 NVIDIA 数据中心驱动程序）。
* **异构 vGPU 配置文件** ——多个传统 vGPU 配置文件类型和大小可以同时运行在同一物理设备上。需要 NVIDIA 驱动程序版本 17.2 或更高版本以及设备支持。MIG 和传统配置文件不能混用在同一物理设备上。

#### 配置演练

**主机端：**

1. 从 NVIDIA 许可门户获取适用于你的 GPU 硬件的 **NVIDIA Linux-KVM 捆绑驱动程序** 。
2. 将驱动程序包上传到 **VergeOS vSAN** （系统 > 文件或拖放上传）。
3. 导航至 **基础设施 > 资源** 并点击 **PCI 设备**，然后按 Type = **显示控制器** 筛选以查看兼容的物理 GPU。
4. 选择目标 GPU 并点击 **创建资源**.
5. 选择现有的 NVIDIA vGPU 资源组或创建新的一个（类型： **NVIDIA vGPU**).
6. 在创建资源组期间，选择 **vGPU 配置文件** （决定每个 VM 的帧缓冲区分配）。
7. 如果系统提示，请重启相关节点。

{% hint style="success" %}
**检查受支持的驱动程序**

在 VergeOS 界面中，导航到 **资源管理器 > 组 > 新建**，将类型设置为 *NVIDIA vGPU*，然后点击按钮查看兼容的第三方驱动程序。请使用与你的硬件兼容的最新驱动程序。
{% endhint %}

**VM 端：**

1. 打开目标 VM 仪表板并点击 **设备 > 新建**.
2. 将类型设置为 **NVIDIA vGPU** 并选择资源组。
3. 单击 **提交** 以及 **重启** 该 VM。
4. 在 Windows 模板 VM 中安装 **NVIDIA GRID 来宾驱动程序** 在 VM 内安装（与主机驱动分支匹配）。
5. 在 NVIDIA 许可服务器上生成客户端配置令牌，将其下载到 VM 来宾中，然后重启 VM。

### SR-IOV 虚拟功能网卡

单根 I/O 虚拟化（SR-IOV）会从单个物理、支持 SR-IOV 的网络适配器创建多个 **虚拟功能（VF）** 。每个 VF 都表现为一个可分配给 VM 的独立网卡，通过绕过软件网络栈来提供接近原生的网络性能。

**常见用例：** 对延迟敏感的工作负载、高吞吐数据流水线、NFV（网络功能虚拟化）以及需要直接访问网卡的场景。

{% hint style="info" %}
VergeOS 提供内置的虚拟化网络适配器，具备完整的可移植性、冗余和编排功能。SR-IOV VF 网卡会绕过 VergeOS 网络，这意味着你会失去固有的可移植性、故障切换以及其他受管网络功能。仅当直接网卡直通是硬性需求时才使用 SR-IOV。
{% endhint %}

#### 配置演练

1. 导航至 **基础设施 > 资源** 并点击 **SR-IOV 网卡**.
2. 单击 **NIC PCI 设备** 以列出兼容的物理设备。
3. 选择目标网卡并点击 **创建资源**.
4. 创建新的 SR-IOV 资源组（类型： **SR-IOV 网卡**）并配置：
   * **VF 设备数量** 每个物理设备
   * **原生 VLAN** 标签（可选）
   * **带宽限制** （最小和最大发送 Mbps）
   * **虚拟链路状态** （自动、启用或禁用）
   * **欺骗检查**, **信任**，以及 **QoS 优先级** 设置
5. 通过以下路径将 SR-IOV VF 附加到 VM： **设备 > 新建 > SR-IOV 网卡**.
6. 在来宾操作系统中安装合适的网卡驱动程序。

### USB 设备直通

USB 直通允许 VM 像直接连接一样访问附加在主机上的 USB 设备。这对硬件许可加密狗、安全摄像头、键盘/鼠标以及其他 USB 外设很有用。

#### 配置演练

1. 导航至 **基础设施 > 资源** （或特定节点仪表板）。
2. 单击 **USB 设备** 以列出检测到的 USB 外设。
3. 选择目标设备并点击 **创建资源**.
4. 创建或选择一个 USB 资源组（类型： **USB**).
5. 配置可选设置： **允许来宾重置** 以及 **允许来宾全部重置**.
6. 通过以下路径将 USB 设备附加到 VM： **设备 > 新建 > USB**.

## 向租户传递设备

所有四种直通类型（PCI、NVIDIA vGPU、SR-IOV 网卡、USB）都可以共享给 **租户**，允许租户管理员将设备分配给自己的 VM。当设备传递给租户时：

* 一个 **新的资源组** 会自动在租户内部创建。
* 设备是 **厚置备的** ——即使未使用，租户也独占拥有该设备。
* 租户 VM 必须运行在 **租户节点** 上，即设备附加的位置。

**演练：**

1. 导航至 **租户仪表板** (**租户 > 列表 > 选择租户**).
2. 单击 **节点**，然后双击一个租户节点。
3. 单击 **设备 > 新建**.
4. 选择设备 **类型** 并配置数量。
5. 单击 **提交**。资源组现在可在租户内使用。

## 直通类型对比

| 功能           | 一对一 PCI         | NVIDIA vGPU      | SR-IOV 网卡   | USB          |
| ------------ | --------------- | ---------------- | ----------- | ------------ |
| **共享**       | 1 个设备：1 个 VM    | 1 个 GPU：多个 VM    | 1 个网卡：多个 VF | 1 个设备：1 个 VM |
| **实时迁移**     | 否               | **是（实验性，4.13+）** | 否           | 否            |
| **需要 IOMMU** | 是               | 是                | 是           | 否            |
| **需要驱动**     | 依赖厂商            | NVIDIA GRID      | 依赖厂商        | 视情况而定        |
| **支持租户**     | 是（厚置备）          | 是（厚置备）           | 是（厚置备）      | 是（厚置备）       |
| **使用场景**     | 专用 GPU、FPGA、HBA | VDI、AI/ML 推理、渲染  | 低延迟网络、NFV   | 加密狗、外设       |

## 使用场景与建议

### VDI 与远程桌面

使用 **NVIDIA vGPU** 将一块 GPU 共享给数十个虚拟桌面。vGPU 配置文件可让你按用户平衡帧缓冲区分配。支持热迁移，实现零停机维护。

### AI / ML 训练

对于专用训练工作负载，请使用 **一对一 PCI 直通** ，让 VM 获得物理 GPU 的完整访问权限。对于支持 MIG 的数据中心 GPU（例如 NVIDIA A100 或 H100）的分区访问，请使用 **基于 MIG 的 vGPU** 配置文件。对于推理或较轻的工作负载， **vGPU** 可提供高效共享。

### 高性能网络

**SR-IOV VF 网卡** 可为实时分析、金融交易或网络功能虚拟化等低延迟应用提供接近原生的网络吞吐量。

### 硬件外设

**USB 直通** 可让 VM 像直接连接一样访问加密狗、安全摄像头、条码扫描器及其他 USB 设备。

## 要点总结

* **资源组和资源规则** 是 VergeOS 中所有设备直通的通用机制——一次学习，处处适用。
* **BIOS 配置** （Intel 使用 VT-d/VT-x，AMD 使用 AMD-Vi/IOMMU）是所有基于 PCI 的直通的前提。
* **NVIDIA vGPU 是唯一支持热迁移的直通类型（实验性，4.13+）** ——这使其成为需要高可用性的 GPU 工作负载的首选，不过在生产使用前，应先在你的环境中验证该功能。
* **一对一 PCI 直通** 可提供最高的设备性能，但会将 VM 固定到特定节点。
* **SR-IOV 网卡** 可绕过 VergeOS 虚拟网络，实现接近原生的吞吐量，但会牺牲受管网络功能。
* 所有设备类型都可以 **共享给租户** 通过厚置备实现，使 MSP 能够向单个客户提供 GPU 或专用硬件。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/learn-the-platform/zh/mo-kuai-6-xu-ni-ji/03-gpu-passthrough.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
