Raid performance su Linux

Questo testo si basa su ricerche in rete e conoscenza generale degli argomenti correlati, come molta documentazione, ormai, si basa su quanto detto o sentito da altri e non su benchmark o esaustive esperienze dirette.

Nonostante questo riteniamo utile fornire informazioni di massima su come scegliere e dimensionare un sistema raid (software) su Linux.

Definizione degli obiettivi
Come sempre, non esiste una soluzione definitiva ad una necessità informatica: dipende da cosa si vuole ottenere, dalle disponibilità di tempo, risorse e conoscenze, dal carico, dimensionamento e la natura dei sistemi su cui si intende configurare un software raid:
- Che funzioni avrà il nostro sistema?
A seconda delle sue funzioni cambiano parametri quali il tipo di accesso al disco, le dimensioni medie dei file, la quantità degli accessi, il carico generale di I/O e sulla CPU.
In genere un server web avrà frequente accesso a vari (alcuni più spesso di altri) piccoli file, con un carico di I/O relativamente basso e bassa occupazione di disco (quantomeno per i dati, log esclusi).
Un database gestirà file di grosse dimensioni, generalmente in posizioni fisse, con carichi di I/O maggiori.
Un file o print server avrà accessi frequenti a vari file di dimensioni variabili, con alti carici di I/O e grosse quantità di dati da avere in storage.
- Quali compromessi fra ridondanza dei dati e performance possiamo valutare?
La natura dei dati stessi e la necessità di mantenerne l'integrità e la disponibilità influisce sulla scelta di tipo di Raid. Il mirroring è la forma che garantisce probabilmente la migliore protezione dei dati, a scapito di un maggiore utilizzo di spazio su disco e di tempi di scrittura più lenti.

Scelta e disposizione degli hard disk
In termini di performance è fondamentale disporre gli hard disk che fanno parte di un raid array su bus diversi, in modo da ottimizzare il più possibile il throughput dei dati e riduerre i colli di bottiglia.
Su canali (E)IDE, in particolare, si riscontrano notevoli rallentamenti nell'accesso al disco se entrambi gli hard disk appartengono alla stesso canale. Se si fa mirroring, per esempio, è meglio abbinare un primary master (hda) o slave ad un secondary master (hdc) o slave (hdd), ed è assolutamente da evitare un sistema raid 1 composto, ad esempio, da primary master e un primary slave.
Su SCSI il problema è minore, ma se si hanno a disposizione due diversi canali, è meglio usarli alternati per sfruttare al meglio il thoughput del bus.

Benchmarking utility
Chi ha necessità di eseguire test di performance sui dischi ha a disposizione alcuni strumenti liberamente utilizzabili:

Iozone - http://www.iozone.org/
E' un tool che produce grafici diversi, in stile MS Office, sulla base dei risultati di una varietà di test di accesso al disco. Disponibile per vari sistemi operativi (tra cui Linux e Windows).

Bonnie ++ - http://www.coker.com.au/bonnie++/
E' una suite che comprende test di lettura e scrittura di dati su disco, simula diverse condizioni, riconducibile alle attività di server comuni. Serve per ogni tipo di tuning delle performance su disco e risulta particolarmente utile per valutare diverse soluzioni di raid.
Deriva da Bonnie, a suo tempo piuttosto usato e ancora valido.

Tiobench - http://tiobench.sourceforge.net/
Dedicata espressamente ad analisi di sistemi raid, produce statistiche interessanti e dettagliate.

PostMark -http://www.netapp.com/tech_library/3022.html
Tool di disk benchmarking della NetWork Appliance. Presenta una propria command line da cui è possibile configurare, impostare e visualizzare i risultati dei test.

Un elenco completo di tool per il benchmark del disco per diverse piattaforme è disponibile su http://www.acnc.com/benchmarks.html


Linear mode - Append
Modalità: I dati vengono scritti sul primo disco fino a quando non è completo, poi sul secondo ecc.
Dischi necessari: 2 o più
Prestazioni Lettura: Uguale a quella di un sistema senza raid. Può migliorare nei rari casi in cui si scrive contemporaneamente su diversi dischi fisici.
Prestazioni Scrittura:
Ridondanza: Nessuna
Recupero dati in caso di guasto: Difficile. Ma il fatto di avere i dati scritti sequenzialmente potrebbe permettere il recupero parziale dei dati scritti sul disco integro.
Chunk size generalmente consigliato: 32KB
Spare Disks: Non supportati.

Raid 0 - Stripe mode
Modalità: I dati vengono letti e scritti contemporaneamente, in parallelo, sui diversi dischi fisici.
Dischi necessari: 2 o più
Prestazioni Lettura: Decisamente migliori, se i BUS non rappresentano un collo di bottiglia, si avvicinano a N*P Mb/sec (Numero di HD * Prestazioni HD).
Prestazioni Scrittura: Desisamente migliori. Come per la lettura, tutte le operazioni di scrittura vengono svolte in parallelo sui diversi dischi fissi.
Ridondanza: Nessuna
Recupero dati in caso di guasto: Praticamente impossibile: ogni file fisicamente viene distribuito su dischi diversi: se un disco si rompe, ogni file risulta danneggiato.
Chunk size generalmente consigliato: 32KB
Spare Disks: Non supportati.

Raid 1 - Mirroring
Modalità: I dati vengono letti e scritti contempraneamente, in parallelo, sui diversi dischi fisici.
Dischi necessari: 2 o più, meglio se di uguale geometria.
Prestazioni Lettura: Migliorate. Vengono fatte in parallelo con meccanismi che minimizzano i tempi di seek di un file sul disco.
Prestazioni Scrittura: Peggiorate. Tutte le operazioni di scrittura vengono fatte due volte.
Ridondanza: Completa. Tutti i dati sono scritti due volte su due diversi dischi. Se esistono dischi spare questi vengono automaticamente ricreati. Se si ha a disposizione una copia del mirror, questa può essere usata autonomamente.
Chunk size generalmente consigliato: 32KB
Spare Disks: Uno o più.

Raid 4 -
Modalità: I dati vengono scritti, in modalità di striping su più dischi e viene mantenuto un disco autonomo per le info di parità.
Dischi necessari: 3 o più
Prestazioni Lettura: Migliorate.
Prestazioni Scrittura: Rallentate dalla necessità di gestire le parity info su disco autonomo.
Ridondanza: Se un disco si rompe, le informazioni di parità permettono la ricostruzione dei suoi dati.
Chunk size generalmente consigliato: 32KB
Spare Disks: Uno o più.

Raid 5 -
Modalità: Sia i dati che le informazioni di parità vengono scritti in modalità di striping su più dischi.
Dischi necessari: 3 o più
Prestazioni Lettura: Migliorate. Simili a Raid 0.
Prestazioni Scrittura: Paragonabili a quelle di Raid 1.
Ridondanza: Se un disco si rompe, le informazioni di parità permettono la ricostruzione dei suoi dati.
Chunk size generalmente consigliato: 128KB
Spare Disks: Uno o più.

Privacy Policy