Virtualizzazione. Tanenbaum, A.S. and Bos, H. Modern Operating Systems, fourth edition. Pearson, Chapter 7, Virtualization and the Cloud

Documenti analoghi
Tecnologie di virtualizzazione

Virtualizzazione. Orazio Battaglia

Virtualizzazione e macchine virtuali. Presentata da Bernardo Lombardi

Indice generale. Introduzione...xiii. Perché la virtualizzazione...1. Virtualizzazione del desktop: VirtualBox e Player...27

Cenni sulla virtualizzazione

IBM Corporation

Architetture software. Virtualizzazione

Linux Virtuale. Virtualizzazione, ovvero?

Cenni sulla virtualizzazione

Allegato Tecnico BaaS/CBaaS

Server LDAP. File Server. Domain Controller. Installazione di una piattaforma Linux Alessandro Brusò 24/05/2012

Virtualizzazione e Macchine Virtuali

Sistema operativo & file system 1

2. VIRTUALIZZAZIONE MEDIANTE PARTIZIONAMENTO

Tecniche di virtualizzazione di processori Intel-AMD. Gianluca Guida

UNIVERSITÀ DEGLI STUDI DI FIRENZE FACOLTÀ DI INGEGNERIA

Sistema operativo. Avere un architettura multi-core è un vantaggio

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Macchine Virtuali in pratica

Il Sistema Operativo. Informatica Sistema Operativo 1

ANALISI DELLE TECNOLOGIE INTEL-VT E AMD-V A SUPPORTO DELLA VIRTUALIZZAZIONE DELL'HARDWARE

Virtualizzazione con KVM. Reggio Emilia - Linux Day 2014 Stefano Strozzi KVM

Allegato Tecnico BaaS/CBaaS

3. PRODOTTI PER LA VIRTUALIZZAZIONE

Sistema Operativo (Software di base)

Informatica Generale 06 - Introduzione ai Sistemi Operativi

Capire Networking virtuale in VMware Workstation 9. Introduzione alle reti virtuali in VMware Workstation

Telephony Appliance BNTA 2.0 Guida Rapida per l installazione

Il Sistema Operativo

Configurazione di riferimento di IP Office Server Edition IP Office 8.1

I sistemi operativi. Prof. Daniele Contarino

Domande e risposte. Sommario. Autodesk Revit Autodesk Revit LT

LA VIRTUALIZZAZIONE E I SUOI ASPETTI DI SICUREZZA

Il cloud server, affidabile senza rinunciare a flessibilità e velocità

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Macchine Virtuali. Docente: Fabio Tordini

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

La rinomata azienda di caratura mondiale QNAP è molto lieta di poter annunciare la disponibilità dei nuovi modelli

Colla MGC Guida all installazione

Sistema operativo (SO)

Il software di sistema

Introduzione. Virtualizzazione. Fabio Proietti (c) 2014 Licenza:

27/03/2013. Contenuti

Server mini-tower Dell PowerEdge T20: domande frequenti

Gerarchia fisica di memoria 1. Gerarchia fisica di memoria 2. Gerarchia fisica di memoria 3. Ricapitolazione di concetti base

VIRTUALIZE IT. - digibyte@digibyte.it

Informatica WINDOWS. Francesco Tura F. Tura

VM Explorer 6.3: backup per VM con vsphere e Hyper-V

Guida all installazione degli Hard Disk SATA ed alla configurazione del RAID

Requisiti di sistema Per medie e grandi aziende

Protezione del Kernel Tramite Macchine Virtuali

(SINTESI DELL APPALTO)

VIRTUAL INFRASTRUCTURE DATABASE

Configurazione di una LAN in ambiente Windows

Capitolo 1: Introduzione

Architettura di un sistema operativo

VIRTUALIZZAZIONE LUG - CREMONA. Linux Day - 25 Ottobre 2008

File Leggimi di Parallels Tools

Introduzione. Virtualizzazione. Fabio Proietti (c) 2014 Licenza:

Input/Output (Cap. 7, Stallings)

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Capitolo 6 Le infrastrutture SoftWare

Cloud e strumenti collaborativi. Roberto Salvatori Università di Teramo

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

SERVIZIO DI ACCESSO ALLA RETE CSI-RUPAR TRAMITE VPN SSL

Dr. Andrea Niri aka AndydnA ANDYDNA.NET S.r.l.

Autore: Bandiera Roberto 2016

Sistema Operativo. Alma Mater Studiorum Università di Bologna - Fondamenti di Informatica T (a-k)

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Corso di Informatica

IL SOFTWARE DI SISTEMA

Lezione 2 Chiamate di procedura e risposta alle interruzioni

Guida all'installazione di Ubuntu 10.10

Il software: Istruzioni per il computer

Real-Time Systems GmbH (RTS) Partition where you can Virtualize where you have to. Real Time Hypervisor

