LXC (abbreviazione di Linux Containers) è un ambiente di virtualizzazione a container, che opera a livello del sistema operativo e permette di eseguire diversi ambienti Linux virtuali isolati tra loro (container) su una singola macchina reale avente il kernel Linux.

LXC
software
Logo
Logo
GenereVirtualizzazione (non in lista)
Sviluppatore
  • Kernel: Parallels, IBM, Google Inc., Eric Biederman e altri
  • Userspace: Daniel Lezcano, Serge Hallyn, Stéphane Graber e altri
Data prima versione6 agosto 2008
Ultima versione6.0.0 (3 aprile 2024)
Sistema operativoLinux
LinguaggioLua
Python
C
Bourne shell
LicenzaGNU LGPL v.2.1 (alcuni componenti sotto GNU GPL v.2 e licenza BSD)
(licenza libera)
Sito weblinuxcontainers.org e linuxcontainers.org/lxc

Panoramica modifica

È simile ad altri sistemi di virtualizzazione OS-level presenti in Linux, come OpenVZ e Linux-VServer, ed in altri sistemi operativi Unix, esistenti da tempo: le jail di FreeBSD, le workload partitions AIX e i container di Solaris.

Non si tratta perciò di un sistema di virtualizzazione vero e proprio, che emula un hardware basandosi su hypervisor, e supporta solo la virtualizzazione di sistemi Linux. I container eseguono direttamente istruzioni sulla CPU senza necessitare di meccanismi di emulazione o compilazione just in time, il che comporta un overhead ("carico aggiuntivo") e un utilizzo di risorse più elevato. Oltre che per emulare un intero sistema, LXC può essere utilizzato anche per far girare isolata dal resto del sistema una singola applicazione, differenziando i container di tipo "sistema" da quelli di tipo "applicazione". Diverse delle risorse utilizzate dai container restano in realtà condivise, visto che tutti utilizzano lo stesso kernel, ad esempio librerie di sistema.[1]

LXC e il kernel Linux modifica

Il kernel Linux fornisce due funzionalità fondamentali per LXC

  1. cgroups, che permette di gestire limiti e priorità di utilizzo delle risorse (CPU, memoria, accesso alla memoria, accessi ai dischi, rete) senza dover utilizzare una vera e propria macchina virtuale;
  2. l'isolamento dei namespace (o spazio dei nomi), che permette di isolare tra loro gruppi di processi, affinché non siano loro visibili risorse utilizzate da altri gruppi di processi, come alberi di processi, risorse di rete, user ID e file system montati.[2]

Tali funzionalità sono fornite dal kernel vanilla; la funzionalità cgroups è ad esempio implementata dalla versione 2.6.24. Ciò permette a LXC di poter essere utilizzato senza dover modificare il kernel con patch, come invece accade per soluzioni simili (es. OpenVZ).

PaaS e Docker modifica

I container sono molto utilizzati nei servizi di cloud computing di tipo Platform as a service (PaaS). Uno degli strumenti che permette di pacchettizzare e distribuire un'applicazione e le sue dipendenze tramite container ed utilizza LXC è il software libero Docker.

Problemi di sicurezza modifica

In origine LXC era visibilmente meno sicuro di altre soluzioni simili come OpenVZ. Infatti fino al kernel Linux 3.8 l'utente root di un sistema guest poteva eseguire a piacere codice direttamente sul sistema host coi privilegi massimi, similmente a quanto accade con chroot.[3] Dalla versione 1.0 i container possono venire eseguiti con i privilegi di utente normale sull'host.[4] Tali container hanno dei limiti, in quanto non possono accedere direttamente all'hardware. In ogni caso anche il livello di sicurezza dei container che vengono fatti girare con i privilegi di root è aumentato, in presenza di una configurazione adeguata.[4]

Note modifica

  1. ^ Matt Helsley, LXC: Linux container tools, su ibm.com, IBM developerworks, 3 febbraio 2009. URL consultato il 28 marzo 2015.
  2. ^ Rami Rosen, Resource management: Linux kernel namespaces and cgroups (PDF), su cs.ucsb.edu, maggio 2013. URL consultato il 28 marzo 2015 (archiviato dall'url originale l'11 febbraio 2015).
  3. ^ Marco d'Itri, Evading from linux containers, su blog.bofh.it, 2011. URL consultato il 28 marzo 2015 (archiviato dall'url originale il 9 gennaio 2014).
  4. ^ a b Stéphane Graber, LXC 1.0: Security features [6/10], su stgraber.org, 1º gennaio 2014. URL consultato il 28 marzo 2015.

Voci correlate modifica

Altri progetti modifica

Collegamenti esterni modifica

  Portale Software libero: accedi alle voci di Wikipedia che trattano di software libero