Per l'HDD , gli IOPS sono generalmente dominati dal tempo di accesso al disco, che è la somma della latenza di ricerca + ritardo di rotazione + ritardo di trasferimento. Poiché queste variabili dipendono fortemente dai modelli di accesso e hanno interazioni non ovvie con il layout RAID specifico (ovvero: dimensione della striscia) e controller (cioè: sintonizzazione in anticipo), qualsiasi semplice risposta SARÀ SBAGLIATA.
Tuttavia, proviamo ad avere una figura da baseball. A una prima approssimazione, gli IOPS garantiti da un array n-disk dovrebbero essere n-volte gli IOPS di un singolo disco. Tuttavia, sia il livello RAID che il modello di accesso ai dati , spostando il peso tra latenza di ricerca / rotazione / trasferimento, cambiano radicalmente questa approssimazione del primo ordine.
Facciamo alcuni esempi, ipotizzando 100 IOPS per singolo disco (un valore tipico per i dischi a 7200 RPM) e array a 4 dischi (eccetto RAID1, spesso limitato solo a 2 vie):
- un singolo disco è 100 IOPS, sia in lettura che in scrittura (nota: a causa della scrittura a coalescenza, la scrittura di IOPS è generalmente superiore a quella di IOPS di lettura, ma consente di ignorarlo per semplicità)
- RAID0 (striping a 4 vie) ha fino a 4x gli IOPS casuali e fino a 4x gli IOPS sequenziali. La parola chiave qui è "fino a": a causa della natura dello striping e dell'allineamento dei dati, se i settori a accesso casuale risiedono prevalentemente su un singolo disco, si finirà con IOPS molto più bassi.
- RAID1 (mirroring a 2 vie) è più complesso da profilare. Poiché diversi dischi possono cercare dati diversi, ha fino a 2 volte lo IOPS di lettura casuale ma lo stesso IOPS di scrittura casuale 1x (o leggermente inferiore, a causa dell'overhead). Se tutte le cose si allineano bene (cioè: letture sequenziali grandi ma non al 100%, un controller RAID che usa blocchi / concetto di blocchi / strisce anche in modalità mirroring, read-ahead funzionante correttamente, ecc.) A volte le letture sequenziali possono essere fino al doppio del singolo valore del disco, mentre le scritture sequenziali rimangono limitate a 1x il singolo disco (ovvero: nessuna velocità)
- RAID10 (mirroring a 4 vie) è, per quanto riguarda le prestazioni, a metà strada tra lo striping RAID0 a 4 vie e il mirroring a 2 vie. Ha fino a 4 volte gli IOPS in lettura casuale e fino a 2 volte gli IOPS in scrittura casuale. Per i trasferimenti sequenziali, si applica l'avvertimento RAID1: a volte ha fino a 4x gli IOPS in lettura sequenziale, ma solo il doppio degli IOPS in scrittura sequenziale. Si noti che alcune implementazioni RAID10 (ovvero Linux MDRAID) offrono layout diversi per array RAID10, con profilo di prestazioni diverso .
- RAID5 (parità a strisce) ha fino a 4 volte gli IOPS di lettura casuale, mentre gli IOPS di scrittura casuale, a seconda di una serie di fattori come la dimensione della scrittura rispetto alla dimensione dello striping, la disponibilità di una cache di striping di grandi dimensioni, l'algoritmo di ricostruzione dello stripe stesso (leggi-ricostruisci-scrivi vs leggi-modifica-scrivi), ecc., può essere ovunque tra 0,5x (o inferiore) e 2x gli IOPS di un singolo disco. I carichi di lavoro sequenziali sono più prevedibili, con 3 volte lo IOPS di un singolo disco (sia in lettura che in scrittura)
- RAID6 (doppia parità con striping) si comporta in modo molto simile al fratello RAID5, ma con prestazioni di scrittura inferiori. Ha fino a 4x gli IOPS di lettura casuale di un singolo disco, ma le sue prestazioni di scrittura casuali sono persino inferiori a RAID5, con gli stessi valori assoluti (0,5x - 2x) ma con una media di parole reali inferiore. Letture e scritture sequenziali sono limitate a 2 volte l'IOPS di un singolo disco.
Lasciami ripetere: quanto sopra sono approssimazioni semplici e quasi rotte. Ad ogni modo, se vuoi giocare con un calcolatore IOPS RAID (gravemente incompleto), dai un'occhiata qui .
Ora torna al mondo reale. Sui carichi di lavoro reali, RAID10 è spesso la scelta più rapida e preferita , mantenendo alte prestazioni anche di fronte a un array degradato . RAID5 e RAID6 non devono essere utilizzati su carichi di lavoro sensibili alle prestazioni, a meno che non siano di natura centrata sulla lettura o sequenziale. Vale la pena notare che i controller RAID seri hanno una grande cache di writeback protetta da perdita di potenza principalmente per superare (con una pesante memorizzazione nella cache) le basse prestazioni casuali di scrittura RAID5 / 6. Non usare mai RAID5 / 6 con controller RAID senza cache , a meno che non ti interessi davvero alla velocità dell'array.
Gli SSD sono bestie diverse, pensato. Poiché hanno un tempo di accesso medio molto più basso dal punto di vista tecnico, i RAID basati su parità comportano un sovraccarico di prestazioni molto inferiore e sono un'opzione molto più praticabile rispetto agli HDD. Tuttavia, in un piccolo carico di lavoro incentrato sulla scrittura casuale, utilizzerei comunque una configurazione RAID10.