際際滷

際際滷Share a Scribd company logo
Virtualizzazione
Approcci software ed hardware, considerazioni architetturali


                  Paolo Campegiani
            <paolo@paolocampegiani.it>


                Linux Day - 28 Ottobre 2006
Men湛




  Tecniche di virtualizzazione e paravirtualizzazione
  Virtualizzatori: QEMu e VMware
  Paravirtualizzatori: Xen e OpenVZ
  Alta af鍖dabilit
  Sicurezza




  Paolo Campegiani ()        Virtualizzazione           Linux Day   2 / 81
Obiettivi




   Comprendere come opera un virtualizzatore
   Utilizzare operativamente i vari software
   Valutare le implicazioni di sicurezza e di af鍖dabilit




   Paolo Campegiani ()         Virtualizzazione             Linux Day   3 / 81
Everybody loves virtualization



E uno dei settori a maggior sviluppo nellinformatica:
    Mercato di 18 mld di dollari per il 2007 (IDC)
    Tutti i grandi player hanno una loro strategia (IBM, Red Hat, SuSE,
    Microsoft, Apple, ...)
    AMD e Intel hanno processori virtualization-aware
    Fattore chiave di RHEL 5.0/SuSE 10


E solo un hype?




    Paolo Campegiani ()         Virtualizzazione            Linux Day   4 / 81
From the dawn of time it came



    Il primo sistema che offriva la virtualizzazione era lIBM S/360
    (1964)
    Uno degli articoli fondamentali nel settore (Goldberg e Popek) 竪
    del 1974
    Nel 1998 nasce VMware, ovvero la virtualizzazione per sistemi
    x86


Perch竪 oggi ne parlano tutti?




    Paolo Campegiani ()         Virtualizzazione             Linux Day   5 / 81
Virtualization everywhere



Esistono molti tipi di virtualizzazione:
    La macchina virtuale Java che esegue codice Java
    I volumi esportati da una SAN
    Le risorse di sistema viste dai programmi applicativi
    Le topologie di rete pi湛 complesse


Cosa ha di particolare la virtualizzazione di sistema operativo?




    Paolo Campegiani ()          Virtualizzazione            Linux Day   6 / 81
The case for virtualization




    Gestire dei sistemi legacy
    Consolidare pi湛 servizi in ununico server
    Avere una piattaforma di test identica a quella di produzione
    Migliorare laf鍖dabilit


La virtualizzazione 竪 quello di cui ho bisogno?




    Paolo Campegiani ()          Virtualizzazione           Linux Day   7 / 81
Whats in a name?




Virtualizzazione - 1
E il raggruppamento e lastrazione di risorse in modo tale da
mascherarne la natura 鍖sica e i limiti agli utenti delle risorse.

Virtualizzazione - 2
E una metodologia per dividere le risorse in ambienti di esecuzione
multipli.




    Paolo Campegiani ()          Virtualizzazione               Linux Day   8 / 81
Scenari duso




   Consolidamento di server: pi湛 servizi di rete offerti da server oggi
   distinti vengono migrati su un singolo server
   Testing: 竪 possibile duplicare un server di test in uno di
   produzione (o viceversa)
   Training: 竪 possibile fornire un ambiente completo di studio




   Paolo Campegiani ()         Virtualizzazione                 Linux Day   9 / 81
Family business




Esistono varie tecniche possibili:
    Emulazione
    Virtualizzazione
    Paravirtualizzazione




    Paolo Campegiani ()         Virtualizzazione   Linux Day   10 / 81
Un po di nomi




   Virtual Machine Monitor (VMM): la componente applicativa che
   realizza la virtualizzazione
   Hypervisor: la componente di sistema che realizza la
   virtualizzazione
   (Sistema) guest: il sistema virtualizzato
   (Sistema) host: il sistema reale




   Paolo Campegiani ()        Virtualizzazione            Linux Day   11 / 81
Virtualizzazione classica



Secondo Popek e Goldberg le caratteristiche di un sistema perch竪
operi come un virtualizzatore sono:
    Fedelt: il software viene eseguito dalla VMM in modo analogo ad
    una esecuzione via hardware
    Prestazioni: la maggior parte delle istruzioni del guest sono
    eseguite dallhardware senza lintervento della VMM
    Sicurezza: la VMM gestisce tutte le risorse




    Paolo Campegiani ()        Virtualizzazione             Linux Day   12 / 81
Lapproccio trap and emulate



   Ogni processore multiprogrammabile ha dei livelli di privilegio: i
   programmi utente operano ad un livello basso, il sistema operativo
   ad un livello alto
   Le istruzioni non privilegiate possono essere eseguite
   direttamente senza lintervento della VMM
   Lesecuzione di una istruzione privilegiata causa una eccezione
   che viene catturata (trap) dalla VMM che la emula ricorrendo ai
   servizi del sistema operativo host




   Paolo Campegiani ()       Virtualizzazione               Linux Day   13 / 81
Trap and emulate: de-privileging




   Tutte le istruzioni privilegiate sono catturate (trap) perch竪 eseguite
   dalla VMM in un contesto non privilegiato
   In alcuni casi questo trap 竪 scatenato dal sistema operativo host
   (istruzione di I/O), in altri deve essere la VMM a proteggere le
   proprie strutture dati (la VMM e il codice del guest sono per lhost
   lo stesso segmento dati se non si usa la segmentazione)




   Paolo Campegiani ()         Virtualizzazione              Linux Day   14 / 81
Trap and emulate: shadow structures



   Lo stato reale dellhardware 竪 diverso da quello che il guest vede,
   in quanto il guest opera come se fosse privilegiato (es: i registri
   del processore)
   Compito della VMM 竪 gestire queste differenze
   La VMM crea delle shadow structures derivandole dalle primary
   structures che il guest vede
   E molto semplice da fare per i registri della CPU
   Le Page Table Entries (PTE) hanno una gestione ben pi湛
   complessa




   Paolo Campegiani ()        Virtualizzazione             Linux Day   15 / 81
Trap and emulate: memory traces




 1   Il guest prova ad accedere ad una area di memoria
 2   Il gestore delleccezione di paginazione d il controllo alla VMM
        1   True page faults: viene propagata leccezione al guest (ad esempio,
            demand-paging)
        2   Hidden page faults: non c竪 stata la violazione delle politiche di
            accesso alla PTE, quindi occorre modi鍖care la shadow PTE. Il
            guest non viene informato




     Paolo Campegiani ()           Virtualizzazione               Linux Day   16 / 81
Trap and emulate: pro e contro




   E stato lapproccio standard al problema della virtualizzazione
   Veri鍖ca le condizioni di Popek e Goldberg
   E inef鍖ciente: ogni trap and emulate comporta un context switch




   Paolo Campegiani ()        Virtualizzazione             Linux Day   17 / 81
x86 e trap and emulate



Larchitettura x86 non consente di realizzare una virtualizzazione via
trap and emulate in modo ef鍖ciente.


    Il guest pu嘆 determinare il suo livello di privilegio corrente (CPL)
    leggendo gli ultimi due bit di %cs
    popf eseguita in modo non privilegiato non azzera il 鍖ag IF
    (interrupt delivery)
    Nessuna di queste due istruzioni pu嘆 scatenare una trap




    Paolo Campegiani ()         Virtualizzazione              Linux Day   18 / 81
Binary translation (BT)




I sistemi non virtualization friendly richiedono che il guest sia eseguito
da un interprete e non dal processore 鍖sico.


Un binary translator opera come un compilatore pi湛 che come un
interprete.




    Paolo Campegiani ()         Virtualizzazione               Linux Day   19 / 81
Opzioni per la binary translation




   Caso pi湛 fortunato: istruzione non privilegiata e virtualization
   friendly:
   Caso meno fortunato: istruzione non privilegiata ma critica
   (mov %cs, ...)
   Caso sfortunato: istruzione privilegiata




   Paolo Campegiani ()        Virtualizzazione               Linux Day   20 / 81
Binary translation: pro e contro




   I pi湛 veloci virtualizzatori ricorrono tutti alla BT
   Permette di non modi鍖care il sistema guest
   Ha una complessit di funzionamento elevata




   Paolo Campegiani ()          Virtualizzazione          Linux Day   21 / 81
Paravirtualizzazione




E la modi鍖ca del sistema operativo guest in modo tale che la parte
che comunica con lhardware venga modi鍖cata per interrogare il
sistema host.


Le applicazioni non vengono alterate.




    Paolo Campegiani ()       Virtualizzazione             Linux Day   22 / 81
Paravirtualizzazione: pregi e difetti




   Offre le maggiori prestazioni (perdite di performance di pochi punti
   percentuali)
   Richiede la modi鍖ca del sistema operativo guest




   Paolo Campegiani ()        Virtualizzazione             Linux Day   23 / 81
Processori virtualization aware



Sia Intel (VT-X) che AMD (SVM) hanno processori che forniscono un
supporto alla virtualizzazione:
    Virtual Machine Control Block (VMCB) contiene una parte dello
    stato del guest
    vmrun carica lo stato nel VMCB ed esegue il guest
    Lesecuzione prosegue 鍖nch竪 non si raggiunge una condizione
    (programmabile dalla VMM) di exit, che viene gestita dalla VMM




    Paolo Campegiani ()      Virtualizzazione            Linux Day   24 / 81
