Capire RAID: come le prestazioni scalano da un disco a otto

61

Ingrandisci / Ecco: 96 TB di spazio di archiviazione impilati su un banco di lavoro in una spirale ingombrante alta otto. Non provate questo a casa, ragazzi; la fotografia e l’amministrazione del sistema non vanno d’accordo.

Jim Salter

Fondamenti di archiviazione

Visualizza più storie

Una delle prime grandi sfide che gli amministratori di sistema neofiti e gli appassionati di accumulo di dati devono affrontare è come archiviare più di un singolo disco di dati. La risposta breve e tradizionale qui è RAID (un array ridondante di dischi economici), ma anche in questo caso ci sono molte diverse topologie RAID tra cui scegliere.

La maggior parte delle persone che implementano RAID si aspetta di ottenere prestazioni extra, oltre a spazio di archiviazione aggiuntivo, da tutti quei dischi. Queste aspettative non sono sempre radicate molto saldamente nel mondo reale, sfortunatamente. Ma dal momento che siamo tutti a casa con il tempo per alcuni progetti tecnici, speriamo di fare luce su come pianificare le prestazioni di archiviazione, non solo il numero totale di gibibyte (GB) che puoi stipare in un array.

Una breve nota qui: sebbene i lettori saranno interessati ai numeri grezzi, raccomandiamo una maggiore attenzione su come si relazionano tra loro. Tutti i nostri grafici mettono in relazione le prestazioni degli array RAID di dimensioni da due a otto dischi con le prestazioni di un singolo disco. Se modifichi il modello del disco, i tuoi numeri grezzi cambieranno di conseguenza, ma la relazione con le prestazioni di un singolo disco non cambierà per la maggior parte.

Attrezzatura come testata

  • Sì, lavoro in un seminterrato in gran parte incompiuto. Almeno ho le finestre sul cortile. Non @ me.

    Jim Salter

  • Questo è lo Storage Hot Rod dell’estate 2019, con tutti e dodici gli alloggiamenti carichi e caldi. I primi quattro sono roba mia; gli ultimi otto sono i dispositivi in ​​prova oggi. (La macchina sopra è banshee, la mia workstation Ryzen 7 3700X, in uno chassis identico a 12 alloggiamenti.)

    Jim Salter

Per questo test abbiamo utilizzato gli otto alloggiamenti vuoti nel nostro Storage Hot Rod dell’estate 2019. Ha una gran quantità di RAM e una potenza della CPU più che sufficiente per masticare questi test di archiviazione senza sudare.

Lo Storage Hot Rod ha anche un HBA (Host Bus Adapter) LSI-9300-8i dedicato che non viene utilizzato per nient’altro che per i dischi in prova. I primi quattro alloggiamenti dello chassis hanno i nostri dati di backup su di essi, ma sono rimasti inattivi durante tutti i test qui e sono collegati al controller SATA della scheda madre, completamente isolato dai nostri array di test.

Come abbiamo testato

Come sempre, abbiamo utilizzato fio per eseguire tutti i nostri test di archiviazione. Li abbiamo eseguiti localmente su Hot Rod e abbiamo utilizzato tre tipi di test di base ad accesso casuale: lettura, scrittura e scrittura sincronizzata. Ciascuno dei test è stato eseguito con blocksize sia 4K che 1M, e ho eseguito i test sia con un singolo processo e iodepth=1, sia con otto processi con iodepth=8.

Per tutti i test, stiamo usando Linux kernel RAID, come implementato nella versione 4.15 del kernel Linux, insieme al filesystem ext4. Abbiamo utilizzato il parametro –assume-clean durante la creazione dei nostri array RAID per evitare di sovrascrivere ogni blocco dell’array e abbiamo utilizzato -E lazy_itable_init=0,lazy_journal_init=0 durante la creazione del filesystem ext4 per evitare di contaminare i nostri test con il background in corso scrive inizializzando il filesystem in background.

Kernel RAID vs hardware RAID

Non abbiamo test fianco a fianco con un adattatore RAID hardware qui, quindi dovrai crederci sulla parola quando ti diciamo che il RAID hardware non è magico. Tuttavia, nel corso degli anni, abbiamo testato privatamente il RAID del kernel Linux rispetto alle popolari schede RAID hardware professionali dedicate a otto porte nel corso degli anni.

Per la maggior parte, il RAID del kernel supera in modo significativo il RAID hardware. Ciò è dovuto in parte allo sviluppo e alla manutenzione molto più attivi nel kernel Linux di quanto non troverai nel firmware per le schede. Vale anche la pena notare che un tipico server moderno ha una CPU tremendamente più veloce e più RAM disponibile rispetto a un controller RAID hardware.

Annuncio

L’unica eccezione a questa regola è che alcuni controller RAID hardware hanno una cache con batteria tampone. Queste schede inviano richieste di scrittura di sincronizzazione alla cache integrata con batteria tampone anziché al disco e mentono al sistema operativo al riguardo. Le scritture sincrone memorizzate nella cache si aggregano quindi escono dalla cache del controller al disco. Funziona e funziona proprio come le scritture asincrone che vengono aggregate e salvate dal sistema operativo stesso.

Le scritture asincrone superano di gran lunga le scritture sincrone e quindi questo rappresenta un aumento significativo delle prestazioni di un tale controller. La scheda si basa sulla batteria per garantire la sopravvivenza dei dati memorizzati nella cache in caso di interruzioni di corrente. Questo è, per la maggior parte, come mettere l’intero server su un UPS e usare libeatmydata dal nome divertente ma appropriato, che fa sì che il sistema operativo menti a se stesso sul risultato delle chiamate fsync.

Una parola per il saggio: se la batteria si guasta in un controller RAID e il controller non la rileva, il danneggiamento può e si verificherà dopo interruzioni di corrente, poiché la scheda sta ancora mentendo al sistema operativo e alle applicazioni quando richiedono garanzie che i dati siano stato salvato in modo sicuro su disco. Se il controller rileva in modo proattivo il guasto della batteria, disabilita semplicemente completamente l’aggregazione di scrittura su scheda, il che riporta le prestazioni di scrittura di sincronizzazione al livello reale, molto più basso.

In base alla nostra esperienza, è molto probabile che gli amministratori non si accorgano quando le batterie della cache di un controller hardware si guastano. Frequentemente, questi amministratori continueranno a far funzionare i loro sistemi a livelli di prestazioni e affidabilità ridotti per anni dopo.

Un ultimo avvertimento sui controller RAID hardware: è difficile prevedere se un array RAID hardware creato in un controller verrà importato correttamente in un modello diverso di controller in seguito. Anche se il modello di controller rimane lo stesso, le interfacce utente delle applicazioni di gestione o le routine BIOS/UEFI utilizzate per importare gli array sono spesso scritte in un linguaggio incredibilmente poco chiaro.

Troviamo che con l’hardware RAID, è spesso difficile dire se stai nuking il tuo array o lo stai importando in modo sicuro. Quindi, in caso di guasto e sostituzione di un controller, potresti finire per sudare proiettili, YOLOing e sperare. Avvertimento imperativo.