Diario di una migrazione da vCenter a Proxmox

Dire addio a VMware non è mai stato così facile (e conveniente): il racconto della mia migrazione a Proxmox VE, tra vantaggi reali e piccoli imprevisti.

Condividi
Diario di una migrazione da vCenter a Proxmox

Chi non conosce già la storia di come licenziamenti, ristrutturazioni aziendali, e cambiamenti fondamentali al modello di licensing abbiano praticamente rovinato il prodotto leader del mercato della virtualizzazione?

Quando - alla fine del 2023 - Broadcom ha acquisito VMware, io stavo cominciando ad abituarmi ad utilizzare ESXi e vCenter, e anche a provare una leggera affezione verso quell'ecosistema fondato su una così lunga storia da renderne l'affidabilità quasi scontata.

Tuttavia, è difficile sostenere un prodotto quando chi lo commercializza sembra fare di tutto per togliertelo dalle mani. Per chi gestisce un Homelab partendo da un budget il più vicino possibile allo zero, i costi delle licenze di ESXi (e vCenter) sono ormai proibitivi, e lo sono diventati anche per molte aziende! Vedi TESCO, che ha recentemente annunciato una massiccia migrazione dai prodotti di Broadcom a seguito di un aumento del canone di circa il 175%.

Oggi, è finalmente arrivato il mio turno. O meglio, quello del mio homelab. So benissimo di essere solo l'ultimo di un'enorme sfilza di persone che parla delle alternative e, più nel dettaglio, di come Proxmox VE (Proxmox Virtual Environment) non mi faccia rimpiangere minimamente ESXi e vCenter.

Per questo, voglio soffermarmi su un aspetto molto personale: cosa mi aspettavo, cosa mi sono trovato davanti, e cosa mi sta facendo innamorare di Proxmox.


Quello di cui parlano tutti

Inizio con i parametri oggettivi, e le feature di cui tutti hanno già parlato, perché vale comunque la pena fare da eco.

Pochissimo Overhead (e si sente!)

Certo, ESXi non ha un ambiente desktop, ma ciò non lo rende certo leggerissimo. In più, per ambienti con vCenter, potete dire addio a quasi 12GB di RAM anche solamente per un deployment di dimensioni ridotte (in questa economia, poi...).

Quando ho iniziato a migrare tutte le mie VM su Proxmox, ho pensato: "dai, adesso finisco di migrare la VM di NextCloud e torno da capo a dodici"... e invece no! La struttura di Proxmox (e probabilmente anche la diversa filosofia di progettazione) lo rendono - a parità di carico - molto più agile di ESXi.

Proxmox si basa su Debian, ma utilizza KVM, che è un hypervisor di tipo 1, integrato direttamente nel kernel di Linux. La parte "più alta" del sistema, sopra a Debian, si occupa di mostrarci la Web GUI di Proxmox, e ciò significa che possiamo usare il sistema operativo host per svolgere qualche compitino aggiuntivo, se lo reputiamo necessario. (lo so, non si fa... ma un homelab è fatto per sperimentare!)

ℹ️
A proposito
Lo sapevate che Hyper-V non è tecnicamente hypervisor di tipo 2?
Quando si abilita Hyper-V, il sistema operativo "host" diventa di fatto una VM privilegiata (chiamata parent partition) e il vero e proprio hypervisor viene caricato "sotto" a Windows!
Ad oggi l'esempio più popolare di hypervisor di tipo 2 è VirtualBox di Oracle.

Gestione cluster built-in (addio vCenter!)

In un ecosistema ESXi, per gestire più nodi in un unico cluster è necessario deployare un'istanza di vCenter. Senza vCenter, infatti, non è possibile:

  • Effettuare migrazioni live di VM (ma si possono deregistrare, spostare e riregistrare, spegnendole)
  • Vedere le VM di più nodi nella stessa schermata (bisogna aprire una scheda del browser per ogni nodo)
  • Impostare HA, DRS e regole di affinità (oltre a vCenter, servono anche le licenze apposite)

Solitamente chi ha un homelab, sia per lo sforzo richiesto per l'acquisto, sia per lo sforzo nel... sopportare le bollette elettriche, non ha un unico server "carrozzato", ma due o più piccoli host (spesso, dei mini-PC).

