Подключение видеокарты к виртуальным машинам в TrueNAS: PCIe Passthrough на практике | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Подключение видеокарты к виртуальным машинам в TrueNAS: PCIe Passthrough на практике

13 апреля 2026 11 мин. чтения
Содержание статьи

PCIe Passthrough — это технология, позволяющая напрямую выделить физическое устройство, такую как видеокарта (GPU), конкретной виртуальной машине (ВМ) в TrueNAS. Это обеспечивает полное аппаратное ускорение, независимость от драйверов хоста и производительность, близкую к нативной. В отличие от виртуализированной графики (QXL) или сложных лицензируемых решений вроде vGPU, Passthrough является оптимальным методом для выделения всей мощности одной карты одной ВМ в сценариях домашнего или корпоративного сервера на базе TrueNAS.

Основное применение в контексте TrueNAS включает транскодинг видео для медиасерверов (Plex, Jellyfin), выполнение вычислительных задач машинного обучения (Ollama, TensorFlow) и предоставление полноценного графического интерфейса для ВМ под управлением Windows или Linux. Ключевое ограничение — устройство может быть выделено только одной ВМ одновременно, а для работы требуется поддержка технологии IOMMU (Intel VT-d или AMD-Vi) на уровне процессора и материнской платы.

Что такое PCIe Passthrough и почему он нужен в TrueNAS

PCIe Passthrough — это метод аппаратной виртуализации ввода-вывода, при котором гипервизор (в данном случае TrueNAS) полностью передает управление физическим PCIe-устройством гостевой операционной системе. Устройство становится для ВМ «родным», как если бы оно было установлено в физический компьютер. Это устраняет накладные расходы на эмуляцию и позволяет использовать все специфические функции оборудования, такие как аппаратные кодеки NVIDIA NVENC или вычислительные ядра CUDA.

Сравнение с другими методами виртуализации GPU (vGPU, виртуальная графика)

При выборе технологии виртуализации графики в TrueNAS важно понимать доступные варианты:

  • Виртуальная графика (QXL, VirtIO-GPU): Программная эмуляция графического адаптера. Обеспечивает базовый вывод изображения, но производительность крайне низка и непригодна для любых задач, требующих аппаратного ускорения. Подходит только для консольного доступа к ВМ.
  • vGPU (NVIDIA GRID vGPU, AMD MxGPU): Позволяет «дробить» одну физическую карту на несколько виртуальных для одновременного использования разными ВМ. Это мощное, но коммерческое решение, требующее специализированного оборудования (обычно карты серии NVIDIA Tesla/Quadro или AMD Instinct), лицензий и сложной настройки гипервизора. Не поддерживается «из коробки» в TrueNAS для потребительских карт.
  • PCIe Passthrough: «Золотая середина» для TrueNAS. Выделяет всю карту целиком одной ВМ. Не требует дополнительных лицензий, обеспечивает максимальную для данного железа производительность, но лишает возможности совместного использования. Идеально подходит для сценариев, где одна ВМ отвечает за ресурсоемкую задачу (транскодинг, вычисления).

В контексте дистрибутивов TrueNAS: TrueNAS SCALE (на базе Linux) имеет более зрелую и простую поддержку PCIe Passthrough через стандартный механизм KVM. TrueNAS CORE (на базе FreeBSD) также поддерживает Passthrough через механизм bhyve, но настройка может быть менее тривиальной, а совместимость с оборудованием — уже.

Проверка совместимости: CPU, материнская плата и видеокарта

Первая и самая частая причина неудач — неподдерживаемое оборудование. Прежде чем приступать к настройке, необходимо проверить три ключевых компонента.

Абсолютное требование №1: Поддержка IOMMU. Технология аппаратной изоляции ввода-вывода (IOMMU) должна поддерживаться вашим процессором (Intel VT-d или AMD-Vi) и быть включена в BIOS/UEFI материнской платы. Проверить поддержку CPU можно на сайте производителя. Например, для Intel это большинство процессоров Core i5/i7/i9 серии K и Xeon; для AMD — практически все процессоры Ryzen/Threadripper и EPYC.

Критическая роль материнской платы: Даже при включенном IOMMU в BIOS, чипсет и прошивка материнской платы должны правильно группировать устройства в изолированные группы IOMMU. Если видеокарта находится в одной группе с критическими для работы системы устройствами (например, контроллером USB или SATA), выделить её отдельно не получится. Это аппаратное ограничение, которое проверяется только на практике.

