VMware ESXi, WS RDS RemoteFX a NVIDIA GPU PCIe-Passtrough

Do mojej domácej serverovej rodiny pribudol krásny mainký HP Microserver Gen8, porobil som mu upgrade na Xeon E3-1260L a 16GB RAM, nahodil ESXi 6.7u2 HPE customized (s driverom na radič z ESXi 6.5 HPE customized /ak by sa niekto čudoval, že vidí disky a nie polia/) a pomaly si prehadzoval infraštruktúru do VM.

Na jednu virtuálku som si nainštaloval Windows Server 2019 s RDS aby som mal terminal server. Ten som chcel obohatiť o grafickú akceleráciu. Cieľom skrátka bol Photoshop cez RDP.

Tak začalo pátranie, skúšanie, trápenie, ktoré tu dnes zhrniem ak by niekto niekedy potreboval.

Našiel som si doma nejakú starú NVIDIA grafiku (najskôr nejaké Quadro potom GT-210, skončilo to GT-1030), Vložil do Microserveru .. a prestalo mi fungovať iLO Remote Console po boote 🤣. Riešením bolo prepnúť primárny video-výstup v BIOSe na integrovanú grafiku. Takisto treba v BIOSe zapnúť VT-d, bez ktorého by sme virtuálke grafiku nijak neprestrčili.

Po boote nabehneme do Manage -> Hardware -> PCI Devices, nájdeme grafiku, klikneme na ňu, Toggle passtrough.. a reboot.

Po reštarte Edit VM Settings -> Add Device -> PCIe, a tam si pridáme grafiku.. Ako si môžete všimnúť, nabehnú tam tieto dva žlté vykričníky, z ktorých ten druhý som neprečítal a aj som na to doplatil.. more on that later. Na prvé tlačidlo Reserve all memory klikneme a uložíme.

Po tomto môžeme nabootovať VM. Stiahneme drivery, nainštalujeme a reštartujeme.

Čakali by sme, že to je všetko avšak nene, GPU nám nabehne s vykričníkom a errorom Code 43. Známa vec – NVIDIA blokuje spúštanie consumer-GPU vo virtuáloch takže musíme povedať ESXi aby sa tváril, že nie je hypervisor. To dosiahneme jednoducho upravením .vmx (alebo Settings > VM Options > Advanced > Edit Configuration > Add Parameter) kde pridáme

hypervisor.cpuid.v0 = "FALSE"

Reloadneme config, spustíme VM a grafika by nám mala ísť.

Ďalší problém nastal, keď som chcel otvoriť NVIDIA Control Panel, aby som našu grafiku určil ako hlavnú, ten nám však lišiacky vypíše, že ale ale.. k NVIDII nie je pripojený žiaden displej preto sa neotvorím ha! 😎. Rieši sa to takzvanými dummy plugmi alebo, k tomu pripojte nachvíľu nejaký monitor, v mojom prípade telku.

Tak, grafiku nejak nainštalovanú máme, a teraz by sme ju chceli využiť na spomínané RDS. Dočítal som sa, že RemoteFX by mal využiť grafiku sám....
No to sa mi ihneď nezdalo, pretože Microsoft skoro nikdy nerobí niečo, čo by hneď fungovalo a bolo jednoduché. Zapol som gúglenie a našiel som, že stačí v GPO na RDS serveri nastaviť v Local Computer Policy\Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Remote Session Environment -> Use the hardware default graphics adapter for all Remote Desktop Services sessions. (+ reboot). Typický Microsoft – use default.. a čo ak by som si chcel vybrať?..

A to mi spôsobilo problém nakoľko, VMware SVGA 3D bolo mojou default grafikou. Ale ja som chcel NVIDIu. Jediné riešenie by bol spomínaný dummy plug, určiť default grafiku NVIDIu, a použiť VNC na prístup (namiesto Browser console v ESXi).
Už som si myslel, že tu sa moja snaha musí neúspešne skončiť, nakoľko by som musel spraviť takéto neelegantné cigánske riešenie. Potom som však rozmýšlal, že predsa ide o 3D akceleráciu, čo ak by som 3Dčko vypol integrovanej VMware GPU? Čuduj sa svete, funguje to! RemoteFX využije NVIDIA grafiku bez toho, aby bola nejaká primárna či nie.

Hotovo! Funguje to!

 

 

 

Avšak..

Išiel som riešiť zálohy, na zálohy používam Veeam B&R, je to free(do 10VM) a je to skvelé! Nerozumiem ako to môže byť zdarma.

Čo to je toto? Chybová hláška v štýle Niečo sa pokazilo.  Spomínate si na druhý žltý výkričníček?

Veeam využíva na zálohu VM snapshoty, ktorý avšak s nejakým PCIe device vo vnútri VM ESXi nedovolí urobiť.

Takže.. som asi skončil.. GPU akcelerácia RDS sa konať nebude. Ja chcem zálohovať. Nechcem použiť Veeam agenta nainštalovaného vo virtuálke....