SERVIZIO DI MIGRAZIONE E INSTALLAZIONE NUOVA INFRASTRUTTURA SOFTWARE DATABASE ORACLE CIG Z8F0DE9926

Manuale Utente Impostazione router Tele-assistenza

Informatica e Informatica di Base

Introduzione ai sistemi operativi

Protezione continua dei dati per i ReadyNAS OS 6

I Sistemi Operativi. Installazione Ubuntu Linux su Macchina Virtuale

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Sistemi a processori multipli

BitDefender Business Security

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria

Tecnologie per la Virtualizzazione. Ernesto Damiani, Claudio A. Ardagna Lezione 3

Cloud Service Factory

Tecnologie per la Virtualizzazione. Ernesto Damiani, Claudio A. Ardagna Lezione 2

Overview dei sistemi di virtualizzazione

NetWare 6. Novell. Installazione e upgrade. GUIDA RAPIDA

Le distribuzioni GNU/Linux

OpenStack. Gestione Immagini Virtuali. Marco Caberletti. Formazione MCloud WP1 Ancona Marzo 2013

Virtualizzazione vs. Cloud Computing

Introduzione al Calcolo Scientifico

Quando adottare un sistema di virtualizzazione in azienda

Programma di installazione Guida per l'utente

Parte I. Ibrido MPLS. Figura 1.1

Sistema operativo. Interazione con il SO

Quaderni per l'uso di computer

Transcript:

Luca Cabibbo Architettura dei Sistemi Software dispensa asw620 marzo 2016 This book is about Xen. It s not about Zen. But if all goes well, this book will make you happy. C. Takemura and L.S. Crawford 1 - Fonti Tanenbaum, A.S. and Bos, H. Modern Operating Systems, fourth edition. Pearson, 2015. Chapter 7, Virtualization and the Cloud Smith, J.E. and Nair, R. Virtual Machines: Versatile Platforms for Systems and Processes. Morgan Kaufmann, 2005. Coulouris, G, Dollimore, J., Kindberg, T., and Blair, G. Distributed Systems: Concepts and Design, fifth edition. Pearson, 2012. Chapter 7, Operating System Support [SAP] Chapter 26, Architecture in the Cloud Bass, L., Weber, I., and Zhu, L. DevOps: A Software Architect s Perspective. Addison-Wesley, 2015. Chapter 2, The Cloud as a Platform Siti web di diversi sistemi di virtualizzazione 2

- Obiettivi e argomenti Obiettivi introdurre la virtualizzazione descrivere alcuni sistemi di virtualizzazione Argomenti introduzione alla virtualizzazione tecniche di virtualizzazione sistemi di virtualizzazione discussione 3 * Introduzione alla virtualizzazione La virtualizzazione consente a un singolo computer reale di ospitare più computer virtuali chiamati macchine virtuali ciascuna macchina virtuale è un computer virtuale in grado di eseguire un proprio sistema operativo e dei propri servizi e applicazioni La virtualizzazione è un concetto importante soprattutto nei sistemi distribuiti e nel cloud è un modo per eseguire più sistemi operativi, servizi e applicazioni in uno stesso computer la virtualizzazione sostiene diverse qualità importanti tra cui scalabilità e disponibilità la virtualizzazione è una tecnologia abilitante fondamentale del cloud computing dove gli utenti accedono a risorse di calcolo virtuali 4

In generale, la virtualizzazione ha lo scopo di fornire l accesso a un insieme di risorse computazionali virtuali a partire da un insieme di risorse computazionali reali è possibile virtualizzare risorse diverse come reti e storage per es., la virtualizzazione effettuata da un file system, oppure una Virtual Private Network la virtualizzazione delle risorse di solito è basata sull introduzione di uno strato di indirezione tra le risorse reali e l utente/consumatore delle risorse virtuali 5 di sistema In particolare, la virtualizzazione può essere applicata a un intera piattaforma hardware questo è il contesto in cui ha avuto l impatto maggiore la virtualizzazione di sistema (system virtualization) chiamata anche virtualizzazione dell hardware (hardware virtualization) ha lo scopo di fornire una o più macchine virtuali (virtual machine, VM) sopra a una macchina fisica reale macchina o sistema vanno intesi come l hardware di un computer che è ciò che viene appunto virtualizzato ciascuna VM deve essere poi dotata di un proprio sistema operativo (operating system o OS) e dei propri servizi e applicazioni in questa dispensa ci concentreremo soprattutto sulla virtualizzazione di sistema 6

Un esempio di computer non virtualizzato sul computer è installato un certo sistema operativo le applicazioni sono specifiche per la particolare piattaforma hardware-software application application application operating system hardware 7 Un esempio di computer virtualizzato il computer reale è detto host (ospitante) mentre la macchina virtuale è detta guest (ospitata) il software di virtualizzazione è chiamato virtual machine monitor (VMM) o hypervisor guest vmm guest application guest application guest operating system virtualizing software application host host operating system hardware 8

Un altro esempio, in cui la macchina host ospita più macchine virtuali guest ciascuna VM guest esegue un proprio OS che può anche essere diverso da VM a VM (ma anche lo stesso) l OS eseguito da una VM guest può anche essere diverso da quello eseguito dal computer host (ma anche lo stesso) guest application guest application guest application guest application guest operating system guest operating system virtualizing software host operating system hardware 9 Hypervisor di tipo 1 e 2 Due tipi principali di hypervisor type 1 (native VMM): eseguito direttamente dall hardware host VMWare vsphere, Xen, VM/370, più efficiente ma più complesso type 2 (hosted VMM/hosted hypervisor): eseguito dall OS host VMWare Workstation, Oracle VM Virtualbox, orientato all uso personale ma più semplice guest application guest application guest application guest application guest operating system 10 guest operating system type 1 hypervisor hardware type 2 hypervisor host operating system hardware

di processo La virtualizzazione di sistema non è l unica forma di virtualizzazione un altra forma è la virtualizzazione di processo (process virtualization), in cui ogni macchina virtuale ospita un processo individuale anziché un intero sistema operativo un caso comune è quello della Java Virtual Machine (JVM) native application java application JVM operating system java application JVM non ci occuperemo ulteriormente di virtualizzazione di processo hardware 11 basata su contenitore Inoltre, nella virtualizzazione basata su contenitore (containerbased virtualization o OS-level virtualization) lo strato di virtualizzazione gestisce un insieme di contenitori (container) ogni contenitore è un computer dotato di un kernel di OS virtuale (il kernel dell OS host) in un contenitore è poi possibile installare un OS (compatibile con quel kernel) ed eseguire applicazioni e servizi container app app OS libs OS libs virtualizing software host operating system hardware ci occuperemo di virtualizzazione basata su contenitore in un altra dispensa 12

- Applicazioni della virtualizzazione Un applicazione comune della virtualizzazione è la server consolidation si consideri un organizzazione con un sistema distribuito composto da, per es., con un server web, un server di basi di dati, un server per la posta elettronica, ecc. ciascun server è in esecuzione su un computer diverso ci sono buoni motivi per questo per es., per distribuire il carico, per l affidabilità e la sicurezza ma anche per poter usare un OS o uno stack software differente per ciascun server tuttavia, questa soluzione è costosa e difficile da gestire 13 Applicazioni della virtualizzazione Un applicazione comune della virtualizzazione è la server consolidation una soluzione alternativa è avere i server in esecuzione su un singolo computer virtualizzato, ciascuno in una VM diversa i server fisici separati (spesso sottoutilizzati) sono convertiti in VM in un infrastruttura dinamica basata su un pool di risorse computazionali condivise l hypervisor garantisce l isolamento tra le diverse VM l affidabilità peggiora ma in ogni caso l esperienza dice che la maggior parte delle interruzioni di servizio sono dovute a guasti software e non hardware questa soluzione porta a un utilizzo maggiore delle risorse, maggiore flessibilità e responsività nonché a risparmi significativi (di equipaggiamento, energia, spazio, di costi di gestione, ) 14

Applicazioni della virtualizzazione Altre applicazioni comuni della virtualizzazione fornire un ambiente di esecuzione a un applicazione legacy (application consolidation) per es., a seguito della migrazione a una nuova piattaforma hardware/software creare ambienti di esecuzione multipli, ciascuno con il proprio OS e un proprio stack software nonché con una specifica quantità di risorse assegnate per supportare lo sviluppo di sistemi software distribuiti lo sviluppatore può eseguire più VM nel suo PC per supportare il testing e la QA (quality assurance), in ambienti multipli e separati eseguire applicazioni non sicure (sandboxing) compreso il software che si sta sviluppando nel contesto dell hosting di servizi web più in generale, nel contesto del cloud computing 15 - Storia La virtualizzazione è nata negli anni settanta (o anche prima) nell ambito dell OS VM/370 per il mainframe System/370 che ha poi portato all attuale OS z/vm per la famiglia z/system inizialmente, una soluzione di ripiego per consentire l uso di un computer a più utenti perché il sistema di timesharing era stato consegnato in ritardo ed era grosso e lento oggi, un singolo sistema z/vm può gestire 25000 o più piccole VM (dato del 2012) La virtualizzazione dei sistemi x86 è invece nata alla fine degli anni novanta seguendo uno sviluppo completamente diverso infatti lo sviluppo di VM/370 era relativo a una piattaforma hardware/software specifica (completamente prodotta da IBM) la virtualizzazione x86 è invece relativa a prodotti hardware e software estremamente eterogenei (compresi la moltitudine di OS e di dispositivi con i loro driver) 16