Processori per virtualizzazione: pro e contro



   E possibile virtualizzare anche quei sistemi operativi che non
   sono paravirtualizzabili
   Si tratta di un meccanismo simile al trap and emulate, e soffre
   degli stessi problemi (context switch)
   Le performance degradano allaumentare del numero degli exit,
   che vanno ridotti al minimo
   Ad esempio, non si esce ad ogni popf, ma si mette una copia
   shadow di %eflags nella VMCB




   Paolo Campegiani ()        Virtualizzazione             Linux Day   25 / 81
QEmu




Opera sia come virtualizzatore che come cross-virtualizzatore:
    Ogni istruzione originale da eseguire viene scomposta in micro
    operazioni
    Ogni micro operazione viene eseguita da un codice C
    La conversione avviene per blocchi (Translated Blocks)
    Occorre gestire il codice automodi鍖cante (pi湛 complicato su x86)




    Paolo Campegiani ()       Virtualizzazione               Linux Day   26 / 81
QEMU in azione: binary translation




addi r1,r1,-16 r1 = r1 - 16
 1   movl_T0_r1            T0 = R1
 2   addl_T0_im -16        T0 = T0 - 16
 3   movl_r1_T0            r1 = T0




     Paolo Campegiani ()         Virtualizzazione   Linux Day   27 / 81
QEMU in azione: micro operazioni



movl_T0_R1
                void op_movl_T0_R1(void) {
                         T0 = env->regs[1];
                }

   env->regs 竪 una struttura che contiene i 32 registri del processore
   PowerPC emulato
   Su x86, T0 竪 mappato sul registro ebx




   Paolo Campegiani ()            Virtualizzazione        Linux Day   28 / 81
QEMU: caratteristiche




   Emula x86, SPARC, ARM, PowerPC
   Gira su tutti i sistemi su cui gira Linux (o quasi, vedi x86_64)
   E costituito da una parte userland e una con un modulo di kernel,
   kqemu
   kqemu non 竪 rilasciato sotto GPL
   Permette di emulare pi湛 schede di rete




   Paolo Campegiani ()         Virtualizzazione              Linux Day   29 / 81
QEmu: installazione



 1   Download di qemu e kqemu
 2   tar xfvz qemu*.tar.gz
 3   Spostare kqemu*tar.gz nella directory di qemu
 4   tar xfvz kqemu*tar.gz
 5   ./con鍖gure; make; make install
 6   modprobe kqemu major=0 (major=0 solo per utenti Fedora/RH)
 7   chmod 666 /dev/kqemu (anche via regole di udev)




     Paolo Campegiani ()       Virtualizzazione        Linux Day   30 / 81
QEMU: creazione dei dischi virtuali




Il tool qemu-img permette di creare un 鍖le sparso da utilizzare come
disco per il sistema virtualizzato:

qemu-img create scilla.img 5GB

crea il 鍖le scilla.img sparso di 5GB.




    Paolo Campegiani ()         Virtualizzazione          Linux Day   31 / 81
QEMU: operation starts!



Una semplice invocazione di qemu pu嘆 essere:

qemu -hda scilla.img -hdb shared.img -cdrom
/dev/cdrom -boot cdrom -usb

In cui come disco /dev/hda viene usato scilla.img, come disco /dev/hdb
viene usato shared.img, come cdrom viene usato /dev/cdrom, il boot 竪
appunto da cdrom e viene emulato anche lusb.




    Paolo Campegiani ()       Virtualizzazione            Linux Day   32 / 81
Il monitor di QEmu



Allinterno della 鍖nestra del sistema emulato, 竪 possibile invocare il
monitor di QEmu, che consente di compiere alcune operazioni:
    Il monitor si invoca con ctrl-alt-2
    Si esce dal monitor con ctrl-alt-1
    Per espellere il cdrom: eject cdrom
    Per sostituire il cdrom: change cdrom filename
    C竪 la completion tab e lhistory
    Per inviare una sequenza speci鍖ca: sendkey ctrl-alt-canc




    Paolo Campegiani ()          Virtualizzazione             Linux Day   33 / 81
QEmu: gestione delle immagini




   Quello che per il sistema guest 竪 un 鍖le system, per il sistema
   host 竪 un 鍖le
   Il formato adottato da QEmu per il 鍖le 竪 diretto ed immediato,
   quindi la copia di una immagine di sistema si fa usando cp
   E possibile avere dei copy on write (COW)




   Paolo Campegiani ()       Virtualizzazione              Linux Day   34 / 81
QEMU: Con鍖gurazione della rete




QEmu ha due distinte modalit di emulazione della rete:
    La user mode network stack, in cui lo stack di rete viene emulato
    completamente via software
    Utilizzo del tap device (richiede root)
Nella modalit user, lhost opera come 鍖rewall e come server DHCP
allindirizzo 10.0.2.2. I client prendono gli indirizzi a a partire da
10.0.2.15.




    Paolo Campegiani ()         Virtualizzazione             Linux Day   35 / 81
QEmu: un caso semplice




Vogliamo con鍖gurare un guest che esporti un servizio di rete (HTTP)

qemu -hda cariddi.img -redir tcp:8080:10.0.2.15:80

In questo modo le connessioni sulla porta 8080 dellhost saranno
riportate alla porta 80 del guest di indirizzo 10.0.2.15.




    Paolo Campegiani ()       Virtualizzazione            Linux Day   36 / 81
QEMU: complichiamo le cose /1

Vogliamo con鍖gurare due guest, che possano comunicare tra di loro
ma non con lhost. I due guest hanno un disco proprio ed uno
condiviso.
    qemu -hda scilla.img -hdb shared.img -usb opzioni di
    base
    -net nic,macaddr=52:54:00:12:34:61 de鍖nisce una
    scheda di rete con il MAC Address riportato
    -net user,hostname=scilla de鍖nisce lhostname dato dal
    DHCP
    -net socket,listen=:10000 crea un punto di contatto tra i
    guest
Le opzioni -net de鍖niscono quindi una VLAN. Si possono avere pi湛
VLAN.


    Paolo Campegiani ()      Virtualizzazione            Linux Day   37 / 81
QEMU: complichiamo le cose /2



Analogamente, laltro guest sar cos狸 con鍖gurato:
    qemu -hda cariddi.img -hdb shared.img -usb
    -net nic,macaddr=52:54:00:12:34:60
    -net user,hostname=cariddi
    -net socket,connect=127.0.0.1:10000 si aggancia al
    punto di contatto creato
Risultato: i due guest avranno indirizzi 10.0.2.15 e 10.0.2.16, gli
hostname dati e sono in comunicazione con loro ma non con lhost.




    Paolo Campegiani ()       Virtualizzazione             Linux Day   38 / 81
QEMU: host only networking

E possibile collegare ogni guest solo allhost, usando /dev/tap per
avere migliori prestazioni:
  1   tunctl -t tap1
  2   ifconfig tap1 up
  3   brctl addbr br1
  4   brctl addif br1 tap1
  5   ifconfig br1 172.25.0.1 netmask 255.255.255.0
      broadcast 172.25.0.255
  6   qemu -hda cariddi.img -net nic,vlan=0 -net
      tap,vlan=0, script=qemu-ifup.sh

Questo approccio richiede di lavorare come root.


      Paolo Campegiani ()      Virtualizzazione              Linux Day   39 / 81
QEmu: qemu-ifup.sh



qemu-ifup.sh
#! /bin/sh
echo Executing            qemu-ifup
/sbin/ifconfig            $1 0.0.0.0 promisc up
echo Adding $1            to br1
/usr/bin/brctl            addiff br1 $1


Non c竪 pi湛 un server DHCP, quindi ogni guest ha una scheda di rete
con鍖gurata in modo statico (ifconfig eth0 172.25.0.X).




    Paolo Campegiani ()          Virtualizzazione         Linux Day   40 / 81
QEmu: complichiamo molto le cose /1




Vogliamo sempre avere due guest, ognuno dei quali dotato di due
interfacce di rete:
    La prima 竪 attivata da un DHCP e viene utilizzata per le
    comunicazioni tra i due guest
    La seconda viene utilizzata per comunicare con lhost




    Paolo Campegiani ()       Virtualizzazione              Linux Day   41 / 81
QEmu: complichiamo molto le cose /2


qemu -hda scilla.img -hdb shared.img
Prima VLAN
   -net nic,macaddr=52:54:00:12:34:61 -net
   user,hostname=scilla
   -net socket,vlan=0,listen=:10000

Seconda VLAN
   -net nic,vlan=1,macaddr=52:54:00:12:34:71
   -net tap,vlan=1,script=qemu-tap.sh
   -net socket,vlan=1,listen=:10001




   Paolo Campegiani ()   Virtualizzazione    Linux Day   42 / 81
