VMware ESXi: tips

ESXi on unsupported hardware (Celeron J3160)

In fase di sviluppo Leggere le avvertenze In fase di sviluppo

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 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:

  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 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:

  1. Innanzitutto creiamo su PC una macchina virtuale adatta ad eseguire ESX (4 GB di RAM, almeno due core, esportazione delle VT-x per permettere la virtualizzazione annidata). Se usate VMware Player queste impostazioni sono automatiche indicando la ISO di ESXi.
  2. Collegare il disco fisico e l'adattatore SATA-USB al PC fisico
  3. Avviare la macchina virtuale e collegare ad essa il disco USB (Virtual Machine → Removable Devices). Procedere con l'installazione specificando come disco di installazione il disco fisico USB. Se usate Linux, ricordate di permettere all'utente generico di avviare l'attività promiscua per l'interfaccia ethernet virtuale (come root: chmod a+rw /dev/vmnet0)
  4. Al termine verrà chiesto di disconnettere il CD-ROM (fatelo) e riavviare. Questa operazione fallirà perché VMware Player non è in grado di avviare una macchina virtuale facendo il boot da USB
  5. Scaricate Plop Boot Manager ed estrarne il contenuto in una cartella qualunque
  6. Ora dobbiamo creare una macchina virtuale con caratteristiche adatte ad eseguire ESX ed avviarla usando il file plpbt.iso come dispositivo di boot; questo file è presente nella directory creata al punto 5. Ovviamente la cosa più veloce è riutilizzare la macchina virtuale creata al punto 1 semplicemente sostituendo il file ISO.
  7. Nella videata di Plop Boot Manager selezionare il boot da USB ed attendere il boot di ESXi
  8. Collegarsi con un browser all'indirizzo mostrato. Trattandosi di un sito https con certificato autofirmato, è mostrato un messaggio minaccioso e richiesta l'approvazione esplicita. Il nome utente è root e la password quella che avete inserito durante l'installazione
  9. Per installare i driver non ufficiali: Host → Manage → Security & users → Acceptance level → Edit setting → Comunity.
  10. Un buon inizio per trovare driver è il sito VMware Front Experience. Nel mio caso (ma è una situazione piuttosto comune) servono per esempio i driver per le schede Realtek (net55-r8168) ed i dischi SATA (sata-xahci)
  11. Per installare i driver: Host → Manage → Packages → Install update. Serve copiare l'url del file VIB presente nella pagina che descrive il singolo driver. A titolo di esempio (ma verificate, non metto il link perché sono spesso aggiornati) nei due casi qui proposti sono http://vibsdepot.v-front.de/depot/RTL/net55-r8168/net55-r8168-8.045a-napi.x86_64.vib e http://vibsdepot.v-front.de/depot/vft/sata-xahci-1.40/sata-xahci-1.40-1.x86_64.vib
  12. Spegnere la macchina virtuale, collegare il disco alla macchina fisica tramite SATA ed avviare. In teoria non serve tastiera e monitor, ma a volte dà un certo senso di sicurezza vedere la prima fase del boot. Dopo un po' dall'avvio appare ancora la scritta Relocating modules and starting up the kernel…, ed il sistema sembra bloccarsi. In realtà è perfettamente operativo, basta collegarsi con il browser o, dopo l'attivazione, con ssh
  13. Un problema deriva dal fatto che il datastore non può essere (stranamente...) su USB e noi abbiamo inizialmente installato su un disco USB! Per ovviare: Storage → New datastore → Next → ... → Finish
  14. Il resto delle cose da fare è standard e descritto nella pagina Installazione di VMware ESXi / vSphere

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.

 

Data di creazione di questa pagina: agosto 2016
Ultima modifica: 8 agosto 2018


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima