Oddanie karty graficznej maszynie wirtualnej: prawdziwą przeszkodą nie jest sterownik, tylko grupa
Przekazanie sprzętu wprost maszynie jest możliwe, ale urządzenia oddaje się grupami, a nie pojedynczo. A przekazany sprzęt odbiera maszynie także swobodę przemieszczania się.
AtlasPVE ·
Ten wpis odpowiada na
- proxmox przekazanie karty graficznej
- proxmox grupa iommu
- proxmox pci passthrough nie działa
- proxmox karta graficzna do maszyny
- proxmox przekazanie sprzętu
Przekazanie fizycznej karty graficznej, kontrolera dysków albo karty przechwytującej wprost maszynie wirtualnej jest możliwe. Obietnica jest prawdziwa: maszyna używa tego sprzętu tak, jakby był jej własny.
Ale ludzie utykają nie na sterowniku. Utykają na grupie.
Urządzeń nie oddaje się pojedynczo
Twoja płyta główna decyduje, które urządzenia da się od siebie odizolować, i porządkuje je w grupy. Nie możesz oddać pojedynczego urządzenia z grupy; oddajesz całą grupę.
Skutek: jeśli twoja karta graficzna jest w tej samej grupie co kontroler dysków, oddanie karty graficznej oznacza oddanie także kontrolera dysków. To zwykle nie jest coś, co możesz zrobić, bo siedzi tam własny dysk serwera.
Pytanie, które trzeba zadać przy zakupie sprzętu, nie brzmi więc, czy ta karta graficzna zadziała, tylko czy na tej płycie głównej jest we własnej grupie. Grupowanie jest właściwością płyty głównej, a nie karty. Ta sama karta przechodzi czysto na jednej płycie i wcale na innej.
Urządzenie znika z serwera
Druga niespodzianka: gdy oddasz urządzenie maszynie wirtualnej, serwer nie może już z niego korzystać. To nie jest pożyczka, to przekazanie.
Najczęstsza wersja: na maszynie z jedną kartą graficzną oddajesz kartę maszynie wirtualnej, a własny ekran serwera odchodzi razem z nią. Jeśli możesz połączyć się zdalnie, to w porządku, ale gdy coś pójdzie źle, nie masz już możliwości podłączenia klawiatury i monitora, żeby spojrzeć.
Przekazany sprzęt odbiera też swobodę przemieszczania
Dla każdego, kto zbudował klaster, to najważniejszy punkt: maszyna z przekazanym sprzętem zwykle nie może przenieść się na inny węzeł.
Powód jest prosty: karta, którą oddałeś, jest wewnątrz tej fizycznej maszyny. Nawet jeśli drugi węzeł ma identyczny model, to nie jest to samo urządzenie.
Siatka bezpieczeństwa, którą daje ci klaster, nie obejmuje więc tej maszyny. Nie da się jej przenieść w noc serwisową ani podnieść na innym węźle podczas awarii. Konfigurując przekazanie, wybierasz w istocie to: mobilność w zamian za wydajność i bezpośredni dostęp do sprzętu.
Pamięć też przestaje być elastyczna
Czwarte i najmniej znane ograniczenie: przekazany sprzęt pisze wprost do pamięci maszyny wirtualnej. Żeby to działało, pamięć musi stać w miejscu.
A mechanizm rozciągający pamięć i odbierający ją to dokładnie ten, który pamięć przesuwa. Gdy oba są włączone na tej samej maszynie, strona sterownika wpada w kłopoty.
W praktyce reguła brzmi: na maszynie z przekazanym sprzętem nie rozciągaj pamięci, daj jej ilość stałą. Oznacza to, że ta maszyna nie może brać udziału w grze obiecywania więcej, niż się ma, opisanej w poprzednim wpisie. Obiecana jej pamięć jest naprawdę odłożona na bok.
Zdanie decydujące
Przekazanie nie jest zyskiem, jest wymianą. Zyskujesz: prawdziwą prędkość sprzętu i dostęp do wszystkich jego możliwości. Tracisz: przenośność, korzystanie serwera z tego urządzenia i elastyczność pamięci.
Jeśli dokonujesz tej wymiany świadomie, to właściwe narzędzie. Jeśli dokonałeś jej, nie zauważając, dowiadujesz się o tym w pierwszą noc serwisową albo przy pierwszej awarii.
Co robi Atlas
Odczytując urządzenia PCI na serwerze, Atlas odczytuje też, w której grupie izolacji znajduje się każde z nich. Przed decyzją możesz więc zobaczyć grupowanie: czy urządzenie, które chcesz oddać, jest samo, czy obok stoi coś, czego oddać nie chcesz.
Jest też reguła trafiająca dokładnie w ostatnią część tego wpisu. Jeśli maszyna wirtualna ma zdefiniowane przekazanie sprzętu i włączone rozciąganie pamięci, Atlas oznacza to ostrzeżeniem: razem powodują kłopoty po stronie sterownika. Ostrzeżenie nie mówi tylko, że jest problem, tylko mówi, co zrobić, i prowadzi cię wprost do ustawienia pamięci.
To drobny przykład ogólnej postawy produktu: sama konfiguracja jest poprawna, nic nie zgłasza błędu, ale dwa poprawne ustawienia razem nie mają sensu. Takie rzeczy trzeba mówić w trakcie konfigurowania, a nie podczas awarii.
Źródła
Własna dokumentacja Proxmoksa. Po angielsku i to ona ma ostatnie słowo w tej sprawie.