- Requisiti per la virtualizzazione Un hypervisor deve fornire l illusione che ogni VM agisca come un computer reale deve essere possibile fare il boot di una VM, e poi installare un OS arbitrario nonché delle applicazioni e/o servizi come in un computer reale Inoltre un hypervisor dovrebbe fornire questa illusione in modo efficace ed efficiente, con queste caratteristiche fedeltà il comportamento di un programma su una VM dovrebbe essere identico a quello su un computer reale sicurezza l hypervisor dovrebbe avere controllo completo delle risorse virtualizzate efficienza la maggior parte del codice della VM dovrebbe essere eseguito direttamente dal computer host, senza intervento dell hypervisor poiché anche le prestazioni sono importanti 17 * Tecniche di virtualizzazione Un computer è composto da diverse risorse (CPU, memoria, I/O, reti, storage) per ciascun tipo di risorsa sono state realizzate più tecniche di virtualizzazione di conseguenza, un hypervisor può offrire più opzioni di virtualizzazione per ciascuna risorsa questa sezione descrive alcune di queste tecniche e opzioni di virtualizzazione virtualizzazione del processore, della memoria, dell I/O (in particolare dello storage e della rete) immagini/virtual appliance snaphshot/checkpoint migrazione di VM 18

- del processore Un processore qui ci riferiamo soprattutto ai processori x86 è caratterizzato dalla sua ISA (Instruction Set Architecture) l ISA definisce le istruzioni del processore e uno stato (registri e memoria) le istruzioni hanno effetto anche su questo stato un processore può operare almeno in due modi il kernel mode è pensato per il kernel dell OS e consente l esecuzione di tutte le operazioni lo user mode è pensato per le applicazioni (ma è usato anche dal resto dell OS) e non consente l esecuzione di alcune istruzioni per es., quelle che riguardano l I/O, la protezione della memoria e disabilitare le interruzioni 19 del processore Un programma utente è composto da istruzioni utente eseguite in user mode chiamate di sistema (ovvero all OS) un tipo speciale di chiamate di procedura che vengono catturate (trap) ed eseguite dal kernel in kernel mode (alla fine della chiamata di sistema si tornerà in user mode) anche alcune istruzioni utente possono essere catturate e gestite dall OS per es., a causa di un page fault 20

del processore Intuitivamente, la virtualizzazione richiede che l esecuzione di alcune istruzioni del kernel dell OS guest vengano catturate dall hardware e delegate all hypervisor anziché essere eseguite direttamente dal processore per es., se l OS guest di una VM esegue un istruzione per disabilitare le interruzioni, allora non vanno disabilitate le interruzioni dell host fisico, ma piuttosto vanno disabilitate (in modo virtuale) le interruzioni solo in quella VM che sono rappresentate da un registro nella struttura dati per il processore virtuale gestita dall hypervisor e non da un flag in un registro del processore fisico per es., l OS guest non deve poter modificare in modo arbitrario la MMU (Memory Management Unit) dell host, altrimenti potrebbe accedere a qualunque area della memoria fisica 21 del processore Popek e Goldberg hanno dimostrato nel 1974 una condizione sufficiente per una virtualizzazione di sistema effettiva le istruzioni privilegiate sono quelle che causano un trap all OS se eseguite in user mode le istruzioni sensibili sono quelle che si comportamento diversamente se eseguite in kernel mode o user mode per es., quelle relative all I/O e all impostazione della MMU un processore è virtualizzabile se le istruzioni sensibili sono un sottoinsieme delle istruzioni privilegiate in altre parole, se quando si cerca fare in user mode qualcosa che non si dovrebbe fare in user mode, allora il processore se ne accorge e causa un trap il processore dell IBM/370 è virtualizzabile in questo senso invece i processori x86 non erano inizialmente virtualizzabili lo sono solo dal 2005, quando sono state introdotte le tecnologie Intel VT-x e AMD SVM 22

del processore Tecniche di virtualizzazione dei processori virtualizzazione dell ISA (emulazione della CPU) ogni istruzioni guest viene tradotta nell ISA dell host e poi eseguita (binary translation) poco efficiente e comunque oggi poco importante, grazie all ampia diffusione dei processori x86 (ma ora ci sono anche gli ARM) si recupera un po di efficienza traducendo blocchi opportuni di istruzioni e facendo il caching delle istruzioni tradotte 23 del processore Tecniche di virtualizzazione dei processori virtualizzazione full combina la traduzione binaria e l esecuzione diretta la maggior parte delle istruzioni del guest vengono eseguite direttamente dal processore host le istruzioni non virtualizzabili del kernel vengono sostituite da nuove sequenze di istruzioni (o da chiamate all hypervisor) che provocano l effetto desiderato nell hardware virtuale (anziché su quello fisico) consente di eseguire un OS non modificato anche se il processore non è virtualizzabile 24

del processore Tecniche di virtualizzazione dei processori paravirtualizzazione o virtualizzazione assistita dall OS (guest) l OS guest viene modificato per eliminare tutte le istruzioni problematiche del suo kernel, sostituendole con chiamate all hypervisor le istruzioni del guest poi sono eseguite direttamente dal processore host una tecnica usata con gli OS Linux, di cui è disponibile il codice sorgente ma non con gli OS Windows 25 del processore Tecniche di virtualizzazione dei processori virtualizzazione assistita dall hardware (trap-and-emulate) richiede l uso delle moderne tecnologie di virtualizzazione dei processori x86 (Intel VT-x e AMD SVM) con queste tecnologie, le istruzioni privilegiate e sensibili dell OS guest possono essere catturate automaticamente dall hypervisor, eliminando la necessità della traduzione binaria e/o della paravirtualizzazione (l OS guest non richiede modifiche) tuttavia i trap sono piuttosto onerosi per questo, alcuni prodotti di virtualizzazione basati su questa tecnica ricorrono ancora parzialmente anche alla traduzione binaria 26

del processore La figura illustra la situazione nel caso della virtualizzazione assistita dall hardware per un hypervisor di tipo 1 virtual machine host guest app guest OS type 1 hypervisor guest virtual user app mode virtual kernel mode trap on privileged instructions hardware user mode kernel mode 27 del processore Nel caso di un hypervisor di tipo 2, la situazione è un po diversa, perché bisogna capire la relazione tra l hypervisor e l OS host per es., nel caso di VMware Workstation, l hypervisor funziona in parte in user mode e in parte in kernel mode dunque come pari dell OS host quando l hypervisor è in esecuzione in kernel mode, si impadronisce del contesto del processore (registri privilegiati, gestori delle eccezioni, spazio di indirizzamento, ) salvo poi restituirlo all OS host (world switch) quando opportuno per es., quando termina il tempo dedicato all hypervisor oppure quando l hypervisor ha bisogno di aiuto dall OS host (per es., per chiedere l esecuzione di un operazione di I/O a un driver dell OS host) 28

del processore di processori multi-core e/o di computer multiprocessore la virtualizzazione è particolarmente efficace nel caso di processori multi-core e di computer multi-processore i processori fisici (con i loro core) vengono virtualizzati in CPU virtuali (virtual CPU o vcpu) e assegnati alle VM ogni vcpu ha un solo core ad ogni VM possono essere assegnate una o più vcpu nell assegnazione di una vcpu ad una VM si può specificare la quota percentuale (minima e massima) nell uso della vcpu un sistema multi-processore viene virtualizzato in un sistema multi-computer 29 Esempi di hypervisor Ecco alcuni esempi di hypervisor per sistemi x86, con il tipo e il metodo di virtualizzazione del processore utilizzato Metodo di virtualizzazione Hypervisor di tipo 1 Hypervisor di tipo 2 senza supporto HW Paravirtualizzazione con supporto HW Vecchio VMware ESX Server Vecchio Xen VMware vsphere (nuovo ESXi Server), nuovo Xen, Microsoft Hyper-V Vecchio VMware Workstation Nuovo VMware Workstation, Oracle VM VirtualBox, VMware Fusion, Parallels, KVM 30

- della memoria Molti sistemi operativi moderni supportano la memoria virtuale il mapping di pagine nello spazio di memoria virtuale nelle pagine della memoria fisica in caso di virtualizzazione, bisogna gestire un doppio livello di virtualizzazione della memoria fisica perché ogni VM ha una propria memoria virtuale il che non è banale oggi i processori forniscono un supporto hardware a questa virtualizzazione annidata della memoria con le tecnologie Intel EPT e AMD NPT ulteriori tecniche per la gestione efficiente della memoria deduplicazione delle pagine in caso di pagine identiche in VM diverse) ballooning l hypervisor forza l OS guest a prendere decisioni sulla gestione della memoria virtuale 31 - dell I/O L hypervisor mostra alle sue macchine virtuali la disponibilità di un certo numero di dispositivi per es., dischi e schede di rete di solito l hypervisor non mostra alle VM i dispositivi hardware presenti fisicamente nell host, perché questo è problematico piuttosto, l hypervisor mostra a ciascuna VM un insieme di dispositivi virtuali, che potrebbero essere diversi da quelli presenti fisicamente sull host (per es., un disco SATA viene mostrato come un disco IDE) e che sono configurabili separatamente per ciascuna VM inoltre, l hypervisor può mostrare alle VM anche dei dispositivi virtuali per cui non esiste una controparte fisica equivalente (per es., uno switch virtuale, oppure mostrare un immagine ISO come un lettore CD/DVD) l OS guest accede a questi dispositivi virtuali mediante i propri driver, come se fossero dispositivi reali 32

dell I/O Le operazioni di I/O per questi dispositivi virtuali vengono catturate dall hypervisor, che le deve gestire in modo opportuno per es., un disco virtuale potrebbe essere gestito come un file (o un insieme di file) nel sistema host nel caso di un hypervisor di tipo 2, l hypervisor gestisce queste operazioni chiedendo aiuto all OS host, su cui sono installati i driver per i dispositivi fisici effettivamente presenti dunque l hypervisor non deve avere i propri driver per questi dispositivi nel caso di un hypervisor di tipo 1, una soluzione comune consiste nell avere una VM speciale e sempre in esecuzione (per es., il dominio 0 nel caso di Xen) su cui sono installati i driver dei dispositivi fisici questa VM speciale supporta l hypervisor per diverse finalità, tra cui appunto l I/O 33 - dello storage Le tecniche di virtualizzazione dello storage (unità disco) differiscono nel modo in cui i dischi virtuali dell OS guest sono implementati nel sistema host un disco virtuale può corrispondere direttamente a un disco fisico o a una sua partizione le prestazioni sono migliori ma è poco flessibile, perché un disco fisico può avere solo un numero limitato di partizioni in alternativa, un disco virtuale può essere implementato come un insieme di file chiamati file immagine (disk image files) nell OS host la flessibilità è maggiore per es., un file immagine può essere allocata in modo dinamico, consentendo un risparmio iniziale nell occupazione di spazio sul disco fisico le prestazioni sono invece peggiori 34

dello storage La virtualizzazione dello storage può essere relativa a unità direttamente collegate al computer host (DAS, Direct Attached Storage), oppure a unità collegate in rete (NAS, Network Attached Storage) per es., con il protocollo iscsi (Internet SCSI) la virtualizzazione di unità NAS aumenta significativamente la flessibilità delle soluzioni di virtualizzazione 35 dello storage Cartelle condivise un altra funzionalità dei sistemi di virtualizzazione sono le cartelle condivise (shared folders) in cui una cartella può essere condivisa tra l OS host e una o più VM guest le cartelle condivise risiedono fisicamente sul computer host e possono essere condivise con i guest in sola lettura oppure in lettura-scrittura 36

- della rete Una rete fisica è basata su un insieme di host fisici, ciascuno dei quali può essere dotato di una o più schede di rete (NIC) fisiche switch fisici, per connettere più segmenti di rete fisici In prima approssimazione, una rete virtuale è basata su un insieme di VM, ciascuna delle quali può essere dotata di una o più schede di rete virtuali (vnic) uno o più switch virtuali (vswitch), per connettere tra loro schede di rete virtuali (vnic) e schede di rete fisiche (pnic) in modo che le diverse VM siano collegate tra loro e con la rete vista dal sistema host, in modo opportuno 37 della rete Una rete fisica Una rete virtuale (con un hypervisor di tipo 1) host fisico app OS host fisico vm1 app OS vnic vm2 app OS vnic pnic vswitch pswitch pnic pnic pswitch pswitch 38

della rete In pratica, ogni VM può essere dotata di una o più schede di rete virtuali ciascuna scheda di rete virtuale può emulare una certa scheda di rete reale comune oppure può essere un adattatore di rete paravirtualizzato (per es., virtio-net è uno standard supportato da diversi sistemi operativi) che evita la complessità dell emulazione e ottimizza le prestazioni ciascuna scheda di rete virtuale può operare in una modalità di virtualizzazione diversa (descritte dopo) l indirizzo IP associato a una scheda di rete virtuale può essere configurato in modo statico oppure in modo dinamico tramite un servizio DHCP fornito dell hypervisor è possibile creare e configurare delle configurazioni di rete complesse tra le diverse VM e il computer host e la rete esterna che viene vista tramite le schede di rete fisiche del computer host 39 Modalità di virtualizzazione della rete Le principali modalità in cui può operare una vnic ogni vnic può operare in modalità differenti dalle altre NAT (Network Address Translation) la VM guest vede la rete esterna (ad es., Internet) tramite la vnic ma la VM non è visibile né dall host, né dalle altre VM guest, né dalla rete esterna Bridged Networking la vnic è collegata a una pnic, e scambia pacchetti con rete esterna (ad es., Internet) direttamente tramite di essa per es., se la VM guest deve offrire servizi come server 40

Modalità di virtualizzazione della rete Le principali modalità in cui può operare una vnic ogni vnic può operare in modalità differenti dalle altre Internal Networking per collegare un gruppo di VM guest tra di loro e creare una rete di VM ma né l host né la rete esterna possono interagire con questa rete interna Host-only Networking per definire una rete che contiene l host e un insieme di VM guest senza usare la pnic dell host, ma usando un interfaccia di rete creata nell host (che è simile a un interfaccia di loopback) 41 della rete Port forwarding il port forwarding mette in corrispondenza una porta di una VM guest con una porta del computer host per esempio, la porta 80 (HTTP) del guest con la porta 8080 dell host il servizio HTTP del guest può essere poi acceduto alla porta 8080 dell host http://<indirizzo-ip-host>:8080 la porta 8080 deve essere inizialmente libera sull host questo è un altro modo per rendere accessibili i servizi in esecuzione in una VM guest all host oppure alla rete esterna 42

