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


10

Ho guardato il sito stackexchange ma non sono riuscito a trovare nulla. Ho guardato la voce di Wikipedia sul contenitore Linux https://en.wikipedia.org/wiki/LXC e l'hypervisor https://en.wikipedia.org/wiki/Hypervisor ma la spiegazione di entrambi va oltre una persona che non ha lavorato su nessuno capirà. Ho anche visto http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun ma anche questo non lo spiega.

Ho giocato con VM come virtualbox. Una delle idee di partenza per la mia comprensione limitata potrebbe essere stata per le macchine virtuali era forse quella di testare il software in un ambiente sandbox (Avere una scatola Solaris quando non è possibile acquistare / permettersi di avere la macchina e avere ancora un'idea di come il software che si sta sviluppando perché quell'hardware di destinazione funziona.) Pur essendo limitato, se ne serviva. Questo è probabilmente uno dei modi in cui ha fatto il salto anche nel cloud computing. Le domande sono ampie, quindi è così che lo distillare -

Qualcuno può spiegare cos'è un hypervisor e un contenitore * nix (se possibile con analogie)?
Un hypervisor * nix è uguale alla macchina virtuale o c'è una differenza?

Risposte:


9

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

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

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

qemu-kvme VMWaresono esempi del primo. Impiegano un hypervisor per gestire gli ambienti virtuali in cui è in esecuzione un sistema operativo completo. Ad esempio, su un qemu-kvmsistema puoi avere una VM con FreeBSD, un'altra con Windows e un'altra con 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 sia l'articolo originale. Per questo motivo, molti sistemi operativi diversi possono essere installati sulle macchine virtuali e funzionano "out of the box" senza modifiche necessarie.

Sebbene questo sia molto conveniente, in quanto molti sistemi operativi verranno installati 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 para-virtualizzato, in cui un nuovo dispositivo virtuale e driver sono sviluppati per il guest progettato per le prestazioni in un ambiente virtuale. qemu-kvmfornire la virtiogamma di dispositivi e driver per questo. Un aspetto negativo di questo è che il sistema operativo guest deve essere supportato; ma se supportati, i vantaggi in termini di prestazioni sono eccezionali.


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 dell'utente. Ad esempio, un server Web (ad esempio apache) è installato in un contenitore. Per quanto riguarda quel web server, l'unico server installato è esso stesso. Un altro contenitore potrebbe eseguire un server FTP. Quel server FTP non è a conoscenza dell'installazione del web server - solo è proprio. Un altro contenitore può contenere l'installazione completa dell'utente di una distro Linux (purché tale distro sia in grado di funzionare con il kernel del sistema host).

Tuttavia, non ci sono installazioni separate del sistema operativo quando si usano i container - solo istanze isolate di servizi per l'utente. Per questo motivo, non è possibile installare piattaforme diverse in un contenitore, senza Windows su Linux.

I contenitori vengono generalmente creati utilizzando a chroot. Questo crea una radice privata ( /) separata per un processo con cui lavorare. Creando molte singole radici private, i processi (web server o una distribuzione Linux, ecc.) Vengono eseguiti nel proprio file system isolato. Tecniche più avanzate, come l' cgroupsisolamento di altre risorse come rete e RAM.


Ci sono pro e contro di entrambi e molti dibattiti di lunga data 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, esiste la possibilità che un contenitore compromesso possa influire su un altro.
  • Gli hypervisor sono più sicuri e possono eseguire diversi sistemi operativi poiché in ciascuna VM è installato un sistema operativo completo e i guest non sono a conoscenza di altre VM. Tuttavia, questo utilizza più risorse sull'host, che deve essere relativamente potente.

2

Un contenitore è un po 'come un ambiente chroot tranne 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 delle quali un sistema operativo reale e completo può funzionare come su bare metal. "Sistema operativo completo" qui include un kernel. Alcune macchine virtuali (ad esempio 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. Ad esempio, è possibile eseguire Debian in un container e Arch in un altro, quindi la prospettiva all'interno del container è molto simile a quella di una VM. Tuttavia, è possibile eseguire solo un'area utente del sistema operativo compatibile con un kernel reale, in questo caso Linux. Questo è diverso dalle macchine virtuali reali, dove è possibile eseguire un kernel indipendente e quindi qualsiasi tipo di sistema operativo.

Quindi le macchine virtuali reali sono più costose, in termini di risorse, rispetto ai container; se non hai bisogno di kernel diversi in ogni VM, puoi 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 è un'area utente indipendente che utilizza il kernel del suo sistema operativo host. Questo è il motivo per cui tali VPS sono disponibili in un sacco 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 come 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, non lo fanno (ovvero l'architettura della VM è sempre la stessa dell'host reale). La simulazione di un'architettura richiede più risorse, così come le macchine virtuali reali richiedono più risorse dei container.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.