Avanti Indietro Indice

2. Considerazioni su RAID

  1. D: Cosa è RAID? Perché mai dovrei usarlo?
    R: RAID è una maniera per combinare diversi disk drive in una singola unità, in modo da aumentare le prestazioni e/o l'affidabilità. Vi sono diversi tipi e implementazioni di RAID, ognuna con i suoi vantaggi e svantaggi. Per esempio, mettendo una copia degli stessi dati su due dischi (cosa chiamata disk mirroring, o RAID livello 1), le prestazioni in lettura possono essere migliorate leggendo alternativamente da ogni disco nel sistema di mirror. In media ogni disco è meno occupato poiché effettua solo 1/2 (nel caso di 2 dischi) o 1/3 (nel caso di tre dischi e così via) delle letture richieste. In più un sistema di mirror può aumentare l'affidabilità: se un disco si rompe, gli altri dischi contengono una copia dei dati. Differenti maniere di combinare più dischi in uno, dette livelli RAID, possono fornire una superiore capacità di immagazzinamento dei dati del semplice mirroring, o possono alterare i tempi di attesa (tempi di accesso), o il throughput (transfer rate), nella lettura o scrittura, offrendo comunque la ridondanza che risulta utile in caso di malfunzionamenti.

    Anche se RAID può proteggere da eventuali malfunzionamenti del disco, non protegge da errori dell'operatore e dell' amministratore (errori umani), o da errori dovuti a bug di programmazione (forse dovuti anche ad errori nello stesso software RAID). La rete abbonda di storie tragiche di amministratori di sistema che hanno installato RAID e hanno perso tutti i loro dati. RAID non sostituisce un backup frequente e regolarmente programmato.

    RAID può essere implementato via hardware, attraverso speciali controller di dischi, o via software, come un modulo del kernel che si interpone tra i driver di basso livello dei dischi e il file system. L'hardware RAID consiste comunque di un "controller di dischi", una periferica alla quale si possono collegare i disk drive. Usualmente si presenta come una scheda che si può connettere su uno slot ISA/EISA/PCI/S-Bus/MicroChannel. Tuttavia qualche controller RAID è fatto per connettersi a metà del cavo che collega il normale controller ai dischi. Quelli piccoli possono entrare nell'alloggiamento di un drive; quelli grandi possono essere installati in un loro cabinet con i loro alloggiamenti per dischi e una loro alimentazione. Il più recente hardware RAID usato con le ultime e più veloci CPU fornirà probabilmente la migliore performance, ad un prezzo comunque abbastanza alto. Questo perché molti controller RAID contengono un DSP e della memoria cache che permette di togliere una fetta considerevole di carico alla CPU, e permettono un alto transfer rate grazie alla ampia memoria cache del controller. Il vecchio hardware RAID può agire come "freno" del sistema se usato con le nuove CPU: i vecchi DSP e memorie cache fanno da collo di bottiglia e la performance globale è spesso superata da quella del semplice RAID software e dai nuovi, normalissimi, controller. Il RAID implementato via hardware può essere vantaggioso rispetto a quello via software se può far uso della sincronizzazione dei dischi e può sapere la posizione della testina del disco rispetto al blocco del disco desiderato. È vero però che molti dischi moderni (a basso costo) non offrono questi livelli di informazione e controllo sulla loro attività e quindi molto hardware RAID non ne trae vantaggio. L'hardware RAID di diverse marche, versioni e modelli è normalmente incompatibile. Se un controller RAID si rompe, deve essere rimpiazzato da un altro controller dello stesso tipo. Al momento della stesura di questo documento (giugno 1998) un'ampia gamma di controller hardware funzionerà sotto Linux; in ogni caso nessuno di questi viene venduto con delle utilità di configurazione e gestione che funzionino sotto Linux.

    Software-RAID è formato da un set di moduli del kernel, combinato con delle utilità di gestione che implementano RAID solamente tramite software e non richiedono hardware speciale. Il sottosistema RAID di Linux è implementato come strato del kernel che si pone tra i driver a basso livello dei dischi (per dischi IDE, SCSI e Paraport) e l'interfaccia del dispositivo a blocchi. Il file system, sia esso ext2fs, DOS-FAT o altro, rimane sopra l'interfaccia del dispositivo a blocchi. Software-RAID, grazie alla sua natura software, risulta essere più flessibile di una soluzione hardware. Il lato negativo è che richiede un maggiore utilizzo della CPU per poter girare bene rispetto ad una uguale implementazione hardware. Naturalmente sul costo non può essere battuto. Software-Raid ha una ulteriore importante caratteristica distintiva: opera su partizioni, perciò la partizione RAID è formata da un certo numero di partizioni di dischi. Questo contrasta con le soluzioni adottate da gran parte dell' hardware RAID, che uniscono assieme interi dischi per formarne una serie. Fatto sta che utilizzando l'hardware si ha una sottosistema RAID trasparente rispetto al sistema operativo, cosa che tende a semplificare la gestione. Con il software, ci sono molte più opzioni di configurazione e scelte, che tendono a complicare la faccenda.

    Al momento della stesura di questo testo (giugno 1998) la gestione del RAID sotto Linux non è affatto banale, ed è una buona prova anche per degli esperti amministratori di sistema. La teoria delle operazioni è complessa. I tool di sistema richiedono modifiche agli script di avvio. Riprendere il controllo della situazione dopo un malfunzionamento del disco è un'operazione complessa che agevola l'errore umano. RAID non è per i novizi, ed ogni beneficio che può apportare all'affidabilità e alle prestazioni può essere facilmente controbilanciato da una maggiore complessità. In realtà i moderni dischi sono incredibilmente affidabili e le moderne CPU e i controller sono veramente potenti. Si possono ottenere più facilmente i livelli di prestazione e l'affidabilità desiderate acquistando hardware di alta qualità e/o più veloce

  2. D: Cosa sono i livelli RAID? Perché così tanti? Cosa li distingue?
    R: Differenti livelli RAID hanno prestazioni, ridondanza, capacità di immagazzinamento, affidabilità e costi differenti. Molti, ma non tutti, i livelli RAID offrono ridondanza per cautelarsi contro i malfunzionamenti dei dischi. Di quelli che implementano la ridondanza RAID-1 e RAID-5 sono i più popolari. RAID-1 offre migliori prestazioni mentre RAID-5 un uso più efficiente dello spazio disco a disposizione. Comunque cercare la migliore prestazione è una cosa completamente differente poiché la performance dipende fortemente da un'ampia gamma di fattori, dal tipo di applicazione alle dimensioni delle strisce, dei blocchi e dei file. Gli aspetti più difficoltosi della ricerca della migliore performance sono rimandati ad una sezione di questo HOWTO che vedremo dopo.

    Quanto segue descrive i differenti livelli RAID nel contesto dell'implementazione su Linux del Software RAID.

    • RAID-linear è una semplice concatenazione di partizioni che creano una più ampia partizione virtuale. È utile se si ha un certo numero di piccoli dischi e si vuole creare una unica, grande partizione. Questa concatenazione non offre ridondanza ed in effetti diminuisce l'affidabilità globale; la partizione così creata smetterà di funzionare non appena un solo disco si rovina.

    • RAID-1 è chiamato anche "mirroring". Due (o più) partizioni, tutte della stessa grandezza, contengono ciascuna una copia degli stessi dati che risultano disposti nella stessa maniera sulle due partizioni (in inglese "disk-block by disk-block". ndt). Il mirroring offre una forte protezione contro i malfunzionamenti dei dischi: se un disco si rompe se ne ha un altro con gli stessi dati. Il mirroring può anche migliorare le prestazioni in sistemi "I/O laden" (con grossi carichi di input-output. ndt) poiché le richieste di lettura possono essere divise su più dischi. Sfortunatamente il mirroring è il meno efficiente in materia di capacità di immagazzinamento: due partizioni in mirroring posso immagazzinare gli stessi dati di una.

    • "Striping" è l'idea che sta dietro a tutti gli altri livelli RAID. Una striscia (in inglese "stripe" da cui il nome di "striping". ndt) è una sequenza continua di blocchi del disco. Una striscia può essere così corta da contenere un solo blocco disco o può contenerne centinaia. I driver RAID dividono le partizioni in strisce; i vari livelli RAID differiscono nella maniera di organizzare le strisce e nei dati che vi memorizzano. Il rapporto tra le dimensioni delle strisce, la grandezza più ricorrente dei file nel file system e la loro disposizione nel disco è quello che determina le prestazioni globali di un sottosistema RAID.

    • RAID-0 è molto simile a RAID-linear, tranne per il fatto che le partizioni che lo compongono vengono divise in strisce e quindi suddivise. Come nel caso del RAID-linear il risultato è una singola partizione virtuale. Ancora come RAID-linear, RAID-0 non offre ridondanza diminuendo quindi l'affidabilità globale: il malfunzionamento di un solo disco mette fuori uso tutto. Spesso si crede che RAID-0 abbia prestazioni migliori rispetto a RAID-linear. Questo può essere o non essere vero, dipendendo dalle caratteristiche del file system, dalla grandezza più frequente dei file comparata con la dimensione delle strisce e dal tipo di carico a cui è sottoposto. Il file system ext2fs dispone i file in una partizione in modo da diminuire la frammentazione. Così, per semplicità, ogni dato accesso può essere indirizzato ad uno o più dischi e quindi la suddivisione delle strisce su più dischi non offre un vantaggio apparente. Comunque sia vi sono delle differenze nelle prestazioni, dipendenti dai dati, dal carico di lavoro e dalla dimensione delle strisce.

    • RAID-4 suddivide in strisce come RAID-0, ma richiede una partizione aggiuntiva per memorizzare le informazioni sulla parità. La parità è usata per offrire ridondanza sui dati: se un disco si rovina i dati sui dischi rimanenti possono essere usati per ricostruire quelli che erano sul disco rotto. Dati N dischi di dati e un disco di parità, la striscia di parità è computata prendendo una striscia da ognuno dei dischi di dati ed effettuando un XOR tra di esse. Quindi la capacità di memorizzazione di una serie di (N+1) dischi RAID-4 è N, molto meglio del mirroring di (N+1) dischi e buona come un setup RAID-0, per N grande. Da notare che per N=1 vi è un disco di dati e un disco di parità e RAID-4 somiglia molto al mirroring, nel quale ognuno dei due dischi è la copia dell'altro. RAID-4 NON offre le prestazioni in lettura/scrittura del mirroring ed anzi la sua performance in scrittura è considerevolmente peggiore. In breve questo accade a causa del fatto che l'aggiornamento della parità richiede la lettura della vecchia parità prima che la nuova parità venga calcolata e scritta. In ambienti con un grosso carico di scrittura il disco di parità può diventare un collo di bottiglia poiché ogni processo di scrittura deve accedere al disco di parità.

    • RAID-5 evita il collo di bottiglia in scrittura di RAID-4 memorizzando la striscia di parità su ognuno dei dischi. Ovviamente la prestazione in scrittura non è ancora buona come quella del mirroring, visto che la striscia di parità deve anche qui essere letta e deve esservi effettuato lo XOR prima che sia scritta. Anche la prestazione in lettura non è buona come quella del mirroring poiché, dopo tutto, vi è una sola copia dei dati e non due o più. Il vantaggio principale di RAID-5 sul mirroring è che offre ridondanza e protezione nel caso di malfunzionamento di un solo disco, e allo stesso tempo ha una capacità di memorizzazione molto più alta quando è usato con tre o più drive.

    • RAID-2 e RAID-3 sono usati raramente, e sono stati in qualche maniera resi obsoleti dalla moderna tecnologia dei dischi. RAID-2 è simile a RAID-4, ma memorizza informazioni ECC al posto della parità. Poiché tutti i dischi moderni incorporano sotto sotto un controllo ECC, il vantaggio è minimo. RAID-2 può dare una maggiore coerenza ai dati se viene a mancare la corrente mentre è in corso un'operazione di scrittura; però un gruppo di continuità e uno shutdown pulito danno gli stessi vantaggi. RAID-3 è simile a RAID-4 tranne per il fatto che usa la minore grandezza possibile per le strisce. Il risultato è che ogni operazione di lettura interessa tutti i dischi, facendo diventare difficile/impossibile soddisfare richieste di I/O contemporanee. Per evitare il ritardo dovuto alla latenza rotazionale RAID-3 richiede che la rotazione di tutti i dischi possa essere sincronizzata. Molto hardware moderno non dispone della capacità di sincronizzazione o, se ne dispone, mancano i connettori necessari, i cavi e la documentazione di chi lo ha prodotto. Né RAID-2 né RAID-3 sono livelli RAID supportati dai driver di Software RAID per Linux.

    • Altri livelli RAID sono stati definiti da vari ricercatori e produttori. Molti di questi non sono altro che la sovrapposizione di un tipo di raid su un altro. Qualcuno richiede dell'hardware speciale e altri sono protetti da brevetto. Non vi è una nomenclatura universalmente accettata per questi altri livelli. A volte i vantaggi di questi altri sistemi sono piccoli o almeno non appaiono finché il sistema non è sottoposto ad un alto livello di stress. Eccettuata la sovrapposizione di RAID-1 su RAID-0/linear, il Software RAID per Linux non consente nessuna di queste altre variazioni.


Avanti Indietro Indice