Совместимость видеокарт: Большинство современных дискретных GPU от NVIDIA (GeForce, Quadro) и AMD (Radeon) поддерживаются. Однако есть нюансы: некоторые карты имеют резидентное ПО (VBIOS), которое может конфликтовать с инициализацией в виртуальной среде. Карты NVIDIA для потребительского рынка в ВМ с Windows требуют дополнительных настроек для обхода проверки драйвером на виртуализацию (ошибка Code 43).

Обязательное условие для хоста: Система TrueNAS должна иметь как минимум один доступный видеоадаптер для собственного вывода. Если вы планируете передать единственную видеокарту ВМ, у вас должен быть либо второй GPU, либо интегрированная графика в процессоре, либо управление через IPMI. Без этого после выделения карты вы потеряете доступ к веб-интерфейсу TrueNAS.

Как проверить и настроить группы IOMMU в вашей системе

Самый важный диагностический шаг выполняется через Shell в TrueNAS SCALE. Подключитесь к интерфейсу командной строки и выполните команду для просмотра групп IOMMU:

for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'Группа %s ' "$n"; lspci -nns "${d##*/}"; done

В выводе найдите свою видеокарту (например, `[10de:2204]` для NVIDIA GeForce RTX 3080). Идеальный сценарий: ваша GPU находится в отдельной группе IOMMU, и в этой группе нет других устройств. Если карта делит группу с другими устройствами (например, `[8086:15b8]` — контроллер USB), это проблема.

Что делать при неидеальной группировке:

  1. Попробуйте другой PCIe слот. Разные слоты могут быть подключены к разным «корням» (root ports) контроллера PCIe, что влияет на группировку.
  2. Проверьте настройки BIOS/UEFI. Ищите опции вроде «ACS Enable», «PCIe ARI Support», «SR-IOV Support» или «Above 4G Decoding». Их включение иногда помогает улучшить изоляцию.
  3. На некоторых материнских платах исправить группировку аппаратно невозможно. В этом случае можно попробовать использовать параметр ядра `pcie_acs_override`, но это снижает уровень изоляции и безопасности.

Выбор видеокарты под вашу задачу: от медиасервера до машинного обучения

Выбор GPU должен определяться целевым сценарием использования в ВМ:

  • Для транскодинга видео (Plex, Jellyfin, Emby): Ключевой критерий — поддержка аппаратных кодеков. Карты NVIDIA (начиная с серии Pascal, GTX 10xx) имеют отличный кодировщик NVENC, поддерживающий H.264/HEVC/H.265. Важен объем видеопамяти (VRAM) — для одновременного транскодинга нескольких потоков 4K HDR рекомендуется от 6 ГБ. Карты AMD (серии RX 5000 и новее) используют технологию AMF, совместимость и качество которой в ПО для медиасерверов исторически были ниже, но ситуация улучшается.
  • Для машинного обучения и вычислений (Ollama, TensorFlow, PyTorch): Здесь доминируют карты NVIDIA благодаря зрелой экосистеме CUDA и cuDNN. Объем и тип видеопамяти (GDDR6, GDDR6X, HBM) критически важны для загрузки моделей. Для локального запуска LLM-моделей в 2026 году рекомендуется минимум 12-16 ГБ VRAM. Карты AMD используют платформу ROCm, совместимость которой с ПО постоянно расширяется, но требует дополнительной проверки для конкретных фреймворков.
  • Для консольного/графического доступа (рабочая станция, удаленный десктоп): Подойдет практически любая современная карта с поддержкой драйверов в гостевой ОС. Для Linux-ВМ часто проще с драйверами AMD (`amdgpu`). Для Windows-ВМ с NVIDIA потребуется обход ошибки Code 43.

Потребительские карты (GeForce/Radeon) отлично подходят для Passthrough в большинстве сценариев. Профессиональные (NVIDIA Quadro/RTX Axxx, AMD Radeon Pro/Instinct) могут предложить больше видеопамяти, лучшую поддержку ECC и официальные драйверы для рабочих станций, но их стоимость значительно выше.

Пошаговая подготовка системы и настройка PCIe Passthrough в TrueNAS

Следуйте этой проверенной последовательности действий. Пропуск любого шага может привести к неудаче.

Настройка BIOS/UEFI: критические параметры для успешного Passthrough

