- Che cos'è LXC?
- Per cosa è utile?
- Quali sono le differenze tra LXC e la virtualizzazione comune?
Risposte:
Se per "inglese semplice" intendi persone non tecniche, la differenza non può essere spiegata facilmente. Quei capelli sono troppo fini per spaccarsi senza un'attenta considerazione.
Se per "Inglese semplice" intendi tipi manageriali che parlano con tecnici, e quindi hanno almeno una comprensione passante di argomenti tecnici, invio il seguente verbo:
È una forma diversa di virtualizzazione.
Se guardi VMWare ESXi, si tratta di un hypervisor completo che esegue quella che viene chiamata virtualizzazione completa. Esiste un livello molto piccolo tra i sistemi virtualizzati in esecuzione sull'hardware. Esiste una virtualizzazione hardware completa, in cui il sistema operativo in esecuzione nella macchina virtuale è completamente indipendente dall'hypervisor stesso e viene presentato con tutto l'hardware che si aspetta.
Fai un altro passo avanti e osserva qualcosa come VMWare Player, Workstation, ESX (non ESXi) o VMWare Server e disponi di un sistema operativo completo che fornisce il ruolo di hypervisor. Tuttavia, le macchine virtuali sono ancora presentate con una gamma completa di hardware virtuale.
Un altro approccio è la para-virtualizzazione, che Xen ha seguito per un bel po 'di tempo. In questa forma di virtualizzazione, il sistema operativo guest è consapevole che è virtualizzato ed è stato modificato per funzionare in quell'ambiente. A volte tutto ciò che serve sono speciali driver di para-virtualizzazione. Altre volte sono necessarie modifiche definitive al kernel.
LXC, o Linux Containers, è ancora un altro passo avanti. In questo caso sta eseguendo più istanze dello stesso sistema operativo esatto . Il kernel può essere lo stesso, ma per ogni contenitore del sistema operativo sono in esecuzione più spazi utenti. Ogni contenitore può avere o meno un file system diverso.
I contenitori offrono un modo per fornire una forte separazione della sicurezza tra i processi in un modo che non è disponibile nei sistemi con lo stesso spazio utenti. I sistemi operativi simili a Unix hanno il "chroot jail" da un po 'di tempo, ma non forniscono la separazione dei processi o la capacità di limitare le risorse consumate dai processi nel carcere. Confezionando tali processi, l'utilizzo delle risorse può essere limitato, è possibile assegnare loro indirizzi IP discreti e le vulnerabilità di sicurezza che sfruttano lo spazio utente sono contenute dal resto del sistema.
Dove useresti LXC rispetto ad altri tipi di virtualizzazione? Dipende, ma LXC dovrebbe fornire meno penalità di virtualizzazione rispetto a qualsiasi altro metodo di vitualizzazione in quanto è lo stesso kernel che media tutte le chiamate dello spazio utente piuttosto che un hypervisor che finge di essere hardware per un gruppo di immagini del sistema operativo che si aspettano di parlare con l'hardware fisico. Quindi, se hai un sacco di elaborazione che richiede la stessa versione del sistema operativo e può essere riavviata allo stesso tempo per gli aggiornamenti, LXC potrebbe fornire un modo economico per eseguire tutto ciò in modo sicuro e con la gestione delle risorse.
LXC è un mezzo per isolare sistemi / processi nel kernel. Il sistema è bloccato in un "contenitore" in modo che non possa interagire con nulla al di fuori di quel contenitore. Da qui il nome Linux Containers.
Potrebbe essere utile per molte cose, una delle quali sarebbe quella di isolare i servizi in esecuzione su una macchina. Se uno di questi servizi fosse compromesso, il sistema host stesso (insieme agli altri servizi in esecuzione nei propri LXC) non sarebbe interessato. Potrebbe anche essere usato come un mezzo stupido per dare a ciascun utente l'accesso root al proprio sistema, senza preoccuparsi che interagiscano tra loro.
La maggior parte delle altre virtualizzazioni "comuni" impone un elevato sovraccarico di utilizzo delle risorse a causa della necessità di emulare i dispositivi hardware. LXC non richiede alcun tipo di emulazione per i dispositivi hardware, poiché ad ogni LXC viene concesso un accesso diretto limitato / nessun hardware. Ogni sistema è "in esecuzione" sull'host, ma non può influire su nulla al di fuori del suo contenitore. Questo tipo di virtualizzazione è stata chiamata virtualizzazione a livello di sistema operativo (google it). Il che significa essenzialmente sovraccarico molto piccolo / inesistente per l'esecuzione di un contenitore Linux. Quindi puoi avere centinaia di LXC su una data macchina, ma esauriresti abbastanza rapidamente le risorse usando un software "comune" per macchine virtuali.
In realtà ho più familiarità con Linux-Vserver ma la teoria è praticamente la stessa.
Il modo più semplice per capirlo è imparare cosa fa Chroot. chroot ti permette di "accedere" a una cartella di un sistema simile a unix, come se fosse l'intero sistema a sé stante. In altre parole:
se hai:
/
/boot
/etc
/home
...
ecc., quindi puoi aggiungere una directory some_new_install:
/
/some_new_install
/boot
/etc
/home
/usr
...
/boot
/etc
/home
/usr
...
e accedi a / some_new_install. Quindi / some_new_install / etc è il nuovo / etc, per esempio, e l'originale / etc è nascosto e (per lo più) inaccessibile. / usr / bin potrebbe essere diverso dall'originale, con programmi diversi. MySQL potrebbe essere lo stesso programma in / usr / bin / mysql, ma con dati diversi in / var / lib / mysql.
Il filesystem è stato virtualizzato; hai diviso il tuo filesystem originale, condividendo le sue risorse, isolando quelle risorse da altre risorse virtualizzate.
Questo è davvero fantastico. Invece di eseguire una copia completamente nuova e virtuale di unix, solo per eseguire un programma aggiuntivo, puoi saltare in un filesystem virtuale ed eseguirlo sullo stesso kernel, stesse librerie (se hai usato i collegamenti simbolici), ecc. È MOLTO più efficiente di qualcosa come Xen o VirtualBox.
Il problema è che, se uno di quei programmi, ad esempio MySQL, va fuori di testa e inizia a utilizzare tutta la CPU e lo scambio su disco, influenzerà comunque il resto della macchina, perché solo il filesystem era virtualizzato, non la CPU o prestazioni del disco sottostante. Anche gli indirizzi IP e le porte non sono virtualizzati, quindi se due programmi inviano informazioni sulla rete, lo faranno dagli stessi IP, causando potenzialmente conflitti. Allo stesso modo, se due copie di mysql provano ad ascoltare su una porta, la seconda fallirà, perché la porta è in uso.
LXC risolve questo problema virtualizzando non solo il filesystem, ma anche ips / porte / interfacce di rete, CPU, utilizzo della memoria, ecc.
LXC non è sicuro come le macchine virtuali complete, ma in genere è la soluzione superiore. Dopotutto, i sistemi operativi si basano sulla condivisione sicura delle risorse. Il più delle volte, è sciocco eseguire più sistemi operativi per farlo - abbiamo solo bisogno di un sistema operativo migliore con un migliore isolamento. Questo è ciò che offrono LXC e strumenti simili.