l'aggiunta di un mucchio di unità a un raid 0 aumenta le prestazioni?


10

l'aggiunta di un mucchio di unità a un raid 0 aumenta le prestazioni? so che due unità in un raid a strisce saranno in genere più veloci di una singola unità ma noterò una differenza di prestazioni tra diciamo, 2 unità in un raid a strisce e 8? c'è un limite generale al numero di unità nel raid prima che non si ottenga più alcun vantaggio?

una domanda simile è stata posta qui

L'aggiunta di più unità a un array RAID 10 aumenta le prestazioni?

ma sto davvero chiedendo se l'aggiunta di molte unità a un raid 0 ha dei miglioramenti rispetto all'aggiunta di dire 2 o 4. le prestazioni continuano ad aumentare?

Risposte:


11

In teoria sì, più unità in un raid0 porterebbero a prestazioni più elevate perché il carico è condiviso su più unità. Tuttavia, in pratica si sarebbe limitati dalla larghezza di banda del controller raid, dalle prestazioni della CPU e della memoria e simili. L'aumento delle prestazioni non sarebbe lineare, ovvero 4 dischi non è esattamente due volte più veloce di 2 dischi.

In qualsiasi sistema ragionevolmente moderno con un controller raid, o anche usando un raid software con mdadm di linux, usare 8 unità sarà più veloce dell'uso di 2 e non dovresti essere trattenuto dal resto delle prestazioni del sistema. La CPU, il raid e / o il controller del disco, la memoria, tutto dovrebbe essere in grado di gestirlo. Potresti vedere un maggiore utilizzo delle risorse di sistema più unità aggiungi. Soprattutto se si utilizza il controller SATA integrato in una combinazione softraid. Ma nulla che ostacolerebbe davvero l'usabilità complessiva. Se usi linux potresti voler usare un kernel che è stato configurato senza "preempt" in modo che le attività orientate al server ottengano la preferenza sulla reattività dell'utente.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Ovviamente più unità aggiungi, maggiore è la probabilità che una di esse fallisca e l'intero raid venga distrutto. Mi aspetto che un raid0 di 8 unità non duri più di un anno o due, se sei fortunato. Un raid0 di 16 unità richiederebbe problemi e quindi prenderei in considerazione un raid10, sarebbe comunque abbastanza veloce e hai meno di cui preoccuparti.

Per quanto riguarda quante unità massimizzerebbero le risorse di un sistema, non lo saprei se non avessi specifiche di sistema dettagliate. Penso che saresti limitato di più dal tasso di errore, se vai oltre 16 dischi (preferisco non pensarci).

Naturalmente useresti raid0 solo per i dati che possono essere persi in qualsiasi momento senza problemi. Funzionerebbe alla grande per cose come un server di compilazione o spazio di lavoro per grandi calcoli scientifici. In effetti quegli scenari sono quelli per cui ho spesso usato un raid0 ed è un ottimo modo per spremere un po 'più di vita da un mucchio di dischi più vecchi, di bassa capacità e poco costosi che altrimenti avrebbero raccolto polvere. Puoi anche mescolare le dimensioni, almeno con mdadm.

Se si utilizza mdadm può valere la pena considerare di utilizzare solo un raid10 poiché in alcune configurazioni può avvicinarsi alle prestazioni di un raid0, ovvero prestazioni di lettura di un raid0 e prestazioni di scrittura già migliorate rispetto ad altri livelli di raid (tranne raid0). Otterresti una ridondanza migliore rispetto ad altri livelli di incursione, con solo una leggera penalità di velocità rispetto a un'incursione0. Sarebbe il migliore dei due mondi, non lo trovi spesso.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 fornisce un driver RAID generale che nella sua configurazione "quasi" imposta automaticamente un RAID 1 standard con due unità e un RAID 1 + 0 standard con quattro unità; tuttavia, può includere qualsiasi numero di unità, compresi i numeri dispari. Con il suo layout "lontano", MD RAID 10 può eseguire sia striping che mirroring, anche con solo due unità nel layout f2; questo esegue il mirroring con letture a strisce, fornendo le prestazioni di lettura di RAID 0. Il RAID 1 normale, come fornito dal software RAID di Linux, non esegue la striping delle letture, ma può eseguire letture in parallelo.

Come suggerito nei commenti, la miscelazione delle dimensioni con mdadm non aumenterà la velocità se si utilizza tutto lo spazio su disco anziché consentire al disco più piccolo di definire le dimensioni dell'array.

Anche il tempo di ricerca non migliorerà in un raid0 e può persino diventare un po 'più lento. Per un raid0 basato su SSD il tempo di ricerca sarebbe così piccolo (tra 0,08 e 0,16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ) non importerebbe molto che mi aspetto.


Se si desidera mescolare dimensioni, non è possibile applicare RAID0, almeno per utilizzare tutto lo spazio di cui dispongono i dischi. Devi usare JBOD, che non aumenta le prestazioni.
Tero Kilkanen,

Puoi mescolare le dimensioni usando mdadm, è molto flessibile, mdadm ti consente persino di configurare un raid a 3 dischi10. Non mi aspetto che tu possa mescolare le dimensioni nei controller raid, quelli sono meno flessibili, ma più veloci.
aseq,

1
Ho controllato questo, e se si desidera RAID0, il dispositivo più piccolo dell'array definisce le dimensioni dell'array completo. Cioè, se si dispone di unità da 100 GB, 200 GB e 300 GB, si otterrà un array RAID0 da 300 GB e 100 GB e 200 GB di spazio libero da utilizzare per altri scopi. In modalità lineare, ottieni la capacità completa di tutti i dispositivi, ma non le prestazioni parallele.
Tero Kilkanen,

1
Sembra proprio di si.
aseq,

2
Con i media rotazionali, non c'è anche un problema tra tempo di ricerca e tempo di trasferimento? L'aggiunta di più dischi distribuisce la quantità da leggere / scrivere su più piatti (ognuno deve fare meno == più velocemente) ma tutti devono ancora eseguire un'operazione di ricerca (non ridotta aggiungendo più unità). Quindi, a seconda del tipo di operazioni che stai eseguendo (es. Perdita di letture piccole rispetto a poche letture di grandi dimensioni), aumentare la velocità di trasferimento (aggiungendo più unità) potrebbe fare una differenza piccola o grande.
Molomby,

1

Dipende dal carico di lavoro, ma IMHO sì, l'aggiunta di 2 dischi aggiuntivi all'array di 2 dischi esistente dovrebbe fornire prestazioni complessive migliori.

Devi capire dove sono i colli di bottiglia:

  • CPU: quanto flusso di dati può gestire la CPU,
  • bus / controller: quanti dati può trasportare,
  • SSD / HDD - quanti dati può dare / prendere.

Supponiamo che esista un RAID software Linux, quindi l'aggiunta di due dischi aggiuntivi POTREBBE comportare:

  • ~ tempo di accesso due volte più breve a un blocco di dati sufficientemente grande, con conseguente;
  • ~ doppio IOPS,
  • ~ doppio throughput, supponendo che il controller disponga di bus sufficiente e che la CPU sia in grado di gestire il traffico.

* ~ questo non è mai un aumento di due volte nei seguenti fattori, sempre inferiore del 10-20%. Sembra più o meno lineare. Per favore, non trattarlo come una risposta autorevole, non ho fatto studi a riguardo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.