- Immagini e virtual appliance Ogni VM è dotata di uno o più dischi virtuali ciascun disco virtuale è di solito implementato come uno o più file (disk image) nell OS host dopo aver creato e inizializzato una VM (installando l OS guest e tutti i servizi e le applicazioni di interesse) è possibile salvare l immagine della VM (VM image), con diverse finalità 43 in particolare, è possibile creare una nuova istanza di VM (VM instance o VM) a partire da un immagine di VM, mediante un opportuna clonazione (descritta dopo) anziché installare l OS e i servizi e le applicazioni da zero l immagine di una VM è anche chiamata una virtual appliance la disponibilità di virtual appliance riduce in modo significativo i tempi di creazione delle VM installare un applicazione, un server o una piattaforma complessa è semplice come scaricare una canzone sull ipod Clonazione di VM La clonazione di una VM non è una semplice copia dell immagine della VM l immagine di una VM comprende infatti sia il/i file per le immagini dei dischi che il/i file per i metadati della VM per es., il numero di vcpu, la memoria virtuale assegnata alla VM, il tipo e il MAC address di ogni vnic, la clonazione di una VM di solito modifica alcuni dei metadati inoltre la clonazione di una VM può essere completa (full) vengono clonati tutti i file immagine necessari per la nuova istanza oppure collegata (linked) più istanze di VM operano con riferimento all immagine iniziale (condivisa e immutabile) inoltre, ciascuna istanza possiede dei propri file immagine differenza, che rappresentano e memorizzano tutti i cambiamenti rispetto all immagine iniziale 44

- Snapshot/checkpoint Una VM può essere avviata e arrestata ma anche messa in pausa e riavviata lo stato istantaneo di una VM arrestata o in pausa può essere salvato su disco (snapshot o checkpoint) per un uso futuro lo snapshot per una VM in esecuzione (per es., in pausa) comprende sia lo stato del disco che lo stato della memoria per es., è possibile avviare una VM a partire da uno snapshot anziché iniziare dal boot questo può ridurre i tempi di avviamento di una VM 45 - Migrazione di VM La migrazione di una VM ha lo scopo di spostare una VM in esecuzione da un host ad un altro host per es., per motivi di scalabilità o di disponibilità, oppure perché si vuole fare un intervento di manutenzione sul primo host la soluzione in cui si spegne la VM nel primo host e la si riavvia nel secondo host può essere inaccettabile per l interruzione dei servizi in esecuzione nella VM un altra soluzione consiste nel mettere in pausa la VM, prenderne uno snapshot, copiarlo sul secondo host e riavviare la VM sul secondo host a partire da quello stato la copia può essere evitata se lo snapshot viene salvato su un unità NAS condivisa dai due host in pratica, se i file immagine della VM sono gestiti in un unità NAS condivisa tra i due host, lo snapshot della VM può limitarsi al solo stato della memoria, e dunque la migrazione può essere estremamente veloce (live migration) 46

* Sistemi di virtualizzazione Vengono ora descritti brevemente alcuni sistemi di virtualizzazione per la piattaforma x86 Xen KVM la famiglia di prodotti VMware Oracle VM VirtualBox 47 -Xen Xen è un hypervisor di tipo 1 open source per sistemi x86 supporto per più OS guest, soprattutto Linux (e altri OS Unix) ma anche Windows supporta sia la paravirtualizzazione (PV) che la virtualizzazione assistita dall hardware (HVM) un progetto di ricerca alla fine degli anni novanta, poi diventato un progetto open source nel 2002 dal 2013, un collaborative project della Linux Foundation i membri comprendono Amazon, Google, Oracle, Intel e AMD secondo Wikipedia, è usato come hypervisor primario in molti sistemi tra cui Amazon EC2 48

-Xen Xen è un hypervisor di tipo 1 open source per sistemi x86 49 Xen Architettura di Xen basata su un hypervisor sottile questo sostiene robustezza e sicurezza ogni VM è chiamata un guest o dominio il dominio 0 (o dominio di controllo) è un dominio speciale (con privilegi speciali) contiene i driver per l hardware fisico, e supporta l hypervisor nell accesso all hardware contiene uno stack software di controllo (toolstack) per gestire la creazione, configurazione e distruzione delle altre VM che può essere acceduto dalla linea di comando, da un interfaccia grafica o da altri stack per l orchestrazione di VM XenServer è una piattaforma di virtualizzazione per il cloud basata sull hypervisor Xen 50