Di conseguenza, gestire il proprio homelab senza vCenter è complicato, ma dover avere una VM dedicata, che è affamata di CPU e RAM, annulla il vantaggio ipotetico creando un problema reale.

Per fortuna, in Proxmox è possibile creare dei cluster senza installare alcun componente aggiuntivo. Basta scegliere da quale nodo partire, creare il cluster, e effettuare il join dai nodi aggiuntivi (in pochi secondi).

Soprattutto, si tratta di una funzionalità completamente gratuita!

Supporto nativo a container LXC

LXC (Linux Containers) è una tecnologia di virtualizzazione a livello di sistema operativo. In pratica, permette di creare e gestire contenitori isolati su un singolo host Linux, condividendo lo stesso kernel e le risorse della macchina fisica.

Proxmox supporta nativamente i container LXC, che vengono istanziati nello stesso spazio delle VM, riconoscibili da una icona e da un menu di gestione leggermente diversi.

Due parole su LXC

Se la descrizione di LXC vi sembra molto simile a Docker, avete ragione (in parte). La differenza sta principalmente in due cose: che cosa "containerizza" e come viene creato un container:

Se con Docker si possono isolare processi o applicazioni, LXC punta invece ad isolare un intero sistema operativo, con tanto di processi di avvio e daemons. Questo spazio tra il bare-metal e la VM è proprio dove LXC è stato progettato per stare.

Per quanto riguarda il processo di creazione, mentre Docker ha un ecosistema molto sviluppato (tra cui Docker Hub e Docker Compose) per facilitare la creazione di container, LXC non ha un concetto di "immagine" né tantomeno di "ricetta" (compose). La creazione di un container LXC, infatti, avviene tramite comandi lanciati da CLI per installare e configurare il sistema operativo, aggiornarlo ed installare le eventuali applicazioni necessarie.

Per fortuna, la community di Proxmox offre una ricca repository di script utili alla creazione e configurazione di container LXC per gli usi più disparati, che rendono l'esperienza di installazione semplice come l'utilizzo di un docker compose.

Funzioni enterprise, ma in una community edition

L'ultima delle Killer Features di Proxmox di cui tutti parlano è la funzionalità built-in di effettuare i backup di VM e Container LXC.

Mentre in una infrastruttura con ESXi e vCenter è necessario fornirsi di un software di backup come Veeam o Acronis Cyber Protect, se ci si accontenta di effettuare esclusivamente backup full e di una interfaccia di gestione ridotta all'osso, con Proxmox non è necessario acquistare o installare altro.

Per chi preferisce invece avere una gestione più completa, oltre a compressione e deduplica, è possibile installare un Proxmox Backup Server (abbreviato in PBS) completamente gratuito e più leggero di una soluzione dedicata di terze parti.

Se PBS vi sembra interessante, ne parleremo in maniera più approfondita tra poco.


Cose che mi aspettavo diverse...

... o che non mi aspettavo affatto!

Adesso vorrei invece parlare delle cose che mi hanno colpito più personalmente: aspetti che possono essere ritenuti banali per gli altri, ma molto impattanti nel mio caso d'uso, insieme a funzionalità o piccole differenze che mi hanno sorpreso (in positivo o in negativo).

Interfaccia utente

Come descrivere l'interfaccia utente web di Proxmox, se non... funzionale?

Provenendo da vCenter - che comunque non brilla per modernità e raffinatezza - abituarmi all'interfaccia basilare di Proxmox è stato un duro colpo.

Una schermata di vCenter
La schermata analoga su Proxmox

Tuttavia, c'è un motivo se l'interfaccia sembra più spoglia: le operazioni sono più dirette:

  • Vuoi creare una VM? C'è un tasto enorme in alto a destra. Lo premi e nella schermata che ti si apre non devi stare ad espandere tendine, tutto è già visibile, e diviso in step.
  • Vuoi fare un backup? Fai click destro sull'oggetto e premi su Backup now.
  • Vuoi migrare una VM o un Container? Il pulsante Migrate è poco sopra quello per effettuare il backup

