# VMware ESXi

VMware ESXi (precedentemente ESX) è un prodotto per la virtualizzazione di livello enterprise offerto da VMware Inc., sussidiaria di Dell Technologies e ancor prima una divisione di EMC Corporation. ESX è un componente di un'offerta VMware più grande, VMware Infrastructure, che aggiunge servizi di amministrazione e di affidabilità al prodotto base.
Il server base richiede almeno una componente di storage stabile - come può essere un array di Hard Disk - per archiviare il kernel della virtualizzazione e i file di supporto. Una variante di questa impostazione, chiamata ESX Server 3i, viene distribuita gratuitamente senza Service Console integrata e spostando il kernel del server in un dispositivo hardware dedicato (nei prossimi server anche memoria flash).
Entrambe le varianti supportano i servizi offerti da Virtual Infrastructure. In quest'ultima, l'unica via per usare gli agenti (di management & monitoring) che prima venivano installati nella Service Console, è usando i CIM Providers forniti da Vmware. La gestione da riga di comando invece può essere eseguita con il Remote CLI (nel caso della versione gratuita è limitato in accesso "sola lettura").
La lista di differenze fra le due versioni è consultabile sul sito VMware ESX and ESXi Comparison

## Descrizione tecnica
### Termini e definizioni

VMware, Inc. definisce l'hypervisor usato da VMware ESX Server come "vmkernel".

### Architettura

Il server ESX include un microkernel che si interfaccia direttamente con la macchina. Nelle versioni ESX 3 e precedenti all'avvio viene lanciato un kernel Linux (una versione modificata di Red Hat Enterprise Linux) che analizza l'hardware della macchina e alcuni componenti di gestione, per poi cedere il controllo al componente vmkernel sviluppato di VMware. Questo è un microkernel con tre interfacce verso l'esterno:
* hardware
* sistema guest
* servizio console (servizio di gestione delle macchine virtuale che gira sul kernel che ha fatto partire vmkernel)

#### Interfaccia con l'hardware

Il microkernel vmkernel si occupa direttamente sia della CPU sia della memoria. Si può presumere che utilizzi la tecnologia Scan-Before-Execution (SBE) di VMware per gestire le istruzioni della CPU privilegiate.
L'accesso al rimanente hardware (come i dispositivi di rete o le memorie di massa) avviene utilizzando dei moduli. Alcuni dei moduli derivano dal codice sorgente di Linux. Per accedere a questi moduli, un modulo aggiuntivo chiamato vmklinux implementa l'interfaccia usata dai moduli Linux.
Il vmkernel usa i seguenti driver:
* net/e100
* net/e1000
* net/bcm5700
* net/bnx2
* net/tg3
* net/forcedeth
* net/pcnet32
* block/cciss
* scsi/adp94xx
* scsi/aic7xxx
* scsi/aic79xx
* scsi/ips
* scsi/lpfcdd-v732
* scsi/megaraid2
* scsi/mptscsi_2xx
* scsi/qla2200-v7.07
* scsi/megaraid_sas
* scsi/qla4010
* scsi/qla4022
* scsi/vmkiscsi
* scsi/aacraid_esx30
* scsi/lpfcdd-v7xx
* scsi/qla2200-v7xx
Questi driver sono sostanzialmente quelli descritti nella "Hardware Compatibility List" di VMware. Tutti questi moduli rientrano nella licenza GPL e sono stati adattati dai programmatori per essere eseguiti tramite vmkernel. VMware li ha adattati al sistema di caricamento dei moduli di vmkernel, oltre ad altre modifiche minori.