Il partizionamento era gia' ben conosciuto
dagli antichi romani che lo utilizzarono per gestire un impero
enorme. Piu' tardi gli inglesi sfruttarono lo stesso principio nell'amministrazione
delle proprie colonie.
La tecnica del partizionamento e' stata applicata al sistema operativo Unix
solo successivamente...
In questo breve documento vengono velocemente trattate le problematiche
del partizionamento
e la loro applicazioni sui sistemi operativi Unix piu' significativi nel corso del tempo:
IBM AIX,
HP HP-UX,
Sun Solaris,
Linux,
...
ed alcuni cenni alle
evoluzioni future.
Il taglio del documento e' volutamente semplice, introduttivo e pratico,
per i dettagli si rimanda all'ampia documentazione disponibile.
Un documento dallo stesso titolo, ma relativo alle problematiche di partizionamento sulle
basi dati, si trova su questo link.
La forte crescita della capacita' elaborativa dei processori
consente di utilizzare un unico server fisico per sopportare
tutto il carico che in precedenza era necessario dividere su
piu' server.
Tuttavia la separazione dei sistemi resta una necessita' fondamentale
per diverse ragioni come manutenzione, aggiornamento di release, sicurezza,
gestione di un differente carico elaborativo, ...
Nasce quindi la necessita' di partizionare il sistema ospite in piu' parti
piu' facilmente gestibili ed indirizzate ad un utilizzo specifico.
Le tecniche disponibili sono molteplici e dipendono dai
tecnicismi adottati dai singoli produttori.
Tuttavia i concetti di base sono sempre gli stessi!
Il partizionamento puo' essere effettuato principalmente in due modi:
I primi esempi di partizionamento non sono relativi a sistemi Unix ma a Mainframe IBM (eg. S/370 nel 1972).
Ma e' con i sistemi operativi Unix che si sono avute le maggiori e piu' diverse
evoluzioni e poi... li conosco meglio: quindi nel seguito parleremo solo di questo!
Ma perche' costruire un Mainframe Unix?
Unix e' un ottimo sistema operativo. E' affidabile, sicuro, efficiente e poco costoso... naturalmente in relazione agli altri OS. Offre un'ambiente molto adatto allo sviluppo delle applicazioni, garantisce una buona stabilita' in produzione ed puo' essere facilmente integrato e configurato in architetture complesse. Questa e' la ragione della sua diffusione.
Disporre di funzioni sofisticate rivolte alla:
alta affidabilita',
scalabilita',
manutenzione
e consolidamento sistemi
su ambienti flessibili e potenti come quelli Unix consente notevoli risparmi economici.
Quindi la risposta alla domanda "Perche' un mainframe Unix?" e' "Perche' conviene!"
Di teoria abbiamo detto fin troppo, ora vediamo un poco di pratica su come e' implementato il partizionamento sui sistemi Unix!
I sistemi HP, che utilizzano i processori RISC HPPA (HP Precision Architecture) ed Itanium, hanno un'ottima affidabilita' e sono molto utilizzati nelle soluzioni Enterprise. Sui sistemi HP, con il sistema ospite HP-UX, supportano sia il partizionamento fisico (NPAR) che quello logico (VPAR).
Sui modelli di fascia piu' alta (eg. i Superdome introdotti nel 2000) e' disponibile il Physical Partitioning. Con il Physical Partitioning e' possibile creare piu' macchine sullo stesso HW utilizzando la tecnica dei crossbar switch. Ogni "macchina" creata prende il nome di nPar: partizione fisica. Con il comando parstatus si ottiene il dettaglio della configurazione delle celle, l'HW presente e le connessioni abilitate.
La maggioranza dei modelli di macchine HP consentono di partizionare in modo logico le risorse ed installare sistemi differenti sullo stesso HW. Con il Virtual Partitioning possono essere create piu' macchine virtuali (vPar) sullo stesso HW con risorse di CPU, Memoria, I/O, ... dedicate a ciascun sistema. Con il comando vparstatus -v si ottiene il dettaglio della configurazione delle partizioni virtuali, le risorse associate a ciascun sistema, ...
Ma vediamo qualche esempio...
Iniziamo con alcune immagini della configurazione di due Superdome
su cui sono ricavate alcune partizioni fisiche (nPar) e queste a loro
volta sono partizionate logicamente (vPar).
Il primo Superdome e' composto da due
cabinet cui si aggiungono altri 3 rack per gli I/O drawer, i dischi
di sistema, i lettori CD, la console, ... insomma 5 rack in totale.
Il partizionamento e' solo il primo degli elementi di una configurazione di sistemi Enterprise! Tipicamente sono presenti complesse configurazione per lo storage, per il networking, per l'HA (High Availability) come cluster, load balancer, ...
I due Superdome sono posti in due building distinti ed utilizzano due SAN distinte connesse in fibra. Le SAN sono connesse tra loro in fibra, utilizzano la replicazione a livello di Volume Manager ed alcuni sistemi sono in configurazione di failover cluster. I sistemi sono connessi tra loro in rete su VLAN differenti: per la trasmissione dei dati, per il management, per i backup, per le connessioni di Heartbeat dei cluster. Si tratta di configurazioni molto comuni per ambienti di tipo Enterprise...
Ora vediamo in dettaglio un esempio semplificato... prediamo un solo Superdome con un solo cabinet e tre partizioni. Ecco i comandi per verificare la configurazione:
# parstatus [Complex]Complex Name : SuperDomeComplexComplex CapacityCompute Cabinet (8 cell capable) : 1Active MP Location : cabinet 0Model : 9000/800/SD32000Original Serial Number : USR6969XYZCurrent Product Order Number : 69695BOriginal Manufacturer : HPComplex Profile Revision : 1.0The total number of partitions present : 3 [Cabinet] Cabinet I/O Bulk Power Backplane Blowers Fans Supplies Power Boards OK/ OK/ OK/ OK/Cab Failed/ Failed/ Failed/ Failed/Num Cabinet Type N Status N Status N Status N Status MP=== ============ ========= ========= ========== ============ ======0 8 cell slot 4/0/N+ 5/0/NA 5/0/N+ 3/0/N+ Active [Cell] CPU Memory Use OK/ (GB) Core OnHardware Actual Deconf/ OK/ Cell Next ParLocation Usage Max Deconf Connected To Capable Boot Num========== ============ ======= ======== =================== ======= ==== ===cab0,cell0 Active Core 4/0/4 4/0 cab0,bay0,chassis1 yes yes 0cab0,cell1 Active Base 2/0/4 2/0 - no yes 2cab0,cell2 Inactive 4/0/4 2/0 cab0,bay1,chassis3 yes yes 1cab0,cell3 Inactive 2/0/4 2/0 - no - -cab0,cell4 Active Core 2/0/4 2/0 cab0,bay0,chassis3 yes yes 2cab0,cell5 Powered off 0/0/4 ? ? ? no 0cab0,cell6 Active Core 2/0/4 2/0 cab0,bay1,chassis1 yes yes 1cab0,cell7 Powering on 0/0/4 ? ? ? - - [Chassis] Core Connected ParHardware Location Usage IO To Num=================== ============ ==== ========== ===cab0,bay0,chassis0 Absent - - -cab0,bay0,chassis1 Active yes cab0,cell0 0cab0,bay0,chassis2 Absent - - -cab0,bay0,chassis3 Active yes cab0,cell4 2cab0,bay1,chassis0 Absent - - -cab0,bay1,chassis1 Active yes cab0,cell6 1cab0,bay1,chassis2 Absent - - -cab0,bay1,chassis3 Inactive yes cab0,cell2 1 [Partition]Par # of # of I/ONum Status Cells Chassis Core cell Partition Name (first 30 chars)=== ============ ===== ======== ========== ===============================0 Active 2 1 cab0,cell0 svunh691 Active 3 2 cab0,cell6 svunh702 Active 2 1 cab0,cell4 svunh71 [Partition - Multithread]Par Num Multithreading Enabled======= ======================0 no1 no2 noSemplice vero?
# vparstatus [Virtual Partition] Boot Virtual Partition Name State Attributes Kernel Path Opts ============================== ===== ========== ========================= ===== svunh69 Up Dyn,Auto /stand/vmunix svunh69t Up Dyn,Auto /stand/vmunix [Virtual Partition Resource Summary] CPU Num Memory (MB) CPU Bound/ IO # Ranges/ Virtual Partition Name Min/Max Unbound devs Total MB Total MB ============================== ================ ==== ==================== svunh69 2/ 8 2 0 2 0/ 0 2048 svunh69t 1/ 8 2 1 2 0/ 0 1024
Il partizionamento logico con HP-UX consente di associare le risorse senza alcun vincolo HW ed in modo dinamico (anche molto dinamico con il WLM ed il PRM). Sono presenti ed attive due vPar a cui sono state assegnate le riscorse di CPU, RAM ed i dispositivi di I/O. In questo momento la prima partizione ha 2 CPU e 2GB di RAM, ma il numero di CPU puo' cambiare dinamicamente fino ad otto (fino a sette se non si spegne la seconda partizione).
Naturalmente l'evoluzione e' continua, le funzionalita' cambiano e cambiano gli output dei comandi a seconda delle versioni... I piu' recenti modelli, gli Integrity Superdome 2 servers (2010), introducono importanti nuove funzionalita' quali:
I Superdome 2 utilizzano l'architettura SX3000 con i processori Intel Itanium 9300/9500
ed hardware basato su Blade (fino ad un massimo 16 blade).
Dal punto di vista del software i prodotti piu' recenti sono HP Integrity VM,
che e' un completo prodotto di virtualizzazione, ed HP-UX Containers.
Riassumento, con un'opportuna configurazione delle partizioni fisiche e logiche, e' possibile sfruttare in modo ottimale e flessibile i potenti sistemi di fascia Enterprise HP.
La storia dei sistemi partizionabili di IBM e' tanto lunga che, nonostante la mia veneranda eta', i primi modelli non ho avuto modo di configurarli. Il partizionamento logico viene introdotto su AIX, il sistema operativo Unix di IBM, dalla versione 5.1 (2001). Il Power Hypervisor (PHYP) gestisce l'HW ed indirizza le richieste e le risposte degli SCSI alle LPAR (virtual partition) definite su cui e' ospitato il sistema operativo AIX.
La serie di modelli IBM System P Power, basati sul processore RISC POWER
(la cui versione piu' recente e' POWER7) ha poi visto l'introduzione del Micro_partitioning.
Con il micropartitioning possono essere create fino a 10 LPAR sullo stesso processore fisico.
I cicli del processore vengono suddivisi tra le partizioni definite dall'Hypervisor.
Con il Dynamic Logical Partitioning
(DLPAR disponibile con AIX 5.2 nel 2002 e solo di recente, nel 2009, con Linux),
le assegnazioni alle LPAR
possono essere modificate tra il minimo e massimo definito senza necessita'
di riavviare la partizione o il sistema operativo.
In pratica le partizioni non vedono un processore fisico ma uno o piu' processori logici e questi possono essere
configurati in modo dinamico dall'amministratore.
Analogamente avviene per l'I/O che, nelle versioni piu' recenti di AIX, e' completamente virtualizzato.
Ma vediamo un esempio! Ecco come appare una partizione cui sono state assegnate 8 CPU logiche con un entitlement a 2 CPU (uncapped quindi non limitate), 12 GB di RAM, ... Il primo comando riporta i dati dell'utilizzo corrente delle CPU mentre il secondo riporta i dettagli della configurazione.
# lparstat System configuration: type=Shared mode=Uncapped smt=On lcpu=8 mem=12288 psize=32 ent=2.00 %user %sys %wait %idle physc %entc lbusy vcsw phint ----- ----- ------ ------ ----- ----- ------ ----- ----- 64.3 30.3 0.5 4.9 0.02 1.0 3.1 464846423 2953618 # lparstat -i Node Name : xenia01sd4 Partition Name : N6P_P09_xenia01sd4_new Partition Number : 9 Type : Shared-SMT Mode : Uncapped Entitled Capacity : 2.00 Partition Group-ID : 32777 Shared Pool ID : 0 Online Virtual CPUs : 4 Maximum Virtual CPUs : 8 Minimum Virtual CPUs : 2 Online Memory : 12288 MB Maximum Memory : 24576 MB Minimum Memory : 6144 MB Variable Capacity Weight : 192 Minimum Capacity : 1.00 Maximum Capacity : 4.00 Capacity Increment : 0.01 Maximum Physical CPUs in system : 64 Active Physical CPUs in system : 32 Active CPUs in Pool : 32 Shared Physical CPUs in system : 32 Maximum Capacity of Pool : 3200 Entitled Capacity of Pool : 1280 Unallocated Capacity : 0.00 Physical CPU Percentage : 50.00% Unallocated Weight : 0
L'evoluzione delle funzionalita' delle LPAR nel corso tempo e' stata notevole
ed ha avuto un legame molto forte con l'evoluzione dei processori RISC POWER.
Fondamentale e' stata l'introduzione del I/O virtuale.
Molto interessante e' anche la possibilita' di creare WPARs (Workload Partitions), introdotta con AIX 6
e con nuove funzionalita' in AIX 7. Si tratta di un'implementazione completamente software ed e' quindi
molto piu' vicina ad una completa
virtualizzazione di ambienti che ad un semplice partizionamento del sistema.
I modelli IBM piu' recenti (eg P780) sono basati sul processore POWER7 (8 core, 4 SMT, 4.25 Ghz) e raggiugono elevatissimi livelli di scalabilita' verticale. Con la piu' recente versione di AIX (7.1 3Q 2010) e' possibile: importare e quindi consolidare partizioni AIX 5.2, sfruttare al meglio il VIOS, gestire i profili di sistema, utilizzare le funzionalita' di clustering integrate nel sistema operativo, ...
Una nota non tecnica: i sistemi partizionabili IBM brevemente descritti in questo capitolo sono stati utilizzati in alcune famose sfide contro l'uomo come Deep Blue, Watson e perche' no... anche HAL!
La Sun Microsystems nel tempo ho introdotto molte importanti innovazioni che sono poi diventate comuni per tutti i sistemi operativi e gli ambienti (basta pensare ad esempi come NFS, YP, Java, ...).
I sistemi SUN Enterprise supportano da molto tempo il partizionamento fisico sui modelli di fascia piu' alta: l'Enterprise 10000, il primo di questa serie, e' stato commercializzato dal 2000. I modelli successivi, che introducono via via nuove funzionalita', sono il Sun Fire 15K, Sun Fire E25K, Sun SPARC Enterprise M9000, ... fino ai piu' recenti modelli marchiati Oracle e chiamati EXA*.
Nella versione 10 di Solaris (2005) sono state introdotte le Zone (Solaris Containers)
che consentono il partizionamento logico del sistema in ambienti
indipendenti ma facilmente gestibili.
I Logical Domains (LDoms o LDOM) permettono il partizionamento e la virtualizzazione sui processori SPARC
e sono disponibili dal 2007. Dopo l'acquisizione da parte di Oracle tale tecnologia e' stata
rinominata in Oracle VM Server for SPARC. E' notizia recente (1Q 2013) la possibilita' di
gestire con Oracle VM 3.2 (OVM) sia Server x86 che Server SPARC.
Insomma non sara' facile riuscire ad essere brevi in questo capitolo... senza tralasciare nulla!
Cominciamo con il partizionamento fisico!
E' facile... semplificando solo un po'!
Un sistema di fascia enterprise puo' essere suddiviso in domini (partizioni fisiche)
separati tra loro, cui vengono assegnati fisicamente CPU, memoria e periferiche di I/O.
I domini sono completamente separati tra loro, anche elettricamente, e quindi possono essere gestiti in modo
indipendente.
La gestione del sistema viene effettuata su un HW separato chiamato SPP (System Service Processor), che e'
ovviamente uno sistema SPARC con Solaris. Dall'SPP e' possibile effettuare tutte le attivita' di configurazione
(eg. aggungere risorse) e di gestione (eg. effettuare un reboot).
Il partizionamento fisico dei sistemi di fascia Enterprise di SUN ha avuto una notevole diffusione
e sono molti i sistemi 10.000, 15K, ... installati su clienti di grandi dimensioni.
Ora il partizionamento logico o almeno quello che gli assomiglia di piu'...
Nella versione 10 di Solaris sono state introdotte le Zone
che consentono il partizionamento logico del sistema in ambienti
indipendenti ma facilmente gestibili.
La zona iniziale con ID=0 e' detta global e consente di controllare
tutte le risorse, i processi, ... in modo completo.
Tipicamente non si configurano servizi in tale zona, ma non e' un vincolo.
Le altre zone sono tra loro completamente indipendenti e trasparenti.
Su ogni zona viene configurato un sistema operativo distinto.
Per chi conosce il Jails o anche solo il comando chroot
tutto dovrebbe essere semplice
da capire!
In pratica e' come se avessimo un solo sistema operativo, quello della zona
global. Da tale zona sono visibili tutte le risorse, tutti i processi,
tutti i file system, ...
Le altre zone "pensano" di essere un sistema operativo indipendente,
ma in realta' stanno operando all'interno della zona global che semplicemente non vedono.
Vi sono pregi e difetti di tale modalita' di "partizionamento logico"
o meglio di virtualizzazione del sistema... i vantaggi sono il limitato overhead
(sia come spazio disco che come memoria occupata)
e la visione complessiva che il sistemista ha dalla zona global.
I comandi principali sono: zonecfg zoneadm zlogin,
l'opzione aggiuntiva per estendere i normali comandi di sistema e' la -Z (eg. ps df).
Gli stati delle zone sono riportate nel diagramma a lato.
Una funzionalita' molto interessante e' il BRAND delle zone.
Con il branding, anche se il kernel di tutte le zone e' lo stesso, possono venire effettuate call translation.
Vengono cosi' simulati sistemi operativi ospiti differenti.
E' in questo modo possibile consolidare su un recente sistema con Solaris 10 zone in cui
i sistemi ospite sono Solaris 9 o Solaris 8.
Ma vediamo un esempio! Ecco come appare la configurazione di una serie di zone, che ospitano vecchi ambienti Solaris 8, su un recente sistema con Solaris 10 (il report e' ottenuto con ux2html ed il relativo Plug-in per le Solaris Zones):
Solaris Zones
Plug-in version: 1.0.0Configured Zones
ID NAME STATUS PATH BRAND IP 0 global running / native shared 1 xenia01-zone running /zones/xenia1 solaris8 excl 4 xenia02-zone running /zones/xenia2 solaris8 excl 5 collectlog1-zone running /zones/collectlog1 native excl - domint-zone installed /zones/domint solaris8 exclZones Details
Zone Name: global create -b set autoboot=false set ip-type=shared Zone Name: xenia01-zone create -b set zonepath=/zones/domcom set brand=solaris8 set autoboot=false set ip-type=exclusive add fs set dir=/oracle8 set special=domxen-zp/oracle8 set type=zfs end add fs ... add net set physical=nxge12001 end add rctl set name=zone.cpu-shares add value (priv=privileged,limit=50,action=none) end add rctl set name=zone.max-swap add value (priv=privileged,limit=4294967296,action=deny) end add capped-memory set physical=4G end ...
Infine i logical domains...
Sono conosciuti come LDoms, LDOM e, dopo l'acquisizione di Sun da parte di Oracle,
anche come Oracle VM Server for SPARC.
I Logical Domains sfruttano in modo specifico il CMT (Chip Multi Threading)
dei processori UltraSPARC T1, T2 e T3 [NdE T4, T5, M7 (2015/10), M8 (2017/09)].
Ogni processore contiene piu' core (fino a 16) [NdE 32 su M7 ed M8]
e ciascuno di questi ospita piu' hardware thread (fino a 8)
che agiscono come CPU virtuali assegnate ai domini.
L'unita' minima assegnabile alla vCPU e' il thread e la gestione e' molto dinamica
poiche' le risorse possono essere assegnate ed i domini migrati senza richiedere riavvii.
Vi sono 4 tipi di domini, con compiti facilmente riconoscibili dal nome:
Anche per i sistemi SUN l'evoluzione e' continua ed innarrestabile.
Dopo l'acquisizione da parte di Oracle sono state prodotte nuove tipologie di sistemi dedicate ad un utilizzo verticale come Database Machine e per ospitare Application Servers e Cloud: le serie Exadata ed Exalogic. Sulla piattaforma EXADATA vengono utilizzate tecnologie innovative che consentono significativi vantaggi prestazionali sfruttando l'intelligenza dei dispositivi di I/O (Cell Offload).
Ancora piu' recente e' l'ODA (Oracle Database Appliance) il fratellino minore dell'Exadata. Si tratta di un sistema di modeste dimensioni (4U su un rack standard) ma ingegnerizzato per le massime prestazioni e l'affidabilita'. Per altro e' sfruttabile in modo molto flessibile grazie all' introduzione della virtualizzazione (con OVM basato su Xen).
Caratteristica fondamentale dei sistemi Exadata ed ODA e' la completa ingegnerizzazione di tutte le componenti: dall'HW al sistema operativo, dal software di base all'RDBMS. Questo garantisce prestazioni ottimali e tempi di installazione/configurazione notevolmente ridotti.
Parlare di partizionamento con Linux e' molto riduttivo poiche' in realta'
si tratta di utilizzare il sistema operativo per qualcosa di differente:
la virtualizzazione.
Linux e' infatti utilizzato sia come hypervisor che come guest
di ambienti di virtualizzazione molto completi.
L'architettura di Linux e' molto adatta alla virtualizzazione poiche' utilizza
un kernel relativamente semplice
ed una gestione dell'I/O mediante device driver indipendenti.
Linux utilizza un kernel monolithic, il che presenta vantaggi e svantaggi,
ma certamente consente diverse implementazioni.
Infatti le scelte possibili sono tante!
Per citare i soli ambienti con cui ho incontrato: UML, Xen, KVM, VMware Server, VMware ESX, VirtualBox, ...
ed alcune loro evoluzioni commerciali (Oracle VM, Citrix XenServer, Sun xVM).
E sono solo alcuni degli ambienti disponibili:
Linux Virtualization Technology Comparison...
Quindi che dire? Forse si puo' iniziare dal processore piu' utilizzato (x86 base) che pero'... non supporta la virtualizzazione! Ed allora come si puo' partizionare/virtualizzare? Gli ambienti di virtualizzazione pura (eg. VMware e QEMU) risolvono "sostituendo" le istruzioni privilegiate con richiami a routine di gestione.
Naturalmente questo rende lenta la virtualizzazione, soprattutto per la parte di sistema operativo. La soluzione e' la paravirtualizzazione ovvero utilizzare, per la parte di gestione del sistema, moduli sviluppati apposta per essere efficienti quando virtualizzati. In questo modo il nostro Linux sara' efficiente, quando utilizzato come sistema operativo ospite, anche su processori che non supportano la virtualizzazione.
E' da un decennio che Linux supporta la paravirtualizzazione su Xen
con ottime prestazioni. Xen nasce come progetto dell'universita' di Cambridge (2003).
L'architettura Xen e' relativamente semplice...
Xen utilizza un hypervisor che gira con i massimi privilegi. Sopra questo livello
vengono eseguiti i vari "domini". Il primo tra questi e' chiamato dom0 che viene
direttamente attivato dall'Hypervisor ed e' quello da cui si gestiscono tipicamente
gli altri domini utente domU.
L'Hypervisor di Xen si occupa dello scheduling mentre il dom0 fornisce i device
driver utilizzati dai guest. dom0 e' un kernel linux modificato ed i vari domU
non agiscono direttamente sull'HW ma passano attraverso dom0 per ogni attivita'.
Il processo Xend e' l'interfaccia principale dei domU verso l'Hypervisor.
Si tratta di un demone (scritto in python) che, attraverso
la libreria Libxenctrl, colloquia con il driver privcmd di dom0.
L'evoluzione di Xen e' stata notevole e sono molteplici i prodotti commerciali
che la utilizzano come base (eg. Citrix XenServer, OracleVM).
Nella figura a sinistra e' presentata l'architettura di Oracle VM (OVM).
Si tratta chiaramente di un ambiente con Hypervisor Xen.
La gestione avviene con l'interfaccia grafica web dell'Oracle VM Manager
che comunica i comandi all'Agente
ospitato sul dominio di management dom0 presente su tutti i Server.
Le virtual machine sono ospitate sui vari domini domU.
Naturalmente nelle versioni commerciali di Xen viene rivolta una forte attenzione
alle interfacce di amministrazione
ed all'integrazione dei vari componenti presentando cosi' all'amministratore
un ambiente di semplice controllo e gestione.
Dalla versione 2.6.20 nella distribuzione ufficiale del kernel Linux e'
presente il KVM (Kernel based Virtual Machine).
Il KVM supporta la virtualizzazione in modo nativo per i processori x86
con estensioni Intel VT-x o AMD-V. KVM fornisce ottime prestazioni
molto vicine a quelle del bare-metal.
L'architettura KVM e'... ancora piu' semplice!
Poiche' il KVM e' un componente del kernel lo scheduling viene svolto
direttamente dal sistema operativo Linux.
Ogni sistema ospite gira come un "normale" processo utente.
Nello stesso modo i device
driver per la gestione dell'I/O sono gli stessi del sistema operativo.
Anche per il KVM l'evoluzione e' costante ed il supporto diretto di Red Hat
e' molto significativo.
Se invece si vogliono utilizzare diverse istanze dello stesso sistema operativo la tecnologia piu' adatta e' quella dei containers. FreeBSD Jails e' stato il percursore cui si sono ispirati molti prodotti successivi sia Open Source che proprietary (eg. Solaris Zones).
Per ultimo... il vendor piu' importante!
VMware e' la prima compagnia che ha sviluppato prodotti di virtualizzazione
con una stabilita' e diffusioni tali da divenire leader di mercato in diversi
segmenti.
Le versioni VMware "ospiti" su windows su piattaforma Intel sono molto diffuse
e riconosciute per la loro efficienza e stabilita'.
La versione ESX e' il punto
di riferimento sugli hypervisor per i server.
Anche se profondamente modificato la base dell'hypervisor e' un sistema Linux!
I comandi di base che si possono dare da interfaccia a terminale (Service Console)
sono quindi i classici comandi Unix.
Anche se l'interfaccia di gestione piu' frequentemente utilizzata e' una GUI molto evoluta e
con molteplici funzionalita' anche in ottica Cloud.
In realta' l'hypervisor di VMware si e' molto evoluto rispetto alle versioni
originali Linux ma... era comunque importante parlarne!
Ma non abbiamo ancora visto alcun esempio... ecco Xen:
# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2048 8 r----- 35646.8 xenia_ap0 4 512 2 -b---- 342.6 xenia_ap1 5 512 2 -b---- 496.4 xenia_db0 3 1024 2 r----- 2424.0xenia_db0 # xm info host : XeniaXen release : 2.6.29-xen-r4 version : #2 SMP Wed Sep 16 11:10:45 EDT 2009 machine : x86_64 nr_cpus : 16 nr_nodes : 1 cores_per_socket : 4 threads_per_core : 2 cpu_mhz : 2933 hw_caps : bfebfbff:28100800:00000000:00000340:009ce3bd:00000000:00000001:00000000 virt_caps : hvm total_memory : 8186 free_memory : 127 ...KVM quasi non ha comandi, quindi utilizziamo Virsh, l'interfaccia command-line di libvirt (API Open Source che gestisce i principali hypervisor):
# virsh nodeinfo CPU model x86_64 CPU (s) 16 CPU frequency 2933 Mhz CPU socket(s) 2 Core(s) per socket 4 Threads per core: 2 Numa cell(s) 1 Memory size: 8386560 kb # virsh list --all Id Name State ---------------------------------- 69 Xenia_db0 paused 72 Xenia_ap0 inactive 83 Xenia_ap1 crashed # virsh dominfo Xenia_db0 id: 69 name: Xenia_db0 uuid: 5a7c09a7-ef3f-b781-86e4-388f2862f011 os type: linux state: blocked cpu(s): 1 cpu time: 11.0s max memory: 1024000 kb used memory: 1024000 kbIn entrambe gli esempi sono state configurate tre macchine virtuali ed associate le relative risorse di CPU e memoria. La gestione avviene spesso con strumenti grafici come il virt-manager o integrata in piu' complessi ambienti per la gestione di Cloud.
Questo documento ha cercato di descrivere il partizionamento di sistemi Unix. I sistemi trattati sono sistemi Unix di classe Enterprise per potenza, funzionalita', flessibilita', disponibilita', ... Come descritto al termine di ogni capitolo tutti i produttori HW hanno fatto evolvere la propria soluzione e le possibilita' attuali sono notevoli.
L'evoluzione dei processori e la loro sempre crescente potenza portano queste possibilita' anche
a sistemi di fascia piu' bassa.
Sarebbe quindi importante parlare della virtualizzazione in modo piu' completo...
Non tralasciando i prodotti leader del mercato
come le soluzioni hosted VMware Workstation (1999), GSX Server (2001)
e quella bare-metal ESX Server (2001).
Una fortissima evoluzione stanno avendo gli ambienti container e chi ne rende disponibili i contenuti come Docker o ne consente la gestione come Kubernetes. Sarebbe importante parlarne... l'idea di base e' semplice: anziche' ospitare le applicazioni su una VM che ospita un intero sistema operativo si virtualizzano le chiamate a sistema e si sfrutta il sistema operativo del sistema ospite. Questo consente di allocare ambienti con meno risorse ed in tempi molto piu' brevi. Non e' un'idea nuova (ricordate jails e chroot di cui abbiamo parlato prima?), ma piuttosto un'evoluzione di tecniche gia' note che sta avendo molto successo. Ma non c'e' spazio/tempo per parlarne!
La scalabilita' puo' essere realizzata in modo orizzontale anziche' verticale.
Sarebbe importante parlare del Grid...
Sarebbe importante parlare del Cloud Computing...
Sarebbe importante... ma occorre tempo e spazio! E purtroppo ne ho relativamente poco: quindi per il momento lascio questi spunti aperti per il futuro [NdA Docker].
Il partizionamento e' una ottima tecnica per la gestione di sistemi
di grandi dimensioni. I vari produttori lo implementano
utilizzando costrutti simili.
La costante crescita delle capacita' elaborative, la conseguente opportunita'
di distribuzione della potenza di calcolo dei sistemi
e la sempre maggior condivisione delle informazioni
saranno una costante anche per gli anni a venire.
Quindi il partizionamento, la virtualizzazione, il cloud computing sono e saranno
in costante crescita ed evoluzione.
Quindi non importa se sei un sistemista AIX, Solaris o Linux...
DIVIDE ET IMPERA
ovvero comincia a partizionare e virtualizzare!
Testo: DIVIDE ET IMPERA ! (Unix version)
Data: 14 Febbraio 2010
Versione: 1.0.5 - 14 Febbraio 2017
Autore: mail@meo.bogliolo.name