Ad ogni modo, dato che anche l'occhio vuole la sua parte, è possibile adattarsi più gradualmente al passaggio su Proxmox installando ProxCenter. Si tratta di un software di terze parti, sviluppato per Proxmox, che espone una interfaccia grafica più moderna ed aggiunge qualche funzionalità molto comoda. Ne parleremo in fondo a questo articolo.

La schermata inventory di ProxCenter

Compatibilità con Windows

Ovviamente Proxmox è perfettamente in grado di gestire una VM con Windows. Tuttavia, durante la creazione della VM e l'installazione del sistema operativo è necessario seguire alcuni passaggi aggiuntivi.

Senza seguire questi passaggi, per esempio, è impossibile installare il sistema operativo in quanto nella ISO di Windows mancano i driver virtIO che permettono di utilizzare i dischi virtuali di Proxmox.

Tuttavia, per fortuna, questi passaggi sono ben documentati dal team di Proxmox (questa, per esempio, è la guida per guest con Windows 10).

Pochi guardrail

Su vCenter, quando si prova a migrare una VM su un datastore che non ha abbastanza spazio disponibile, il sistema blocca l'operazione sul nascere, impedendoti di procedere e avvisandoti chiaramente dell'impossibilità di completare l'azione.

Purtroppo (almeno allo stato attuale) Proxmox non lo fa. Tira dritto, comincia la migrazione fino a terminare lo spazio sul disco, portando al freeze delle altre VM che vi risiedono, e richiedendo in alcuni casi il reset dei sistemi operativi guest.

All'inizio ho reputato gravissima questa mancanza, ma poi ho compreso che Proxmox:

  • dà molto per scontato che tu sappia quello che stai facendo
  • ti offre più libertà (anche quella di sbagliare)
  • non ti costringe a seguire un flusso di lavoro che può starti stretto

ma soprattutto, nella sua Community Edition, non è un sistema Enterprise ed è gratuito. Direi che una mancanza del genere, che verrà sicuramente rivista in futuro, è più che accettabile.

Allocazione disco durante l'installazione

Il wizard di installazione di Proxmox, disponibile anche in versione con interfaccia grafica, è molto semplice da seguire. Per questo, quando l'ho installato sul mio primo nodo, ho premuto compulsivamente "Next" come Homer in quella famosa puntata dei Simpsons.

il picchio perpetuo che Homer usava per non lavorare da casa

Tuttavia ho scoperto a mie spese che, lasciando le impostazioni predefinite, Proxmox riserva una fetta considerevole del disco per il volume LVM, finendo per limitare drasticamente lo spazio che avrei potuto dedicare alle mie macchine virtuali.

Ti stai chiedendo cosa sia un volume LVM? Se ti interessa, in questo mio precedente articolo lo spiego a grandi linee:

Come espandere un volume LVM
Hai esaurito lo spazio sul tuo server Ubuntu e non sai come espandere la partizione? In questa guida ti spiego cos’è LVM e ti accompagno passo-passo nell’espansione del tuo disco, tutto da riga di comando.

Per sfruttare la mia esperienza evitando ad altri di ripetere lo stesso errore, vi consiglio di prestare molta attenzione alla sezione dedicata alla configurazione dello storage durante la fase di installazione: modificate manualmente i parametri premendo il pulsante Options accanto a Target Harddisk.

Di seguito, i valori che ho utilizzato per dischi SSD da 1TB e 500GB:

Disco da 1TB, ipotizzando ~931 GB effettivi

  • hdsize: 931 GB
  • swapsize: 8 GB
  • maxroot: 40 GB
  • minfree: 32 GB
  • maxvz: 931 GB

Disco da 500GB, ipotizzando ~476 GB effettivi

  • hdsize: 476 GB
  • swapsize: 8 GB
  • maxroot: 30 GB
  • minfree: 16 GB
  • maxvz: 476 GB

Adesso, invece, alcuni aspetti che mi hanno sorpreso positivamente

Backup con Proxmox Backup Server

Ho già menzionato Proxmox Backup Server (PBS) come una soluzione gratuita e leggera, ma è solo utilizzandolo quotidianamente che se ne apprezza la vera potenza.

La schermata principale di Proxmox Backup Server

PBS può essere installato come VM all'interno di Proxmox VE, ma è più consigliato installarlo bare-metal su una macchina dedicata.

