Salta al contenuto
Note per Studenti Esercizio - RAID, capacità, prestazioni e guasti (eserciziario, esercizi 43 e 74)

Esercizio - RAID, capacità, prestazioni e guasti (eserciziario, esercizi 43 e 74)

In questa pagina 6

Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD).

  • Esercizio 43, parte 1. Due dischi da 200 GB, ciascuno con transfer rate di 200 MB/s, configurabili in RAID 0 o RAID 1. Per ciascuna modalità: (a) capacità complessiva; (b) c'è un miglioramento della tolleranza ai guasti? Detta pp la probabilità che un disco si guasti, quale diventa dopo il RAID?
  • Esercizio 43, parte 2. Array di 4 dischi da 500 GB, ciascuno con transfer rate di 120 MB/s, in modalità RAID 0 o RAID 10. Per ogni configurazione: capacità utilizzabile CtotC_{\text{tot}}; transfer rate teorico in lettura (TRL) e in scrittura (TRS); se c'è perdita di dati o rallentamenti in lettura e/o scrittura, considerando il guasto prima di un disco e poi di un secondo disco.
  • Esercizio 74. Illustrare la composizione (memoria complessiva) di un sistema RAID con 8 GB di memoria secondaria effettivamente utilizzabile, con: (a) livello 0 e 4 dischi; (b) livello 1 e 4 dischi; (c) livello 4 e 5 dischi; (d) livello 5 e 3 dischi.

Teoria: Memoria di massa e scheduling del discoLa memoria di massa è fatta di dischi rigidi (HDD: piatti, tracce, cilindri, settori) e memorie non volatili NAND (SSD); tempo di accesso HDD = seek + latenza rotazionale (mezzo giro, 30/RPM secondi), tempo di I/O = accesso + trasferimento + overhead del controller; i blocchi sono indirizzati con un LBA lineare; per l'HDD si minimizza il seek con FCFS, SSTF (rischio di starvation), SCAN (ascensore) e C-SCAN (più uniforme), con le varianti LOOK e C-LOOK e il deadline di Linux; per le NVM contano FTL, garbage collection, overprovisioning e wear leveling; il sistema operativo formatta (fisico e logico), partiziona, gestisce il boot e lo spazio di swap; parità ed ECC rilevano e correggono errori; il RAID usa striping, mirroring e parità (livelli 0, 1, 4, 5, 6, 10) per più velocità e affidabilità, con MTTDL = 1/PDL.Memoria di massa e scheduling del disco →, Memoria esterna - dischi, RAID e memorie otticheDisco magnetico (piatti, facce, tracce, settori, cilindri); tempo di accesso come somma di posizionamento, latenza rotazionale e trasferimento, con formule ed esempio; algoritmi di scheduling FCFS, SSTF e ascensore; livelli RAID da 0 a 6; SSD; CD, DVD e nastri.Memoria esterna - dischi, RAID e memorie ottiche →.


Promemoria

Con nn dischi uguali da CC byte e velocità vv:

livello capacità utile lettura scrittura guasto di un disco
RAID 0 nCnC nvnv nvnv dati persi
RAID 1 (coppie in mirror) nC/2nC/2 nvnv (si può leggere da entrambi) nv/2nv/2 nessuna perdita
RAID 4 (n−1)C(n-1)C nessuna perdita (si ricostruisce dalla parità)
RAID 5 (n−1)C(n-1)C nessuna perdita
RAID 10 nC/2nC/2 nvnv nv/2nv/2 nessuna perdita

Esercizio 43, parte 1 (due dischi da 200 GB)

