Virtualizzazione di sistema

Documenti analoghi
Virtualizzazione di sistema

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

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

LA VIRTUALIZZAZIONE CASE STUDY CAMPUS DI CESENA

Tecnologie di virtualizzazione

Contenitori. Subhraveti, D. Containers Beyond the Hype. AppOrbit, 2015.

Francesco V. Buccoli Microsoft Student Evangelist

Virtualizzazione e macchine virtuali. Presentata da Bernardo Lombardi

Virtualizzazione basata su contenitori

Linux Virtuale. Virtualizzazione, ovvero?

IBM Corporation

Finalmente un po di PRATICA

Struttura dei Sistemi Operativi

Cenni sulla virtualizzazione

Cenni sulla virtualizzazione

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

Cenni sulla virtualizzazione

Allegato Tecnico BaaS/CBaaS

Provare e installare Linux

Power Your Business with Windows Server + Intel Technologies

2. Cenni di sistemi operativi

BACKUP MULTIPIATTAFORMA ON PREMISE, RIMOVIBILE, DECENTRALIZZATO E CLOUD IBRIDIO

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

Architetture software. Virtualizzazione

Introduzione ai thread

Perché scegliere la licenza ROK?

Piattaforma Computazionale Openstack Cloud

SOFTWARE. Programmi e dati che indicano al computer come svolgere un determinato compito

Mezz ora in amicizia. Ross

Sistema Operativo (Software di base)

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

Il Sistema Operativo

Cenni sulla virtualizzazione

Telephony Appliance BNTA 2.0 Guida Rapida per l installazione

Prestazioni e affidabilità dei dischi

Il Sistema Operativo

Sistema operativo & file system 1

Allegato Tecnico BaaS/CBaaS

Laboratorio virtuale

Cenni sulla virtualizzazione

Virtualizzazione. Orazio Battaglia

Sistema Operativo. (hardware e software) della della macchina

Corso di Informatica

Sistemi operativi. Fondamenti di Informatica

Elenco sezioni libro di testo Ed. 5 Tra parentesi le corrispondenze per l'ed. 7.

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

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

Tecniche di virtualizzazione di processori Intel-AMD. Gianluca Guida

Le reti rete La telematica telematica tele matica Aspetti evolutivi delle reti Modello con mainframe terminali Definizione di rete di computer rete

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

Setup dell ambiente virtuale

Il Sistema Operativo. Informatica Sistema Operativo 1

Laboratorio di Informatica. Il Sistema Operativo. Il Sistema Operativo 1

SISTEMI OPERATIVI THREAD. Giorgio Giacinto Sistemi Operativi

IL SOFTWARE DI SISTEMA

Corso di Informatica

Macchine Virtuali. Docente: Fabio Tordini

Gestione dei Processi

Creazione macchina virtuale con WMware Player

Una metodologia per la specifica di software a componenti

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

Sistemi Di Elaborazione Dell informazione

memoria virtuale protezione

WP5. 9 Settembre Paolo Veronesi (INFN CNAF)

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

Securshop Real Time DNS

Sistema operativo (SO)

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Virtualizzazione con OpenVZ

Introduzione ai. Sistemi Distribuiti

Introduzione ai. Sistemi Distribuiti

Virtualizzazione. Inaf ICT Workshop Trieste, 15 novembre Spring Firm srl Via Parini 17 Trieste

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

LA VIRTUALIZZAZIONE E I SUOI ASPETTI DI SICUREZZA

MySQL Server e Workbench.

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Il software: Istruzioni per il computer

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

Sistemi Operativi: Concetti Introduttivi

Il software: Istruzioni per il computer

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

Piattaforme software distribuite I

Il Sistema Operativo Ripasso

Macchine Virtuali in pratica

Virtualizzazione e Macchine Virtuali

Laboratorio di Informatica (Chimica)

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

TRATTATIVA PRIVATA PER LA FORNITURA DI UNA PIATTAFORMA IT MODULARE DI VIRTUALIZZAZIONE A SERVIZIO DEI LABORATORI PROM FACILITY CODICE CIG

