Annuncio

Collapse
No announcement yet.

[guida] Che cos'è il RAID ?

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Ora
  • Show
Clear All
new posts

  • [guida] Che cos'è il RAID ?

    Che cos'è un RAID ??



    Un Redundant Array of Independent Disks ("insieme ridondante di dischi indipendenti", RAID) è un sistema informatico che usa un insieme di dischi rigidi per condividere o replicare le informazioni. I benefici del RAID sono di aumentare l'integrità dei dati, la tolleranza ai guasti e le prestazioni, rispetto all'uso di un disco singolo. Nella sua implementazione originaria (nella quale l'acronimo era l'abbreviazione di "Redundant Array of Inexpensive Disks", cioè "Insieme ridondante di dischi economici"), il fattore chiave era l'abilità di combinare parecchi dischi a basso costo e obsoleti in modo da rendere il sistema complessivamente migliore di un disco di ultima generazione per capacità, affidabilità e/o velocità.

    Nel suo livello più semplice, il sistema RAID permette di combinare un insieme di dischi in una sola unità logica. In questo modo il sistema operativo, invece di vedere differenti dischi, ne vede solamente uno. Il RAID è tipicamente usato nei server, e di solito è implementato con dischi di identica capacità. Con il calo del costo dei dischi rigidi e con il diffondersi della tecnologia RAID nei chipset delle schede madri, il RAID è spesso offerto come opzione sia sui computer di fascia alta sia su quelli usati da utenti domestici, specialmente se dedicati a compiti che richiedono un grande immagazzinamento di dati, come il montaggio audio/video.

    Le specifiche originali suggerivano un diverso numero di "livelli di RAID", o combinazioni di dischi. Ogni combinazione aveva dei vantaggi e degli svantaggi. Con il passare degli anni, sono nate diverse implementazioni del concetto di RAID. La maggior parte differiscono sostanzialmente nell'implementazione dei livelli RAID ideati inizialmente. Questo può portare spesso a confusione, poiché un'implementazione RAID-5 può essere molto diversa da un'altra. RAID-3 e RAID-4 sono spesso confusi o scambiati tra loro.

    La vera definizione di RAID è stata oggetto di dibattito nel corso degli anni. L'uso del termine "ridondante" porta a molte discussioni se il RAID-0 sia "vero" RAID. Analogamente, il cambio da economico a indipendente confonde molti dei concetti alla base del RAID: infatti ci sono alcune implementazioni del RAID che usano un solo disco. In questa voce si considera RAID ogni sistema che sviluppa il concetto base di RAID di ricombinare lo spazio fisico di dischi diversi per lo scopo di aumentare l'affidabilità o le prestazioni del sistema nel suo complesso.


    Il RAID può essere implementato sia con hardware dedicato sia con software specifico su hardware di uso comune.
    Con una implementazione software, il sistema operativo gestisce l'insieme di dischi attraverso un normale controller (ATA, SCSI, Fibre Channel o altro). Questa opzione può essere più lenta di un RAID hardware, ma non richiede l'acquisto di componenti extra.
    Una implementazione hardware del RAID richiede (almeno) un controllore RAID ad-hoc. Nei computer desktop, questo può essere una scheda di espansione PCI o può essere usato il controller presente nella scheda madre. Nei RAID più grandi, il controller e i dischi sono sistemati in un alloggiamento esterno. Questi dischi possono essere ATA, SATA, SCSI, o Fibre Channel mentre il controllore collega il computer ospite con uno o più collegamenti ad alta velocità SCSI, Fibre Channel o connessioni iSCSI, sia direttamente sia come NAS. Questo controllore gestisce i dischi, e compie i controlli di parità (di cui molti livelli RAID hanno necessità ). Questa opzione tende a dare le migliori prestazioni e a rendere la gestione nel sistema operativo molto più semplice. Le implementazione hardware in genere supportanno lo scambio a caldo (hot swapping), permettendo di sostituire un disco mentre il sistema rimane in esecuzione.
    Sia i sistemi hardware che software supportano l'uso degli hot spare, dischi preinstallati che vengono usati immediatamente (e quasi automaticamente) quando un altro disco si rompe.

    RAID 0

    Il sistema RAID 0 divide i dati equamente tra due o più dischi con nessuna informazione di parità o ridondanza. Bisogna notare che il RAID-0 non era presente tra i livelli RAID originari, e che non è ridondante. RAID-0 è usato generalmente per aumentare le prestazioni di un sistema, anche se è molto utile per creare un piccolo numero di grandi dischi virtuali da un grande numero di piccoli dischi fisici. Sebbene il RAID-0 non sia indicato tra i livelli RAID originari, in un sistema ideale di tipo RAID-0 le operazioni di I/O si dividerebbero in blocchi di dimensioni uguali e si applicherebbero equamente su tutti i dischi. Le implementazioni di sistemi RAID-0 su più di due dischi sono possibili, ma l'affidabilità di un dato sistema RAID-0 è uguale all'affidabilità media dei dischi diviso per il numero di dischi presenti. Quindi l'affidabilità , misurata come tempo medio tra due guasti (MTBF) è inversamente proporzionale al numero degli elementi; cioè un sistema di due dischi è affidabile la metà di un disco solo. La ragione per la quale succede ciò è che il file system è diviso tra tutti i dischi. Quando un drive si guasta, il file system non può gestire un perdita di dati così grande visto che i dati sono divisi tra tutti i dischi. I dati possono essere spesso recuperati con qualche strumento, anche se saranno sicuramente incompleti e corrotti.
    RAID-0 è molto utile per creare grandi server NFS server in sola posizione, nei casi nei quali montare molti dischi è dispendioso o impossibile e la ridondanza è irrilevante. Si usa anche quando il numero di dischi sia limitato dal sistema operativo. In Microsoft Windows, il numero delle lettere dei dischi è limitato a 24, così il RAID-0 è un modo molto diffuso di usare un numero maggiori di dischi. Comunque, siccome non c'è ridondanza, i dati sono condivisi tra i dischi e i dischi non possono essere sostituiti visto che sono tutti dipendenti tra di loro.

    RAID 1

    Il sistema RAID 1 crea una copia esatta (o mirror) di tutti i dati su due o più dischi. E' utile nei casi in cui la ridondanza è più importante che usare tutti i dischi alla loro massima capacità : infatti il sistema può avere una capacità massima pari a quella del disco più piccolo. In un sistema ideale, formato da due dischi, l'affidabilità aumenta di un fattore due rispetto al sistema a disco singolo, ma è possibile avere più di una copia dei dischi. Poichà© ogni disco può essere gestito autonomamente nel caso l'altro si guasti, l'affidabilità aumenta linearmente al numero di dischi presenti. RAID-1 aumenta anche le prestazioni in lettura, visto che molte implementazioni possono leggere da un disco mentre l'altro è occupato.
    Una pratica comune è di creare un mirror extra di un disco (detto anche con Business Continuance Volume or BCV) che può essere diviso dal sistema RAID originario ed essere usato in maniera indipendente. In alcune implementazioni, questi mirror aggiuntivi possono essere divisi e aggiunti in maniera incrementale, invece di richiedere un ricostruzione completa del RAID.

    RAID-1
    Tradizionale
    A1 A1
    A2 A2
    A3 A3
    A4 A4

    Nota: un rappresentazione tipica di un sistema RAID-1. A1, A2,
    etc. sono divisi tra i due dischi, aumentando l'affidabilita e la velocità .

    RAID 2

    Un sistema RAID 2 divide i dati al livello di bit (invece che di blocco) e usa un codice di Hamming per la correzione d'errore. Questi dischi sono sincronizzati dal controllore per eseguire in accordo. Questo è l'unico livello di RAID originario che attualmente non è più in uso.

    RAID 3

    Un sistema RAID 3 usa una divisione al livello di byte con un disco dedicato alla parità . Il RAID-3 è estremamente raro nella pratica. Uno degli effetti collaterali del RAID-3 è che non può eseguire richieste multiple simultaneamente. Questo perchà© ogni singolo blocco di dati ha la propria definizione diffusa tra tutti i dischi del RAID e risiederà nella stessa locazione, così ogni operazione di I/O richiede di usare tutti i dischi.
    Nell'esempio sottostante, una richiesta per il blocco "A1" richiederà di cercare attraverso tutti di dischi. Una richiesta simultanea per il blocco B1 rimarrà invece in attesa.

    RAID-3
    Tradizionale
    A1 A2 A3 Ap(1-3)
    A4 A5 A6 Ap(4-6)
    A7 A8 A9 Ap(7-9)
    B1 B2 B3 Bp(1-3)

    Nota: A1, B1, etc rappresentano ognuno un byte.

    RAID 4

    Il sistema RAID 4 usa una divisione (striping) a livello di blocchi con un disco dedicato alla parità . Il RAID-4 assomiglia molto al RAID-3 con l'eccezione che divide i dati al livello di blocchi invece che al livello di byte. Questo permette ad ogni disco appartenente al sistema di operare in maniera indipendente quando è richiesto un singolo blocco. Se il controllore del disco lo permette, un sistema RAID-4 può servire diverse richieste di lettura contemporaneamente.
    Nell'esempio sottostante, una richiesta al blocco "A1" potrebbe essere evasa dal disco 1. Una richiesta simultanea al blocco B1 dovrebbe aspettare, ma una richiesta al blocco B2 portebbe essere servita allo stesso momento.

    RAID-4
    Tradizionale
    A1 A2 A3 Ap
    B1 B2 B3 Bp
    C1 C2 C3 Cp
    D1 D2 D3 Dp

    Nota: A1, B1, etc. rappresentano ognuno un blocco di dati

    RAID 5

    Un sistema RAID 5 usa una divisione dei dati a livello di blocco con i dati di parità distribuiti tra tutti i dischi appartenenti al RAID. Questa è una delle implementazioni più popolari, sia in hardware che in software. Virtualmente ogni sistema di storage permette il RAID-5 tra le sue opzioni.
    Nell'esempio sottostante, una richiesta al blocco "A1" potrebbe essere evasa dal disco 1. Una simultanea richiesta per il blocco B1 dovrebbe aspettare, ma una richiesta simultanea per il blocco B2 potrebbe essere evasa in contemporanea.

    RAID-5
    Tradizionale
    A1 A2 A3 Ap
    B1 B2 Bp B3
    C1 Cp C2 C3
    Dp D1 D2 D3

    Nota: A1, B2, etc rappresentano ognuno un blocco di dati.

    Ogni volta che un blocco di dati (chiamato delle volte chunk) deve essere scritto nel sistema di dischi, un blocco di parità viene generato all'interno della stripe. (Un blocco è spesso composto da molti settori di disco, delle volte anche 256. Una serie di blocchi consecutivi è chiamato stripe). Se un altro blocco, o qualche porzione dello stesso blocco, è scritta nella stessa stripe, il blocco di parità viene ricalcolato e riscritto. Il disco usato per memorizzare le parità viene modificato tra una stripe e la successiva; in questo modo si riescono a distribuire i blocchi di parità .
    Bisogna notare che il blocco di parità non viene letto quando si leggono i dati da disco, visto che sarebbero un sovraccarico non necessario e diminuirebbe le performance. Il blocco di parità è letto, invece, quando la lettura di un settore da un errore CRC. In questo caso, il settore nella stessa posizione relativa nei blocchi di dati rimanenti della stripe, insieme al blocco di parità , vengono usati per ricostruire il blocco mancante. In questo modo l'errore di CRC viene nascosto al computer chiamante. Nella stessa maniera, se un disco dovesse danneggiarsi all'interno del sistema, i blocchi di parità dei dischi rimanenti sono combinati matematicamente "al volo" con i blocchi dati rimasti per ricostruire i dati del disco guasto.
    Questa procedura viene chiamata di solito Interim Data Recovery Mode. Il computer principale non è messo al corrente che un disco si è danneggiato. Le letture e scritture verso il sistema di dischi avvengono tranquillamente come prima, sebbene con qualche calo di prestazioni.
    In un sistema RAID 5 che ha un solo blocco di parità per stripe, la rottura di un secondo disco comporta la perdita di tutti i dati presenti nel sistema.
    Il numero massimo di dischi è teoricamente illimitato, ma una pratica comune è di mantenere il numero massimo di dischi a 14 o meno per le implementazioni che hanno solo un blocco di parità per stripe. Le ragioni per questo limite sono che la probabilità che due dischi del sistema di rompano in successione cresce con il crescere del numero di dischi. Quando il numero di dischi in un sistema RAID-5 cresce, il MTBF del sistema nel suo complesso può persino diventare minore di quello di un singolo disco. Questo succede quando la probabilità che si rompa un secondo disco degli (N - 1) rimanenti, tra il tempo di accorgersi, sostituire e ricreare il primo disco guasto, diventi maggiore della probabilità che un singolo disco si guasti.
    Bisogna ricordare che più dischi insieme aumentano il calore, che abbassa il vero MTBF di ogni disco. Inoltre, i dischi di uno stesso gruppo comprati nello stesso periodo potrebbero raggiungere la fine della loro vita insieme, abbassando in maniera significativa il MTBF del sistema.
    Nelle implementazioni con più di 14 dischi, o in situazioni dove è necessaria grande ridondanza dei dati, viene usata spesso una implementazione RAID 5 con doppia parità (detta anche RAID 6), che riesce a gestire il guasto contemporaneo di due dischi.


    RAID 6

    Un sistema RAID 6 usa una divisione a livello di blocchi con i dati di parità distruibuiti due volte tra tutti i dischi. Non era presente tra gli originali livelli RAID.Nel RAID-6, il blocco di parità viene generato e distribuito tra due stripe di parità , su due dischi separati, usando differenti stripe di parità nelle due "direzioni".

    RAID-5 RAID-6
    Tradizionale Tipico
    A1 A2 A3 Ap A1 A2 A3 p4 Dp
    B1 B2 Bp B3 B1 B2 p3 Cp B3
    C1 Cp C2 C3 C1 p2 Bp C2 C3
    Dp D1 D2 D3 p1 Ap D1 D2 D3

    Nota: A1, B1, etc. rappresentano ognuno un blocco di dati.

    Il RAID-6 è più ridondante del RAID-5, ma è molto inefficiente quando viene usato in un numero limitato di dischi. Vedi la doppia parità , spiegata di seguito, per una implementazione ancora più ridondante.

    RAID 0 +1

    Un sistema RAID 0+1 è un RAID che viene usato sia per replicare che per condividere dati tra diversi dischi. La differenza tra il RAID 0+1 e il RAID 10 è la diversa disposizione di ogni sistema RAID. Considera l'esempio sottostante del RAID 0+1: sei dischi da 120 GB sono usati per creare un sistema RAID 0+1.

    RAID 1
    |
    /-----------------\
    | |
    RAID 0 RAID 0
    /-----------\ /-----------\
    | | | | | |
    120GB 120GB 120GB 120GB 120GB 120GB

    Lo spazio totale è di 360GB, divisi tra due sistemi. Il vantaggio principale è che quando un disco si rompe tra quelli del RAID-0, i dati mancanti possono essere trasferiti dall'altro RAID-0. Comunque, aggiungere un disco richiede di aggiungere due dischi per bilanciare lo spazio tra i due sistemi.
    Il sistema non è così robusto come il RAID 10 e non può sopportare la rottura simultanea di due dischi, se non appartengono alla stessa stripe. Cioè, se un disco si rompe, ogni altro disco dell'altra stripe è un elemento critico per il sistema. Inoltre, se un disco viene sostituito, per ricostruire il sistema devono partecipare tutti i dischi.

    RAID 10

    Un sistema RAID 10, è simile al RAID 0+1 ma i livelli RAID sono usati in senso invertito. Nell'esempio sottostante si possono vedere 3 insiemi di dischi da 120 GB in RAID 1 che sono uniti per raggiungere lo spazio complessivo di 360 GB.

Working...
X