Перед загрузкой TrueNAS зайдите в BIOS/UEFI вашей материнской платы и активируйте следующие настройки (названия могут отличаться):

  • Виртуализация CPU (Intel VT-x / AMD-V): Должна быть включена всегда для работы ВМ.
  • Виртуализация ввода-вывода (Intel VT-d / AMD-Vi (IOMMU)): Главный параметр. Без него Passthrough невозможен.
  • Above 4G Decoding / Memory Mapped I/O above 4 GB: Рекомендуется включить, особенно для систем с большим объемом RAM и несколькими GPU.
  • SR-IOV Support: Если есть, можно включить, но для Passthrough одной карты не обязательно.
  • Встроенная графика (iGPU): Если вы используете дискретную карту для хоста, а вторую будете передавать ВМ, убедитесь, что встроенная графика включена и назначена первичным дисплеем.
  • Режим работы PCIe: Для слота с картой, которую будете передавать, установите режим «Auto» или максимально доступный (например, «Gen4»).

После сохранения настроек и перезагрузки убедитесь, что TrueNAS загрузилась корректно.

Выделение видеокарты виртуальной машине через веб-интерфейс TrueNAS

1. Подготовка хоста (TrueNAS SCALE): Перейдите в «Системные настройки» -> «Дополнительно». В поле «Аргументы загрузки (sysctl)» добавьте параметр, разрешающий передачу PCIe-устройств: kvm_iommu=on. Нажмите «Сохранить» и выполните перезагрузку системы. Этот шаг критически важен.

2. Создание или редактирование ВМ: Убедитесь, что виртуальная машина выключена. Перейдите в «Виртуальные машины», выберите нужную ВМ и нажмите «Редактировать».

3. Добавление PCIe-устройства: В редакторе ВМ откройте вкладку «Устройства». Нажмите «Добавить» и выберите тип устройства «PCIe Passthrough Device». Появится список доступных для передачи устройств.

4. Идентификация GPU: В списке найдите свою видеокарту. Ориентируйтесь на идентификаторы Vendor ID и Device ID (например, `10de:2204` — NVIDIA, `1002:73bf` — AMD) и/или название устройства. Если список пуст, вернитесь к проверке групп IOMMU и параметров загрузки.

5. Завершение настройки: Выберите устройство, при необходимости отметьте опции «Применять при загрузке ВМ» (рекомендуется) и «Изолировать устройство от хоста». Сохраните изменения конфигурации ВМ.

6. Запуск ВМ: Запустите виртуальную машину. Если настройки выполнены верно, видеокарта будет обнаружена в гостевой ОС как физическое устройство.

Обход ограничений и установка драйверов в гостевой операционной системе

После успешного выделения устройства главная задача — заставить его работать внутри ВМ.

Решение ошибки Code 43 для видеокарт NVIDIA в Windows виртуальной машине

Драйверы NVIDIA для потребительских карт (GeForce) при обнаружении признаков виртуализации блокируют работу с ошибкой «Windows остановила это устройство, так как оно сообщило о проблемах. (Код 43)». Решение — скрыть от драйвера факт работы в виртуальной среде.

Способ через веб-интерфейс TrueNAS (рекомендуется):

  1. Выключите ВМ.
  2. В редакторе ВМ перейдите на вкладку «Дополнительные параметры».
  3. В поле «Аргументы гипервизора (Hypervisor Args)» вставьте следующую строку:
    -cpu host,kvm=off,hv_vendor_id=null,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time
  4. Сохраните изменения и запустите ВМ.
  5. Установите стандартный драйвер NVIDIA с официального сайта. Ошибка Code 43 должна исчезнуть.

Этот набор аргументов отключает некоторые функции KVM (`kvm=off`), маскирует идентификатор гипервизора и включает набор расширений Hyper-V, которые ожидает драйвер Windows.

Настройка драйверов для аппаратного ускорения в Linux-ВМ (Plex, Jellyfin, Ollama)

В Linux-гостевой системе карта после Passthrough определяется как обычное PCIe-устройство.

  • Для карт NVIDIA: Установите проприетарные драйверы. В Ubuntu/Debian можно использовать репозиторий NVIDIA или пакет `nvidia-driver-5xx` (актуальная версия). После установки проверьте командой nvidia-smi. Для транскодинга в Plex/Jellyfin убедитесь, что в настройках приложения выбран аппаратный трансодер «NVIDIA NVENC». Для работы Ollama с CUDA потребуется установка не только драйвера, но и тулкета CUDA и cuDNN.
  • Для карт AMD: Установите драйвер `amdgpu`. В современных дистрибутивах он часто идет в составе ядра. Для проверки используйте команду lspci -k (должен быть указан драйвер `amdgpu` в строке VGA контроллера). Для вычислений через ROCm необходимо установить соответствующий стэк ПО, совместимость которого следует проверять для конкретной модели карты и дистрибутива.

