Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

VMware ESXi / vSphere: soluzioni estemporanee

Sommario - Novità - Tutorial - Taccuino - Progetti - Risorse - Non solo elettronica

ESXi on unsupported hardware (Celeron J3160)

I prodotti gratuiti di Vmware non hanno una grande assistenza o documentazione, giustamente... In questa pagina riporto alcune soluzioni ai problemi che ho incontrato, ovviamente senza garanzia alcuna di ortodossia.

A che serve questa pagina?

In pratica: studenti e... professori.

Ovviamente sono tutte procedure da evitare in produzione.

Ovviamente esistono anche soluzioni più semplici, per esempio Proxmox-VE

Virtualizzazione annidata

Potrebbe essere interessante virtualizzare all'interno di ESXi un secondo virtualizzatore, per esempio per esigenze didattiche (poche scuole possono permettersi di avere server di virtualizzazioni per far fare esperimenti agli studenti) oppure per fare esperimenti anche con altri virtualizzatori. Per fare ciò occorre far esportare a ESXi le VTx alla macchina virtuale, pratica stesso indicata come Nested virtualization

Per fare ciò occorre inserire la riga vhv.enable = "TRUE" all'interno del file di configurazione dell'host ESXi. Dopo aver fatto il login con ssh:

[root@localhost:~] echo 'vhv.enable = "TRUE"' >> /etc/vmware/config

[root@localhost:~] cat /etc/vmware/config
[...]
authd.fullpath = "/sbin/authd"
vhv.enable = "TRUE"

Per verificare l'esportazione delle VTx alle macchine virtuali:

root@vv-15rse:~# cat /proc/cpuinfo | grep vmx

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms

Hardware non certificato

ESXi su J3160

ESXi è pensato per essere eseguito solo su server veri, cioè macchine con tanti processori, tanta RAM, affidabili. Soprattutto certificati. Ma per fare esperimenti potrebbe essere necessario usare un piccolo computer, di certo non incluso nella VMware Compatibility Guide.  Per esempio, per casa, mi sono comprato su un noto sito di commercio on-line una scheda ITX ASRock J3160DC-ITX equipaggiata con 8 GB di RAM ed un disco di recupero. Gli aspetti indispensabili sono un processore a 4 core con supporto VTx e la possibilità di gestire una ragionevole quantità di RAM.

Ci sono alcuni problemi:

  1. La scheda video non è compatibile VGA
  2. Le due schede di rete non sono supportate. Peraltro sono due comunissime gigabit ethernet Realtek: RTL8111GR on-board e RTL8111C su bus PIC Express (non certo schede da server...)
  3. L'interfaccia SATA non è supportata. Si tratta del controller Intel integrato nel processore Celeron J3160; è presente anche di un secondo controller ASMedia ASM1061

Gli ultimi due problemi possono essere superati aggiungendo gli opportuni driver. In rete si trovano numerosi tutorial sull'argomento, ma io ho preferito scrivere a Antonio Jorba che mi ha mandato una ISO già bella che pronta. La procedura per crearla è comunque dettagliatamente descritta nel suo sito.

Il primo inconveniente è più complesso e non totalmente risolto. Il tutto nasce dal fatto che l'hypervisor ESXi 6 utilizza solo la grafica VGA, e l'Intel® HD Graphics 400 non è VGA compatibile. Nelle vecchie versioni era disponibile l'installazione testuale, ora eliminata. L'effetto è che durante l'installazione o l'uso, al momento del caricamento del kernel dell'hypervisor appare la scritta Relocating modules and starting up the kernel… Tutto il resto funziona perfettamente, ma è cosa difficile fare una installazione completamente alla cieca, soprattutto su hardware non certificato.

Le soluzioni ufficiali:

La mia soluzione è più semplice e prevede l'uso di un adattatore USB-SATA e di un virtualizzatore installato su PC (io ho usato Virtualbox 5, ma penso che non sia una cosa critica). I passi:

Nel complesso il sistema è usabile; molto dipende ovviamente dalla velocità del disco e dalla quantità di RAM. Certo sarebbe meglio evitare quanto mostrato nell'immagine di inizio pagina: tre macchina virtuali da 4 GB e 2 core ciascuna, con interfaccia grafica... ma funziona!

Grafica 3D con Linux su ESXi

ESXi: linux and 3D video carrd

Innanzitutto: perché? Non certo per l'usabilità: una macchina virtuale presente in un data center in genere non ha per nulla un'interfaccia grafica e di certo le prestazioni sono molto scarse, tenendo conto che stiamo anche lavorando su una macchina remota.

Il problema è che una distribuzione Linux desktop moderna richiede hardware moderno, e se, vogliamo un'interfaccia decente, la grafica deve essere 3D... Il problema l'ho incontrato quando ho creato per la prima volta un server virtuale LTSP. Durante la creazione di macchine Linux con ESXi 6 non è però possibile attivare l'opzione che abilita il supporto 3D, che appare grigia.

Due soluzioni:

Ovviamente va ignorato l'errore mostrato nella figura all'inizio del paragrafo

Accesso VNC

Accesso remoto VNC

Una doverosa premesse: quanto descritto in questa pagina è una pratica piuttosto rischiosa in quanto tutto quello che viene digitato o visualizzato è trasmesso in chiaro sulla rete.

Occorre come prima cosa, abilitare una specifica macchina virtuale ad usare il desktop remoto. Questo prescinde dal sistema operativo installato ed è un'operazione interamente gestita da ESXi / vSphere. A macchina spenta, accedere in SSH al server ESXi e modificare il file di configurazione della macchina virtuale interessata aggiungendo le due righe di seguito evidenziate:

[root@localhost:~] vi /vmfs/volumes/Local/Debian\ Test/Debian\ Test.vmx

sched.cpu.affinity = "all"
svga.vramSize = "33554432"
mks.enable3d = "TRUE"
remotedisplay.vnc.port = "5901"
remotedisplay.vnc.enabled = "true"

Occorre verificare che la porta utilizzata (5901 nell'esempio ) sia diversa per ciascuna macchina virtuale per cui eventualmente l'opzione è stata attivata. Un modo veloce per evitare errori:

[root@localhost:~] find / \( -name "*.vmx" \) -exec grep -Hn "remotedisplay.vnc.port" {} \;
/vmfs/volumes/57935555-c03ea6fc-4216-d05099ac38b4/Debian Test/Debian Test.vmx:87:remotedisplay.vnc.port = "5901"

Occorre quindi aprire le porte nel firewall, sempre a livello di server. Un modo un po' rozzo è quello di usare il solito vSphere client:

Nome_del_server → Configuration → Software/Security_profile → Firewall/Properties → Flag_Gdbserver → OK

A questo punto è sufficiente usare da una qualunque macchina un client VNC (personalmente uso Vinagre per Gnome) puntato verso l'IP del server con la porta della macchina che si intende usare.

 

Parole chiave: ESXi hypervisor - vSphere - workaround - nested virtualization - Celeron J3160 - 3D Virtual Linux - VNC

Ultima modifica di questa pagina: 2 agosto 2016


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3