Tecnologia RAID Dario Maio Le motivazioni storiche
Transcript
Tecnologia RAID Dario Maio Le motivazioni storiche
Tecnologia RAID Compaq SP24000, detto anche "Terabytes in a Cabinet," usa dischi da 4, 9, 18 o 36 GB fino a una capacità massima di 3.4 TB UltraSCSI Dario Maio http://www.csr.unibo.it/~maio/ [email protected] RAID 1 Le motivazioni storiche ¾ Negli anni 80 la tecnologia degli hard disk non rispondeva adeguatamente ai problemi indotti da: ¾ requisiti applicativi di elevata capacità e scalabilità ¾ Input/Output Gap dovuto a CPU sempre più veloci ¾ Necessità di sistemi di memorizzazione affidabili ¾ Necessità di ottenere bassi costi ¾ Cominciò allora la sperimentazione di una tecnologia alternativa, che combinava dischi piccoli poco costosi in array. ¾ Nel 1988 Patterson e altri, nel lavoro “A case for redundant arrays of inexpensive disks” analizzano le motivazioni della tecnologia RAID e introducono un modello per l’analisi delle prestazioni delle varie tipologie di array. RAID Page 1 2 Prestazioni di CPU e RAM anno-1984 ¾ Legge di Bill Joy (1985): MIPS= 2 ma una CPU più veloce non basta a rendere più veloce un sistema Legge di Amdahl: ogni istruzione di CPU per secondo richiede un byte di memoria principale dunque anche la capacità di memoria deve crescere con la stessa legge ¾ Legge di Gordon Moore: transistor/chip=2 anno-1964 ¾ le capacità delle RAM sono in realtà cresciute più in fretta di un fattore circa 3 rispetto alla velocità dei processori RAID 3 Prestazioni degli HD ¾ ¾ ¾ Mentre la densità di memorizzazione fino agli anni 80 ha seguito una crescita in linea con l’aumento delle capacità della RAM, le prestazioni nei grandi dischi costosi sono aumentate di meno di un 10% all’anno, dipendendo fortemente dalla meccanica dei dispositivi. “The Pending I/O crisis”: qual è allora l’impatto del miglioramento delle prestazioni di alcune parti di un sistema, lasciando le altre inalterate? Legge di Amdahl: S= 1 (1-f)+f/k S: effettivo aumento f: frazione di lavoro svolto più velocemente k: aumento di velocià apportato RAID Page 2 4 Esempio: legge di Amdahl ¾ Alcune applicazioni spendono il 10% in I/O. Dopo un aumento del 100% della velocità della CPU, si ha: S= 1 (1-0.9)+0.9/100 ≅ 10 Osservando che rispetto a piccoli dischi poco costosi le prestazioni dei grandi dischi, in termini di I/O per secondo, sono superiori solo di un fattore 2-3, nasce l’idea di costruire “array di piccoli dischi”, sfruttando tecniche di distribuzione dei dati e di parallelismo degli accessi. RAID 5 Le cattive notizie: affidabilità ¾ Sia dato un array di D dischi; assumendo che ogni disco presenti lo stesso MTTFdisk (Mean Time To Failure) e che i guasti siano fra loro indipendenti, si ha: MTTFdisk array = ¾Esempio: MTTFdisk D MTTFdisk = 30000 ore (>3 anni) D = 100 dischi MTTFdisk array = 300 ore (< 2 settimane) RAID Page 3 6 La soluzione RAID ¾ ¾ La soluzione più ovvia al problema della scarsa affidabilità di un array di dischi consiste nell’impiego di tecniche di ridondanza. Ma la ridondanza ha anche aspetti negativi in termini di prestazioni. RAID (Redundant Array of Inexpensive Disks) impiega: Ridondanza per aumentare l’affidabilità Parallelismo e Data Striping per aumentare le prestazioni RAID 7 Affidabilità dei RAID (1) Si ricorre a extra “check” disk con informazioni ridondanti. In caso di guasto di un disco, si sostituisce ricostruendo l’informazione nel nuovo disco usando la ridondanza dei check disk. Ipotesi per il calcolo dell’affidabilità: Single Error Repairing RAID Il MTTR (Mean Time To Repair) può essere ridotto disponendo di extra disk (hot standby spares) montati senza intervento umano. Guasti indipendenti, distribuzione esponenziale per il tempo fra due guasti ¾ λe −λt λ=1/MTTF RAID Page 4 8 Affidabilità dei RAID (2) D = Numero totale dischi dati (esclusi gli extra-check disk) G = Numero dischi dati in un gruppo C = Numero check disk in un gruppo nG = D/G =Numero gruppi nel disk array MTTFGroup = MTTFDisk 1 ∗ G + C (Prob.di un altroguastoin un gruppodurantel' intervalloMTTR) Prob.di un altro guasto ≅ MTTF RAID = MTTF nG MTTR MTTFDisk /(G + C - 1) Group ≅ (MTTF Disk ) 2 (D + C ∗ n G )(G + C − 1) ∗ MTTR RAID 9 Concetti di base ¾ ¾ ¾ Richieste multiple indipendenti possono essere servite in parallelo da dischi diversi. Una singola richiesta di un numero elevato di blocchi può essere servita da più dischi che operano in maniera coordinata. La maggior parte delle organizzazioni può essere distinta in base a due caratteristiche: Granularità di inserimento dei dati Metodo e struttura con cui le informazioni ridondanti vengono calcolate e distribuite sui vari dischi RAID Page 5 10 Parallelismo : grana fine ¾ ¾ I dati vengono inseriti in blocchi relativamente piccoli, le richieste di I/O accedono a tutti i dischi di un gruppo. Ciò comporta data rate elevato ma basso I/O rate. Granularità idonea per applicazioni di supercomputing Durante una lettura tutti i dischi di un gruppo agiscono in parallelo, ciascuno trasferendo una porzione dei dati richiesti RAID 11 Parallelismo: grana grossa ¾ ¾ I dati vengono inseriti in blocchi relativamente grandi, le piccole richieste vengono servite da un piccolo numero di dischi. Ciò comporta data rate basso ma elevato I/O rate. Granularità idonea per transaction processing Molteplici letture/scritture individuali avvengono in parallelo sui vari dischi di un gruppo RAID Page 6 12 Ridondanza e data striping ¾ Due problemi ortogonali: 1) Metodo per il calcolo delle informazioni ridondanti: parità, codici di Hamming, codici di Reed-Solomon, … 2) Schema di distribuzione, ai due estremi: 2a) concentrazione delle informazioni ridondanti in un numero piccolo di dischi 2b) distribuzione uniforme su tutti i dischi, che consente in generale un bilanciamento del carico fra i dischi RAID 13 RAID 0 : Non - Redundant Non è una vera architettura RAID, infatti non mantiene ridondanza e consente solo data striping, a livello di blocco o multipli di blocco. Presenta il minor costo fra le architetture RAID Ha le migliori prestazioni in scrittura, non ha le migliori prestazioni in lettura L’affidabilità Utilizzata è molto bassa in applicazioni di supercomputing RAID Page 7 14 RAID 1 : Mirrored disks D Una versione ottimizzata fault D Mirrored data tolerant prevede il raddoppio dei controller, rendendo possibili letture in parallelo I dati sono mantenuti in duplice copia su dischi distinti, tutti i dischi sono duplicati (G=1 C=1) Ogni dato è posto su due attuatori indipendenti, si possono ottenere migliori prestazioni in lettura rispetto a un solo disco, tramite la tecnica seek scheduling Offre un’elevata affidabilità, ma presenta il costo più elevato fra le architetture RAID. Idonea per small DB. MTTDL (mean time to data loss) è elevatissimo: si dovrebbero guastare contemporaneamente un disco e la sua copia RAID 15 MTTF di RAID 1 MTTF RAID -1 ≅ (MTTF Disk ) 2 (MTTF Disk ) 2 = (D + C ∗ n G )(G + C − 1) ∗ MTTR 2 ∗ D ∗ MTTR Esempio: D=100, MTTFDisk = 30000 ore, MTTR = 1 ora MTTFRAID-1 = 4500000 ore > 500 anni Num. Totale dischi = 2D Costo aggiuntivo = 100% Capacità di memoria utile = 50% RAID Page 8 16 RAID 0+1 (RAID 1+0) Nella configurazione 0+1 (stripe of mirrors) i dati sono distribuiti su insiemi di dischi in duplice copia; Nella configurazione 1+0 (mirror of stripes) i dati sono distribuiti su un array di dischi che viene completamente duplicato su uno o più array di dischi. Ottima affidabilità e buone prestazioni in accesso ma costi elevati RAID 17 RAID 2: Memory-Style ECC G C Architettura non diffusa commercialmente. Striping a livello di bit, unico movimento parallelo delle testine. Uso di codici di Hamming per rilevare e correggere un errore. Il numero di dischi ridondanti in un gruppo è circa proporzionale al logaritmo del numero di dischi dati nel gruppo: Es. G=10, C=4; G=25,C=5; Nei dischi ridondanti viene inserita la parità calcolata sui diversi sottoinsiemi dell’informazione. Un unico disco di parità può rilevare un singolo errore, ma per correggere un errore sono necessari più dischi di parità per identificare il disco con l’errore. Small I/O richiedono tutti i dischi di un gruppo; dunque non idoneo per transaction processing. Il massimo parallelismo di transazioni è pari a D/G. Large I/O richiede almeno G settori; appropriato per supercomputer. RAID Page 9 18 RAID 2 (striping at bit level) A0 A1 A2 A3 B0 B1 B2 B3 C0 C1 C2 C3 Sector 0 Data Disk 1 D0 D1 D2 D3 4 transfer units Sector 0 Data Disk 2 A0 B0 C0 D0 A1 B1 C1 D1 Sector 0 Check Disk 5 A ECC0 B ECC0 C ECC0 D ECC0 Sector 0 Data Disk 3 A2 B2 C2 D2 Sector 0 Check Disk 6 Sector 0 Data Disk 4 A3 B3 C3 D3 Sector 0 Check Disk 7 A ECC1 B ECC1 C ECC1 D ECC1 A ECC2 B ECC2 C ECC2 D ECC2 RAID 19 MTTF di RAID 2 Esempio: MTTF D=100, G=10, C=4, MTTFDisk = 30000 ore, MTTR = 1 ora RAID - 2 ≅ (MTTF Disk ) 2 (MTTF Disk ) 2 = = (D + C ∗ n G )(G + C − 1) ∗ MTTR 1.4 ∗ D ∗ 13 * MTTR = 494500 ore > 50 anni Num. Totale dischi = 140D Costo aggiuntivo = 40% Capacità Con di memoria utile = 71% G= 25, C=5 si ha MTTFRAID-2= 130500 ore = circa 12 anni Num. Totale dischi = 120 Costo aggiuntivo = 20% Capacità di memoria utile = 83% RAID Page 10 20 RAID 3: Bit-Interleaved Parity Striping a livello di bit, unico movimento parallelo delle testine. Uso di un solo disco di parità. I disk controller identificano il disco guasto, così un solo disco di parità è sufficiente per ricostruire l’informazione in un gruppo. Le read accedono a tutti i dischi dati di un gruppo, le write accedono a tutti i dischi dati e al disco di parità. Fornisce prestazioni in lettura inferiori agli schemi che distribuiscono la parità uniformemente sui dischi. Viene usata in applicazioni che richiedono larghezza di banda ma non moltissime operazioni di I/O. RAID 21 RAID 3 (bit-interleaved parity) A0 A1 A2 A3 B0 B1 B2 B3 Sector 0 Data Disk 1 A0 B0 C0 D0 C0 C1 C2 C3 D0 D1 D2 D3 Sector 0 Data Disk 2 A1 B1 C1 D1 4 transfer units Sector 0 Data Disk 3 A2 B2 C2 D2 Sector 0 Data Disk 4 A3 B3 C3 D3 Sector 0 Check Disk 5 A ECC B ECC C ECC D ECC La parità è calcolata per un’ intera unità di trasferimento RAID Page 11 22 Esempio: MTTF MTTF di RAID 3 D=100, G=10, C=1, MTTFDisk = 30000 ore, MTTR = 1 ora RAID - 2 (MTTF Disk ) 2 (MTTF Disk ) 2 = = (D + C ∗ n G )(G + C − 1) ∗ MTTR 1.1 ∗ D ∗ 10 * MTTR ≅ = 820000 ore > 90 anni Num. Totale dischi = 110 Costo aggiuntivo = 10% Capacità Con di memoria utile = 91% G= 25, C=1 si ha MTTFRAID-2= 346000 ore = circa 40 anni Num. Totale dischi = 104 Costo aggiuntivo = 4% Capacità di memoria utile = 96% RAID 23 Esempio di Even-Parity Se il disco 2 si guasta, il Bit 0 del dato mancante si determina risolvendo: 1+x+0+1=y con y dispari, essendo pari a 1 il valore di parità del Bit 0. In questo caso il Bit 0 sul disco 2 deve essere pari a 1. Binary Value of Data Drive Data Value Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 1 135 1 0 0 0 0 1 1 1 2 11 0 0 0 0 1 0 1 1 3 96 0 1 1 0 0 0 0 0 4 157 1 0 0 1 1 1 0 1 Sum of bits Even Odd Odd Odd Even Even Even Odd Parity Values 0 1 1 1 0 0 0 1 RAID Page 12 24 RAID 4: Block-Interleaved Parity Striping a livello di blocco, testine indipendenti. Uso di un solo disco di parità. Piccole letture richiedono l’accesso a un solo disco dati. Piccole scritture richiedono 4 I/O: due per leggere il vecchio dato e la vecchia parità, due per scrivere il nuovo dato e aggiornare la parità. Il collo di bottiglia rimane il disco di parità. Risultati di affidabilità, costo, capacità effettiva uguali a quelli del livello RAID 3. Il ciclo di small read-modify-write è ancora troppo lento rispetto a RAID 1; dunque non sempre idoneo per transaction processing. Idoneo per ambienti che richiedono molte simultanee piccole letture. Il calcolo della parità è più semplice rispetto a RAID 3, infatti noti il vecchio valore del dato e vecchio valore della parità, il nuovo valore della parità si ottiene: new parity =(old data xor new data) xor old parity RAID 25 RAID 4 (block-interleaved parity) A0 A1 A2 A3 B0 B1 B2 B3 Sector 0 Data Disk 1 A0 A1 A2 A3 C0 C1 C2 C3 Sector 0 Data Disk 2 B0 B1 B2 B3 D0 D1 D2 D3 4 transfer units Sector 0 Data Disk 3 C0 C1 C2 C3 Sector 0 Data Disk 4 D0 D1 D2 D3 Sector 0 Check Disk 5 ECC0 ECC1 ECC2 ECC3 La parità è calcolata ora per pezzi di un’ intera unità di trasferimento RAID Page 13 26 RAID 5 (Block-Interleaved Distributed Parity) Striping a livello di blocco, e parità distribuita su tutti i dischi; testine indipendenti. Rispetto a RAID 3 si riduce il collo di bottiglia in quanto scritture indipendenti concorrenti non sempre richiedono di accedere allo stesso disco per la parità. Hanno prestazioni migliori per grandi letture, piccole letture e grandi scritture; le piccole scritture sono inefficienti rispetto allo schema di mirroring, in quanto è necessario usare il ciclo letturamodifica-scrittura per aggiornare la parità. Idoneo per applicazioni di calcolo e per elaborazione di transazioni interattive. Risultati di affidabilità, costo, capacità effettiva uguali a quelli dei livelli RAID 3 e RAID 4. RAID 27 Prestazioni RAID 4 e 5 a confronto check disk RAID 4 1 S0 S1 2 3 4 W W RAID 5 5 1 W S0 W S1 S2 S2 S3 S3 S4 S4 S5 S5 Write S0 su disco 2 e Write S1 su disco 3 implicano rsipettivamente Write S0 su disco 5 e Write S1 su disco 5 2 3 4 5 W W W W Non c’è collo di bottiglia su disco 5 RAID Page 14 28 Left-Symmetric Parity Distribution 1 2 3 4 5 6 7 8 9 a1 b2 c3 d4 a2 b3 c4 d5 a3 b4 c5 d6 a4 b5 c6 d7 a5 b6 c7 d8 a6 b7 c8 pd a7 b8 pc d1 a8 pb c1 d2 pa b1 c2 d3 pa calcola la parità delle stripe a1-a8 pb calcola la parità delle stripe b1-b8 …………. RAID 29 RAID 6: P+Q Redundancy Striping a livello di blocco, e parità distribuita su tutti i dischi; testine indipendenti. Tolleranza fino a 2 guasti, utilizzando codici di Reed - Solomon. Hanno prestazioni comparabili con RAID 5, ma piccole scritture richiedono 6 operazioni di I/O. Affidabilità superiore a RAID 5, costi superiori a RAID 5. D1 D2 D3 D4 D5 D6 dischi 0 1 2 3 P0 Q0 6 7 P1 Q1 4 5 P2 12 Q2 13 8 14 9 15 10 P3 11 Q3 codice R-S 18 19 P4 Q4 16 17 parità stripe RAID Page 15 30 Codici di Reed-Solomon Un codice di Reed-Solomon è specificato come RS(n,k) con simboli di s bit. Ciò significa che il codificatore prende k simboli dati di s bit ciascuno e aggiunge simboli di parità per costruire una parola codice di n simboli. Vi sono n-k simboli di parità di s bit ciascuno. Il decodificatore può correggere fino a t simboli che contengono errori in una parola codice, essendo 2t = n-k. I codici RS sono un sottoinsieme dei codici BCH. Alla base la matematica dei campi di Galois. L’informazione da memorizzare è vista come un polinomio che moltiplicato per un polinomio generatore genera la parola codice. RAID 31 Esempio di codice RS RS(255,223) con simboli di 8 bit. Ogni parola codice contiene 255 byte, di cui 223 sono dati e 32 sono parità. In questo esempio: n = 255, k = 223, s = 8 2t = 32, t = 16 Il decodificatore può correggere errori fino a 16 byte nella parola codice. Dato un simbolo di dimensione s, la lunghezza massima di parola codice è pari a n = 2s – 1 Nell’esempio infatti n = 28 – 1=255 RAID Page 16 32 RAID 3+0, 0+3, RAID 5+0, 0+5 Combinano rispettivamente le tecniche di parità tipiche del livello 3 o del livello 5 con le tecniche di distribuzione del livello 0. Presentano costi elevati, ma beneficiano del parallelismo d’accesso ai dischi di parità. Esistono anche altre combinazioni di livelli. Non tutte le combinazioni sono possibili. RAID 33 Nuove tendenze RAID Page 17 34 Riferimenti bibliografici http://www.pcguide.com/ref/hdd/perf/raid/ http://www.dell.com/us/en/biz/topics/ vectors_1999-raid.htm http://www.fibrechannel.com/ RAID Page 18 35