RAID: da “Redundant Array of Inexpensive Disks” a “Redundant Array of Independent (expensive?) Disks”. Chi si occupa di sicurezza informatica si è abituato a considerare normale utilizzare metodi di risk management per implementare un moderno sistema di protezione aziendale. L'incessante cronaca di attacchi a siti internet e la possibilità di accedere facilmente a fonti di sapere aperte e attendibili (ad es. i sistemi a codice free o open source) hanno consolidato la consapevolezza che nessun sistema di sicurezza è inviolabile. In ambito storage è ancora comune considerare i sistemi come infallibili poiché altamente resilienti. Probabilmente il ritardo di offerta di storage con software a codice aperto per il mercato aziendale ha limitato la diffusione di notizie e quindi la conoscenza di casi critici, con qualche eccezione8 (notare che spesso la causa è imputata ad un errore “umano”). Per arrivare a considerare normale9 che i dati in uno storage in RAID 5/6 abbiano un elevato rischio di corruzione o fault totale è necessario chiarire il contesto dei requisti minimi ricordando che il documento10 del 1988 in cui viene coniato per la prima volta il termine RAID conclude con una serie di temi su cui investigare e tra questi: “Ho do defective sectors affect RAID?” Facciamo l'ipotesi di uno storage in raid 5 “hardware” costituito da un array di dischi in cui il controller aggrega n dischi che espone al sistema operativo come un singolo volume su cui creare un filesystem. In caso eliminazione (erasure) di un singolo disco il controller entra in modalità “Interim Data Recovery Mode”, ossia ricostruisce al volo il dato mancante in modo che il sistema operativo possa operare senza interruzione di servizio. Appena l'unità guasta viene sostituita con una nuova, parte un processo di ricostruzione per tornare allo stato precedente. Ci sono tre puntualizzazioni importantissime da fare a questo punto: - un sistema RAID5 effettua la ricostruzione del dato mancante solo in Interim o in Rebuild data recovery mode, - il rebuild (re-silver) di un array RAID5 comporta la lettura sequenziale di TUTTI i bit (non è un filesystem) di tutti i dischi rimanenti e, in caso di errore di lettura anche di un solo bit, si interrompe con segnalazione di errore, - in nessun caso lo standard RAID5 effettua il checksum dei dati... 8 http://www.availabilitydigest.com/public_articles/0510/virginia.pdf , https://www.computable.nl/artikel/achtergrond/infrastructuur/4389649/2379248/raadsels-rond-computerstoringgroningen.html 9 http://www.zdnet.com/article/why-raid-5-stops-working-in-2009/ 10 http://www.cs.cmu.edu/~garth/RAIDpaper/Patterson88.pdf U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240 Il motivo per cui i sistemi RAID5/6 non effettuano verifiche di integrità (alcuni si basano su query S.M.A.R.T per verificare lo stato dei dischi!) ad ogni lettura è opinabile in termini di integrità dei dati enterprise (ma ben argomentato in questo post 11 e parzialmente confermato da questo paper12 ) mentre il fatto che il rebuild si interrompa in caso di errore, per quanto impressionante, deriva dal fatto che un array RAID (hardware o software se non integrato nel filesystem) è ad un livello inferiore e disgiunto dal filesystem dell' Os e quindi non ha nessun mapping/conoscenza di come siano strutturati i dati. E' interessante osservare che il vero scopo di sistemi RAID6/Double Parity non sia quello di ricostruire un array in caso di rottura contemporanea di due dischi (evento che in sé riconduce alle stesse criticità di un Raid5), ma di tollerare la ricostruzione di un disco e la perdita di un bit! Abbiamo stabilito che lo standard Raid5, originariamente progettato per ottenere performance con un “accettabile” livello di affidabilità, non effettua mai il checksum dei dati in lettura e scrittura, delegando tale attività ai controlli ECC integrati nell'elettronica dei dischi o del controller. Oggi sul mercato sono già disponibili dischi magnetici SATA consumer da 8TB13 (al costo di 200€) con frequenze dichiarate dai produttori di unrecoverable error rate di un bit ogni 1014: Lo scenario che andremo a descrivere sarà quello di un RAID5 con array di dischi ad altissima capacità e URE di categoria consumer 1x1014 . Prima di proseguire è necessario ricordare che l'indicazione di un URE con frequenza di 1x1014 non significa che si abbia la certezza che l'evento accada e vale l'occasione per ricordare alcuni elementi del calcolo delle probabilità. La distribuzione binomiale di probabilità è una distribuzione discreta che descrive il numero di successi in un processo di Bernoulli. Un tipico processo di Bernoulli è il lancio di una moneta dove il risultato può essere testa o croce oppure la lettura di un bit da un hard disk che può avere valore 0 o 1 14, con la caratteristica che: - p è la probabilità che un evento abbia successo - q è la probabilità che un evento non abbia successo - p = 1 -q La distribuzione binomiale consente di valutare le probabilità che una modalità di un evento con probabilità individuabile a priori (p) si verifichi un determinato numero di volte (k) entro un numero totale (n) di eventi. Ad esempio se lancio tre volte15 un dado il numero massimo di combinazioni semplici con ripetizioni16 è 56 (n=6, k=3): 11 http://serverfault.com/questions/100301/how-does-raid-detect-a-faulty-hd 12 http://pages.cs.wisc.edu/~bpkroth/cs736/md-checksums/md-checksums-paper.pdf 13 http://www.seagate.com/files/www-content/product-content/hdd-fam/seagate-archive-hdd/en-us/docs/archive-hdddS1834-3-1411us.pdf 14 https://mycourses.aalto.fi/pluginfile.php/42813/course/section/45281/Solution7.pdf 15 http://www.irccsdebellis.it/html/dipuninf/statistica/cap6.pdf 16 https://it.wikipedia.org/wiki/Coefficiente_binomiale U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240 Ad ogni lancio la probabilità che esca un certo valore (ad esempio 6) è 1/6, ma qual è la probabilità che esca 6 almeno una volta dopo tre lanci? La formula generale B(n,p) ci dice che la somma di tutte le probabilità è uguale a 1: Tra tutte le otto (23) possibili combinazioni dei tre lanci (n=3) vogliamo calcolare quella dove la probabilità che un evento p pari a 1/6 non si verifichi mai ossia k=0, la formula P(n,k,p) diventa il caso specifico P(3,0,p) sapendo che il coefficiente si esprime come p=1/6 q= 1-p n (numero di lanci) = 3 k (casi di successo) = 0 [ ]( ) ( ) 3! 1 0 1 ⋅ ⋅ 1− 0!⋅(3−0)! 6 6 (3−0) ( ) =1⋅1⋅ 1− (3−0) 1 6 n! ( nk)= k!(n−k )! ( ) = 1− 1 3 =0,579 6 ossia che nel 57.9% dei casi su tre lanci l'evento p non uscirà mai. A questo punto sapendo che p=1-q possiamo dedurre che tutti i casi rimanenti in cui l'evento p esca almeno una volta ha una probabilità del 1-0,579= 42,1%. Dalla letteratura17 sappiamo che durante il rebuild di un array da 100GB in raid5 di dischi con ure 1x10^14 l'eventualità di incorrere in un errore di lettura di bit è assimilabile ad un processo di Bernoulli (0,1) possiamo utilizzare la distribuzione binomiale per calcolare la probabilità di leggere con successo tutti i dati: p (probabilità di leggere 1 bit errato) = 1/10^14 q (probabilità di non leggere 1 bit errato) = 1-p = 1-1/10^14 n (numero di letture di bit indipendenti) = 100GB = 8*10^11 bit k (casi di successo) = 0 (8∗100 )[ p ][q 11 0 11 (8∗10 −0 ) [ 1 ]=1∗1∗ 1− 14 10 ] 11 8∗10 =0,992 che significa che la probabilità di incorrere in almeno un unrecoverable error è dello 0,8%. Il numero di errori attesi si ricava dalla formula ossia (8*10^11)*(1/(10^14))= 0,008. 17 https://web.eecs.umich.edu/~pmchen/papers/chen94_1.pdf U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240 Vediamo ora uno scenario di 6 dischi da 6TB SATA consumer in RAID5 nell'ipotesi di rebuild causato dalla rottura di un disco, il processo di lettura dovrà ricostruire i dati via XOR dai 5 dischi rimanenti: p (probabilità di leggere 1 bit errato) = 1/10^14 q (probabilità di non leggere 1 bit errato) = 1-p = 1-1/10^14 n (numero di letture di bit indipendenti) = 5*6TB=30TB = 2,4*10^14 bit k (casi di successo) = 0 C( 2,4*10^14;0)*p^0*q^ 2,4*10^14 = 1*1*(1-1/(10^14))^(2,4*10^14) = 0,090 che significa che la probabilità di incorrere in almeno un unrecoverable error è dello 91%!. Il numero di errori attesi si ricava dalla formula: (2,4*10^14)*(1/(10^14)= 2,4 . Il grafico successivo indica la probabilità di un errore in array di dischi SATA con ure 1x1014: Sono dati che fanno riflettere e che fanno capire come mai ad un certo punto la i di Inexpensive sia diventata Indipendent, infatti ora sappiamo che l'unica vera differenza tra un disco consumer ed uno enterprise è l' URE, ad esempio con un disco da 10TB “consumer enterprise” HGST HelioSeal18 con URE 1x1015 la probabilità che l' array in rebuild ottenga l'errore scende: 1-((1-(1/10^15))^(2,4*10^14))19 = 0,21 , ma il 21% di probabilità di ottenere un blocco nella ricostruzione del raid è ancora un valore inaccettabile. Una possibile soluzione potrebbe essere quella di usare unità con URE 1x1016 : 1-((1-1/(10^16))^(2,4*10^14)) = 0,02, ma un tale livello di qualità è presente solo nei dischi magnetici SAS20 (o SSD enterprise) che però vengono venduti a 3.000€ l'uno e con capacità massima di 900GB. 18 https://www.hgst.com/products/hard-drives/ultrastar-archive-ha10 19 La formula equivalente 1-(((10^15-1)/10^15)^(2,4*10^14)) 20 http://www.enterprisestorageforum.com/storage-technology/sas-vs.-sata-1.html U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240 I valori di soglia critici in relazione ai parametri ure sono i seguenti: URE 1x1014 12,5 TB. URE 1x1015 125 TB. URE 1x1016 1,25 PB. La possibilità di un bit URE durante il re-silver di un array RAID5 non è l'unico problema, esiste infatti un elevata correlazione di un secondo fault successivo alla rottura di un disco e quindi è estremamente importante non solo che l'unità difettosa sia sostituita immediatamente tramite dischi di spare, ma che il processo di ricostruzione sia minore di 10 ore21: “For example, the probability of seeing two drives in the cluster fail within one hour is four times larger under the real data, compared to the exponential distribution. The probability of seeing two drives in the cluster fail within the same 10 hours is two times larger under the real data, compared to the exponential distribution. “ Illustrazione 6: Distribution of time between disk replacements across all nodes in HPC1 for only year 3 of operation. Ipotizzando di leggere un intero disco da 10TB ad una velocità ottimistica di 100MB/s (durante un rebuild RAID5 è operativo e quindi esegue le attività di lettura ad una velocità del 60-80% del massimo possibile) abbiamo 10TB/100MB/s= 27 ore. Non è un caso quindi che i produttori di sistemi storage enterprise offrano prevalentemente dischi SAS con URE 1x1016 e di capacità ridotta, molto al di sotto della massima capacità disponibile sul mercato, con conseguente esplosione dei costi di acquisto, supporto e manutenzione. Ed è probabilmente per gli stessi motivi che la I di RAID si è trasformata da Inexpensive in Indipendent... Per completare il quadro d'insieme ricordiamo che la letteratura scientifica, sulla base di misurazioni empiriche, ha ridiscusso la definizione di parametri o concetti noti (MTBF,MTTL,latent sector error, silend data corruption, ecc., ecc), ma anche formule e algoritmi di analisi e previsione dei guasti22 . 21 https://www.usenix.org/legacy/events/fast07/tech/schroeder/schroeder_html/index.html 22 http://www.cs.cmu.edu/~bianca/fast08.pdf U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240 Nel 2006 Netapp pubblica un articolo “NETAPP RAID-DP™: DUAL-PARITY RAID 6 PROTECTION WITHOUT COMPROMISE “ che annuncia che con il proprio RAIDDoubleParity il rischio di perdita di dati in caso di rebuild di un array è 3800 volte più basso di un RAID5 (la versione del 2006 WP-7005-1006 è reperibile in altri siti). Nel 2009 Adam Leventhal23, sulla base dei trend di crescita della capacità dello storage, prevede che nel 2019 anche RAID6 non potrà più essere affidabile e suggerisce di iniziare a considerare la strada del RAID Triple Parity. Nel 2013 Netapp, con rara e ammirabile onestà intellettuale, pubblica un documento24 che prende atto dei progressi tecnologici e delle analisi scientifiche e propone una nuova formulazione del calcolo dell'affidabilità degli storage RAID6 che ricalcola il minor rischio dai 3800x del 2006 ad un valore attorno a 300x25 nei confronti di RAID5 (ma anche RAID1+0) e mettendo a disposizione un calcolatore26. Compariamo quest'ultimo documento27 Netapp con uno Dell28 del 2002 che sostiene che “Mirroring (RAID10 ndr) provides the most reliable RAID system” (tesi tutt'ora sostenuta da alcuni produttori): Poiché sappiamo che la complessità degli argomenti trattati coinvolge anche la scelta dei metodi matematici di analisi è evidente la necessità che i modelli/algoritmi utilizzati da chiunque per calcolare l'affidabilità dei sistemi storage siano resi pubblici o, auspicabilmente, ricollocati nell'ambito del sempre attuale metodo scientifico in modo da facilitare la discussione e la verifica dalla più amplia platea possibile di soggetti. In caso contrario ogni affermazione è riconducibile a semplice opinione se non ad un mero messaggio pubblicitario. 23 24 25 26 27 28 http://queue.acm.org/detail.cfm?id=1670144 https://www.usenix.org/system/files/fastpw13-final25.pdf http://www.netapp.com/us/media/wp-7005.pdf http://raideqn.netapp.com/ http://www.netapp.com/us/media/wp-7005.pdf http://www.dell.com/content/topics/global.aspx/power/en/ps1q02_long?c=us&l=en&cs=04 U.O.A. Servizio Informatico Resp. del Procedimento: dott. Giorgio Roncolato Resp. Istruttoria: Alessandro Fascina Revisione 1.0 del 5 febbraio 2016 Via Trento, 4 - 36071 Arzignano (VI) Tel: 0444/479663 Fax: 0444/479654 e-mail: [email protected] C.F.e P.I. 00913220240