ICG Holding presenta: PI Ufficio del futuro. 01/04/2011 PI Human Resources

Laboratorio di Informatica

Manuale Utente Impostazione router Tele-assistenza

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate

Colla MGC Guida all installazione

Transcript:

Luca Cabibbo Architettura dei Sistemi Software dispensa asw630 marzo 2018 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 di sistema e le macchine virtuali descrivere alcune tecniche e opzioni di virtualizzazione presentare alcuni sistemi di virtualizzazione Argomenti virtualizzazione di sistema tecniche di virtualizzazione sistemi di virtualizzazione benefici della virtualizzazione discussione 3 * La virtualizzazione di sistema (talvolta chiamata anche solo virtualizzazione) consente a un singolo computer reale di ospitare più computer virtuali chiamati macchine virtuali ciascuna macchina virtuale è un computer virtuale in cui è possibile eseguire un proprio sistema operativo e dei propri servizi e applicazioni operating system a real machine operating system a virtual machine un computer reale con il suo OS e le sue applicazioni un computer virtuale con il suo OS e le sue applicazioni 4

La virtualizzazione di sistema è una tecnologia importante soprattutto nei sistemi distribuiti e nel cloud è una tecnologia abilitante per la gestione flessibile di ambienti di esecuzione (virtuali) consente di eseguire in modo flessibile più servizi e applicazioni in più macchine virtuali, ciascuna con il proprio sistema operativo in uno stesso computer ancor di più, è una tecnologia abilitante fondamentale del cloud computing che è un modello di computazione basato su risorse di calcolo virtuali inoltre, la virtualizzazione di sistema può essere utilizzata per sostenere diverse qualità importanti tra cui scalabilità e disponibilità 5 Virtualizzazione Più 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 ad 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 software di virtualizzazione che realizza un indirezione tra le risorse reali e l utente/consumatore delle risorse virtuali 6

In particolare, la virtualizzazione ha l impatto maggiore quando viene applicata ad un intera piattaforma hardware (ovvero, ad un sistema ) la virtualizzazione di sistema (system virtualization) chiamata anche virtualizzazione dell hardware (hardware virtualization) ha lo scopo è fornire (l illusione di) una o più macchine virtuali mediante la virtualizzazione di una macchina fisica reale il software che realizza la virtualizzazione di sistema è chiamato hypervisor oppure virtual machine monitor (VMM) in questa dispensa ci concentriamo soprattutto sulla virtualizzazione di sistema a cui ci riferiremo spesso chiamandola semplicemente virtualizzazione 7 Macchine virtuali Una macchina virtuale (virtual machine, VM) è l emulazione di una macchina reale nella virtualizzazione di sistema, per macchina si intende un computer più precisamente, l hardware di un computer che è ciò che viene appunto fornito come entità virtuale una macchina virtuale espone ai suoi utenti la stessa interfaccia di una macchina reale ovvero, un insieme di risorse (virtuali) come uno o più processori (e dunque la capacità di eseguire istruzioni in un proprio linguaggio macchina), una memoria, dei dispositivi (di storage e di rete), una macchina virtuale fornisce un ambiente hardware virtuale completo in cui è possibile installare ed eseguire un sistema operativo (operating system o OS) e un insieme di servizi e applicazioni 8

Virtualizzazione Un esempio di computer non virtualizzato un computer reale ( fisico ) viene utilizzato installandoci sopra un sistema operativo e un insieme di applicazioni e servizi le applicazioni e i servizi sono specifici per la particolare piattaforma hardware-software operating system computer reale hardware (physical machine) 9 Virtualizzazione Un esempio di computer virtualizzato il computer reale (hardware + OS) è detto host (ospitante) il software di virtualizzazione è un hypervisor o virtual machine monitor (VMM) la macchina virtuale (insieme al suo OS e ai suoi processi) è detta (ospitata) operating system vmm virtual machine (vm) virtualizing software host host operating system hardware (physical machine) 10