Il suo punto di forza è che bastano veramente pochi minuti per configurarlo, e per il resto...

Todd Howard durante la presentazione del sistema di crafting di Fallout 4, all'E3 del 2015: "Semplicemente, funziona"

Basta censire il proprio storage su cui salvare i backup - che sia il disco locale della macchina PBS, una share SMB o un endpoint S3-Compliant - e il resto si configura direttamente da Proxmox VE.

Per collegare Proxmox VE a PBS, basta selezionare il proprio Datacenter, andare nella sezione Storage, aggiungere un nuovo target di tipo Proxmox Backup Server inserendo l'IP del server, le credenziali e la fingerprint del certificato, e il gioco è fatto.

Per creare i nostri job di backup invece, basta navigare nella sezione Backup del Datacenter o del singolo nodo, aggiungere un nuovo job, selezionare le VM o i container desiderati e definire la frequenza desiderata.

In tutto questo, la mia parte preferita è la possibilità di creare un job in modalità "Exclude selected VMs". In questo modo, mi basta selezionare gli oggetti che non voglio sottoporre a backup, e tutte le macchine ed i container che creerò saranno automaticamente coperti da backup.

Come tutte le soluzioni di backup che si rispettino, anche le procedure di Restore sono un gioco da ragazzi. Inoltre è possibile ripristinare singoli file recuperandoli direttamente dal backup.

Non siete ancora convinti? Allora sappiate che con PBS i vostri backup sono automaticamente deduplicati e compressi!

Storage di ISO su share SMB

Dovendo spesso creare nuove VM, con vCenter ho sempre avuto bisogno di un datastore condiviso tra i nodi, per avere le ISO a disposizione in qualsiasi momento.

Per farlo, ho creato una LUN sul mio NAS Synology e occupato quindi dello spazio per avere lo stesso dato due volte (ho sullo stesso NAS i file .ISO per altri utilizzi). Questa cosa mi ha sempre dato un po' fastidio, ma purtroppo ho dovuto farci l'abitudine.

Per questo, sono stato piacevolmente sorpreso nello scoprire che con Proxmox è possibile ottenere lo stesso risultato montando direttamente una share SMB, mantenendo quindi i dati in chiaro, ed evitandomi di avere lo stesso dato in due posti diversi.

Per farlo, basta selezionare il cluster (o il singolo nodo, se non si ha un cluster) ed andare in Storage → Add, poi selezionare SMB/CIFS.

Nel wizard di configurazione, basta compilare i dati utili al collegamento alla share, specificando Content: ISO image e aggiungere il nuovo volume.

Proxmox crea automaticamente una cartella template con dentro una cartella iso, in cui basta successivamente copiare (o spostare) i file. Niente di più facile!

Import da ESXi

AKA come fare di necessità virtù

Come avrete notato negli screenshot del paragrafo precedente, tra i vari tipi di storage che è possibile aggiungere c'è "ESXi".

Da Proxmox infatti è possibile mappare i datastore di ESXi per migrare in maniera praticamente automatica e senza sforzo le proprie macchine virtuali. D'altronde, Proxmox è senza dubbio il principale beneficiario di questa migrazione di massa, e il team di sviluppo ha fatto in modo che il processo di "abbandono" dell'ecosistema di VMware fosse il più indolore possibile.

Per farlo basta avere a disposizione indirizzo IP, username e password di un utente di ESXi.

Navigando il datastore appena collegato è possibile infatti avviare il wizard di importazione selezionando il file .vmx della VM da importare, e premendo Import.

Il team di Proxmox ha fatto un lavoro eccezionale nel rendere questo processo fluido, gestendo automaticamente la conversione dei dischi virtuali e configurando i parametri di rete, permettendomi di spostare intere macchine virtuali da un ambiente all'altro senza preoccupazioni. Inoltre hanno scritto una dettagliatissima guida al riguardo!

Migrazioni "trasparenti"

Se c'è una cosa che ho fatto tante, infinite volte con vCenter è spostare VM da un nodo all'altro. Ciò che mi ha sempre dato un enorme fastidio è come vCenter rende conto all'utente dell'avanzamento della migrazione.

