Jak przeprowadzić wdrażanie urządzeń graficznych przy użyciu vGPU RemoteFX
Instalacja akceleracji wideo i karty graficznej na komputerze fizycznym w celu uzyskania lepszej wydajności i jakości obrazu to powszechne zadanie. Co jednak zrobić, gdy trzeba uruchomić aplikacje do renderowania wideo lub modelowania 3D na maszynie wirtualnej i potrzebna jest sprzętowa akceleracja wideo oraz karta graficzna?
W przypadku maszyn wirtualnych zasoby sprzętowe są współdzielone między maszynami wirtualnymi, co pozwala na elastyczne i racjonalne wykorzystanie zasobów. Jeśli maszyna wirtualna uruchamia wymagające aplikacje, może zużywać więcej zasobów procesora i pamięci niż inne maszyny wirtualne, które są w stanie spoczynku lub wykonują operacje mniej wymagające pod względem zasobów. Ponadto maszyny wirtualne domyślnie wykorzystują tylko podstawowe funkcje wideo do wyświetlania danych. W środowisku Microsoft Hyper-V można użyć funkcji Hyper-V RemoteFX, aby umożliwić maszynom wirtualnym współdzielenie zasobów karty graficznej i przyspieszenia 3D.
Przeczytaj ten wpis na blogu, aby dowiedzieć się więcej o Hyper-V RemoteFX i o tym, jak skonfigurować RemoteFX na komputerach z systemem Windows.
Czym jest RemoteFX
RemoteFX to funkcja umożliwiająca maszynom wirtualnym Hyper-V współdzielenie fizycznego procesora graficznego (GPU). Zasoby karty graficznej są współdzielone między wieloma maszynami wirtualnymi. Jest to optymalny scenariusz dla obciążeń o wysokim natężeniu, gdy dedykowane zasoby karty graficznej nie są wymagane przez cały czas. Funkcję Hyper-V RemoteFX można wykorzystać do wdrażania infrastruktury wirtualnych pulpitów (VDI). Procesor graficzny RemoteFX to urządzenie wirtualne podłączone do maszyny wirtualnej, które współdzieli zasoby fizycznej karty graficznej zainstalowanej na hoście Hyper-V (współdzieli procesor graficzny i pamięć wideo).
RemoteFX został wprowadzony w systemie Windows 7 i jest dostępny w systemach Windows 8, Windows 10, Windows Server 2008 R2 SP1, Windows Server 2012 oraz Windows Server 2016. Ta funkcja nie jest dostępna w Menedżerze Hyper-V w najnowszej wersji systemu Windows Server 2019 — nie można włączyć funkcji Hyper-V RemoteFX w graficznym interfejsie użytkownika (GUI). Korzystanie z funkcji RemoteFX zmniejsza obciążenie Procesora (CPU) i zwiększa skalowalność w środowisku wirtualnym. Podczas korzystania z Hyper-V RemoteFX nie ma potrzeby podłączania dedykowanego procesora graficznego (GPU) do każdej maszyny wirtualnej, ponieważ maszyny wirtualne mogą dynamicznie współdzielić procesor graficzny w celu obsługi obciążenia.
Renderowanie wideo, przetwarzanie obrazów o dużej objętości, praca z aplikacjami CAD oraz modelowanie 3D to tylko niektóre z przypadków użycia, w których może być potrzebne przyspieszenie 3D i procesor graficzny RemoteFX w maszynie wirtualnej. Nowoczesny procesor graficzny jest lepiej przystosowany do przetwarzania równoległego niż Procesor, obsługuje więcej zadań jednocześnie i posiada więcej rdzeni przetwarzających. Liczba monitorów i używanych rozdzielczości zależy od pamięci wideo i wydajności procesora graficznego karty graficznej. Aby połączyć się z maszynami wirtualnymi przy użyciu RemoteFX, należy używać funkcji Pulpit zdalny, a nie VMConnect (Virtual Machine Connection).
Zaletą RemoteFX jest to, że można go używać w wersjach systemu Windows dla komputerów stacjonarnych i serwerów. Chociaż zakup obsługiwanej karty graficznej, która jest kompatybilna ze sprzętem serwerowym, może nie być łatwy, większość komputerów stacjonarnych, na których zazwyczaj działają klienckie systemy operacyjne Windows, ma zainstalowane karty graficzne PCI Express.
Koniec wsparcia
Istnieje luka w zabezpieczeniach (CVE-2020-1036), którą cyberprzestępcy mogą wykorzystać do zdalnego wykonania kodu. Hakerzy mogą wykonać zdalny kod na komputerze hosta, używając specjalnie spreparowanych aplikacji na maszynie wirtualnej Hyper-V z procesorem graficznym RemoteFX, aby zaatakować sterowniki wideo na hoście Hyper-V. W tym przypadku serwer hosta nie może prawidłowo zweryfikować danych wejściowych od uwierzytelnionego użytkownika w systemie operacyjnym gościa. Firma Microsoft nie udostępnia poprawki eliminującej tę lukę i twierdzi, że jest to problem związany z architekturą systemu. Ze względu na te obawy dotyczące bezpieczeństwa firma Microsoft postanowiła wyłączyć i usunąć funkcję RemoteFX ze wszystkich wersji systemu Windows za pomocą automatycznych aktualizacji:
- Funkcja RemoteFX vGPU została wyłączona 14 lipca 2020 r. we wszystkich wersjach systemu Windows.
- Funkcja RemoteFX vGPU została usunięta 13 kwietnia 2021 r.
RemoteFX działa w systemie Windows 10 w wersji 1803 i wcześniejszych wersjach systemu Windows (można go skonfigurować za pomocą kilku kliknięć w interfejsie graficznym Menedżera Hyper-V). Po aktualizacji KB4571756 (aktualizacja zbiorcza wydana we wrześniu 2020 r.) ta funkcja jest wyłączona w interfejsie graficznym. W rezultacie konfiguracja RemoteFX w systemie Windows 10 nie jest dostępna w interfejsie graficznym Menedżera Hyper-V w systemie Windows 10 w wersji 1809, ponieważ funkcja została wyłączona. Do czasu aktualizacji w kwietniu 2021 r. kartę graficzną RemoteFX należało włączyć w PowerShell za pomocą specjalnych poleceń.
Wymagania dotyczące RemoteFX
- Obsługiwana wersja systemu Windows na hoście Hyper-V (Windows 7 Ultimate/Enterprise, Windows 8 Ultimate/Enterprise, Windows 10; Windows Server 2008 R2 SP1, Windows Server 2012, Windows Server 2016, Windows Server 2019). Nie wolno instalować aktualizacji usuwających Hyper-V RemoteFX.
- Karta graficzna na komputerze hosta musi być zgodna z DirectX 11 (DirectX 10 może być używany w systemach Windows Server 2008 i Windows 7 zainstalowanych na komputerze fizycznym). Jeśli na hoście Hyper-V zainstalowanych jest wiele kart graficznych, muszą one być identyczne. DirectX 11 jest dostępny w systemie Windows 8.1 i nowszych wersjach systemu Windows na maszynach wirtualnych gości.
- Procesor musi obsługiwać SLAT (Second Level Address Translation). Nazwa tej funkcji to Extended Page Tables (EPT) dla procesorów Intel i Nested Page Tables (NPT) dla procesorów AMD.
- Obsługiwane systemy operacyjne gości to Windows 7 SP1, Windows 8 i 8.1, Windows 10 1703 lub nowszy, Windows Server 2008 R2, Windows Server 2012, Windows Server 2016 (tylko w wdrażaniu z jedną sesją).
Jak skonfigurować RemoteFX
Przygotuj maszynę fizyczną, która jest hostem Hyper-V. Upewnij się, że zainstalowano sterowniki graficzne dla karty graficznej na hoście Hyper-V. Zaleca się zainstalowanie najnowszej stabilnej wersji sterowników dostarczonych przez dostawcę karty graficznej (na przykład NVIDIA lub AMD).
Przygotuj maszynę wirtualną z obsługiwanym systemem Windows do korzystania z funkcji Hyper-V RemoteFX. W moim przykładzie nazwa maszyny wirtualnej to Windows-VM, a nazwa hosta Hyper-V to Hyper-V-prim.
Instalowanie wymaganych funkcji
Zainstaluj usługę Remote Desktop Virtualization Host na hoście Hyper-V.
Otwórz stronę Server Manager, i kliknij Manage > Add Roles and Features.
Otworzy się Kreator dodawania ról i funkcji .
Installation Type. Wybierz Role-based or feature-based installation. Na każdym etapie kreatora klikaj Next , aby kontynuować.
Server Selection. Wybierz serwer z puli serwerów. Upewnij się, że wybrany jest host Hyper-V.
Server Roles. Wybierz Remote Desktop Services z listy ról. Jeśli rola Hyper-V nie jest zainstalowana, wybierz ją i zainstaluj.
Features. Pomiń ten krok.
Remote Desktop Services. Przeczytaj wyjaśnienie i przejdź do następnego kroku.
Role Services. Wybierz Remote Desktop Virtualization Host. Opis można przeczytać w prawym panelu.
Uruchom ponownie host Hyper-V po zakończeniu instalacji roli.
Konfigurowanie ustawień Hyper-V
Otwórz Hyper-V Manager uruchamiając virtmgmt w wierszu poleceń lub korzystając z graficznego interfejsu użytkownika systemu Windows. Następnie otwórz Hyper-V Settings.
W panelu nawigacyjnym okna Ustawienia Hyper-V kliknij Physical GPUs. W menu rozwijanym wybierz swoją kartę graficzną, a następnie zaznacz pole wyboru Use this GPU with RemoteFX .
Jeśli nie możesz zaznaczyć tego pola wyboru, oznacza to, że karta graficzna nie może być używana do obsługi RemoteFX lub że funkcja RemoteFX jest wyłączona.
Zatrzymaj maszynę wirtualną.
Otwórz Hyper-V Manager, wybierz swoją maszynę wirtualną, kliknij ją prawym przyciskiem myszy i otwórz VM Settings.
W oknie ustawienia maszyny wirtualnej kliknij Add Hardware w lewym panelu (panelu nawigacyjnym). W prawym panelu zobaczysz listę urządzeń, które możesz dodać do maszyny wirtualnej. Przebieg pracy jest podobny dla maszyn wirtualnych generacji 1 i Maszyny wirtualne drugiej generacji.
Jeśli RemoteFX 3D Video Adapter jest aktywna (wyświetlana jest czarną czcionką), wybierz tę kartę i kliknij Add. Ta opcja jest aktywna w wersjach systemu Windows do 14 lipca 2020 r., pod warunkiem zainstalowania aktualizacji.
Jeśli system Windows został zaktualizowany, opcja karty graficznej RemoteFX 3D jest nieaktywna (wyświetlana jest szarą czcionką) i nie można dodać tej karty w interfejsie graficznym Menedżera Hyper-V. Jednocześnie opcja „ Physical GPUs ” nie jest już wyświetlana w „ Hyper-V Settings.
”. Można to naprawić w PowerShell.
Uruchom polecenie w PowerShell na hoście Hyper-V, aby dodać kartę graficzną RemoteFX 3D do maszyny wirtualnej:
Add-VMRemoteFx3dVideoAdapter -VMName your_VM_name
Jeśli polecenie zostanie pomyślnie wykonane, wyświetli się komunikat ostrzegawczy.
OSTRZEŻENIE: Nie mamy już wsparcia dla karty graficznej RemoteFX 3D. Jeśli nadal korzystasz z tej karty, możesz być narażony na zagrożenia bezpieczeństwa.
Jeśli pojawi się błąd: Add-VMRemoteFx3dVideoAdapter: Aby włączyć to urządzenie, użyj Menedżera serwera, aby zainstalować usługę roli hosta wirtualizacji pulpitu zdalnego
Usługa wirtualizacji pulpitu zdalnego nie jest zainstalowana na hoście Hyper-V. Zobacz link Installing the needed features podany wcześniej w tym poście.
Enabling Windows 10 RemoteFX after installing updates
Jak wspomniałem wcześniej, jeśli zainstalowano aktualizacje systemu Windows z 14 lipca 2020 r., usługa Microsoft RemoteFX jest wyłączona. Jeśli masz maszyny wirtualne skonfigurowane do korzystania z RemoteFX, nie uruchomią się one. Podczas próby uruchomienia maszyny wirtualnej wyświetla się następujący błąd usługi RemoteFX w systemie Windows 10 z aktualizacją z 14 lipca 2020 r.:
Wystąpił błąd podczas próby uruchomienia wybranych maszyn wirtualnych:
Nie udało się uruchomić „nazwa-maszyny-wirtualnej”.
Syntetyczny kontroler wyświetlacza 3D (identyfikator instancji xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx): Nie udało się włączyć z błędem „Brak wystarczających zasobów systemowych do wykonania żądanej usługi”.
Nie można uruchomić maszyny wirtualnej, ponieważ wszystkie procesory graficzne obsługujące RemoteFX są wyłączone w Menedżerze Hyper-V. Należy włączyć co najmniej jeden procesor graficzny.
Inna wersja błędu:
Nie można uruchomić maszyny wirtualnej, ponieważ serwer nie ma wystarczających zasobów procesora graficznego.
Można to naprawić w PowerShell. Ta metoda ma zastosowanie w systemie Windows 10 i odpowiednich wersjach systemu Windows Server. Użyj poleceń w PowerShell, aby naprawić ten błąd i włączyć RemoteFX. Uruchom to polecenie, aby sprawdzić informacje o karcie graficznej na hoście Hyper-V:
Get-VMRemoteFXPhysicalVideoAdapter
Znajdź ten ciąg znaków:
Enabled: False
Oznacza to, że RemoteFX jest wyłączone. Zmień tę wartość na True.
Skopiuj nazwę karty graficznej (w moim przykładzie NVIDIA GeForce GTX 1060 ).
Uruchom polecenie:
Enable-VMRemoteFXPhysicalVideoAdapter -Name "video_card_name"
Wprowadź nazwę swojej karty graficznej.
Spróbuj ponownie uruchomić maszynę wirtualną przy użyciu RemoteFX. Maszyna wirtualna powinna się teraz uruchomić.
Zwróć również uwagę na te polecenia cmdlet programu PowerShell służące do zarządzania kartą graficzną RemoteFX 3D:
Set-VMRemoteFx3dVideoAdapter
Get-VMRemoteFXPhysicalVideoAdapter
Po dodaniu karty graficznej RemoteFX 3D do maszyny wirtualnej karta ta powinna być widoczna na liście sprzętu maszyny wirtualnej wraz z opcjami ustawiania rozdzielczości, liczby monitorów i dedykowanej pamięci graficznej.
Jeśli nie widzisz tych opcji w interfejsie graficznym Menedżera Hyper-V, użyj dodatkowych parametrów podczas dodawania karty graficznej RemoteFX do maszyny wirtualnej Hyper-V w PowerShell, na przykład:
Set-VMRemoteFx3dVideoAdapter -VMName Windows-VM -MaximumResolution 1024x768 -VRAMSizeBytes 536870912
Jeśli usługa Microsoft RemoteFX została pomyślnie skonfigurowana, w systemie Windows gościa działającym na maszynie wirtualnej zobaczysz urządzenie Microsoft RemoteFX Graphics Device – WDDM w sekcji Karty graficzne w Menedżerze urządzeń . Ta karta graficzna RemoteFX 3D jest urządzeniem wirtualnym, które współdzieli zasoby fizycznej karty graficznej zainstalowanej na fizycznym hoście Hyper-V przy użyciu technologii RemoteFX.
Rozwiązywanie problemów
Czasami mogą wystąpić dodatkowe błędy. Wyjaśnię typowy błąd, który pojawia się, gdy użytkownik nie może połączyć się z uruchomioną maszyną wirtualną za pomocą funkcji Remote Desktop RemoteFX.
Objawy:
- Połączenie wideo zostało przerwane i wyświetlono odpowiedni komunikat.
- Nie udało się nawiązać połączenia RDP: Sesja pulpitu zdalnego została zakończona, prawdopodobnie z jednej z poniższych przyczyn.
Jeśli ten błąd wystąpił na Twojej maszynie wirtualnej, edytuj zasady grupy w systemie Windows gościa na tej maszynie.
Kliknij Start > Run > gpedit.msc , aby otworzyć Edytor zasad grupy dla komputera lokalnego.
W lewym panelu okna Edytora zasad grupy przejdź do
Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Remote Session Environment > RemoteFX for Windows Server. Kliknij dwukrotnie Configure RemoteFX w prawym panelu okna.
Otworzy się okno z właściwościami Configure RemoteFX. Wybierz Enabledi kliknij OK , aby zapisać ustawienia.
Kliknij dwukrotnie Use WDDM graphics display driver for Remote Desktop Connections (dostępne dla systemu Windows 10 w wersji 1903 i nowszych wersjach systemu Windows).
W oknie, które się otworzy, wybierz Disabledi kliknij OK.
Zaktualizuj konfigurację zasad grupy, aby zastosować nowe ustawienia za pomocą polecenia:
gpupdate /force
Uruchom ponownie maszynę wirtualną. Spróbuj połączyć się z maszyną wirtualną, korzystając z trybu sesji rozszerzonej.
Jak zapobiec wyłączeniu RemoteFX na hoście Hyper-V
Po wydaniu aktualizacji systemu Windows w kwietniu 2021 r. maszyny wirtualne korzystające z karty graficznej 3D RemoteFX nie uruchamiają się. Możesz wyłączyć automatyczne aktualizacje na komputerach z systemem Windows na własne ryzyko, aby nadal korzystać z RemoteFX. Pamiętaj, że jeśli aktualizacje systemu Windows są wyłączone, poprawki zabezpieczeń nie są instalowane automatycznie na komputerach z tym systemem. Niewyeliminowane luki w zabezpieczeniach stanowią zagrożenie dla komputerów, które są wtedy narażone na zarażenie oprogramowaniem wymuszającym okup, wirusami i innym złośliwym oprogramowaniem.
Możesz ręcznie pobrać aktualizacje systemu Windows (poprawki) ze strony Microsoftu i je zainstalować. Dowiedz się, które aktualizacje systemu Windows mają na celu usunięcie RemoteFX i nie instaluj ich. Rozważ wdrażanie usługi WSUS (Windows Server Update Services) w swojej organizacji i odznacz aktualizacje, których nie potrzebujesz.
Nie zapomnij wykonać kopii zapasowej serwerów z systemem Windows i maszyn wirtualnych Hyper-V. W przypadku awarii lub ataku oprogramowania wymuszającego okup posiadanie kopii zapasowej pozwala na odzyskanie danych, przywrócenie obciążeń i wznowienie pracy w krótkim czasie. Użyj NAKIVO Backup & Replication do tworzenia kopii zapasowych maszyn fizycznych i wirtualnych.
Alternatywy dla Hyper-V RemoteFX
Firma Microsoft zaleca klientom korzystanie z funkcji DDA zamiast RemoteFX po kwietniu 2021 r.
DDA (Discrete Device Assignment) to funkcja umożliwiająca podłączenie urządzenia (w moim przypadku urządzenia PCI Express) bezpośrednio do maszyny wirtualnej. W przypadku karty graficznej należy odłączyć ją od komputera hosta i podłączyć do maszyny wirtualnej. W danym momencie tylko jedna maszyna wirtualna może korzystać z karty graficznej z funkcją DDA.
Sterownik graficzny dla procesora graficznego musi być zainstalowany w systemie operacyjnym gościa maszyny wirtualnej, a nie na komputerze hosta. W tym przypadku funkcje takie jak DirectX 12 i CUDA (Compute Unified Device Architecture) są dostępne na maszynie wirtualnej (CUDA nie jest dostępna na maszynie wirtualnej podczas korzystania z RemoteFX). W przypadku korzystania z funkcji Direct Device Assignment migracja maszyn wirtualnych między hostami Hyper-V nie jest możliwa.
Rozważ użycie alternatyw VMware dla serwerów i komputerów stacjonarnych z uruchomionymi maszynami wirtualnymi. Użyj funkcji Virtual Shared Graphics Acceleration (vSGA) i Virtual Shared Pass-Through Graphics Acceleration w VMware vSphere, aby współdzielić procesor graficzny z wieloma maszynami wirtualnymi. Należy używać kompatybilnych kart graficznych, które obsługują wirtualizację procesora graficznego i posiadają odpowiednie funkcje sprzętowe:
nVidia GRID vGPUAMD Multiuser GPU
Można włączyć przyspieszoną grafikę 3D dla maszyny wirtualnej w VMware Workstation jeśli używa się komputera stacjonarnego zamiast serwera.
Wnioski
Hyper-V RemoteFX to przydatna funkcja, która pozwala maszynom wirtualnym współdzielić zasoby sprzętowe fizycznej karty graficznej zainstalowanej na hoście Hyper-V oraz korzystać z przyspieszenia 3D dla aplikacji na maszynach wirtualnych. Aby skonfigurować RemoteFX na maszynie wirtualnej, zainstaluj usługę Remote Desktop Virtualization Host na hoście Hyper-V, edytuj ogólne ustawienia Hyper-V, aby wybrać procesor graficzny, który ma być używany do przyspieszenia grafiki, i dodaj kartę graficzną RemoteFX 3D w opcjach sprzętu wirtualnego maszyny wirtualnej. Niestety, funkcja Hyper-V RemoteFX została wycofana przez firmę Microsoft, a korzystanie z RemoteFX jest możliwe tylko do momentu zainstalowania aktualizacji systemu Windows z kwietnia 2021 r.