QEmu: complichiamo molto le cose /3



   qemu -hda cariddi.img -hdb shared.img
   -net nic,macaddr=52:54:00:12:34:60 -net
   user,hostname=scilla
   -net socket,vlan=0,connect=127.0.0.1:10000
   -net nic,vlan=1,macaddr=52:54:00:12:34:70
   -net tap,vlan=1,script=qemu-tap.sh
   -net socket,vlan=1,connect=127.0.0.1:10001




   Paolo Campegiani ()   Virtualizzazione    Linux Day   43 / 81
QEmu: complichiamo molto le cose /4




qemu-tap.sh
#! /bin/sh
/sbin/ifconfig $1 172.20.0.1

Le schede di rete dei guest si attiveranno staticamente
ifconfig eth1 172.20.0.X.




    Paolo Campegiani ()        Virtualizzazione           Linux Day   44 / 81
QEmu: pregi e difetti




   Complesso da far funzionare (non abbiamo parlato della gestione
   del 鍖rewall o di VDE)
   Non 竪 particolarmente veloce
   Molto compatto, il pacchetto 竪 di meno di 2 MB
   Flessibile, emula anche architetture non x86




   Paolo Campegiani ()       Virtualizzazione           Linux Day   45 / 81
VMware


E una societ (sussidiaria di EMC2) che offre una famiglia di prodotti
dedicati alla virtualizzazione:
    VMware player per eseguire macchine virtuali costruite da altri
    (gratuito ma non libero)
    VMware Server che permette di creare ed eseguire macchine
    virtuali (gratuito ma non libero)
    VMware GSX Server che 竪 un sistema operativo ed un
    virtualizzatore (non gratuito)
    VMware Infrastructure che offre gestione centralizzata, af鍖dabilit,
    live migration




    Paolo Campegiani ()        Virtualizzazione              Linux Day   46 / 81
VMware server




   Disponibile per Windows e Linux (32/64 bit)
   Virtualizzatore per architetture x86
   Rilasciato gratuitamente un anno fa circa (risposta a Xen?)
   Ha un suo sistema di scripting




   Paolo Campegiani ()        Virtualizzazione            Linux Day   47 / 81
Installazione di VMware



 1   Scaricare il pacchetto (rpm/tar.gz) dal sito di VMware (100 MB
     circa)
 2   Ottenere il numero di licenza
 3   Installare il pacchetto
 4   Eseguire /usr/bin/vmware-config.pl come root per
     con鍖gurare il sistema (necessario ogni volta che si aggiorna il
     kernel)
 5   Gestire lavvio (chkconfig - -level 345 vmware off)




     Paolo Campegiani ()        Virtualizzazione             Linux Day   48 / 81
VMware: Network




    Bridged networking: il guest 竪 in bridge con lhost
    NAT: lhost opera come NAT per il guest
    Host-only networking

Queste modalit non sono equivalenti in termini di velocit!




    Paolo Campegiani ()        Virtualizzazione                Linux Day   49 / 81
VMware: dischi virtuali



I dischi virtuali di VMware sono dei 鍖le .vmdk (formato non ingenuo).
Per creare un disco:
    vmware-vdiskmanager -c per creare il disco
    -s <dim> per speci鍖care la dimensione
    -a lsilogic per speci鍖care un adattatore di tipo LSILogic
    -t 0 per avere un unico 鍖le sparso per il disco
    diskname.vmdk per speci鍖care il nome del disco




    Paolo Campegiani ()        Virtualizzazione             Linux Day   50 / 81
VMware: con鍖gurazione della macchina virtuale




La con鍖gurazione della macchina virtuale 竪 un 鍖le di testo con
estensione .vmx, con molti diversi parametri. E possibile ad esempio
de鍖nire pi湛 dischi collegati in multipath, usare laccelerazione gra鍖ca
3D della scheda video dellhost, con鍖gurare pi湛 schede di rete con
connessioni di tipo diverso.




    Paolo Campegiani ()        Virtualizzazione              Linux Day   51 / 81
VMware: pregi e difetti




   E il virtualizzatore pi湛 diffuso e pi湛 performante
   E gratuito ma non libero
   E un server che gira in background




   Paolo Campegiani ()         Virtualizzazione          Linux Day   52 / 81
Xen




E un paravirtualizzatore sviluppato dalluniversit di Cambridge:
    Supporta architetture x86
    Windows viene virtualizzato con processori VT-x
    E incluso in RHEL 5 e SuSE 10




    Paolo Campegiani ()         Virtualizzazione             Linux Day   53 / 81
I domini di Xen




   Ogni macchina virtuale prende il nome di domain
   Il dominio 0 竪 il sistema operativo host
   Nel dominio 0 gira il demone xend
   I domini sono gestiti via xm




   Paolo Campegiani ()        Virtualizzazione       Linux Day   54 / 81
Xen: uso delle risorse



Ogni dominio 竪 gestito da un 鍖le di con鍖gurazione che permette di
speci鍖care:
    Dimensione della memoria
    Numero di processori virtuali
    Quali device a blocchi sono visti
    Quali dispositivi PCI sono assegnati
Inoltre via xm 竪 possibile de鍖nire lo spazio di processore a
disposizione di ogni dominio.




    Paolo Campegiani ()        Virtualizzazione                Linux Day   55 / 81
Xen: interfacce di rete


Le interfacce di rete che lhost e i guest vedono sono sempre i familiari
ethN, ma ne vengono attivati altri:
     Per il dominio Y, la sua interfaccia di rete X-esima 竪 mappata, per
     lhost, su vifY.X
          eth0 dellhost 竪 quindi vif0.0
          eth0 del guest nel dominio 1 竪 vif1.0
          eth1 del guest nel dominio 2 竪 vif2.1
    Le vif0.X sono ulteriormente collegate a vethX (visibili solo
    dallhost)
    Uso del bridging per rendere i vari domini visibili ed autonomi




    Paolo Campegiani ()            Virtualizzazione          Linux Day   56 / 81
Xen: live migration



Xen consente di migrare un sistema guest da un nodo 鍖sico ad un
altro, mantenendo il guest sempre in funzione.

Un server Quake3 migra in modo quasi trasparente agli utenti (50 ms
di 鍖nestra temporale in cui varia il jitter dei pacchetti)

Un server web sotto SpecWeb migra in circa 1 minuto, riducendo il
throughput ma non il numero di client serviti.




    Paolo Campegiani ()       Virtualizzazione            Linux Day   57 / 81
OpenVZ




E la versione GPL su cui si basa Virtuozzo, il paravirtualizzatore di
SWSoft:

    Il kernel del guest e quello dellhost sono modi鍖cati
    Funziona solo con kernel Linux
    Permette di de鍖nire dei Virtual Environments (VE)




    Paolo Campegiani ()         Virtualizzazione              Linux Day   58 / 81
OpenVZ: Virtual Environments



Ogni VE 竪 una entit separata dalle altre, con i propri:
    File: librerie, applicazioni, dati
    Utenti e gruppi, compreso root
    Spazio dei processi, compreso init
    Rete, compreso indirizzo IP e regole di 鍖rewalling e routing
    Dispositivi
    Oggetti IPC




    Paolo Campegiani ()           Virtualizzazione          Linux Day   59 / 81
OpenVZ: gestione delle risorse




Il punto di forza di OpenVZ 竪 la gestione delle risorse. Ogni VE:
    Ha una quota di spazio disco
    E eseguito da uno scheduler fair-share (a livello di VE)
    ha associati dei beancounter, che permettono di controllare altri
    tipi di risorse in modo granulare (/proc/user_beancounter)




    Paolo Campegiani ()        Virtualizzazione                 Linux Day   60 / 81
OpenVZ: installazione




 1   Installare il kernel OpenVZ ed alcuni programmi di gestione
 2   Disabilitare SElinux, modi鍖care alcuni parametri via sysctl.conf e
     abilitare il connection tracking sul VE0 (ovvero lhost)
 3   Riavviare
 4   Attivare il servizio vz




     Paolo Campegiani ()        Virtualizzazione             Linux Day   61 / 81
OpenVZ: i template




   In ogni VE 竪 possibile installare una distribuzione di Linux
   I template sono degli archivi che contengono il necessario per
   fornire una distribuzione minimale
   E possibile creare nuovi template
   Ad un template sono associati dei metadati che lo descrivono




   Paolo Campegiani ()        Virtualizzazione              Linux Day   62 / 81
OpenVZ: installare un template gi fatto




 1   Installare i software di gestione dei template (vzyum*)
 2   Installare il pacchetto de鍖nente il template scelto (vztmpl-nome)
 3   Copiare il sistema minimale (nome-template.tar.gz) in
     /vz/template/cache/




     Paolo Campegiani ()        Virtualizzazione               Linux Day   63 / 81
OpenVZ: creare un VE



Ad ogni VE viene associato un numero. Per creare il VE 100 con
template centos-4-minimal e un dato indirizzo IP:

vzctl create 100 - -ostemplate centos-4-minimal
- -ipadd 192.168.1.100

E possibile speci鍖care limiti sulle risorse, moduli di iptables
accessibili, capabilities disponibili e salvare la con鍖gurazione del VE.




    Paolo Campegiani ()         Virtualizzazione              Linux Day   64 / 81
OpenVZ: operare con i VE




   vzctl start NUM
   vzctl exec NUM COMANDO
   vzctl enter NUM (per uscire, exit)
   vzctl stop NUM
   vzctl destroy NUM




   Paolo Campegiani ()     Virtualizzazione   Linux Day   65 / 81