Il primo 70% della barra di avanzamento è praticamente finto: si riempie in un istante, per poi bloccarsi e riempirsi al 100% di colpo, una volta terminata la vera e propria migrazione. Quando si ha a che fare con ambienti senza collegamenti in fibra, una migrazione può durare anche diversi minuti, lasciandoti nel dubbio che il processo sia ancora vivo o che si sia incantato nel limbo del networking.

Proxmox invece è il più trasparente possibile: lanciando una migrazione si apre una finestra che mostra il log in diretta della migrazione. In questo modo, si è sempre a conoscenza di che cosa sta facendo il sistema riguardo alla migrazione, e si può stimare quanto manca alla fine del processo.

La schermata di migrazione di Proxmox

Homelab friendly

Ho avuto il (dis)piacere di provare ad installare ESXi su svariato hardware non certificato, soprattutto mini PC, e di incappare inevitabilmente in problemi relativi a driver non supportati, che mi costringevano a creare immagini ISO personalizzate con driver iniettati manualmente.

L'installazione di ESXi su questo HP Elitedesk 800 mini è andata abbastanza liscia...

In certi casi, questo processo diventava una vera e propria sfida tecnica, trasformando una semplice installazione in una caccia al driver compatibile che poteva durare ore.

...ma su questo Intel NUC di decima generazione, è stato un parto!

Proxmox invece, basandosi su Debian, eredita un supporto hardware vastissimo, permettendo di installarlo praticamente su qualsiasi macchina, anche quelle meno indicate (sì, anche su Raspberry Pi).

Questo è un enorme assist all'adozione di Proxmox in ambito homelab, dove spesso ci si ritrova a riciclare hardware eterogeneo che con altri hypervisor rimarrebbe inutilizzato o richiederebbe configurazioni estenuanti.

Infatti, ad oggi Proxmox VE è il virtualizzatore più diffuso nel settore homelab.

extra: ProxCenter

ProxCenter è un control plane molto avanzato, costruito per Proxmox e che permette di avere un'interfaccia web unica per monitorare più cluster, e con una grafica più accattivante.

una schermata di Proxcenter

Cosa offre di più oltre ad essere una GUI per Proxmox:

  • Dashboard personalizzabili, moderne e con elementi che permettono di vedere "a colpo d'occhio" lo stato dei propri cluster.
  • Aggiornamento dei pacchetti degli host in modalità rolling update multi-host, leggermente più curata della funzionalità built-in di Proxmox VE.
  • Alert automatici sull'utilizzo delle risorse con soglie warning e critical.
  • Gestione multi-cluster.
  • DRS (Distributed Resource Scheduler) ossia il bilanciamento automatico degli oggetti all'interno del cluster per uniformare l'utilizzo delle risorse dei vari nodi, ma disponibile solo con licenza enterprise.

Sebbene il progetto sia molto interessante, sto ancora valutando le alternative. ProxCenter infatti al momento non è molto leggero, e non vorrei rischiare di avere un vCenter 2.0 ad occupare le risorse dei miei nodi.


Mi auguro che questo articolo abbia dato la motivazione necessaria per migrare a Proxmox a qualcuno che, come me, nutriva forti dubbi sul vero valore di questo fantastico virtualizzatore che ha giovato enormemente dei vari autogol di Broadcom.

Sto ancora cercando di riorganizzare il mio stack di monitoraggio, per integrare Proxmox al meglio nell'ecosistema che conosco ormai da anni e di cui ho parlato nei miei precedenti articoli:

Installazione di Telegraf
Telegraf è un software open source di InfluxData che raccoglie metriche da servizi e sistemi (compresa la macchina su cui viene installato) per poi esporle tramite un webserver e farle utilizzare da altri servizi.
Installazione di Prometheus
Prometheus è un software open source (github) che immagazzina metriche in un Time-Series DataBase (TSDB) e permette di eseguire query sui dati.
Installazione ed Utilizzo di Grafana
Una guida completa per installare e configurare Grafana su Ubuntu. Segui i passaggi dettagliati per collegare Prometheus e creare da zero la tua prima dashboard di monitoraggio, trasformando i dati grezzi in grafici chiari ed efficaci.

Tuttavia, potrei cogliere l'occasione per provare qualcosa di nuovo... chi lo sa!

Grazie per aver letto il mio articolo, ci vediamo alla prossima!