Jak naprawić problemy z działaniem funkcji passthrough urządzeń PCI?
Wirtualizacja

Jak naprawić problemy z działaniem funkcji passthrough urządzeń PCI?

⚙️ Jak naprawić problemy z działaniem funkcji passthrough urządzeń PCI?

📌 Wprowadzenie

Wirtualizacja umożliwia uruchamianie wielu maszyn wirtualnych (VM) na jednym fizycznym serwerze. Aby zwiększyć wydajność i umożliwić bezpośredni dostęp do fizycznych zasobów, używa się funkcji PCI passthrough. Pozwala ona przypisać fizyczne urządzenie (np. GPU, karta sieciowa, kontroler dysku) bezpośrednio do konkretnej maszyny wirtualnej.

Choć bardzo użyteczna, funkcja ta bywa problematyczna w konfiguracji i obsłudze. W tym artykule pokażemy, jak diagnozować i naprawiać najczęstsze problemy z passthrough PCI w środowisku opartym na wirtualizacji.

Jak naprawić problemy z działaniem funkcji passthrough urządzeń PCI?
Jak naprawić problemy z działaniem funkcji passthrough urządzeń PCI?

🔍 Co to jest PCI passthrough?

PCI passthrough to mechanizm umożliwiający przypisanie fizycznego urządzenia PCI/PCIe bezpośrednio do VM, z pominięciem hypervisora.

🔗 Schemat działania:

[ Urządzenie PCI (np. GPU) ]
        │
        ▼
[ Hypervisor (np. Proxmox, ESXi, KVM) ] ──> [ VM (gość) ]
              │
              └── passthrough

✅ Zastosowanie:

  • GPU do obliczeń CUDA
  • Karty sieciowe SR-IOV
  • Kontrolery USB, RAID itp.

🚨 Najczęstsze problemy z passthrough PCI

❌ 1. Brak obsługi VT-d/IOMMU w BIOS/UEFI

  • Funkcja nieaktywna lub nieobsługiwana przez CPU/płytę główną.
Czytaj  Jak naprawić błędy związane z aktualizacją oprogramowania do wirtualizacji?

❌ 2. Urządzenie nieprzypisane do osobnego IOMMU group

  • Konflikt z innymi urządzeniami – nie można go bezpiecznie przekazać.

❌ 3. Błąd w konfiguracji GRUB/bootloadera

  • Brak parametru intel_iommu=on lub amd_iommu=on.

❌ 4. Urządzenie jest używane przez hosta

  • Host system nie „oddał” urządzenia – np. GPU używane przez konsolę.

❌ 5. Brak sterowników w systemie gościa

  • VM nie rozpoznaje przekazanego urządzenia – brak widoczności.

🛠️ Jak naprawić problemy z PCI passthrough – krok po kroku


✅ Krok 1: Włącz IOMMU w BIOS/UEFI

📌 W zależności od producenta płyty głównej:

  • Intel: Włącz VT-d
  • AMD: Włącz SVM oraz IOMMU

🔧 Zazwyczaj dostępne w zakładce „Advanced” → „CPU Features” lub „Northbridge”.


✅ Krok 2: Skonfiguruj parametry jądra

Dla Debiana/Proxmox/KVM edytuj plik GRUB:

nano /etc/default/grub

Dodaj do linii:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
# lub dla AMD:
# GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"

Zastosuj zmiany:

update-grub
reboot

✅ Krok 3: Zidentyfikuj grupy IOMMU

📋 Sprawdź, czy urządzenie jest w oddzielnej grupie:

find /sys/kernel/iommu_groups/ -type l

Jeśli urządzenie dzieli grupę z innymi – nie można go bezpiecznie przekazać.

💡 Rozwiązanie: użyj opcji ACS override (niezalecane w środowisku produkcyjnym).


✅ Krok 4: Odłącz urządzenie od hosta

Dodaj urządzenie do vfio-pci, aby host go nie używał:

Sprawdź identyfikator:

lspci -nn

Przykład GPU:

01:00.0 VGA compatible controller [0300]: NVIDIA [10de:1b80]

Dodaj do pliku:

echo "10de 1b80" > /etc/modprobe.d/vfio.conf

Następnie:

update-initramfs -u
reboot

✅ Krok 5: Przypisz urządzenie do VM

W Proxmox:

qm set 100 -hostpci0 01:00.0

W libvirt/KVM – w pliku XML dodaj:

<hostdev mode='subsystem' type='pci' managed='yes'>
  <source>
    <address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
  </source>
</hostdev>

✅ Krok 6: Sprawdź VM i zainstaluj sterowniki

🔍 Uruchom VM i sprawdź w systemie gościa (lspci, Device Manager) czy urządzenie jest widoczne.

Czytaj  Konflikty między różnymi platformami wirtualizacyjnymi na jednym hoście

📦 Zainstaluj odpowiednie sterowniki (np. NVIDIA, Intel, Mellanox).


🧠 Najczęstsze pułapki i rozwiązania

Problem Rozwiązanie
Host „widzi” GPU mimo vfio-pci Wyłącz nouveau/radeon, zaktualizuj initramfs
VM nie widzi urządzenia Zła grupa IOMMU lub brak vfio-pci
Urządzenie „zawiesza” hosta Sprawdź wsparcie ACS, firmware BIOS
System gościa nie uruchamia się z GPU Ustaw primary GPU jako inne urządzenie w BIOS

📈 Korzyści z poprawnie działającego passthrough

  • Pełna wydajność fizycznego sprzętu w VM
  • Dostęp do specjalistycznych funkcji (np. CUDA, SR-IOV)
  • Możliwość uruchamiania VM z GUI, gier, renderingu lub testowania sterowników

🏁 Podsumowanie

Funkcja PCI passthrough w środowiskach opartych na wirtualizacji wymaga odpowiedniego wsparcia sprzętowego, konfiguracji systemu oraz znajomości architektury IOMMU. Najczęstsze problemy wynikają z błędów w BIOS, jądra systemu lub przypisania urządzeń w grupach IOMMU.

Dzięki szczegółowej diagnozie i konfiguracji możesz skutecznie przypisać fizyczne urządzenia do maszyn wirtualnych, uzyskując pełną funkcjonalność bez rezygnacji z elastyczności, jaką daje wirtualizacja.

 

Polecane wpisy
Jak uruchomić stare gry na Windows 12? Przewodnik krok po kroku
Jak uruchomić stare gry na Windows 12? Przewodnik krok po kroku

🎮 Jak uruchomić stare gry na Windows 12? Przewodnik krok po kroku Z biegiem lat, technologie komputerowe i systemy operacyjne Czytaj dalej

Linux w chmurze danych
Linux w chmurze danych

Linux oferuje wiele możliwości w zakresie wykorzystania chmury danych. Dzięki swojej elastyczności, bezpieczeństwu i skalowalności, Linux jest popularnym wyborem dla Czytaj dalej