OpenVZ: live migration




E possibile trasferire un VE in funzione da un host ad un altro:

vzmigrate - -online <host-destinazione> NUM

Il trasferimento dei dati avviene via ssh.
E possibile eseguire questa operazione in pi湛 passi con un
meccanismo di checkpoint.




    Paolo Campegiani ()         Virtualizzazione              Linux Day   66 / 81
Quadrante
                                                                          Velocita
                                                                 OpenVZ
                                      Hardware assisted?


                                                           Xen
                             VMware
                      QEmu
      Eterogeneita
   Paolo Campegiani ()                                                                Virtualizzazione   Linux Day   67 / 81
Af鍖dabilit



Una delle applicazioni tipiche dei sistemi virtualizzati 竪 lalta af鍖dabilit:

Se i dischi dei guest sono 鍖le che vengono ospitati da una SAN, 竪
possibile associare un guest ad un qualsiasi nodo 鍖sico che veda la
SAN.


In questo modo 竪 possibile intervenire 鍖sicamente sui nodi host senza
pregiudicare il servizio offerto dai guest, riallocandoli dinamicamente.




    Paolo Campegiani ()           Virtualizzazione               Linux Day   68 / 81
Af鍖dabilit: scenario attivo-passivo




In questo scenario, c竪 un sistema guest ospitato su un sistema host,
ed 竪 disponibile un sistema host di riserva.

Non 竪 un caso migliore di una normale con鍖gurazione attivo-passivo
ad alta af鍖dabilit.




    Paolo Campegiani ()        Virtualizzazione            Linux Day   69 / 81
Af鍖dabilit: scenario attivo-attivo




In questo scenario ci sono due sistemi guest ospitati su due sistemi
host, ognuno dei quali pu嘆 farsi carico dellesecuzione dellaltro guest.

Il vantaggio rispetto ad un sistema attivo-attivo pu嘆 risiedere nel fatto
che con due nodi 鍖sici vengono erogati due servizi indipendenti luno
dallaltro (ad esempio con sistemi operativi guest diversi).




    Paolo Campegiani ()         Virtualizzazione               Linux Day   70 / 81
Af鍖dabilit: scenario attivi-passivi




In questo scenario ci sono pi湛 nodi attivi ed un certo numero (anche
uno solo) di nodi passivi, che possono essere anche in standby (senza
guest). I nodi passivi acquisiscono i guest dei nodi attivi in situazione
critica.

In questo modo si ha una alta af鍖dabilit per una pluralit di servizi
distribuendone il costo tra tutti, minimizzando i duplicati.




    Paolo Campegiani ()         Virtualizzazione              Linux Day   71 / 81
Gestire lalta af鍖dabilit



Le migrazioni delle immagini avvengono se c竪 un direttore dorchestra
che:
    monitora sia i sistemi 鍖sici che i guest
    determina che tipo di failure c竪 stata e come reagire
    mette in pratica la decisione presa (anche ricon鍖gurando
    linfrastruttura di rete)
    opera in modo distribuito per non essere un singolo punto di
    fallimento




    Paolo Campegiani ()         Virtualizzazione             Linux Day   72 / 81
Sicurezza




La regola doro della sicurezza dice che un sistema 竪 sicuro tanto
quanto la sua componente pi湛 debole.


Quanto 竪 sicuro un sistema virtualizzato?




    Paolo Campegiani ()        Virtualizzazione             Linux Day   73 / 81
Componenti da analizzare per la sicurezza




In un sistema virtualizzato sono presenti:
    il sistema host
    il virtualizzatore
    il sistema guest

La componente pi湛 insicura delle tre 竪 quella che rende il sistema
insicuro.




    Paolo Campegiani ()        Virtualizzazione            Linux Day   74 / 81
Quanto 竪 sicuro il vostro BIOS?




In una logica di virtualizzazione, lhost e il virtualizzatore sono simili al
BIOS, in quanto offrono un servizio al sistema operativo (guest).

Il BIOS 竪 una componente raramente aggiornata per la sicurezza,
completamente embedded, che ha il controllo della macchina (almeno
per un po di tempo), certamente con dei bachi.




    Paolo Campegiani ()           Virtualizzazione               Linux Day   75 / 81
Come rendere sicuro un sistema virtualizzato



Se non ci sono attacchi basati sulle debolezze del BIOS 竪 perch竪 il
BIOS 竪 accessibile solo in locale.


Se lhost e la VMM sono accessibili solo in locale, non si riduce la
sicurezza del guest.


E una condizione forte, ma va considerata in fase di progettazione di
una architettura virtualizzata.




    Paolo Campegiani ()         Virtualizzazione             Linux Day   76 / 81
Qualit di Servizio




Un possibile scenario di utilizzo:
    Pluralit di servizi erogati
    Variabilit estrema nei workload
Se i fornitori dei servizi sono virtualizzati, possono essere
spostati/raggruppati in funzione del workload a cui fanno fronte, per
soddisfare un Service Level Agreement.




    Paolo Campegiani ()            Virtualizzazione          Linux Day   77 / 81
Considerazioni 鍖nali - 1




   La virtualizzazione 竪 un asset architetturale
   Permette il consolidamento dei sistemi, la loro protezione e
   compartimentazione
   Consente di superare le limitazioni dovute alluso di un solo
   sistema operativo (compatibilit hardware, applicazioni, ...)




   Paolo Campegiani ()        Virtualizzazione             Linux Day   78 / 81
Considerazioni 鍖nali - 2




   La virtualizzazione 竪 una metodologia complessa
   Le tecniche possibili sono diverse e hanno tradeoffs diversi
   E comunque uno strato hw/sw in pi湛, con quindi aggiuntive
   complessit di gestione
   Sicurezza ed af鍖dabilit di queste soluzioni sono ancora dei
   territori inesplorati




   Paolo Campegiani ()       Virtualizzazione              Linux Day   79 / 81
Una visione bucolica...




In una fattoria:
  1   Il foraggio viene dato alle mucche
  2   Le mucche producono il latte
  3   Il latte viene venduto ai clienti
  4   Il proprietario della fattoria 竪 contento




      Paolo Campegiani ()          Virtualizzazione   Linux Day   80 / 81
...ma anche informatica



In un CED:
 1   I sistemisti offrono risorse di calcolo agli applicativi
 2   Gli applicativi sono usati dai clienti
 3   I clienti pagano per luso
 4   Il proprietario del CED 竪 contento


Date pi湛 foraggio alle vostre mucche!




     Paolo Campegiani ()          Virtualizzazione              Linux Day   81 / 81

More Related Content

What's hot (20)

La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010
Davide Grossato
Ambienti di virtualizzazione
Ambienti di virtualizzazioneAmbienti di virtualizzazione
Ambienti di virtualizzazione
Galliate Linux User Group
LTSP
LTSPLTSP
LTSP
Francesco Taurino
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
pietrobr
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
Truelite
Sistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxSistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con Linux
Truelite
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Develer S.r.l.
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
Fabio Nisci
GUIDA VMWARE
GUIDA VMWAREGUIDA VMWARE
GUIDA VMWARE
PRAGMA PROGETTI
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
Majong DevJfu
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
Marco Cavallini
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e contro
Andrea Adami
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
Alessandro Grandi
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
Majong DevJfu
VMware SRM - Una visione architetturale
VMware SRM - Una visione architetturaleVMware SRM - Una visione architetturale
VMware SRM - Una visione architetturale
VMUG IT
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
Majong DevJfu
Nutanix - Inail User Case
Nutanix - Inail User CaseNutanix - Inail User Case
Nutanix - Inail User Case
VMUG IT
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUG IT
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011
Mirco Piccin
Moduli del kernel - Boot del sistema
 Moduli del kernel - Boot del sistema Moduli del kernel - Boot del sistema
Moduli del kernel - Boot del sistema
Fulvio Corno
La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010
Davide Grossato
Delphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev OverviewDelphi Day 2009 Win7 Dev Overview
Delphi Day 2009 Win7 Dev Overview
pietrobr
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
Truelite
Sistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con LinuxSistemi di virtualizzazione con Linux
Sistemi di virtualizzazione con Linux
Truelite
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Develer S.r.l.
Linux Device Drivers
Linux Device DriversLinux Device Drivers
Linux Device Drivers
Fabio Nisci
Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05Sistemi Operativi: Struttura avanzata - Lezione 05
Sistemi Operativi: Struttura avanzata - Lezione 05
Majong DevJfu
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
ArduinoDay17 - Creazione di un piccolo supercomputer con Raspberry PI per cal...
Marco Cavallini
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e contro
Andrea Adami
Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04Sistemi Operativi: Struttura - Lezione 04
Sistemi Operativi: Struttura - Lezione 04
Majong DevJfu
VMware SRM - Una visione architetturale
VMware SRM - Una visione architetturaleVMware SRM - Una visione architetturale
VMware SRM - Una visione architetturale
VMUG IT
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
Majong DevJfu
Nutanix - Inail User Case
Nutanix - Inail User CaseNutanix - Inail User Case
Nutanix - Inail User Case
VMUG IT
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUG IT
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011
Mirco Piccin
Moduli del kernel - Boot del sistema
 Moduli del kernel - Boot del sistema Moduli del kernel - Boot del sistema
