Avete sentito parlare di RAID e vi è stato consigliato di crearne uno per conservare e tutelare i vostri dati, ma non avete la più pallida idea di cosa tutto ciò significhi? Allora siete capitati nell’articolo giusto: cercheremo di spiegare di seguito e nel modo più comprensibile possibile cosa sia un RAID, quali sono le differenze tra le varie tipologie di RAID e quando è meglio utilizzare ciascuna di esse.
Cosa è un RAID?
RAID – che non è il celebre spray anti-insetti ma l’acronimo di Redundant Array of Inexpensive Disks – è un metodo per gestire i dati in maniera sicura grazie all’utilizzo di due o più hard disk in parallelo. I RAID, oltre che per garantire sicurezza, venivano e a volte vengono tutt’ora utilizzati per distribuire (stripe) i dati su più dischi fisici ottenendo un “disco logico” più grande.
Che lo si utilizzi per la sicurezza (RAID 1, RAID 5) o per lo striping (RAID 0, JBOD), un array di dischi viene “visto” dal sistema operativo come un disco unico, e vi sono casi in cui il danneggiamento di uno o più dischi uniti in un RAID denota l’inutilizzabilità del RAID stesso e la perdita dei dati.
Di seguito illustreremo con parole semplici il funzionamenti dei RAID più usati in ambito sia home che aziendale: RAID 0, RAID 1, RAID 5 e JBOD.
RAID 0
Il RAID 0, o array di dati con striping, sostanzialmente è un tipo di array che punta a migliorare le prestazioni e non offre nessun tipo di ridondanza o fault tolerance (tolleranza agli errori): unendo due o più dischi fisici in RAID 0 si ottiene un unico volume logico, la cui dimensione totale è la somma algebrica delle dimensioni dei due dischi separati. Il RAID 0 viene gestito dal sistema come un unico disco.
I dati vengono indirizzati e scritti secondo un preciso algoritmo sull’uno e sull’altro disco, non necessariamente per intero (ad esempio una parte di un file potrebbe essere scritta sul disco A, un’altra parte sul disco B), e le prestazioni incrementano prevalentemente grazie a questo tipo di meccanismo. Se uno dei dischi dell’array si rompe l’array è però perso, così come sono potenzialmente persi tutti i dati presenti in esso (proprio perché, come spiegavamo prima, un singolo file può essere diviso sui due dischi).
RAID 1
Il RAID 1, o array di dati con mirroring, è un tipo di array che punta a mettere in sicurezza i dati grazie ad un meccanismo di ridondanza: unendo due o più dischi fisici in RAID 1 si ottiene un unico volume logico, la cui dimensione totale è pari alla dimensione del disco fisico più piccolo. Il RAID 1 viene gestito dal sistema come un unico disco. Anche questa volta niente controlli di parità.
I dati vengono indirizzati e scritti in maniera speculare su entrambi i dischi per ottenere ridondanza, non necessariamente in tempo reale, il che non intacca sulle prestazioni in fase di lettura (che generalmente sono pari a quelle del disco più lento o, in caso di dischi a pari velocità, si ha addirittura un incremento: mentre un disco scrive nuovi dati, un file in lettura può essere prelevato dal disco di mirroring riducendo di molto la latenza) e può rallentare in maniera poco significativa quelle in fase di scrittura. Se uno dei dischi dell’array si rompe l’array è perso, tuttavia è possibile accedere comunque al disco fisico “sano” e recuperare da esso tutti i dati memorizzati (proprio perché subentra la ridondanza grazie al mirroring).
RAID 1+0 (o RAID 10)
Il RAID 1+0 (o RAID 10), come il nome lascia intendere, “unisce” le caratteristiche di mirroring del RAID 1 a quelle di striping del RAID 0: prende il nome di sistema annidato poiché il RAID è composto dall’unione di due livelli RAID (e non di due dischi).
Per la precisione, nel RAID 1+0 – come mostra l’immagine in alto – due “famiglie” di RAID 1 vengono unite tra loro in un RAID 0. E’ richiesto un minimo di 4 dischi (per comporre i due RAID 1) e lo spazio disponibile sarà pari alla somma delle dimensioni dei due dischi più piccoli appartenenti a ciascuna famiglia di RAID 1. Il RAID 10 è un buon compromesso per ottenere contemporaneamente striping e mirroring dei dati unendo i pregi delle singole tecnologie RAID e dimezzandone i difetti.
Il RAID 10 può tollerare il danneggiamento di al più un disco per ogni famiglia di array RAID 1. Se una famiglia di RAID 1 viene completamente distrutta, i dati sul RAID 10 sono persi.
RAID 5
Il RAID 5 è invece un meccanismo di RAID avanzato che richiede per il suo funzionamento 3 o più dischi: si basa sul data striping ma, a differenza del RAID 0, ad essere “divisi” tra i dischi non sono bit di dati ma blocchi di dati; inoltre è garantita una notevole fault tolerance grazie al meccanismo di parità distribuita su tutti i dischi del RAID (banalmente, una serie di bit “riparatori” usati in caso di errore). Proprio grazie alla parità, le prestazioni in lettura di un RAID 5 sono nettamente migliori rispetto agli altri (poiché più dischi possono essere letti in parallelo).
I dischi in RAID 5 vengono letti come un unico disco dal sistema, con dimensioni pari a
(num_dischi - 1)* Spazio_disco_più_piccolo
Ad esempio, nel caso di un RAID 5 composto da 4 dischi di cui il più piccolo misura 1 TB, la dimensione totale sarà (4-1)*1 TB = 3TB. Nel caso un disco dovesse improvvisamente rompersi, il RAID 5 è in grado – sebbene i blocchi di dati siano “distribuiti” – di ricostruire integralmente i dati (inclusi quelli sul disco rotto) usando i bit di parità distribuiti su ciascuno degli altri dischi; è comunque fondamentale sostituire immediatamente il disco rotto per mantenere la consistenza del RAID. Qualora sia invece contemporanea la rottura di due o più dischi, array e dati sono persi (a meno di non avere “spare” drivers).
JBOD
Il JBOD non fa parte della famiglia degli array RAID, il suo acronimo sta per “Just a bunch of disks”… il che la dice lunga: due o più dischi configurati in JBOD offrono la concatenazione (spanning), ovvero – esattamente come succede nel RAID 0 – i dischi fisici uniti in JBOD vengono letti come un unico disco logico dal sistema, tuttavia i dati vengono sparsi tra tutti i dischi senza però essere “striped” – ovvero, un singolo file viene scritto per intero su un disco, senza che questo venga diviso.
E’ a carico dell’algoritmo di gestione di JBOD definire su quale disco debba finire un nuovo file, in modo da distribuire meglio il carico. Come è semplice intuire, la dimensione totale di un volume JBOD è pari alla somma algebrica delle dimensioni di tutti i dischi, con prestazioni in lettura pari a quelle del disco più lento in lettura e prestazioni in scrittura generalmente (ma non in maniera sensibile) minori rispetto a quelle del disco più lento in scrittura. Nel caso un disco si rompa, l’array JBOD viene distrutto così come i dati presenti sul disco rotto, tuttavia i dati presenti sui restanti dischi (che possono comunque essere accesi singolarmente) restano intatti e pienamente recuperabili.