Contenitore o macchina virtuale: la differenza in una frase e le sue quattro conseguenze

La scelta di solito si fa per abitudine sulle risorse. Eppure la differenza sta in una sola frase, e tutto il resto ne discende.

AtlasPVE ·

Questa voce risponde a

  • proxmox lxc o vm
  • proxmox contenitore o macchina virtuale
  • proxmox vantaggi lxc
  • proxmox quale scegliere
  • proxmox lxc è sicuro

Stai per far girare qualcosa di nuovo su Proxmox e ci sono due opzioni. Entrambe fanno girare un Linux, entrambe stanno affiancate nel pannello, entrambe sembrano fare lo stesso lavoro.

La scelta di solito si fa per abitudine sulle risorse: "un contenitore è più leggero". Vero, ma non è questo a dover decidere.

La differenza sta in una frase: una macchina virtuale porta con sé il proprio nucleo, un contenitore usa quello del server. Tutto ciò che serve sapere discende da questa frase.

Prima conseguenza: dove passa il confine

Il confine della macchina virtuale lo traccia l’hardware. Quello del contenitore lo traccia il nucleo del server.

Questo non vuol dire che un contenitore sia "debole"; dice dove passa il confine. Se un difetto in un software dentro un contenitore vuole raggiungere il server, ciò che deve superare è il nucleo del server. In una macchina virtuale ciò che deve superare è un muro a livello hardware.

La domanda pratica è questa: quanto ti fidi di ciò che stai per far girare? Per un servizio che hai scritto tu o che usi da anni, un contenitore va benissimo. Per qualcosa scaricato che non padroneggi del tutto, una macchina virtuale è il posto migliore.

Seconda conseguenza: non tutto gira in un contenitore

Niente che richieda il proprio nucleo gira in un contenitore. Un software che vuole una versione di nucleo diversa, uno strumento che carica moduli del nucleo, un sistema operativo che non è Linux: tutti richiedono una macchina virtuale.

Non è una questione di preferenze, è conseguenza diretta della frase sopra. Se un contenitore usa il nucleo del server, non puoi chiedergli di cambiare quel nucleo.

Terza conseguenza: la manutenzione li tocca in modo diverso

È la meno nota e quella che più rischia di far male.

Quando aggiorni il motore delle macchine virtuali, le macchine in funzione non ne risentono. Il nuovo motore vale per le macchine avviate dopo quell’aggiornamento. Una notte di manutenzione può quindi passare in silenzio sopra le tue macchine in funzione.

Quando aggiorni lo strato di esecuzione dei contenitori, i contenitori in funzione possono risentirne, perché quello strato lo condividono tutti. Durante l’aggiornamento lo strato di file condiviso può essere rimontato e dentro i contenitori possono comparire brevi errori di accesso.

Non è un’opinione del prodotto, è la conseguenza diretta della stessa frase: se aggiorni qualcosa di condiviso, lo sentono tutti quelli che lo condividono.

Quarta conseguenza: la libertà di movimento

Una macchina virtuale può essere spostata su un altro nodo mentre gira. Un contenitore no: si spegne, si sposta, si riavvia.

Quindi se un lavoro che non tollera interruzioni sta in un contenitore, quel lavoro si fermerà nelle notti di manutenzione. È una cosa da mettere sul piatto quando decidi la collocazione.

La regola pratica

Scegli un contenitore quando ciò che fai girare è un normale servizio Linux che potresti far girare anche sul server, quando ti fidi di lui e quando regge una breve interruzione.

Scegli una macchina virtuale quando serve un nucleo proprio, quando non deve essere interrotta durante la manutenzione, o quando non ti fidi del tutto di ciò che esegui.

La differenza di risorse viene dopo queste tre prove. Che un contenitore consumi meno memoria è vero, ma il costo di un contenitore messo nel posto sbagliato supera di molto quel risparmio.

Che cosa fa Atlas

Atlas porta questa distinzione non come uno slogan ma come comportamento.

Nella valutazione degli aggiornamenti, il motore delle macchine virtuali e lo strato di esecuzione dei contenitori sono trattati a parte. Quando si aggiorna il motore delle macchine, la risposta per quelle in funzione è a livello informativo: non ne risentono, il nuovo motore vale per quelle avviate dopo. Quando si aggiorna lo strato dei contenitori, il livello sale ad avviso e il motivo viene scritto: lo strato condiviso può essere rimontato, valuta di fermare brevemente i contenitori critici.

La stessa distinzione compare nella pianificazione degli spostamenti: per i contenitori lo spostamento in funzione non viene offerto come opzione, viene indicata la catena spegni, sposta, avvia.

Il prodotto quindi non presenta i due come "due varianti della stessa cosa". Si comportano in modo diverso, perciò vengono descritti in modo diverso.

Fonti

La documentazione ufficiale di Proxmox. In inglese, e su questo argomento l’ultima parola è la sua.

Voci collegate

Come si presenta questo dentro Atlas?

Vai alla pagina prodotto