Moduli del kernel - Boot del sistema
Fulvio Corno

Similar to Virtualizzazione (20)

Tecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei serverTecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei server
Truelite
Seminario VMWare 2014
Seminario VMWare 2014Seminario VMWare 2014
Seminario VMWare 2014
Giuseppe Luciano
VMUGIT UC 2013 - 09b VMUGIT SMB
VMUGIT UC 2013 - 09b VMUGIT SMB VMUGIT UC 2013 - 09b VMUGIT SMB
VMUGIT UC 2013 - 09b VMUGIT SMB
VMUG IT
VMUG.IT @ ITway Campus 2014
VMUG.IT @ ITway Campus 2014VMUG.IT @ ITway Campus 2014
VMUG.IT @ ITway Campus 2014
Andrea Mauro
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terra
VMUG IT
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Andrea Mauro
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
Alfonso Martino
Virtualizzazione - FLOSS
Virtualizzazione - FLOSSVirtualizzazione - FLOSS
Virtualizzazione - FLOSS
Stefano Morandi
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Marco Ferrigno
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud Computing
VMEngine
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
Luca Giusti
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
fcrippa
Sicurezza della virtualizzazione - SMAU 2009
Sicurezza della virtualizzazione - SMAU 2009Sicurezza della virtualizzazione - SMAU 2009
Sicurezza della virtualizzazione - SMAU 2009
Claudio Criscione
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Tommaso Torti
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
VMUG IT
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
VMUG IT
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesMITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
Gianluca Gabrielli
Proxmox VE
Proxmox VEProxmox VE
Proxmox VE
Dario Tion
Evento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione powerEvento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione power
PRAGMA PROGETTI
Virtualizzazione Power IBM
Virtualizzazione Power IBMVirtualizzazione Power IBM
Virtualizzazione Power IBM
S.info Srl
Tecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei serverTecnologie di virtualizzazione per il consolidamento dei server
Tecnologie di virtualizzazione per il consolidamento dei server
Truelite
VMUGIT UC 2013 - 09b VMUGIT SMB
VMUGIT UC 2013 - 09b VMUGIT SMB VMUGIT UC 2013 - 09b VMUGIT SMB
VMUGIT UC 2013 - 09b VMUGIT SMB
VMUG IT
VMUG.IT @ ITway Campus 2014
VMUG.IT @ ITway Campus 2014VMUG.IT @ ITway Campus 2014
VMUG.IT @ ITway Campus 2014
Andrea Mauro
VMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terraVMUGIT - Virtualizzare con i piedi per terra
VMUGIT - Virtualizzare con i piedi per terra
VMUG IT
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terraPresentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Presentazione al VMUGIT UC 2014 - Virtualizzare con i piedi per terra
Andrea Mauro
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
MuleSoft Meetup Roma - Runtime Fabric Series (From Zero to Hero) - Sessione 1
Alfonso Martino
Virtualizzazione - FLOSS
Virtualizzazione - FLOSSVirtualizzazione - FLOSS
Virtualizzazione - FLOSS
Stefano Morandi
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
Marco Ferrigno
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud Computing
VMEngine
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
Luca Giusti
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
fcrippa
Sicurezza della virtualizzazione - SMAU 2009
Sicurezza della virtualizzazione - SMAU 2009Sicurezza della virtualizzazione - SMAU 2009
Sicurezza della virtualizzazione - SMAU 2009
Claudio Criscione
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Agile Day 2012 - Sviluppo agile in un contesto bancario: come far convivere t...
Tommaso Torti
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
VMUG IT
VMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia ViewVMUGIT UC 2013 - 05b Telecom Italia View
VMUGIT UC 2013 - 05b Telecom Italia View
VMUG IT
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding ShellcodesMITM Attack with Patching Binaries on the Fly by Adding Shellcodes
MITM Attack with Patching Binaries on the Fly by Adding Shellcodes
Gianluca Gabrielli
Evento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione powerEvento 18 giugno - Virtualizzazione power
Evento 18 giugno - Virtualizzazione power
PRAGMA PROGETTI
Virtualizzazione Power IBM
Virtualizzazione Power IBMVirtualizzazione Power IBM
Virtualizzazione Power IBM
S.info Srl

