Anche se fino ad ora questo capitolo ha affrontato solo unit� disco singole collegate direttamente ad un sistema, � bene sapere che sono anche disponibili altre opzioni pi� avanzate. Le seguenti sezioni descrivono alcuni degli approcci pi� comuni, in modo da ampliare le vostre opzioni riguardanti i mass storage.
5.6.1. Storage accessibile tramite la rete
La combinazione delle tecnologie mass storage e della rete pu� risultare in una maggiore flessibilit� per gli amministratori di sistema. Questa configurazione permette di avere due possibili benefici:
Consolidazione dello storage
Gestione semplificata
Lo storage pu� essere consolidato impiegando server ad alte prestazioni con una connettivit� di rete molto elevata, e configurato con grosse quantit� di fast storage. Data una configurazione corretta, � possibile fornire un accesso allo storage con delle velocit� paragonabili allo storage collegato in modo locale. Altres�, la natura condivisa di tale configurazione, spesso rende possibile ridurre i costi, in quanto le spese associate nel fornire uno storage condiviso e centralizzato, possono essere minori rispetto alla fornitura di storage equivalente per ogni client. In aggiunta, si viene a consolidare dello spazio libero, invece di essere diffuso (e non utilizzabile) attraverso molti client.
I server storage centralizzati possono facilitare molti compiti amministrativi. Per esempio, il controllo dello spazio disponibile � pi� semplice quando lo storage da controllare � presente su di un sistema. I backup possono essere semplificati; � possibile eseguire un backup del tipo network-aware, ma tale tipo di backup necessita di un maggiore lavoro per eseguire la configurazione e la manutenzione.
Sono disponibili un certo numero di tecnologie storage networked; sceglierne una potrebbe risultare difficile. Quasi ogni sistema operativo presente nel mercato odierno, presenta dei mezzi di accesso ad uno storage accessibile attraverso la rete, le diverse tecnologie per�, potrebbero risultare incompatibili tra di loro. Quindi, qual'� il miglior approccio per la scelta della tecnologia da impiegare?
L'approccio che generalmente fornisce il miglior risultato, � quello di lasciar decidere il problema alle capacit� interne del client. Vi sono un certo numero di ragioni per questo:
Problemi minimi sulla integrazione del client
Lavoro minimo su ogni sistema del client
Costo pi� basso della entry per-client
Tenete conto che qualsiasi problema riguardante il client, viene moltiplicato per il numero di client presenti nella vostra organizzazione. Utilizzando le capacit� interne del client setsso, non avrete bisogno d'installare alcun software aggiuntivo nei client (ci� significa nessun costo addizionale). Tutto ci� vi permetter� di avere una buona integrazione e un buon supporto con il sistema operativo del client.
Vi � comunque un lato negativo. Cio� l'ambiente server deve essere in grado di fornire un buon supporto per le tecnologie storage, accessibili tramite la rete e necessarie per i client. In casi in cui i sistemi operativi del client e del server sono unici e uguali, normalmente non vi � alcun problema. In caso contrario, sar� necessario concentrarsi nel far s� che il server "parli" la stessa lingua del client. Tuttavia, questo compromesso � pi� che giustificato.
5.6.2. Storage basato su RAID
Una capacit� che un amministratore dovrebbe coltivare, � l'abilit� di orientarsi a configurazioni pi� complesse, e osservare i diversi aspetti inerenti ad ogni configurazione. Anche se a prima vista questo approccio potrebbe sembrare un p� demoralizzante, esso potrebbe essere d'aiuto per affrontare i problemi che si potrebbero verificare nei momenti meno opportuni, e quindi causare danni sostanziali.
Tenendo presente quanto detto, usiamo la nostra conoscenza per quanto riguarda lo storage basato sul disco, e vediamo se possiamo determinare i modi in cui l'unit� disco pu� causare dei problemi. Innanzitutto consideriamo un problema riguardante l'hardware:
Una unit� disco con quattro partizioni viene completamente a mancare: cosa succede ai dati presenti su quelle partizioni?
Tale unit� non � disponibile (fino al momento in cui l'unit� che presenta il problema non viene sostituita, ed i dati non vengono ripristinati tramite backup).
Una unit� disco con una partizione singola st� operando al limite delle sue capacit� a causa di carichi I/O molto elevati: che cosa succede alle applicazioni che necessitano di accedere ai dati presenti su quella partizione?
Le applicazioni rallentano perch� l'unit� disco non � in grado di eseguire le procedure di lettura e scrittura pi� velocemente.
Se avete un file data molto grande che � in continua crescita; esso potrebbe divenire presto, pi� grande dell'unit� disco maggiore disponibile per il vostro sistema. Cosa potrebbe succedere a questo punto?
L'unit� disco diventa satura, il file data interrompe la sua crescita, e le applicazioni associate interrompono la propria esecuzione.
Proprio uno di questi problemi potrebbe intaccare ed invalidare il centro dati, purtroppo gli amministratori di sistema devono far fronte ogni giorno a questi problemi. Che cosa si potrebbe fare in questi casi?
Fortunatamente � disponibile una tecnologia in grado di affrontare queste problematiche. Il nome della suddetta tecnologia � RAID.
5.6.2.1. Concetti di base
RAID � l'acronimo di Redundant Array of Independent Disks[1]. Come implica il nome, RAID � un modo per le unit� disco multiple, di comportarsi come delle unit� disco singole.
Le tecniche RAID sono state sviluppate da alcuni ricercatori dell'Universit� della California, Berkeley nella met� degli anni 80. In quel periodo vi era un grosso divario tra le unit� disco ad alte prestazioni, utilizzate nelle maggiori installazioni di computer, e le pi� piccole, e lente unit� disco utilizzate nel settore del personal computer a quei tempi ancora molto giovane. RAID rappresentava a quei tempi, un metodo grazie al quale erano disponibili diverse unit� disco meno costose, al posto di una unit� pi� costosa.
I RAID arrays potevano essere creati in modi diversi, riuscendo ad avere caratteristiche diverse a seconda della configurazione finale. Vediamo in dettaglio le diverse configurazioni (conosciute come livelli RAID).
5.6.2.1.1. Livelli RAID
I ricercatori di Berkeley definirono originariamente cinque diversi livelli RAID, numerandoli da "1" a "5." Successivamente sono stati aggiunti altri livelli RAID da parte di altri ricercatori e membri dello storage industry. Non tutti i livelli RAID si sono mostrati utili allo stesso modo, alcuni erano utili solo nel settore delle ricerche, altri invece erano troppo costosi per essere implementati.
Alla fine soltanto tre livelli RAID si sono rivelati, in un contesto generale, utili:
Level 0
Level 1
Level 5
Le seguenti sezioni affrontano i suddetti livelli in modo pi� dettagliato.
5.6.2.1.1.1. RAID 0
La configurazione del disco conosciuta come RAID level 0 pu� trarre in inganno, in quanto esso rappresenta il solo livello RAID che non impiega alcuna ridondanza. Tuttavia, anche se RAID 0 non presenta alcun vantaggio dal punto di vista dell'affidabilit�, esso presenta altri tipi di benefici.
Un RAID 0 array consiste di due o pi� unit� disco. La capacit� storage disponibile su ogni unit� � suddivisa in diversi blocchi, i quali rappresentano i multipli della misura nativa del blocco delle unit�. I dati scritti sull'array devono essere anche scritti, blocco per blocco, su ogni unit� nell'array stesso. I blocchi possono essere concepiti come delle linee attraverso ogni unit� presente nell'array; quindi ne deriva l'altro termine per RAID 0: striping.
Per esempio, con un array a due-unit� ed una misura del blocco di 4KB, la scrittura di 12KB di dati sull'array, ne risulterebbe in una scrittura dei dati in blocchi da 4KB sulle seguenti unit�:
I primi 4KB saranno scritti sulla prima unit�, nel primo blocco
I secondi 4KB saranno scritti nella seconda unit�, nel primo blocco
Gli ultimi 4KB saranno scritti sulla prima unit�, nel secondo blocco
Paragonato ad una unit� disco singola, i vantaggi di RAID 0 includono:
Misura totale pi� grande — si possono creare RAID 0 array pi� grandi di una unit� disco singola, facilitando la conservazione di file data pi� grandi
Migliori prestazioni di lettura/scrittura — Il carico I/O su di un RAID 0 array viene diffuso in modo pi� omogeneo su tutte le unit� presenti nell'array (Assumendo che tutti gli I/O non sono concentrati su di un singolo blocco)
Nessuna perdita di spazio — Lo storage disponibile su tutte le unit� presenti nell'array, pu� essere usato per la conservazione dei dati
Paragonato ad una unit� singola, RAID 0 presenta i seguenti svantaggi:
Minore affidabilit� — Per rendere disponibile un array, ogni unit� in un RAID 0 array deve essere operativa; un singolo problema all'unit� in un N-drive RAID 0 array, ne pu� conseguire la rimozione di 1/N di tutti i dati, rendendo l'array inutilizzabile
Suggerimento
Se avete dei problemi a mantenere i diversi livelli RAID, ricordate soltanto che RAID 0 ha una percentuale di ridondanza pari a zero percento.
5.6.2.1.1.2. RAID 1
RAID 1 utilizza due (anche se alcune implementazioni ne supportano di pi�) unit� disco identiche. Tutti i dati vengono scritti su entrambe le unit�, rendendole simili tra loro. Ecco perch� RAID 1 � spesso conosciuto come mirroring.
Ogni volta che si scrivono i dati su di un RAID 1 array, si deve eseguire la scrittura fisica su due unit�: una sulla prima unit�, e una sulla seconda unit�. La lettura dei dati pu� essere eseguita solo una volta, e su di una delle due unit� presenti nell'array.
Paragonato ad una unit� disco singola, un RAID 1 array presenta i seguenti vantaggi:
Una ridondanza migliorata — Anche se una unit� presente nell'array ha dei problemi, i dati resteranno sempre accessibili
Migliori prestazioni di lettura — Con entrambe le unit� in funzione, i processi di lettura possono essere ripartiti in modo equo, riducendo cos� i carichi I/O per ogni unit�.
Paragonato ad una unit� disco singola, un RAID 1 array presenta i seguenti svantaggi:
La misura massima dell'array viene limitata all'unit� singola pi� grande disponibile.
Riduzione delle prestazioni di lettura — Poich� entrambe le unit� devono essere sempre aggiornate, tutti i processi I/O di scrittura devono essere eseguiti da entrambe le unit�, rallentando cos� il processo generale di scrittura dei dati sull'array
Aumento dei costi — Con una unit� interamente dedicata alla ridondanza, il costo di un RAID 1 array risulta essere il doppio rispetto a quello di una singola unit�
Suggerimento
Se avete delle difficolt� nel gestire i diversi livelli RAID, ricordate che RAID 1 presenta una ridondanza pari al cento percento.
5.6.2.1.1.3. RAID 5
RAID 5 tenta di combinare i benefici di RAID 0 e RAID 1, minimizzando i rispettivi svantaggi.
Come RAID 0, un RAID 5 array consiste di unit� disco multiple, ognuna suddivisa in blocchi. Ci� permette ad un RAID 5 array di essere pi� grande di ogni singola unit�. Come RAID 1 array, un RAID 5 array utilizza una parte di spazio del disco in modo ridondante, aumentando cos� l'affidabilit�.
Tuttavia il funzionamento di RAID 5 � diverso da RAID 0 o 1.
Un RAID 5 array � composto da almeno tre unit� disco di misura identica (� possibile utilizzare unit� aggiuntive). Ogni unit� � suddivisa in blocchi ed i dati vengono scritti nei blocchi. Tuttavia, non ogni blocco � dedicato alla conservazione dei dati come lo � per RAID 0. Al contrario, in un array con n unit� disco, ogni n blocco � dedicato alla parit�.
I blocchi che contengono la parit� rendono possibile il ripristino dei dati nel caso in cui una delle unit� presenti un problema. La parit� nel blocco x viene calcolata attraverso una combinazione matematica dei dati di ogni blocco x su tutte le altre unit� presenti nell'array. Se i dati presenti in un blocco vengono aggiornati, il blocco di parit� corrispondente deve essere ricalcolato e aggiornato.
Questo significa anche che ogni qualvolta che i dati vengono scritti sull'array, almeno due unit� vengono scritte su: una unit� che contiene i dati, e sulla unit� che contiene il blocco di parit�.
Un punto molto importante da ricordare � la distribuzione dei blocchi di parit�, infatti essi non sono concentrati su di una unit� presente nell'array. Al contrario essi sono distribuiti in modo omogeneo attraverso tutte le unit�. Anche se � possibile dedicare una unit� specifica per contenere nient'altro che la parit� (infatti questa configurazione � conosciuta come RAID level 4), il costante aggiornamento della parit� stessa man mano che i dati vengono scritti sull'array, significherebbe che l'unit� che presenta la parit� potrebbe diventare una limitazione nei confronti della prestazione. Distribuendo le informazioni sulla parit� in modo omogeneo sull'array, � possibile ridurre questo impatto.
Tuttavia, � importante tener presente l'impatto della parit� sulla capacit� generale dello storage dell'array. Anche se le informazioni sulla parit� sono distribuite omogeneamente attraverso tutte le unit� presenti nell'array, la quantit� di storage disponibile viene ridotta nella misura di una unit�.
Paragonato ad una unit� disco singola, un RAID 5 array presenta i seguenti vantaggi:
Miglioramento della ridondanza — Se si verifica un errore di una unit� presente nell'array, le informazioni riguardanti la parit� possono essere utilizzate per ricostruire i blocchi mancanti di dati, il tutto, mantenendo l'array disponibile all'uso[2]
Prestazioni migliori nella lettura — A causa del modo in cui vengono suddivisi i dati tra le unit� presenti nell'array in un RAID simile a 0, il processo I/O di lettura viene suddiviso in modo omogeneo tra tutte le unit�
Costi ragionevolmente buoni — Per un RAID 5 array con n unit�, solo 1/n dell'intero storage disponibile, viene dedicato alla ridondanza
Paragonato ad una unit� disco singola, un RAID 5 array presenta i seguenti svantaggi:
Diminuzione della prestazione riguardante il processo di scrittura — Poich� un processo di scrittura su di un array risulta in almeno due processi di scrittura sulle unit� fisiche (uno per i dati ed uno per la parit�), le prestazioni riguardanti il processo di scrittura sono peggiori paragonati ad una unit� singola[3]
5.6.2.1.1.4. Livelli RAID nidificati
Anche se sembra ovvio dopo aver affrontato i diversi livelli RAID, ogni livello risulta avere dei punti di forza e dei punti deboli. Subito dopo aver iniziato ad impiegare i diversi livelli RAID e combinandoli tra loro, gli utenti sono stati in grado di ottenere degli array che presentavano solo le caratteristiche migliori di ogni livello, e nessuna debolezza.
Per esempio, cosa potrebbe accadere se le unit� disco in un RAID array erano invece dei RAID 1 array? Ci� presenter� i vantaggi della velocit� RAID 0, insieme all'affidabilit� di RAID 1.
Questo � proprio quello che si potrebbe fare. Ecco i livelli RAID nidificati pi� usati:
RAID 1+0
RAID 5+0
RAID 5+1
Poich� i RAID nidificati vengono usati in ambienti specializzati, non entreremo nei particolari. Tuttavia se si pensa ai RAID nidificati, � necessario ricordare due punti importanti:
L'ordine � importante — Lordine con il quale i livelli RAID si 'nidificano' potrebbe avere un certo impatto sull'affidabilit�. In altre parole, RAID 1+0 e RAID 0+1 non sono uguali.
I costi potrebbero essere elevati — Se vi � uno svantaggio comune a tutte le implementazioni RAID nidificati, quello � il costo; per esempio, il RAID 5+1 array pi� piccolo consiste in sei unit� disco (sono necessari un maggior numero di unit� per array pi� grandi).
Ora che abbiamo esplorato i concetti riguardanti il RAID, viediamo ora come quest'ultimo possa essere implementato.
5.6.2.1.2. Implementazioni RAID
Risulta ovvio dalle precedenti sezioni, che RAID necessita di una "intelligenza" aggiuntiva, che vada oltre alla normale processazione I/O del disco, per le unit� individuali. � necessario eseguire i seguenti compiti:
Suddividere le richieste I/O in entrata per i dischi individuali nell'array
Per RAID 5, calcolo della parit� e la scrittura di quest'ultima sull'unit� appropriata presente nell'array
Controllo dei dischi individuali presenti nell'array, ed eseguire le azioni appropriate se uno dei dischi presenta dei problemi
Controllo della ricostruzione di un disco individuale presente nell'array, quando il suddetto disco � stato sostituito o riparato
Fornire un mezzo con il quale gli amministratori sono in grado di gestire l'array (rimozione e aggiunta delle unit�, avviare e arrestare la ricreazione, ecc)
Ci sono due metodi principali in grado di eseguire questi compiti. Le seguenti sezioni descrivono i suddetti metodi in modo pi� dettagliato.
5.6.2.1.2.1. Hardware RAID
Una implementazione hardware RAID generalmente ha la forma di una scheda specializzata per il controller del disco. La scheda esegue tutte le funzioni relative a RAID, e controlla direttamente le unit� individuali negli array collegati. Con l'unit� corretta, gli array gestiti da una scheda hardware RAID, appaiono sul sistema operativo host come unit� disco regolari.
Molte schede del RAID controller funzionano con le unit� SCSI, anche se vi sono comunque alcuni RAID controller 'ATA-based'. In ogni caso, l'interfaccia amministrativa viene generalmente implementata in uno dei seguenti modi:
Programmi utility specializzati che vengono eseguiti come applicazioni con il sistema operativo host, in modo da presentare una interfaccia software per la scheda del controller
Una interfaccia 'on-board' che utilizza una porta seriale in grado di essere accessa usando un emulatore terminale
Una interfaccia simile a BIOS che pu� essere accessa durante la prova di alimentazione del sistema
Alcuni RAID controller possiedono pi� di una interfaccia amministrativa. Per ovvie ragioni, una interfaccia software fornisce maggiore flessibilit�, in quanto permette di eseguire funzioni amministrative mentre il sistema operativo � in funzione. Tuttavia se state eseguendo un avvio del sistema operativo stesso tramite un RAID controller, � necessario avere una interfaccia che non richiede un sistema operativo in esecuzione.
Poich� sono presenti sul mercato diverse schede per il RAID controller, risulta essere impossibile quindi scendere nei particolari. � fortemente consigliato leggere la documentazione fornita dal rivenditore in modo da poter ottenere maggiori informazioni.
5.6.2.1.2.2. Software RAID
Software RAID non � altro che una implementazione di RAID come se fosse un kernel- o un software driver-level per un sistema operativo particolare. Per questo, esso � in grado di fornire maggiore flessibilit� in termini di supporto — fino a quando il sistema operativo � in grado di supportare l'hardware, i RAID array possono essere configurati ed impiegati. Questo riduce in modo sostanziale il costo per l'impiego di RAID, eliminando la necessit� di utilizzare un hardware RAID specializzato e molto costoso.
Spesso l'alimentazione della CPU disponibile per i calcoli della parit� per il software RAID, eccede l'alimentazione di processazione presente su di una scheda per il RAID controller. Quindi, alcune implementazioni per il software RAID hanno la capacit� per una prestazione pi� elevata rispetto alle implementazioni hardware RAID.
Tuttavia, software RAID presenta alcune limitazioni che non sono presenti in hardware RAID. La pi� importante da considerare � il supporto per l'avvio da un software RAID array. In molti casi, solo RAID 1 array possono essere utilizzati per l'avvio, in quanto il BIOS del computer non riconosce RAID. Poich� l'unit� singola di un RAID 1 array � indistinguibile da un dispositivo di avvio non-RAID, il BIOS � in grado di eseguire il processo di avvio in modo corretto; il sistema operativo a questo punto pu� smistarsi sulle operazioni del software RAID una volta avuto il controllo del sistema.
5.6.3. Logical Volume Management
Un'altra tecnologia molto avanzata riguardante lo storage, � rappresentata dal logical volume management (LVM). LVM rende possibile trattare i dispositivi fisici di mass storage come blocchi di basso livello sui quali sono create le diverse configurazioni per lo storage. Le capacit� esatte variano a seconda dell'implementazione specifica, ma possono includere il grouping fisico dello storage, il logical volume resizing, e la migrazione dei dati.
5.6.3.1. Grouping fisico dello storage
Anche se il nome di questa funzione pu� differire, il grouping fisico dello storage rappresenta la base per tutte le implementazioni LVM. Come indicato dal nome, i dispositivi fisici mass storage possono essere raggruppati in modo tale da creare uno o pi� dispositivi logici mass storage. I suddetti dispositivi (o logical volume) possono avere una capacit� maggiore di quella di qualsiasi dispositivo mass storage fisico indicato.
Per esempio, date due unit� da 100GB, � possibile creare un logical volume di 200GB. Tuttavia, � possibile creare anche un logical volume di 50GB o di 150GB. Qualsiasi combinazione del logical volume che risulta essere uguale o minore alla capacit� totale (in questo esempio 200GB) risulta essere possibile. Le scelte sono limitate solo dalle esigenze della vostra organizzazione.
Ci� rende possibile per un amministratore di sistema trattare l'intero storage come se fosse parte di un singolo gruppo, disponibile all'uso in qualsiasi quantit�. Altres�, � possibile aggiungere al gruppo, in un secondo momento, delle unit�, rendendo il processo molto semplice ed in grado di soddisfare la richiesta di storage degli utenti.
5.6.3.2. Logical Volume Resizing
Una caratteristica dell'LVM molto apprezzata da parte degli amministratori di sistema � la sua abilit� a direzionare facilmente lo storage l� dove se ne presenta la necessit�. In una configurazione di un sistema non-LVM, esaurire lo spazio pu� significare — nelle ipotesi migliori — muovere i file dal dispositivo saturo ad uno con maggiore spazio. Spesso significa anche riconfigurare i dispositivi mass storage del vostro sistema; un compito che potrebbe essere eseguito dopo il normale orario d'ufficio.
Tuttavia, LVM rende possibile un facile aumento della misura di un logical volume. Considerate per un momento che il nostro gruppo di storage da 200GB sia stato usato per creare un logical volume da 150GB, con il rimanente 50GB tenuto come riserva. Se il logical volume da 150GB si riempie, LVM � in grado di aumentare la sua misura (diciamo di 10GB), senza alcuna configurazione fisica. A seconda dell'ambiente del sistema operativo, potrebbe essere possibile eseguire tale operazione sia dinamicamente oppure attraverso una brevissima interruzione 'downtime' in modo da eseguire il resizing.
5.6.3.3. Migrazione dei dati
Molti amministratori di sistema con una certa esperienza potranno essere impressionati dalla capacit� dell'LVM, ma forse potrebbero domandarsi quanto segue:
Cosa succede se una delle unit� che compongono il logical volume non riesce ad eseguire l'avvio?
La buona notizia � che la maggior parte delle implementazioni LVM offrono la possibilit� di migrare i dati su di una unit� particolare. Per funzionare, ci deve essere una sufficiente capacit� di riserva, in modo da assorbire la perdita dell'unit�. Una volta completata la migrazione, l'unit� in questione pu� essere sostituita e aggiunta nel gruppo dello storage disponibile.
5.6.3.4. Perch� usare RAID con l'LVM?
Tenuto conto che LVM presenta alcuni contenuti simili a RAID (e cio� la possibilit� di sostituire dinamicamente le unit� che presentano dei problemi), ed altre caratteristiche che non possono essere eguagliate da molte implementazioni RAID (come ad esempio la possibilit� di aggiungere dinamicamente pi� storage ad un gruppo storage centrale), molte persone si possono domandare se RAID non ha pi� molta importanza.
Niente di pi� sbagliato. RAID e LVM sono delle tecnologie complementari che possono essere usate insieme (in modo simile ai livelli RAID nidificati), beneficiando cos� delle caratteristiche migliori di entrambi.
Quando iniziarono le prime ricerche su RAID, l'acronimo era Redundant Array of Inexpensive Disks, ma con il passare del tempo i dischi "standalone", che RAID doveva sostituire, sono diventati sempre meno costosi, rendendo il paragone tra i due sempre meno interessante.
Vi � altres� un altro impatto derivato dai calcoli sulla parit� necessari per ogni processo di scrittura. Tuttavia a seconda delle implementazioni RAID 5 specifiche (in modo particolare, dove vengono eseguiti i calcoli sulla parit�), questo impatto pu� variare da una misura considerevole ad una quasi non esistente.