Davide Antonino Giorgio
OS-level virtualization with Linux containers: process isolation mechanisms and performance analysis of last generation container runtime.
Rel. Gianpiero Cabodi. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2020
|
PDF (Tesi_di_laurea)
- Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives. Download (2MB) | Preview |
Abstract: |
L'evoluzione del mondo informatico verso l'adozione massiva di soluzioni cloud ha richiesto lo sviluppo di tecnologie di virtualizzazione atte a soddisfare le necessità di scalabilità e portabilità del software. Questo ha portato alla nascita di nuovi approcci per la virtualizzazione che si adattassero a tali esigenze, supportando così in modo efficiente l'architettura di applicazioni distribuite basate su microservizi. Il nostro lavoro di tesi consiste nello studio della OS-level virtualization, in particolare focalizzandosi sulla sua implementazione attraverso il kernel di Linux. Sono stati quindi analizzati i meccanismi in-kernel d'isolamento che ne permettono il funzionamento, quali namespaces e cgroups. Tramite questi abbiamo sviluppato un tool che permette la creazione di un ambiente isolato dal sistema host per l'esecuzione di un processo, implementando le seguenti funzionalità: isolamento e limitazione delle risorse di sistema tramite l'uso dei namespaces e cgroups, il filtering delle system calls tramite seccomp e la gestione dei privilegi tramite Linux capabilities. Rispetto agli approcci tradizionali basati su Hypervisor, la virtualizzazione a livello di sistema operativo sfrutta un kernel condiviso tra la macchina host e i containers guest, riducendo l'overhead introdotto dalla gestione di un kernel ospite virtualizzato. Non utilizzando più un Hypervisor (o Virtual Machine Monitor) l'isolamento dei container è garantito grazie a meccanismi di isolamento offerti dal kernel stesso. Potremmo quindi dire che una Virual Machine sta ad un Hypervisor come un container sta al kernel della macchina host. Tali soluzioni innalzano però nuove problematiche di sicurezza dovute all'utilizzo di un kernel condiviso. Negli ultimi anni sono dunque state sviluppate delle tecnologie ibride che integrassero l'isolamento ottenuto dalla virtualizzazione tradizionale con i vantaggi ottenuti dalla OS-level virtualization. Queste hanno trovato particolare applicazione nello sviluppo delle container runtime, lo strato di software che si occupa dell'effettiva creazione dei container all'interno di applicativi come Docker o Podman. Il nostro lavoro di tesi continua quindi con l'analisi dell'overhead introdotto dall'adozione di soluzione ibride all'interno delle container runtimes, sia sulle performance che sull'utilizzo delle risorse di sistema. Per questo studio sono state prese in considerazione diverse applicazioni eseguite all'interno di container e, al variare della container runtime utilizzata, ne sono state valutate le performance. Per l'esecuzione dei test sono state scelte due runtime ibride (gVisor, Kata-runtime) e due soluzioni tradizionali (runc, crun). |
---|---|
Relators: | Gianpiero Cabodi |
Academic year: | 2020/21 |
Publication type: | Electronic |
Number of Pages: | 130 |
Subjects: | |
Corso di laurea: | Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering) |
Classe di laurea: | New organization > Master science > LM-32 - COMPUTER SYSTEMS ENGINEERING |
Aziende collaboratrici: | Politecnico di Torino |
URI: | http://webthesis.biblio.polito.it/id/eprint/18661 |
Modify record (reserved for operators) |