Virtualizzazione

  • 1. Virtualizzazione Approcci software ed hardware, considerazioni architetturali Paolo Campegiani <paolo@paolocampegiani.it> Linux Day - 28 Ottobre 2006
  • 2. Men湛 Tecniche di virtualizzazione e paravirtualizzazione Virtualizzatori: QEMu e VMware Paravirtualizzatori: Xen e OpenVZ Alta af鍖dabilit Sicurezza Paolo Campegiani () Virtualizzazione Linux Day 2 / 81
  • 3. Obiettivi Comprendere come opera un virtualizzatore Utilizzare operativamente i vari software Valutare le implicazioni di sicurezza e di af鍖dabilit Paolo Campegiani () Virtualizzazione Linux Day 3 / 81
  • 4. Everybody loves virtualization E uno dei settori a maggior sviluppo nellinformatica: Mercato di 18 mld di dollari per il 2007 (IDC) Tutti i grandi player hanno una loro strategia (IBM, Red Hat, SuSE, Microsoft, Apple, ...) AMD e Intel hanno processori virtualization-aware Fattore chiave di RHEL 5.0/SuSE 10 E solo un hype? Paolo Campegiani () Virtualizzazione Linux Day 4 / 81
  • 5. From the dawn of time it came Il primo sistema che offriva la virtualizzazione era lIBM S/360 (1964) Uno degli articoli fondamentali nel settore (Goldberg e Popek) 竪 del 1974 Nel 1998 nasce VMware, ovvero la virtualizzazione per sistemi x86 Perch竪 oggi ne parlano tutti? Paolo Campegiani () Virtualizzazione Linux Day 5 / 81
  • 6. Virtualization everywhere Esistono molti tipi di virtualizzazione: La macchina virtuale Java che esegue codice Java I volumi esportati da una SAN Le risorse di sistema viste dai programmi applicativi Le topologie di rete pi湛 complesse Cosa ha di particolare la virtualizzazione di sistema operativo? Paolo Campegiani () Virtualizzazione Linux Day 6 / 81
  • 7. The case for virtualization Gestire dei sistemi legacy Consolidare pi湛 servizi in ununico server Avere una piattaforma di test identica a quella di produzione Migliorare laf鍖dabilit La virtualizzazione 竪 quello di cui ho bisogno? Paolo Campegiani () Virtualizzazione Linux Day 7 / 81
  • 8. Whats in a name? Virtualizzazione - 1 E il raggruppamento e lastrazione di risorse in modo tale da mascherarne la natura 鍖sica e i limiti agli utenti delle risorse. Virtualizzazione - 2 E una metodologia per dividere le risorse in ambienti di esecuzione multipli. Paolo Campegiani () Virtualizzazione Linux Day 8 / 81
  • 9. Scenari duso Consolidamento di server: pi湛 servizi di rete offerti da server oggi distinti vengono migrati su un singolo server Testing: 竪 possibile duplicare un server di test in uno di produzione (o viceversa) Training: 竪 possibile fornire un ambiente completo di studio Paolo Campegiani () Virtualizzazione Linux Day 9 / 81
  • 10. Family business Esistono varie tecniche possibili: Emulazione Virtualizzazione Paravirtualizzazione Paolo Campegiani () Virtualizzazione Linux Day 10 / 81
  • 11. Un po di nomi Virtual Machine Monitor (VMM): la componente applicativa che realizza la virtualizzazione Hypervisor: la componente di sistema che realizza la virtualizzazione (Sistema) guest: il sistema virtualizzato (Sistema) host: il sistema reale Paolo Campegiani () Virtualizzazione Linux Day 11 / 81
  • 12. Virtualizzazione classica Secondo Popek e Goldberg le caratteristiche di un sistema perch竪 operi come un virtualizzatore sono: Fedelt: il software viene eseguito dalla VMM in modo analogo ad una esecuzione via hardware Prestazioni: la maggior parte delle istruzioni del guest sono eseguite dallhardware senza lintervento della VMM Sicurezza: la VMM gestisce tutte le risorse Paolo Campegiani () Virtualizzazione Linux Day 12 / 81
  • 13. Lapproccio trap and emulate Ogni processore multiprogrammabile ha dei livelli di privilegio: i programmi utente operano ad un livello basso, il sistema operativo ad un livello alto Le istruzioni non privilegiate possono essere eseguite direttamente senza lintervento della VMM Lesecuzione di una istruzione privilegiata causa una eccezione che viene catturata (trap) dalla VMM che la emula ricorrendo ai servizi del sistema operativo host Paolo Campegiani () Virtualizzazione Linux Day 13 / 81
  • 14. Trap and emulate: de-privileging Tutte le istruzioni privilegiate sono catturate (trap) perch竪 eseguite dalla VMM in un contesto non privilegiato In alcuni casi questo trap 竪 scatenato dal sistema operativo host (istruzione di I/O), in altri deve essere la VMM a proteggere le proprie strutture dati (la VMM e il codice del guest sono per lhost lo stesso segmento dati se non si usa la segmentazione) Paolo Campegiani () Virtualizzazione Linux Day 14 / 81
  • 15. Trap and emulate: shadow structures Lo stato reale dellhardware 竪 diverso da quello che il guest vede, in quanto il guest opera come se fosse privilegiato (es: i registri del processore) Compito della VMM 竪 gestire queste differenze La VMM crea delle shadow structures derivandole dalle primary structures che il guest vede E molto semplice da fare per i registri della CPU Le Page Table Entries (PTE) hanno una gestione ben pi湛 complessa Paolo Campegiani () Virtualizzazione Linux Day 15 / 81
  • 16. Trap and emulate: memory traces 1 Il guest prova ad accedere ad una area di memoria 2 Il gestore delleccezione di paginazione d il controllo alla VMM 1 True page faults: viene propagata leccezione al guest (ad esempio, demand-paging) 2 Hidden page faults: non c竪 stata la violazione delle politiche di accesso alla PTE, quindi occorre modi鍖care la shadow PTE. Il guest non viene informato Paolo Campegiani () Virtualizzazione Linux Day 16 / 81
  • 17. Trap and emulate: pro e contro E stato lapproccio standard al problema della virtualizzazione Veri鍖ca le condizioni di Popek e Goldberg E inef鍖ciente: ogni trap and emulate comporta un context switch Paolo Campegiani () Virtualizzazione Linux Day 17 / 81
  • 18. x86 e trap and emulate Larchitettura x86 non consente di realizzare una virtualizzazione via trap and emulate in modo ef鍖ciente. Il guest pu嘆 determinare il suo livello di privilegio corrente (CPL) leggendo gli ultimi due bit di %cs popf eseguita in modo non privilegiato non azzera il 鍖ag IF (interrupt delivery) Nessuna di queste due istruzioni pu嘆 scatenare una trap Paolo Campegiani () Virtualizzazione Linux Day 18 / 81
  • 19. Binary translation (BT) I sistemi non virtualization friendly richiedono che il guest sia eseguito da un interprete e non dal processore 鍖sico. Un binary translator opera come un compilatore pi湛 che come un interprete. Paolo Campegiani () Virtualizzazione Linux Day 19 / 81
  • 20. Opzioni per la binary translation Caso pi湛 fortunato: istruzione non privilegiata e virtualization friendly: Caso meno fortunato: istruzione non privilegiata ma critica (mov %cs, ...) Caso sfortunato: istruzione privilegiata Paolo Campegiani () Virtualizzazione Linux Day 20 / 81
  • 21. Binary translation: pro e contro I pi湛 veloci virtualizzatori ricorrono tutti alla BT Permette di non modi鍖care il sistema guest Ha una complessit di funzionamento elevata Paolo Campegiani () Virtualizzazione Linux Day 21 / 81
  • 22. Paravirtualizzazione E la modi鍖ca del sistema operativo guest in modo tale che la parte che comunica con lhardware venga modi鍖cata per interrogare il sistema host. Le applicazioni non vengono alterate. Paolo Campegiani () Virtualizzazione Linux Day 22 / 81
  • 23. Paravirtualizzazione: pregi e difetti Offre le maggiori prestazioni (perdite di performance di pochi punti percentuali) Richiede la modi鍖ca del sistema operativo guest Paolo Campegiani () Virtualizzazione Linux Day 23 / 81
  • 24. Processori virtualization aware Sia Intel (VT-X) che AMD (SVM) hanno processori che forniscono un supporto alla virtualizzazione: Virtual Machine Control Block (VMCB) contiene una parte dello stato del guest vmrun carica lo stato nel VMCB ed esegue il guest Lesecuzione prosegue 鍖nch竪 non si raggiunge una condizione (programmabile dalla VMM) di exit, che viene gestita dalla VMM Paolo Campegiani () Virtualizzazione Linux Day 24 / 81
  • 25. Processori per virtualizzazione: pro e contro E possibile virtualizzare anche quei sistemi operativi che non sono paravirtualizzabili Si tratta di un meccanismo simile al trap and emulate, e soffre degli stessi problemi (context switch) Le performance degradano allaumentare del numero degli exit, che vanno ridotti al minimo Ad esempio, non si esce ad ogni popf, ma si mette una copia shadow di %eflags nella VMCB Paolo Campegiani () Virtualizzazione Linux Day 25 / 81
  • 26. QEmu Opera sia come virtualizzatore che come cross-virtualizzatore: Ogni istruzione originale da eseguire viene scomposta in micro operazioni Ogni micro operazione viene eseguita da un codice C La conversione avviene per blocchi (Translated Blocks) Occorre gestire il codice automodi鍖cante (pi湛 complicato su x86) Paolo Campegiani () Virtualizzazione Linux Day 26 / 81
  • 27. QEMU in azione: binary translation addi r1,r1,-16 r1 = r1 - 16 1 movl_T0_r1 T0 = R1 2 addl_T0_im -16 T0 = T0 - 16 3 movl_r1_T0 r1 = T0 Paolo Campegiani () Virtualizzazione Linux Day 27 / 81
  • 28. QEMU in azione: micro operazioni movl_T0_R1 void op_movl_T0_R1(void) { T0 = env->regs[1]; } env->regs 竪 una struttura che contiene i 32 registri del processore PowerPC emulato Su x86, T0 竪 mappato sul registro ebx Paolo Campegiani () Virtualizzazione Linux Day 28 / 81
  • 29. QEMU: caratteristiche Emula x86, SPARC, ARM, PowerPC Gira su tutti i sistemi su cui gira Linux (o quasi, vedi x86_64) E costituito da una parte userland e una con un modulo di kernel, kqemu kqemu non 竪 rilasciato sotto GPL Permette di emulare pi湛 schede di rete Paolo Campegiani () Virtualizzazione Linux Day 29 / 81
  • 30. QEmu: installazione 1 Download di qemu e kqemu 2 tar xfvz qemu*.tar.gz 3 Spostare kqemu*tar.gz nella directory di qemu 4 tar xfvz kqemu*tar.gz 5 ./con鍖gure; make; make install 6 modprobe kqemu major=0 (major=0 solo per utenti Fedora/RH) 7 chmod 666 /dev/kqemu (anche via regole di udev) Paolo Campegiani () Virtualizzazione Linux Day 30 / 81
  • 31. QEMU: creazione dei dischi virtuali Il tool qemu-img permette di creare un 鍖le sparso da utilizzare come disco per il sistema virtualizzato: qemu-img create scilla.img 5GB crea il 鍖le scilla.img sparso di 5GB. Paolo Campegiani () Virtualizzazione Linux Day 31 / 81
  • 32. QEMU: operation starts! Una semplice invocazione di qemu pu嘆 essere: qemu -hda scilla.img -hdb shared.img -cdrom /dev/cdrom -boot cdrom -usb In cui come disco /dev/hda viene usato scilla.img, come disco /dev/hdb viene usato shared.img, come cdrom viene usato /dev/cdrom, il boot 竪 appunto da cdrom e viene emulato anche lusb. Paolo Campegiani () Virtualizzazione Linux Day 32 / 81
  • 33. Il monitor di QEmu Allinterno della 鍖nestra del sistema emulato, 竪 possibile invocare il monitor di QEmu, che consente di compiere alcune operazioni: Il monitor si invoca con ctrl-alt-2 Si esce dal monitor con ctrl-alt-1 Per espellere il cdrom: eject cdrom Per sostituire il cdrom: change cdrom filename C竪 la completion tab e lhistory Per inviare una sequenza speci鍖ca: sendkey ctrl-alt-canc Paolo Campegiani () Virtualizzazione Linux Day 33 / 81
  • 34. QEmu: gestione delle immagini Quello che per il sistema guest 竪 un 鍖le system, per il sistema host 竪 un 鍖le Il formato adottato da QEmu per il 鍖le 竪 diretto ed immediato, quindi la copia di una immagine di sistema si fa usando cp E possibile avere dei copy on write (COW) Paolo Campegiani () Virtualizzazione Linux Day 34 / 81
  • 35. QEMU: Con鍖gurazione della rete QEmu ha due distinte modalit di emulazione della rete: La user mode network stack, in cui lo stack di rete viene emulato completamente via software Utilizzo del tap device (richiede root) Nella modalit user, lhost opera come 鍖rewall e come server DHCP allindirizzo 10.0.2.2. I client prendono gli indirizzi a a partire da 10.0.2.15. Paolo Campegiani () Virtualizzazione Linux Day 35 / 81
  • 36. QEmu: un caso semplice Vogliamo con鍖gurare un guest che esporti un servizio di rete (HTTP) qemu -hda cariddi.img -redir tcp:8080:10.0.2.15:80 In questo modo le connessioni sulla porta 8080 dellhost saranno riportate alla porta 80 del guest di indirizzo 10.0.2.15. Paolo Campegiani () Virtualizzazione Linux Day 36 / 81
  • 37. QEMU: complichiamo le cose /1 Vogliamo con鍖gurare due guest, che possano comunicare tra di loro ma non con lhost. I due guest hanno un disco proprio ed uno condiviso. qemu -hda scilla.img -hdb shared.img -usb opzioni di base -net nic,macaddr=52:54:00:12:34:61 de鍖nisce una scheda di rete con il MAC Address riportato -net user,hostname=scilla de鍖nisce lhostname dato dal DHCP -net socket,listen=:10000 crea un punto di contatto tra i guest Le opzioni -net de鍖niscono quindi una VLAN. Si possono avere pi湛 VLAN. Paolo Campegiani () Virtualizzazione Linux Day 37 / 81
  • 38. QEMU: complichiamo le cose /2 Analogamente, laltro guest sar cos狸 con鍖gurato: qemu -hda cariddi.img -hdb shared.img -usb -net nic,macaddr=52:54:00:12:34:60 -net user,hostname=cariddi -net socket,connect=127.0.0.1:10000 si aggancia al punto di contatto creato Risultato: i due guest avranno indirizzi 10.0.2.15 e 10.0.2.16, gli hostname dati e sono in comunicazione con loro ma non con lhost. Paolo Campegiani () Virtualizzazione Linux Day 38 / 81
  • 39. QEMU: host only networking E possibile collegare ogni guest solo allhost, usando /dev/tap per avere migliori prestazioni: 1 tunctl -t tap1 2 ifconfig tap1 up 3 brctl addbr br1 4 brctl addif br1 tap1 5 ifconfig br1 172.25.0.1 netmask 255.255.255.0 broadcast 172.25.0.255 6 qemu -hda cariddi.img -net nic,vlan=0 -net tap,vlan=0, script=qemu-ifup.sh Questo approccio richiede di lavorare come root. Paolo Campegiani () Virtualizzazione Linux Day 39 / 81
  • 40. QEmu: qemu-ifup.sh qemu-ifup.sh #! /bin/sh echo Executing qemu-ifup /sbin/ifconfig $1 0.0.0.0 promisc up echo Adding $1 to br1 /usr/bin/brctl addiff br1 $1 Non c竪 pi湛 un server DHCP, quindi ogni guest ha una scheda di rete con鍖gurata in modo statico (ifconfig eth0 172.25.0.X). Paolo Campegiani () Virtualizzazione Linux Day 40 / 81
  • 41. QEmu: complichiamo molto le cose /1 Vogliamo sempre avere due guest, ognuno dei quali dotato di due interfacce di rete: La prima 竪 attivata da un DHCP e viene utilizzata per le comunicazioni tra i due guest La seconda viene utilizzata per comunicare con lhost Paolo Campegiani () Virtualizzazione Linux Day 41 / 81
  • 42. QEmu: complichiamo molto le cose /2 qemu -hda scilla.img -hdb shared.img Prima VLAN -net nic,macaddr=52:54:00:12:34:61 -net user,hostname=scilla -net socket,vlan=0,listen=:10000 Seconda VLAN -net nic,vlan=1,macaddr=52:54:00:12:34:71 -net tap,vlan=1,script=qemu-tap.sh -net socket,vlan=1,listen=:10001 Paolo Campegiani () Virtualizzazione Linux Day 42 / 81
  • 43. QEmu: complichiamo molto le cose /3 qemu -hda cariddi.img -hdb shared.img -net nic,macaddr=52:54:00:12:34:60 -net user,hostname=scilla -net socket,vlan=0,connect=127.0.0.1:10000 -net nic,vlan=1,macaddr=52:54:00:12:34:70 -net tap,vlan=1,script=qemu-tap.sh -net socket,vlan=1,connect=127.0.0.1:10001 Paolo Campegiani () Virtualizzazione Linux Day 43 / 81
  • 44. QEmu: complichiamo molto le cose /4 qemu-tap.sh #! /bin/sh /sbin/ifconfig $1 172.20.0.1 Le schede di rete dei guest si attiveranno staticamente ifconfig eth1 172.20.0.X. Paolo Campegiani () Virtualizzazione Linux Day 44 / 81
  • 45. QEmu: pregi e difetti Complesso da far funzionare (non abbiamo parlato della gestione del 鍖rewall o di VDE) Non 竪 particolarmente veloce Molto compatto, il pacchetto 竪 di meno di 2 MB Flessibile, emula anche architetture non x86 Paolo Campegiani () Virtualizzazione Linux Day 45 / 81
  • 46. VMware E una societ (sussidiaria di EMC2) che offre una famiglia di prodotti dedicati alla virtualizzazione: VMware player per eseguire macchine virtuali costruite da altri (gratuito ma non libero) VMware Server che permette di creare ed eseguire macchine virtuali (gratuito ma non libero) VMware GSX Server che 竪 un sistema operativo ed un virtualizzatore (non gratuito) VMware Infrastructure che offre gestione centralizzata, af鍖dabilit, live migration Paolo Campegiani () Virtualizzazione Linux Day 46 / 81
  • 47. VMware server Disponibile per Windows e Linux (32/64 bit) Virtualizzatore per architetture x86 Rilasciato gratuitamente un anno fa circa (risposta a Xen?) Ha un suo sistema di scripting Paolo Campegiani () Virtualizzazione Linux Day 47 / 81
  • 48. Installazione di VMware 1 Scaricare il pacchetto (rpm/tar.gz) dal sito di VMware (100 MB circa) 2 Ottenere il numero di licenza 3 Installare il pacchetto 4 Eseguire /usr/bin/vmware-config.pl come root per con鍖gurare il sistema (necessario ogni volta che si aggiorna il kernel) 5 Gestire lavvio (chkconfig - -level 345 vmware off) Paolo Campegiani () Virtualizzazione Linux Day 48 / 81
  • 49. VMware: Network Bridged networking: il guest 竪 in bridge con lhost NAT: lhost opera come NAT per il guest Host-only networking Queste modalit non sono equivalenti in termini di velocit! Paolo Campegiani () Virtualizzazione Linux Day 49 / 81
  • 50. VMware: dischi virtuali I dischi virtuali di VMware sono dei 鍖le .vmdk (formato non ingenuo). Per creare un disco: vmware-vdiskmanager -c per creare il disco -s <dim> per speci鍖care la dimensione -a lsilogic per speci鍖care un adattatore di tipo LSILogic -t 0 per avere un unico 鍖le sparso per il disco diskname.vmdk per speci鍖care il nome del disco Paolo Campegiani () Virtualizzazione Linux Day 50 / 81
  • 51. VMware: con鍖gurazione della macchina virtuale La con鍖gurazione della macchina virtuale 竪 un 鍖le di testo con estensione .vmx, con molti diversi parametri. E possibile ad esempio de鍖nire pi湛 dischi collegati in multipath, usare laccelerazione gra鍖ca 3D della scheda video dellhost, con鍖gurare pi湛 schede di rete con connessioni di tipo diverso. Paolo Campegiani () Virtualizzazione Linux Day 51 / 81
  • 52. VMware: pregi e difetti E il virtualizzatore pi湛 diffuso e pi湛 performante E gratuito ma non libero E un server che gira in background Paolo Campegiani () Virtualizzazione Linux Day 52 / 81
  • 53. Xen E un paravirtualizzatore sviluppato dalluniversit di Cambridge: Supporta architetture x86 Windows viene virtualizzato con processori VT-x E incluso in RHEL 5 e SuSE 10 Paolo Campegiani () Virtualizzazione Linux Day 53 / 81
  • 54. I domini di Xen Ogni macchina virtuale prende il nome di domain Il dominio 0 竪 il sistema operativo host Nel dominio 0 gira il demone xend I domini sono gestiti via xm Paolo Campegiani () Virtualizzazione Linux Day 54 / 81
  • 55. Xen: uso delle risorse Ogni dominio 竪 gestito da un 鍖le di con鍖gurazione che permette di speci鍖care: Dimensione della memoria Numero di processori virtuali Quali device a blocchi sono visti Quali dispositivi PCI sono assegnati Inoltre via xm 竪 possibile de鍖nire lo spazio di processore a disposizione di ogni dominio. Paolo Campegiani () Virtualizzazione Linux Day 55 / 81
  • 56. Xen: interfacce di rete Le interfacce di rete che lhost e i guest vedono sono sempre i familiari ethN, ma ne vengono attivati altri: Per il dominio Y, la sua interfaccia di rete X-esima 竪 mappata, per lhost, su vifY.X eth0 dellhost 竪 quindi vif0.0 eth0 del guest nel dominio 1 竪 vif1.0 eth1 del guest nel dominio 2 竪 vif2.1 Le vif0.X sono ulteriormente collegate a vethX (visibili solo dallhost) Uso del bridging per rendere i vari domini visibili ed autonomi Paolo Campegiani () Virtualizzazione Linux Day 56 / 81
  • 57. Xen: live migration Xen consente di migrare un sistema guest da un nodo 鍖sico ad un altro, mantenendo il guest sempre in funzione. Un server Quake3 migra in modo quasi trasparente agli utenti (50 ms di 鍖nestra temporale in cui varia il jitter dei pacchetti) Un server web sotto SpecWeb migra in circa 1 minuto, riducendo il throughput ma non il numero di client serviti. Paolo Campegiani () Virtualizzazione Linux Day 57 / 81
  • 58. OpenVZ E la versione GPL su cui si basa Virtuozzo, il paravirtualizzatore di SWSoft: Il kernel del guest e quello dellhost sono modi鍖cati Funziona solo con kernel Linux Permette di de鍖nire dei Virtual Environments (VE) Paolo Campegiani () Virtualizzazione Linux Day 58 / 81
  • 59. OpenVZ: Virtual Environments Ogni VE 竪 una entit separata dalle altre, con i propri: File: librerie, applicazioni, dati Utenti e gruppi, compreso root Spazio dei processi, compreso init Rete, compreso indirizzo IP e regole di 鍖rewalling e routing Dispositivi Oggetti IPC Paolo Campegiani () Virtualizzazione Linux Day 59 / 81
  • 60. OpenVZ: gestione delle risorse Il punto di forza di OpenVZ 竪 la gestione delle risorse. Ogni VE: Ha una quota di spazio disco E eseguito da uno scheduler fair-share (a livello di VE) ha associati dei beancounter, che permettono di controllare altri tipi di risorse in modo granulare (/proc/user_beancounter) Paolo Campegiani () Virtualizzazione Linux Day 60 / 81
  • 61. OpenVZ: installazione 1 Installare il kernel OpenVZ ed alcuni programmi di gestione 2 Disabilitare SElinux, modi鍖care alcuni parametri via sysctl.conf e abilitare il connection tracking sul VE0 (ovvero lhost) 3 Riavviare 4 Attivare il servizio vz Paolo Campegiani () Virtualizzazione Linux Day 61 / 81
  • 62. OpenVZ: i template In ogni VE 竪 possibile installare una distribuzione di Linux I template sono degli archivi che contengono il necessario per fornire una distribuzione minimale E possibile creare nuovi template Ad un template sono associati dei metadati che lo descrivono Paolo Campegiani () Virtualizzazione Linux Day 62 / 81
  • 63. OpenVZ: installare un template gi fatto 1 Installare i software di gestione dei template (vzyum*) 2 Installare il pacchetto de鍖nente il template scelto (vztmpl-nome) 3 Copiare il sistema minimale (nome-template.tar.gz) in /vz/template/cache/ Paolo Campegiani () Virtualizzazione Linux Day 63 / 81
  • 64. OpenVZ: creare un VE Ad ogni VE viene associato un numero. Per creare il VE 100 con template centos-4-minimal e un dato indirizzo IP: vzctl create 100 - -ostemplate centos-4-minimal - -ipadd 192.168.1.100 E possibile speci鍖care limiti sulle risorse, moduli di iptables accessibili, capabilities disponibili e salvare la con鍖gurazione del VE. Paolo Campegiani () Virtualizzazione Linux Day 64 / 81
  • 65. OpenVZ: operare con i VE vzctl start NUM vzctl exec NUM COMANDO vzctl enter NUM (per uscire, exit) vzctl stop NUM vzctl destroy NUM Paolo Campegiani () Virtualizzazione Linux Day 65 / 81
  • 66. OpenVZ: live migration E possibile trasferire un VE in funzione da un host ad un altro: vzmigrate - -online <host-destinazione> NUM Il trasferimento dei dati avviene via ssh. E possibile eseguire questa operazione in pi湛 passi con un meccanismo di checkpoint. Paolo Campegiani () Virtualizzazione Linux Day 66 / 81
  • 67. Quadrante Velocita OpenVZ Hardware assisted? Xen VMware QEmu Eterogeneita Paolo Campegiani () Virtualizzazione Linux Day 67 / 81
  • 68. Af鍖dabilit Una delle applicazioni tipiche dei sistemi virtualizzati 竪 lalta af鍖dabilit: Se i dischi dei guest sono 鍖le che vengono ospitati da una SAN, 竪 possibile associare un guest ad un qualsiasi nodo 鍖sico che veda la SAN. In questo modo 竪 possibile intervenire 鍖sicamente sui nodi host senza pregiudicare il servizio offerto dai guest, riallocandoli dinamicamente. Paolo Campegiani () Virtualizzazione Linux Day 68 / 81
  • 69. Af鍖dabilit: scenario attivo-passivo In questo scenario, c竪 un sistema guest ospitato su un sistema host, ed 竪 disponibile un sistema host di riserva. Non 竪 un caso migliore di una normale con鍖gurazione attivo-passivo ad alta af鍖dabilit. Paolo Campegiani () Virtualizzazione Linux Day 69 / 81
  • 70. Af鍖dabilit: scenario attivo-attivo In questo scenario ci sono due sistemi guest ospitati su due sistemi host, ognuno dei quali pu嘆 farsi carico dellesecuzione dellaltro guest. Il vantaggio rispetto ad un sistema attivo-attivo pu嘆 risiedere nel fatto che con due nodi 鍖sici vengono erogati due servizi indipendenti luno dallaltro (ad esempio con sistemi operativi guest diversi). Paolo Campegiani () Virtualizzazione Linux Day 70 / 81
  • 71. Af鍖dabilit: scenario attivi-passivi In questo scenario ci sono pi湛 nodi attivi ed un certo numero (anche uno solo) di nodi passivi, che possono essere anche in standby (senza guest). I nodi passivi acquisiscono i guest dei nodi attivi in situazione critica. In questo modo si ha una alta af鍖dabilit per una pluralit di servizi distribuendone il costo tra tutti, minimizzando i duplicati. Paolo Campegiani () Virtualizzazione Linux Day 71 / 81
  • 72. Gestire lalta af鍖dabilit Le migrazioni delle immagini avvengono se c竪 un direttore dorchestra che: monitora sia i sistemi 鍖sici che i guest determina che tipo di failure c竪 stata e come reagire mette in pratica la decisione presa (anche ricon鍖gurando linfrastruttura di rete) opera in modo distribuito per non essere un singolo punto di fallimento Paolo Campegiani () Virtualizzazione Linux Day 72 / 81
  • 73. Sicurezza La regola doro della sicurezza dice che un sistema 竪 sicuro tanto quanto la sua componente pi湛 debole. Quanto 竪 sicuro un sistema virtualizzato? Paolo Campegiani () Virtualizzazione Linux Day 73 / 81
  • 74. Componenti da analizzare per la sicurezza In un sistema virtualizzato sono presenti: il sistema host il virtualizzatore il sistema guest La componente pi湛 insicura delle tre 竪 quella che rende il sistema insicuro. Paolo Campegiani () Virtualizzazione Linux Day 74 / 81
  • 75. Quanto 竪 sicuro il vostro BIOS? In una logica di virtualizzazione, lhost e il virtualizzatore sono simili al BIOS, in quanto offrono un servizio al sistema operativo (guest). Il BIOS 竪 una componente raramente aggiornata per la sicurezza, completamente embedded, che ha il controllo della macchina (almeno per un po di tempo), certamente con dei bachi. Paolo Campegiani () Virtualizzazione Linux Day 75 / 81
  • 76. Come rendere sicuro un sistema virtualizzato Se non ci sono attacchi basati sulle debolezze del BIOS 竪 perch竪 il BIOS 竪 accessibile solo in locale. Se lhost e la VMM sono accessibili solo in locale, non si riduce la sicurezza del guest. E una condizione forte, ma va considerata in fase di progettazione di una architettura virtualizzata. Paolo Campegiani () Virtualizzazione Linux Day 76 / 81
  • 77. Qualit di Servizio Un possibile scenario di utilizzo: Pluralit di servizi erogati Variabilit estrema nei workload Se i fornitori dei servizi sono virtualizzati, possono essere spostati/raggruppati in funzione del workload a cui fanno fronte, per soddisfare un Service Level Agreement. Paolo Campegiani () Virtualizzazione Linux Day 77 / 81
  • 78. Considerazioni 鍖nali - 1 La virtualizzazione 竪 un asset architetturale Permette il consolidamento dei sistemi, la loro protezione e compartimentazione Consente di superare le limitazioni dovute alluso di un solo sistema operativo (compatibilit hardware, applicazioni, ...) Paolo Campegiani () Virtualizzazione Linux Day 78 / 81
  • 79. Considerazioni 鍖nali - 2 La virtualizzazione 竪 una metodologia complessa Le tecniche possibili sono diverse e hanno tradeoffs diversi E comunque uno strato hw/sw in pi湛, con quindi aggiuntive complessit di gestione Sicurezza ed af鍖dabilit di queste soluzioni sono ancora dei territori inesplorati Paolo Campegiani () Virtualizzazione Linux Day 79 / 81
  • 80. Una visione bucolica... In una fattoria: 1 Il foraggio viene dato alle mucche 2 Le mucche producono il latte 3 Il latte viene venduto ai clienti 4 Il proprietario della fattoria 竪 contento Paolo Campegiani () Virtualizzazione Linux Day 80 / 81
  • 81. ...ma anche informatica In un CED: 1 I sistemisti offrono risorse di calcolo agli applicativi 2 Gli applicativi sono usati dai clienti 3 I clienti pagano per luso 4 Il proprietario del CED 竪 contento Date pi湛 foraggio alle vostre mucche! Paolo Campegiani () Virtualizzazione Linux Day 81 / 81