Virtualizzazione Un altro esempio, in cui una macchina host ospita più VM ciascuna VM esegue un proprio OS che può anche essere diverso da VM a VM (ma anche lo stesso) e delle proprie applicazioni l OS eseguito da una VM può anche essere diverso da quello eseguito dal computer host (ma anche lo stesso) operating system virtual machine operating system virtual machine virtualizing software host operating system hardware (physical machine) 11 Hypervisor di tipo 1 e 2 Ci sono due tipi principali di hypervisor type 1 (native VMM): l hypervisor è eseguito direttamente dall hardware host (su cui non è installato un OS) VMware vsphere, Xen, più efficiente ma più complesso operating system virtual machine operating system virtual machine type 1 hypervisor hardware (physical machine) 12

Hypervisor di tipo 1 e 2 Ci sono due tipi principali di hypervisor type 2 (hosted VMM/hosted hypervisor): l hypervisor è eseguito dall OS host VMware Workstation, Oracle VM Virtualbox, più semplice, ma in genere orientato al solo uso personale operating system virtual machine operating system virtual machine type 2 hypervisor host operating system hardware (physical machine) 13 Virtualizzazione 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 solo un processo individuale anziché un intero sistema operativo un caso comune è quello della Java Virtual Machine (JVM) native java JVM operating system java JVM non ci occuperemo ulteriormente di virtualizzazione di processo hardware 14

