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
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
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 16 GB di RAM ed un disco di recupero. Gli aspetti indispensabili sono un processore a 4 core con supporto VT-x e la possibilità di gestire una ragionevole quantità di RAM.
Ci sono alcuni problemi:
Gli ultimi due problemi possono essere superati aggiungendo gli opportuni driver. In rete si trovano numerosi tutorial sull'argomento, ma io ho preferito un procedimento più veloce, basato su macchine virtuali, di seguito descritto.
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 veloce; prevede l'uso di:
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!
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
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.
Data di creazione di questa pagina: agosto 2016
Ultima modifica: 8 agosto 2018
Il taccuino tecnico - Permanentemente in fase di
riscrittura
Copyright 2013-2024, Vincenzo Villa (https://www.vincenzov.net)
Quest'opera è stata rilasciata con licenza Creative Commons | Attribuzione 4.0 Internazionale (CC BY 4.0)