GNU/Linux >> Linux Esercitazione >  >> Linux

Che cos'è un contenitore Linux e un hypervisor Linux?

Una macchina virtuale (VM) è un termine abbastanza generico per molte tecnologie di virtualizzazione.

Esistono molte varianti delle tecnologie di virtualizzazione, ma le principali sono:

  • Virtualizzazione a livello di hardware
  • Virtualizzazione a livello di sistema operativo

qemu-kvm e VMWare sono esempi del primo. Impiegano un hypervisor per gestire gli ambienti virtuali in cui viene eseguito un sistema operativo completo. Ad esempio, su un qemu-kvm system puoi avere una VM che esegue FreeBSD, un'altra che esegue Windows e un'altra che esegue Linux.

Le macchine virtuali create da queste tecnologie si comportano come singoli computer isolati per il guest. Questi hanno una CPU virtuale, RAM, NIC, grafica ecc. Che l'ospite ritiene siano l'articolo originale. Per questo motivo, sulle VM possono essere installati molti sistemi operativi diversi e funzionano "out of the box" senza necessità di modifiche.

Mentre questo è molto conveniente, in quanto molti sistemi operativi si installano senza troppi sforzi, ha uno svantaggio in quanto l'hypervisor deve simulare tutto l'hardware, il che può rallentare le cose. Un'alternativa è l'hardware paravirtualizzato, in cui viene sviluppato un nuovo dispositivo e driver virtuale per il guest progettato per le prestazioni in un ambiente virtuale. qemu-kvm fornire il virtio gamma di dispositivi e driver per questo. Uno svantaggio di questo è che il sistema operativo guest deve essere supportato; ma se supportato, i vantaggi in termini di prestazioni sono notevoli.

lxc è un esempio di virtualizzazione a livello di sistema operativo, o container. In questo sistema è installato un solo kernel:il kernel host. Ogni contenitore è semplicemente un isolamento dei processi userland. Ad esempio, un server Web (ad esempio apache ) è installato in un contenitore. Per quanto riguarda quel server web, l'unico server installato è lui stesso. Un altro contenitore potrebbe eseguire un server FTP. Quel server FTP non è a conoscenza dell'installazione del server web, solo che è proprio. Un altro contenitore può contenere l'installazione completa in ambiente utente di una distribuzione Linux (purché tale distribuzione sia in grado di funzionare con il kernel del sistema host).

Tuttavia, non ci sono installazioni separate del sistema operativo quando si utilizzano i container, ma solo istanze isolate di servizi userland. Per questo motivo, non puoi installare piattaforme diverse in un contenitore, niente Windows su Linux.

I contenitori vengono solitamente creati utilizzando un chroot . Questo crea una radice privata separata (/ ) per un processo con cui lavorare. Creando molte radici private individuali, i processi (server web o una distribuzione Linux, ecc.) vengono eseguiti nel proprio filesystem isolato. Tecniche più avanzate, come cgroups può isolare altre risorse come la rete e la RAM.

Ci sono pro e contro in entrambi e molti lunghi dibattiti su quale sia il migliore.

  • I contenitori sono più leggeri, in quanto non è installato un sistema operativo completo per ciascuno; che è il caso degli hypervisor. Possono quindi funzionare su hardware con specifiche inferiori. Tuttavia, possono eseguire solo guest Linux (su host Linux). Inoltre, poiché condividono il kernel, c'è la possibilità che un contenitore compromesso ne possa influenzare un altro.
  • Gli hypervisor sono più sicuri e possono eseguire diversi sistemi operativi perché un sistema operativo completo è installato in ogni VM e gli ospiti non sono a conoscenza di altre VM. Tuttavia, questo utilizza più risorse sull'host, che deve essere relativamente potente.

Un contenitore è un po' come un ambiente chroot, tranne per il fatto che raggiunge un isolamento più completo dello spazio utente. Non fornisce una vera VM, ma un sistema operativo virtuale. Le macchine virtuali creano l'illusione di più macchine, all'interno di ciascuna delle quali un sistema operativo reale e completo può funzionare come se fosse in metallo nudo. "Sistema operativo completo" qui include un kernel. Alcune VM (ad es. QEMU) consentono persino di stimolare diversi tipi di architetture "bare metal".

I contenitori invece creano l'illusione di più kernel, ognuno dei quali esegue un'area utente completa. Potresti, ad esempio, eseguire Debian in un contenitore e Arch in un altro, quindi la prospettiva dall'interno del contenitore è più o meno la stessa di una VM. Tuttavia, puoi eseguire solo un ambiente utente del sistema operativo compatibile con l'unico kernel effettivo, in questo caso Linux. Questo è diverso dalle VM reali, dove puoi eseguire un kernel indipendente e quindi qualsiasi tipo di sistema operativo.

Quindi le vere VM sono più costose, dal punto di vista delle risorse, rispetto ai container; se non hai bisogno di kernel diversi in ogni VM, potresti anche usare un contenitore.

Esistono altri sistemi di virtualizzazione che fanno qualcosa di simile a LXE, come openVZ, ampiamente utilizzato dai fornitori di VPS. Un VPS openVZ è uno spazio utente indipendente che utilizza il kernel del suo sistema operativo host. Questo è il motivo per cui tali VPS sono disponibili in un mucchio di versioni Linux ma nient'altro; devono essere compatibili con il kernel host.

La virtualizzazione in stile OpenVZ e LXC è chiamata virtualizzazione a livello di sistema operativo .

Un hypervisor è un sistema che gestisce macchine virtuali, come VirtualBox, QEMU o Xen. Alcuni hypervisor, come Xen, funzionano su bare metal e non richiedono un sistema operativo host (sebbene possano richiedere un sistema operativo ospitato che funga da interfaccia di controllo). Altri, come VirtualBox e QEMU, vengono eseguiti all'interno di un sistema operativo host. Alcuni, come QEMU, consentono di simulare diverse architetture di macchine; altri, come VirtualBox, no (ovvero l'architettura della VM è sempre la stessa dell'host reale). La simulazione di un'architettura richiede più risorse, proprio come le VM reali richiedono più risorse dei container.

La virtualizzazione in stile hypervisor è chiamata virtualizzazione a livello di piattaforma .


Linux
  1. Che cos'è un server Linux e perché la tua azienda ne ha bisogno?

  2. Che cos'è un comando Chown in Linux e come usarlo

  3. Qual è la differenza tra un container Linux e un'immagine?

  4. Qual è l'attuale runlevel del sistema Linux?

  5. Che cos'è Soft Links e Hard Links nel file system Linux

Sistema operativo Redox:un sistema operativo scritto in Rust

Introduzione al sistema operativo Linux

Linux è un sistema operativo o un kernel?

Storia di Unix e Linux

Che cos'è il file system Linux? Guida facile

Che cosa sono le chiamate di sistema Linux e le funzioni di libreria?