-KVM KVM (Kernel Virtual Machine) è una soluzione di virtualizzazione open source per sistemi x86 (con estensioni per la virtualizzazione) integrata nei kernel Linux può essere considerato un hypervisor di tipo 1 supporto per OS guest Linux e Windows non modificati 51 KVM Architettura di KVM basata su un modulo del kernel Linux (kvm.ko) che fornisce il nucleo dell infrastruttura di virtualizzazione inoltre QEMU che è un hosted hypervisor per la virtualizzazione dell hardware (da non confondere con la virtualizzazione assistita dall hardware) basato su traduzione binaria viene usato come ambiente per l esecuzione dei guest KVM ove possibile, il codice guest viene eseguito direttamente dall host ogni vcpu delle VM guest è gestita come un thread dell OS host è possibile interagire con le capacità di virtualizzazione di KVM mediante libvirt una API comune per Linux per gestire e controllare VM in modo sicuro e anche remoto 52

- VMware VMware è una società (sussidiaria di EMC) con una ricca offerta di tecnologie per la virtualizzazione per le piccole, medie e grandi aziende, che comprende prodotti per la virtualizzazione di singoli computer come gli hypervisor di tipo 2 VMware Workstation e Fusion (Pro e Player) prodotti per la virtualizzazione dei data center e di gestione del cloud come vsphere (un hypervisor di tipo 1) e vcloud Suite (comprende funzioni per la disponibilità, l automazione e la gestione di VM, per fornire un cloud privato) prodotti per la virtualizzazione del desktop come Horizon la prima versione di VMware Workstation è stata rilasciata nel 1999, la prima versione di ESX server nel 2001 53 Vmware Workstation L architettura di VMware Workstation è basata su tre componenti principali (la figura mostra a sinistra il contesto dell OS host e a destra il contesto dell hypervisor) VMM (virtual machine monitor) è l hosted hypervisor VMX è l interfaccia utente nel sistema host il VMM driver viene installato come driver nell OS host ma in realtà guida il VMM e lo nasconde all OS host 54

- VirtualBox Oracle VM VirtualBox è un prodotto di virtualizzazione per sistemi x86 per uso enterprise oppure personale (dal 2007) un hypervisor di tipo 2, per OS host Windows, Linux e Macintosh, e per OS guest Windows e Linux un progetto open source controllato dalla Oracle supporta numerose tecniche e opzioni di virtualizzazione le VM possono essere create mediante una GUI oppure mediante una interfaccia dalla linea di comando (VBoxManage) le VM possono essere accedute localmente o remotamente un uso comune è quello delle VM pre-costruite per sviluppatori è possibile sperimentare stack software complessi installando solo VirtualBox e scaricando una singola virtual appliance pre-definita 55 * Discussione Per riassumere, la virtualizzazione (virtualizzazione di sistema) consente a un singolo computer reale di ospitare più computer (macchine) virtuali ciascuna VM esegue un proprio sistema operativo e dei propri servizi e applicazioni più in generale, possiamo dire che le tecniche di virtualizzazione hanno lo scopo di fornire l accesso a un insieme di risorse computazionali virtuali a partire da un insieme di risorse computazionali reali ci sono diverse modalità di virtualizzazione delle risorse (non tutte le tipologie di risorse possono essere virtualizzate nello stesso modo) che portano a diversi benefici 56

Funzioni e benefici della virtualizzazione Condivisione di risorse virtual resources sharing resources esempi: macchine virtuali, dischi virtuali, partizionamento delle risorse (LPAR), VLAN, benefici: gestione del carico, migliorare l utilizzo delle risorse, flessibilità, isolamento 57 Funzioni e benefici della virtualizzazione Aggregazione virtual resources aggregation resources esempi: dischi virtuali, benefici: scalabilità, semplificazione della gestione, protezione dell investimento 58

Emulazione Funzioni e benefici della virtualizzazione virtual resources emulation resources esempi: emulazione del processore o del sistema operativo benefici: compatibilità, interoperabilità, flessibilità, protezione dell investimento 59 Funzioni e benefici della virtualizzazione Isolamento (insulation) virtual resources isolation add, replace, or change resources esempi: sostituzione di CPU di riserva, SAN-VC, benefici: disponibilità, flessibilità 60

Discussione Applicazioni principali della virtualizzazione server consolidation application consolidation desktop (client) virtualization sandboxing ambienti di esecuzione multipli supporto al testing e alla QA 61 Discussione Benefici della virtualizzazione riduzione dei costi miglioramento delle qualità delle applicazioni disponibilità e tolleranza ai guasti efficienza, agilità, produttività e flessibilità dell IT isolamento e sicurezza estendere la vita delle applicazioni semplificazione della gestione dei datacenter provisioning di risorse e VM semplificato e velocizzato supporto alla scalabilità e all elasticità gestione centralizzata datacenter definito tramite software supporto allo sviluppo, al testing e alla QA ridurre il vendor lock-in e favorire la migrazione al cloud 62