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  Jak sprawdzić konfigurację polityk bezpieczeństwa dla maszyn wirtualnych?

📦 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
Zarządzanie cyklem życia maszyny wirtualnej: tworzenie, klonowanie, usuwanie
Zarządzanie cyklem życia maszyny wirtualnej: tworzenie, klonowanie, usuwanie

🔄 Zarządzanie cyklem życia maszyny wirtualnej: tworzenie, klonowanie, usuwanie W środowiskach IT opartych na wirtualizacji, efektywne zarządzanie cyklem życia maszyn Czytaj dalej

Migracja maszyn wirtualnych między hostami (vMotion, Live Migration)
Migracja maszyn wirtualnych między hostami (vMotion, Live Migration)

🔄 Migracja maszyn wirtualnych między hostami (vMotion, Live Migration) W dobie powszechnej cyfryzacji i automatyzacji, wirtualizacja stała się podstawowym narzędziem Czytaj dalej

Marek "Netbe" Lampart Inżynier informatyki Marek Lampart to doświadczony inżynier informatyki z ponad 25-letnim stażem w zawodzie. Specjalizuje się w systemach Windows i Linux, bezpieczeństwie IT, cyberbezpieczeństwie, administracji serwerami oraz diagnostyce i optymalizacji systemów. Na netbe.pl publikuje praktyczne poradniki, analizy i instrukcje krok po kroku, pomagając administratorom, specjalistom IT oraz zaawansowanym użytkownikom rozwiązywać realne problemy techniczne.