Virtualizzazione basata su contenitori Un ulteriore forma è la virtualizzazione basata su contenitori (container-based 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 app app OS libs OS libs container container virtualizing software ci occuperemo di virtualizzazione basata su contenitori in una successiva dispensa 15 host operating system hardware VM e istanze di VM Prima di andare avanti, e facendo riferimento alla virtualizzazione di sistema, è utile una precisazione sul termine macchina virtuale di per sé, una macchina virtuale (VM) è l emulazione dell hardware di un computer reale ovvero, è solo l astrazione fornita da un sistema di virtualizzazione e come tale non comprende né OS né applicazioni invece, per istanza di macchina virtuale (VM instance) di solito si intende una VM insieme al suo OS e alle sue applicazioni VM operating system vm VM instance app OS app attenzione: il termine macchina virtuale viene (e verrà) talvolta utilizzato anche per indicare un istanza di macchina virtuale 16

- Applicazioni della virtualizzazione La virtualizzazione (virtualizzazione di sistema) ha numerose applicazioni (che verranno discusse meglio alla fine di questa dispensa) tra cui server consolidation consolidation desktop (client) virtualization sandboxing ambienti di esecuzione multipli supporto al testing e alla QA in queste applicazioni, l obiettivo della virtualizzazione è in genere consentire l esecuzione di molte macchine virtuali in un singolo computer fisico in cui ciascuna macchina virtuale ospita un proprio OS e un insieme di servizi e applicazioni 17 * Tecniche di virtualizzazione Un computer è composto da diverse risorse (CPU, memoria, I/O, reti, storage) anche ciascuna macchina virtuale è dotata di un proprio insieme di risorse virtuali l hypervisor deve gestire queste risorse virtuali in termini delle sottostanti risorse fisiche per ogni tipo di risorsa, ci sono più tecniche di virtualizzazione un hypervisor può offrire, in genere, più opzioni di virtualizzazione per ciascuna risorsa questa sezione descrive alcune tecniche e opzioni di virtualizzazione tra quelle realizzate dai diversi hypervisor virtualizzazione del processore, della memoria, dell I/O (in particolare dello storage e della rete) immagini/virtual appliance, snapshot/checkpoint e migrazione di VM 18

- Requisiti generali per la virtualizzazione 19 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 - Virtualizzazione del processore Un processore è caratterizzato dalla sua ISA (Instruction Set Architecture) l ISA definisce le istruzioni del processore e uno stato (registri e memoria) l esecuzione delle istruzioni ha effetto anche su questo stato esistono due approcci principali per la virtualizzazione dei processori emulazione del processore per fare in modo che il processore virtuale sia di un tipo diverso dal processore reale virtualizzazione del processore il processore virtuale e quello reale sono entrambi dello stesso tipo (ad es., x86) molte istruzioni del software in esecuzione in una VM possono essere eseguite direttamente dal processore dell host tuttavia, ci possono essere delle istruzioni problematiche, che vanno gestite in modo opportuno 20

Emulazione del processore L emulazione del processore avviene mediante la tecnica di virtualizzazione dell ISA (emulazione della CPU) si basa sulla traduzione binaria ciascuna istruzione della VM viene eseguita prima traducendo l istruzione nell ISA del processore dell host e poi eseguendo la sua traduzione è una tecnica poco efficiente tuttavia, si può recuperare un po di efficienza traducendo blocchi opportuni di istruzioni e facendo il caching delle istruzioni tradotte oggi è una tecnica poco importante, grazie all ampia diffusione dei processori x86 (ma ora ci sono anche gli ARM) non prendiamo ulteriormente in considerazione l emulazione del processore ci focalizziamo invece sulle tecniche di virtualizzazione dei processori x86 21 Virtualizzazione del processore Nel caso in cui il processore reale e quello virtuale sono dello stesso tipo (ad es., sono entrambi dei processori x86), allora molte istruzioni del software in esecuzione in una VM possono essere eseguite direttamente dal processore dell host tuttavia, alcune istruzioni del software della VM sono invece problematiche e pertanto non vanno eseguite direttamente dal processore host in particolare, le istruzioni problematiche sono alcune istruzioni del kernel dell OS nota: un processore può operare in almeno due modi il kernel mode è pensato per il kernel dell OS e consente l esecuzione di tutte le istruzioni dell ISA lo user mode è pensato per le applicazioni (ma è usato anche dal resto dell OS) e non consente l esecuzione di alcune istruzioni ad es., quelle che riguardano l I/O, la protezione della memoria e disabilitare le interruzioni 22

Virtualizzazione del processore Esempi di istruzioni problematiche (ovvero, non virtualizzabili mediante un esecuzione diretta) istruzioni per abilitare e disabilitare le interruzioni se l OS di una VM esegue un istruzione per disabilitare le interruzioni, allora non vanno disabilitate le interruzioni del processore (fisico) dell host fisico, ma piuttosto vanno disabilitate (in modo virtuale) le interruzioni solo nel processore (virtuale) di 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 istruzioni per la gestione della MMU (Memory Management Unit) l OS non deve poter modificare in modo arbitrario la MMU dell host, altrimenti potrebbe accedere a qualunque area della memoria fisica 23 Virtualizzazione assistita dall hardware Oggi, nell ambito dei processori x86, la tecnica principale per la virtualizzazione del processore (per consentire anche la gestione delle istruzioni problematiche ) è la virtualizzazione assistita dall hardware (trap-and-emulate) tutte le istruzioni della VM vengono eseguite dal processore reale dell host che normalmente le esegue direttamente tuttavia, il processore reale dell host cattura le istruzioni non virtualizzabili della VM (trap) e le gestisce come chiamate all hypervisor (emulate) questa tecnica è basata sull uso di tecnologie hardware di virtualizzazione dei processori x86 (Intel VT-x e AMD SVM, dal 2005) 24

Virtualizzazione assistita dall hardware La figura illustra la virtualizzazione del processore assistita dall hardware con un hypervisor di tipo 1 host app OS type 1 hypervisor app hardware virtual user mode virtual kernel mode trap on privileged instructions user mode kernel mode 25 Virtualizzazione assistita dall hardware Nel caso di un hypervisor di tipo 2, le cose sono un po diverse bisogna anche capire la relazione tra l hypervisor e l OS host ad 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 ad es., quando termina il tempo dedicato all hypervisor oppure quando l hypervisor ha bisogno di aiuto dall OS host (ad es., per chiedere l esecuzione di un operazione di I/O a un driver dell OS host) 26

Virtualizzazione del processore Ci sono anche altre tecniche di virtualizzazione dei processori (per la gestione delle istruzioni problematiche ) virtualizzazione full combina l esecuzione diretta (della maggior parte delle istruzioni della VM nel processore host) con la traduzione binaria (delle istruzioni problematiche ) paravirtualizzazione l OS viene modificato per eliminare tutte le istruzioni problematiche del suo kernel, sostituendole con chiamate all hypervisor le istruzioni della VM vengono poi eseguite direttamente dal processore host questa tecniche sono state usate soprattutto prima dell introduzione delle tecnologie hardware di virtualizzazione dei processori (la virtualizzazione dei processori x86 è iniziata alla fine degli anni novanta) 27 Virtualizzazione di più processori La virtualizzazione dei processori è particolarmente efficace quando applicata a processori multi-core oppure a computer multiprocessore i diversi processori fisici (con i loro core) presenti nel sistema host 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ò anche specificare la quota percentuale (minima e massima) nell uso della vcpu in questo modo, un sistema multi-processore viene virtualizzato in un sistema multi-computer 28

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

Virtualizzazione dell I/O Le operazioni di I/O per questi dispositivi virtuali vengono poi catturate dall hypervisor, che le deve gestire in modo opportuno hypervisor di tipo 2 l hypervisor gestisce le operazioni di I/O 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 hypervisor di tipo 1 in questo caso, la soluzione comune consiste nell utilizzare una VM speciale e sempre in esecuzione (ad es., il cosiddetto dominio 0 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 31 - Virtualizzazione dello storage Le tecniche di virtualizzazione dello storage (unità disco) differiscono nel modo in cui i dischi virtuali di una VM sono implementati nel sistema host un disco virtuale può corrispondere direttamente a un disco fisico oppure a una sua partizione le prestazioni sono migliori è però 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 ad 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 32

Virtualizzazione dello storage La virtualizzazione dello storage può essere applicata a unità direttamente collegate al computer host (DAS, Direct Attached Storage), oppure a unità collegate in rete (NAS, Network Attached Storage) ad es., con il protocollo iscsi (Internet SCSI) la virtualizzazione di unità NAS aumenta significativamente la flessibilità delle soluzioni di virtualizzazione 33 Virtualizzazione dello storage Cartelle condivise un altra funzionalità dei sistemi di virtualizzazione (soprattutto degli hypervisor di tipo 2, per uso personale) sono le cartelle condivise (shared folder) che consente la condivisione di una o più cartelle tra l OS host e una o più VM le cartelle condivise risiedono fisicamente nel file system del computer host, e possono essere condivise con le VM in lettura-scrittura oppure anche in sola lettura 34

- Virtualizzazione 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 35 Virtualizzazione 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 36

Virtualizzazione 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 (ad 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 (che potrebbe essere 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 37 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 vede la rete esterna (ad es., Internet) tramite la vnic la VM non è visibile né dall host, né dalle altre VM, 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 utile, ad es., se la VM deve offrire servizi come server 38

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 tra di loro e creare una rete di VM 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 senza usare la pnic dell host, ma usando un interfaccia di rete creata nell host (che è simile a un interfaccia di loopback) 39 Virtualizzazione della rete Port forwarding il port forwarding mette in corrispondenza una porta di una VM con una porta del computer host ad es., la porta 80 (HTTP) del con la porta 8080 dell host in modo che il servizio HTTP (porta 80) del possa 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 all host oppure alla rete esterna 40

- Immagini e istanze di macchine virtuali 41 L immagine di una VM (VM image) è, intuitivamente, formata dal contenuto dei volumi/dischi della VM, insieme ai metadati della VM l immagine di una VM comprende tutto il necessario per avviare un istanza di VM (VM instance) a partire da quell immagine VM e istanza di VM sono spesso usati come sinonimi se i dischi virtuali della VM sono implementati nell OS host come uno o più file (disk image), allora l insieme di questi file rappresenta il contenuto dei volumi/dischi della VM inoltre, i metadati di una VM descrivono la configurazione della VM ad es., numero di processori, quantità di memoria, storage, schede di rete di solito anche questi metadati sono memorizzati in un file dell OS host dopo aver creato e inizializzato una VM (ovvero, dopo aver installato l OS e tutti i servizi e le applicazioni di interesse) è possibile salvare l immagine di questa VM, con diverse finalità (discusse dopo) - Clonazione di VM La clonazione di una VM è la creazione di una nuova istanza di VM a partire da un immagine di VM la clonazione consente di evitare di installare da zero l OS e i servizi e le applicazioni di interesse in una VM la clonazione non è una semplice copia dell immagine di una VM infatti, la clonazione di una VM deve di solito modificare alcuni metadati della VM ad es., il MAC address associato ad ogni vnic della VM, oppure l id della VM da una singola immagine di VM è possibile creare (mediante clonazione) molte istanze di VM 42

Clonazione di VM La clonazione di una VM è la creazione di una nuova istanza di VM a partire da un immagine di VM 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 sono collegate all immagine iniziale della VM iniziale (che è condivisa e immutabile) inoltre, ciascuna istanza possiede dei propri file immagine differenza, che rappresentano e memorizzano tutti i cambiamenti rispetto all immagine iniziale 43 Virtual appliance Una virtual appliance è un immagine di VM pre-configurata (in genere da terzi) da cui è possibile creare istanze di VM con quella configurazione la disponibilità di virtual appliance può ridurre in modo significativo i tempi di creazione delle VM installare un applicazione, un server o una piattaforma complessa è semplice come scaricare una canzone sul proprio ipod (o un app sul proprio iphone) 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 (ad es., in pausa) comprende sia lo stato del disco che lo stato della memoria ad 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 ha lo scopo di spostare un istanza di VM in esecuzione da un host ad un altro host ad 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, 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 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 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 KVM ove possibile, il codice viene eseguito direttamente dall host ogni vcpu delle VM è 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 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 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 * Benefici della virtualizzazione Questa sezione discute brevemente le applicazioni, le funzioni e i benefici della virtualizzazione in particolare, della virtualizzazione di sistema 56

- Applicazioni della virtualizzazione La virtualizzazione di sistema ha numerose applicazioni, tra cui server consolidation consolidation desktop (client) virtualization sandboxing ambienti di esecuzione multipli supporto al testing e alla QA 57 Applicazioni della virtualizzazione Un applicazione comune della virtualizzazione è la server consolidation si consideri un organizzazione con un sistema distribuito composto da, ad es., un server web, un server di basi di dati, un server per la posta elettronica, ecc. ciascun server è in esecuzione su un computer (di solito fisico) diverso ci sono buoni motivi per questo ad 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 58

Applicazioni della virtualizzazione Un applicazione comune della virtualizzazione è la server consolidation in alternativa, i server possono essere eseguiti in un singolo computer, fisico ma virtualizzato (server consolidation) ciascun server 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à dell hardware 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, ) 59 Applicazioni della virtualizzazione Altre applicazioni comuni della virtualizzazione fornire un ambiente di esecuzione a un applicazione legacy ( consolidation) ad 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 60

- Funzioni e benefici della virtualizzazione Esaminiamo ora, astraendo, le diverse modalità principali di virtualizzazione delle risorse, con i relativi benefici con l osservazione che non tutte le tipologie di risorse possono essere virtualizzate nello stesso modo 61 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 62

Funzioni e benefici della virtualizzazione Aggregazione virtual resources aggregation resources esempi: dischi virtuali, benefici: scalabilità, semplificazione della gestione, protezione dell investimento 63 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 64

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à 65 - Benefici Per concludere, i principali benefici offerti dalla 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 66

* Discussione La virtualizzazione (virtualizzazione di sistema) consente a un singolo computer reale di ospitare più computer (macchine) virtuali ciascuna VM può essere usata per eseguire un proprio sistema operativo e dei propri servizi e applicazioni la virtualizzazione è basata su diverse tecniche, che hanno lo scopo di fornire l accesso a un insieme di risorse computazionali virtuali a partire da un insieme di risorse computazionali fisiche/reali la virtualizzazione di sistema ha numerose applicazioni, e consente diversi benefici in particolare, la virtualizzazione supporta la definizione e la gestione di ambienti di esecuzione virtuali on premise e nel cloud con l obiettivo di ottimizzare l utilizzazione delle risorse hardware, di fornire flessibilità operativa, nonché di isolare tra loro le applicazioni e gli ambienti 67