RAID 1 (specchio): capacità 200 GB (un disco è la copia dell'altro). Tolleranza ai guasti molto migliore: se la probabilità che un disco si guasti nelle prossime 24 ore è pp, quella che si guastino entrambi è p2p^2, molto più bassa (con p=10−4p=10^{-4}, p2=10−8p^2=10^{-8}). Il disco guasto va sostituito subito.

RAID 0 (striping): capacità 400 GB. La tolleranza ai guasti peggiora: basta che si guasti uno dei due dischi per perdere i dati (le strisce sono distribuite), quindi la probabilità è

1−(1−p)2=2p−p2.1-(1-p)^2=2p-p^2.

Con p=0,0001p=0{,}0001: 0,000199990{,}00019999, quasi il doppio di pp.

Esercizio 43, parte 2 (4 dischi da 500 GB, 120 MB/s)

RAID 0.

  • Ctot=4⋅500=2000 GB=2 TBC_{\text{tot}}=4\cdot500=2000\text{ GB}=2\text{ TB}.
  • TRL == TRS =4⋅120=480=4\cdot120=480 MB/s (tutti i dischi lavorano in parallelo).
  • Guasto di un disco: perdita di dati; guasto di due: perdita di dati.

RAID 10 (due coppie in RAID 1, poi striping fra le coppie).

  • Ctot=42⋅500=1000 GB=1 TBC_{\text{tot}}=\dfrac42\cdot500=1000\text{ GB}=1\text{ TB} (in ogni coppia un disco è lo specchio dell'altro).
  • TRL =4⋅120=480=4\cdot120=480 MB/s: si può leggere in parallelo da tutti e 4 i dischi.
  • TRS =2⋅120=240=2\cdot120=240 MB/s: ogni dato va scritto su entrambi i dischi di una coppia, quindi in scrittura conta la banda di 2 dischi (gli altri due copiano).
  • Guasto di un disco: nessuna perdita, rallentamento solo in lettura (il disco guasto non serve più le letture e la sua coppia resta con un solo disco), nessun rallentamento in scrittura.
  • Guasto di due dischi: perdita di dati solo se i due dischi sono nella stessa coppia; se sono in coppie diverse i dati ci sono ancora (una copia per coppia), con le stesse conseguenze del caso precedente.

(Una nota della soluzione dice che anche con RAID 0+1 la lettura in parallelo su 4 dischi è possibile. Un'altra soluzione del corso scrive 480 GB/s e 240 GB/s: è un refuso per MB/s, perché i dischi sono da 120 MB/s.)

Esercizio 74 (8 GB utili)

caso dischi capacità di ogni disco capacità totale capacità utile
(a) RAID 0, 4 dischi 4 8/4=28/4=2 GB 8 GB 8 GB (tutta)
(b) RAID 1, 4 dischi 4 (2 coppie in mirror) 4 GB 16 GB 8 GB (metà)
(c) RAID 4, 5 dischi 5 (4 dati + 1 parità) 2 GB 10 GB 4⋅2=84\cdot2=8 GB
(d) RAID 5, 3 dischi 3 (parità distribuita) 4 GB 12 GB 23⋅12=8\tfrac23\cdot12=8 GB

Spiegazione del caso (d): con 3 dischi da xx GB, la capacità utile è 2x2x (un terzo della capacità totale è parità distribuita): 2x=8⇒x=42x=8\Rightarrow x=4 GB, totale 12 GB. In forma equivalente, dalle slide: DISK=83+DISK3⇒23DISK=83⇒DISK=4\text{DISK}=\tfrac83+\tfrac{\text{DISK}}3\Rightarrow\tfrac23\text{DISK}=\tfrac83\Rightarrow\text{DISK}=4 GB.

Nel caso (c), il livello 4 ha un disco di parità dedicato; nel caso (d) il livello 5 distribuisce la parità su tutti i dischi, per evitare che un solo disco diventi il collo di bottiglia delle scritture.

Bonus: affidabilità (dalle slide)

RAID 1 con due dischi, MTBF =100 000=100\,000 h, MTTR =10=10 h: probabilità di guasto in un'ora PF=10−5P_F=10^{-5}, di riparazione PR=10−4P_R=10^{-4}; probabilità di perdita di dati PDL≈2PFPR=2⋅10−9P_{DL}\approx2P_FP_R=2\cdot10^{-9}; MTTDL=1/PDL=5⋅108\text{MTTDL}=1/P_{DL}=5\cdot10^{8} ore ≈57 000\approx57\,000 anni.


Errori tipici

  • Dire che RAID 0 migliora l'affidabilità: la peggiora (1−(1−p)21-(1-p)^2).
  • Dimenticare che in RAID 10 la scrittura usa metà della banda (2v2v con 4 dischi).
  • Scrivere "perdita di dati" per ogni coppia di guasti in RAID 10: dipende da quali dischi.
  • Contare per RAID 5 la capacità totale invece di (n−1)C(n-1)C.
  • Confondere capacità di ogni disco, totale e utile nell'esercizio 74.

Versione ripasso

Tabella. nn dischi CC, vv: RAID 0 utile nCnC, lettura e scrittura nvnv, un guasto == perdita. RAID 1/10: utile nC/2nC/2, lettura nvnv, scrittura nv/2nv/2. RAID 4/5: (n−1)C(n-1)C (parità dedicata/distribuita). RAID 6: (n−2)C(n-2)C.

43 (2 dischi da 200 GB). RAID 1: 200 GB, guasto doppio p2p^2 (più affidabile). RAID 0: 400 GB, guasto 1−(1−p)2≈2p1-(1-p)^2\approx2p (meno affidabile).

43 (4 dischi da 500 GB, 120 MB/s). RAID 0: 2 TB, TRL == TRS =480=480 MB/s; un guasto →\to perdita. RAID 10: 1 TB, TRL 480, TRS 240 MB/s; un guasto: nessuna perdita, rallenta la lettura; due guasti: perdita solo se nella stessa coppia.

74 (8 GB utili). (a) 4 dischi da 2 GB; (b) 4 da 4 GB (16 GB totali); (c) 5 da 2 GB (10 totali, 8 utili); (d) 3 da 4 GB (12 totali, 2/32/3 utili).

MTTDL. PDL≈2PFPR=2⋅10−9P_{DL}\approx2P_FP_R=2\cdot10^{-9}, MTTDL =5⋅108=5\cdot10^8 h ≈57 000\approx57\,000 anni.

Passaggi. Capacità utile: RAID 0 nCnC; 1 e 10 nC/2nC/2; 4 e 5 (n−1)C(n-1)C. TRL RAID 10 =4⋅120=480=4\cdot120=480 MB/s, TRS =2⋅120=240=2\cdot120=240 MB/s. Probabilità di guasto con due dischi: RAID 1 p2p^2, RAID 0 1−(1−p)21-(1-p)^2 (p=0,0001→0,00019999p=0{,}0001\to0{,}00019999).

Errori tipici: RAID 0 più affidabile; scrittura RAID 10 a nvnv; due guasti sempre fatali in RAID 10; RAID 5 senza togliere la parità; capacità totale/utile scambiate.

Teoria: Memoria di massa e scheduling del discoLa memoria di massa è fatta di dischi rigidi (HDD: piatti, tracce, cilindri, settori) e memorie non volatili NAND (SSD); tempo di accesso HDD = seek + latenza rotazionale (mezzo giro, 30/RPM secondi), tempo di I/O = accesso + trasferimento + overhead del controller; i blocchi sono indirizzati con un LBA lineare; per l'HDD si minimizza il seek con FCFS, SSTF (rischio di starvation), SCAN (ascensore) e C-SCAN (più uniforme), con le varianti LOOK e C-LOOK e il deadline di Linux; per le NVM contano FTL, garbage collection, overprovisioning e wear leveling; il sistema operativo formatta (fisico e logico), partiziona, gestisce il boot e lo spazio di swap; parità ed ECC rilevano e correggono errori; il RAID usa striping, mirroring e parità (livelli 0, 1, 4, 5, 6, 10) per più velocità e affidabilità, con MTTDL = 1/PDL.Memoria di massa e scheduling del disco →.

Teoria collegata