После настройки драйверов аппаратное ускорение в приложениях должно работать напрямую, без дополнительной настройки со стороны гипервизора.

Диагностика проблем, оптимизация производительности и лучшие практики

Частые ошибки и их решения при настройке PCIe Passthrough

Ошибка / Симптом Возможная причина Решение
ВМ не запускается после добавления PCIe устройства. 1. Неверные параметры загрузки хоста (`kvm_iommu=on` не добавлен).
2. Устройство находится в плохой IOMMU группе.
3. Конфликт ресурсов.
1. Проверьте и перезагрузите TrueNAS с правильными аргументами.
2. Проверьте группы IOMMU, попробуйте другой PCIe слот.
3. В редакторе ВМ попробуйте добавить устройство без флага «Изолировать от хоста» (менее безопасно).
В списке PCIe Passthrough Device в веб-интерфейсе пусто. 1. IOMMU не включен в BIOS/UEFI.
2. Не выполнена подготовка хоста (аргументы загрузки).
3. Драйвер VFIO не загрузился.
1. Перепроверьте настройки BIOS.
2. Добавьте `kvm_iommu=on` и перезагрузите.
3. В Shell выполните `lsmod | grep vfio`. Если модуль не загружен, попробуйте вручную: `modprobe vfio-pci`.
В гостевой ОС устройство есть, но работает с ошибками (Code 43, низкая производительность). 1. Для NVIDIA в Windows — не скрыт гипервизор.
2. Не хватает ресурсов CPU/RAM для ВМ.
3. Устаревшие драйверы в гостевой ОС.
1. Добавьте аргументы гипервизора для скрытия KVM.
2. Увеличьте количество ядер и объем памяти, выделенных ВМ. Закрепите ядра CPU.
3. Установите последние драйверы с сайта производителя.
Система TrueNAS (хост) теряет управление или зависает при запуске ВМ. 1. Видеокарта для ВМ является единственным GPU в системе.
2. Сбой питания PCIe-слота.
1. Убедитесь, что у хоста есть свой видеоадаптер (iGPU или вторая карта).
2. Проверьте достаточность блока питания. Попробуйте другой слот.

Безопасность и лицензирование: что нужно знать о использовании GPU в ВМ

Лицензирование: Использование PCIe Passthrough с потребительскими картами NVIDIA (GeForce) не нарушает лицензионных соглашений для типичных сценариев (игры, транскодинг, вычисления). Отдельный коммерческий продукт — NVIDIA vGPU — требует специальных лицензий и совместимого оборудования (карты серии vWS). Не пытайтесь обойти это ограничение с помощью патчей — это нарушение лицензии и нестабильно в работе.

Проблема HWID (Hardware ID) и античитов: Если вы планируете использовать ВМ с GPU для игр, будьте осторожны. Античит-системы, такие как Easy Anti-Cheat (EAC) или BattlEye, используют аппаратные идентификаторы (HWID) для банов. Поскольку при Passthrough ВМ получает прямой доступ к реальным идентификаторам GPU, материнской платы и других устройств, бан в одной игре может привести к блокировке доступа ко всем играм, использующим тот же античит, на этом «железе». Использование одной физической карты на разных ВМ или частые изменения конфигурации также могут быть расценены как подозрительная активность.

Безопасность изоляции: При корректной настройке PCIe Passthrough обеспечивает высокий уровень изоляции. Устройство полностью управляется гостевой ОС, и у хоста нет к нему прямого доступа. Это минимизирует поверхность атаки на хост со стороны скомпрометированной ВМ. Однако ошибки в настройке IOMMU или использование параметров вроде `pcie_acs_override` могут ослабить эту изоляцию.

Лучшие практики:

  • Всегда резервируйте для хоста TrueNAS отдельный, даже самый простой, видеоадаптер.
  • Для ВМ, использующих GPU, выделяйте фиксированные ядра CPU (pinning) и резервируйте оперативную память, чтобы избежать конкуренции за ресурсы и снижения производительности.
  • Перед внесением изменений в конфигурацию ВМ с GPU создавайте её снапшот.
  • Регулярно обновляйте TrueNAS и драйверы в гостевой ОС для обеспечения совместимости и безопасности.

Правильно настроенный PCIe Passthrough открывает мощные возможности для консолидации workloads на платформе TrueNAS, превращая её не только в систему хранения, но и в мощный вычислительный узел для специализированных задач.

Поделиться:
Сохранить гайд? В закладки браузера