Un unico grande RAID 10 – Un nuovo standard nello storage dei server
Alla fine degli anni '90 la regola pratica standard per costruire un nuovo server consisteva nel collocare il sistema operativo su un proprio piccolo array RAID 1 e nel separare applicazioni e dati in un array RAID 5 distinto. Ciò veniva fatto per diverse ragioni, molte delle quali si sono ormai dissolte, perdute nelle sabbie del tempo. I principali fattori trainanti erano che la capacità di storage era estremamente costosa, i dischi erano piccoli, i filesystem si corrompevano regolarmente e i dischi rigidi fisici si guastavano con una frequenza molto elevata rispetto ad altri tipi di guasti. Le persone erano spinte dalla necessità di proteggersi dai guasti fisici dei dischi rigidi, di proteggersi dalla corruzione del filesystem e di acquisire capacità sufficiente a soddisfare le proprie esigenze.
Oggi il panorama dello storage è cambiato. I filesystem sono incredibilmente robusti e la corruzione derivante dal filesystem stesso è quasi inaudita e, grazie a tecnologie come il journaling, può quasi sempre essere corretta rapidamente ed efficacemente, proteggendo gli utenti finali dalla perdita di dati. Quasi nessuno si preoccupa oggi della corruzione del filesystem.
I filesystem moderni sono inoltre in grado di gestire una capacità di gran lunga superiore a quanto potessero fare in passato. Non era raro, alla fine degli anni '90 e all'inizio degli anni 2000, avere la possibilità di creare facilmente un array di dischi più grande di quanto qualsiasi singolo filesystem potesse gestire. Oggi ciò non è ragionevolmente più il caso, poiché tutti i filesystem comuni gestiscono almeno molti terabyte e spesso petabyte, exabyte o più di dati.
I dischi rigidi sono molto più affidabili di quanto fossero alla fine degli anni '90. I tassi di guasto per il cedimento di un intero disco sono molto bassi, persino nei dischi meno costosi. Così bassi, in effetti, che i guasti degli array (la perdita di dati nell'intero array RAID) riguardano principalmente il cedimento degli array stessi, piuttosto che il guasto dei dischi rigidi. Non sostituiamo più i dischi rigidi con sfrenata disinvoltura. Non è inaudito che grandi array funzionino per l'intero arco della loro vita senza perdere un singolo disco.
Le capacità sono cresciute in modo drammatico. Invece di dischi rigidi da 4,3 GB stiamo installando dischi da 3 TB. Quasi mille volte più capacità su un singolo mandrino rispetto a meno di quindici anni fa.
Questi fattori si combinano per creare la necessità di un approccio radicalmente diverso alla progettazione dello storage dei server e un cambiamento nella “regola pratica” su da dove partire nella progettazione dello storage.
Il vecchio approccio può essere scritto come RAID 1 + RAID 5. Lo spazio RAID 1 veniva utilizzato per il sistema operativo, mentre lo spazio RAID 5, presumibilmente molto più grande, veniva utilizzato per dati e applicazioni. Questa progettazione divideva le due esigenze di storage, concentrando il massimo sforzo nella protezione del sistema operativo (che era molto difficile da recuperare in caso di disastro e dal quale i dati dipendevano per l'accessibilità) su un RAID 1 altamente affidabile. Il RAID 5, a costo inferiore ma in qualche modo più rischioso, veniva scelto tipicamente per i dati, perché il costo di archiviare i dati su RAID 1 era nella maggior parte dei casi troppo elevato. Era un compromesso che aveva senso all'epoca.
Oggi, con le nostre preoccupazioni molto diverse, è necessario un nuovo approccio, e questo nuovo approccio è noto come “Un unico grande RAID 10” – ovvero un singolo, grande array RAID 10 con sistema operativo, applicazioni e dati tutti archiviati insieme. Naturalmente, questo è solo ciò che diciamo per comodità: in un sistema senza esigenze di prestazioni o capacità superiori a quelle di un singolo disco diremmo “Un unico grande RAID 1”, ma molte persone includono il RAID 1 nel gruppo RAID 10, quindi è semplicemente più facile dire la prima espressione.
Per essere ancora più pratici, abbreviamo questo in OBR10.
Poiché il costo dello storage è diminuito considerevolmente e, invece di essere un bene scarso, è oggi tipicamente disponibile in abbondanza, poiché i filesystem sono incredibilmente affidabili, poiché RAID 1 e RAID 10 condividono le caratteristiche prestazionali e poiché i guasti degli array innescati da cause diverse dal guasto del disco sono passati dall'essere rumore di fondo a cause primarie di perdita di dati, il passaggio al RAID 10 e l'eliminazione della suddivisione degli array sono diventati il nuovo approccio standard.
Con il RAID 10 disponiamo ora, per tutti i nostri dati, dello storage altamente disponibile e resiliente precedentemente riservato solo al sistema operativo. Otteniamo il vantaggio delle prestazioni del RAID con mirroring più il vantaggio di mandrini aggiuntivi per tutti i nostri dati. Otteniamo un migliore utilizzo della capacità dei dischi e prestazioni basate su tale miglior utilizzo.
Persino la tradizionale suddivisione dei file di log normalmente effettuata con i database (il famigerato approccio RAID 1 + RAID 5 + RAID 1) non è più necessaria, perché il RAID 10 mantiene le caratteristiche prestazionali ottimali su tutti i dati. Con il RAID 10 eliminiamo quasi tutti i fattori che un tempo ci inducevano a suddividere gli array.
L'unico fattore significativo, finora non menzionato, per il quale la suddivisione degli array era tradizionalmente considerata vantaggiosa è la contesa di accesso – la necessità che processi diversi accedano contemporaneamente a parti diverse del disco, causando lo spostamento della testina del disco secondo uno schema tutt'altro che ideale, riducendo le prestazioni del disco. La contesa era una questione importante alla fine degli anni '90, quando fu sviluppata la vecchia regola pratica.
Oggi la contesa dei dischi esiste ancora, ma è stata fortemente mitigata dall'uso di grandi cache RAID. Alla fine degli anni '90 le cache dei dischi erano di pochi megabyte nella migliore delle ipotesi e spesso inesistenti. Oggi 256 MB è una cache minuscola e i server medi vengono distribuiti con 1-2 GB di cache solo sulla scheda RAID. Alcuni sistemi stanno iniziando a integrare cache aggiuntive basate su unità a stato solido per aggiungere una cache secondaria oltre alla cache di memoria sul controller. Queste possono facilmente aggiungere centinaia di gigabyte di cache a velocità estremamente elevata, in grado di bufferizzare quasi qualsiasi operazione del mandrino evitando di doversi preoccupare della contesa. Quindi il problema della contesa è stato risolto in altri modi nel corso degli anni ma, come altri cambiamenti tecnologici, ci ha di fatto liberato dalle tradizionali preoccupazioni che ci imponevano di suddividere gli array.
Come la contesa degli array, un'altra ragione, molto meno comune, per suddividere gli array alla fine degli anni '90 era migliorare le prestazioni del bus di comunicazione a causa dei limiti delle tecnologie SCSI e ATA dell'epoca. Anche queste sono state eliminate con il passaggio ai meccanismi di comunicazione seriale, SAS e SATA, negli array moderni. Non siamo più limitati alla capacità di un singolo bus per ciascun array e possiamo crescere molto di più con una flessibilità di gran lunga maggiore rispetto al passato. La contesa del bus è stata praticamente eliminata.
Se vi è la necessità di separare dello spazio a scopo di protezione, come la crescita dei file di log, ciò può essere realizzato tramite il partizionamento piuttosto che tramite la suddivisione fisica dell'array. In generale è bene ridurre al minimo il partizionamento, poiché aumenta l'overhead e riduce la capacità dei dischi di ottimizzarsi automaticamente, ma vi sono casi in cui è l'approccio migliore. Tuttavia, non richiede che lo storage fisico sottostante venga suddiviso come avveniva tradizionalmente. Ancora meglio del partizionamento, quando disponibile, è la gestione dei volumi logici, che crea separazioni simili alle partizioni senza i limiti delle partizioni.
Quindi, in definitiva, la nuova regola pratica per lo storage dei server è “Un unico grande RAID 10.” Niente più RAID 5, niente più suddivisione degli array. Si tratta di affidabilità, prestazioni, facilità di gestione e moderata convenienza economica. Come tutte le regole pratiche, questa non si applica a ogni singola istanza, ma si applica in modo molto più ampio di quanto abbia mai fatto il vecchio standard. RAID 1 + RAID 5, come standard, è sempre stato un tentativo di “arrangiarsi” con qualcosa di indesiderabile e di trarre il meglio da una cattiva situazione. OBR10 non è così. Il nuovo standard è uno standard desiderato – è il modo in cui vogliamo effettivamente operare, non qualcosa con cui siamo rimasti “bloccati”.
Quando si progetta lo storage per un nuovo server, partite da OBR10 e allontanatevene solo quando non soddisfa specificamente le vostre esigenze tecnologiche. Non dovreste mai dover giustificare l'uso di OBR10, ma solo giustificare il non usarlo.
