RAID1 aumenta le prestazioni con Linux mdadm?


26

Ho un NAS a 2 bay economico con un HDD da 2 TB. Per essere efficace contro i guasti del disco, sto pensando di acquistare un secondo HDD da 2 TB e metterlo in RAID1 con Linux mdadm. Il file system è ext4.

Questo aumenterà o diminuirà le prestazioni del NAS? Che ne dici di leggere o scrivere performance?

Sembra che ci siano molte opinioni su questo online ma nessun consenso.

Grazie.

Modificare:

Quindi già ho tre risposte diverse: "un po 'più veloce", "non noterai" e "diminuirà le prestazioni se non altro". (Sono interessato principalmente alla performance di lettura.) Wikipedia afferma che "la performance di lettura può aumentare all'incirca come un multiplo lineare del numero di copie". Qual é?

Modifica 2:

Ho trovato prove di supporto a supporto di RAID1 che aumentano le prestazioni di lettura, inclusa la manpage MD:

Le modifiche vengono scritte su tutti i dispositivi in ​​parallelo. I dati vengono letti da qualsiasi dispositivo. Il driver tenta di distribuire le richieste di lettura su tutti i dispositivi per massimizzare le prestazioni.

Ho anche scoperto MD RAID10 con --layout=f2, che fornisce ridondanza di RAID1 con le prestazioni di lettura di RAID0, e può essere utilizzato con solo due unità. Le prestazioni di scrittura sono tuttavia ridotte, poiché una scrittura sequenziale coinvolge entrambe le unità che cercano avanti e indietro tra parti distanti dell'unità. man mdper dettagli.


2
scrive; un po 'più lento. legge; un po 'più veloce. Da quanto ho capito, la differenza di scrittura è quasi zero, e la lettura è piuttosto evidente.
Sirex,

Proprio quello che dice Sirex ... non noterai la differenza di prestazione ad occhio nudo .. Non aspettarti di raddoppiarlo o addirittura dimezzarlo.
Piotr Kula,


1
Mi manca una parte: quanto è veloce l'accesso al NAS. Se un disco riempie già la connessione di rete, una maggiore velocità interna non sarà di grande aiuto.
Hennes,

Risposte:


39

Sì, l' implementazione Linux di RAID1 accelera le operazioni di lettura del disco due volte se vengono eseguite due operazioni di lettura del disco separate alla volta . Ciò significa che la lettura di un file da 10 GB non richiederà più tempo su RAID1 rispetto a un singolo disco, ma la lettura di due distinti file da 10 GB * richiederà più tempo.

Per dimostrarlo, basta leggere alcuni dati con dd. Prima di eseguire qualsiasi operazione, svuotare la cache di lettura del disco con sync && echo 3 > /proc/sys/vm/drop_caches. Altrimenti hdparmreclamerà letture super veloci.

File singolo:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Due file:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

La lettura di 10 GB di dati ha richiesto 65 secondi, mentre la lettura di 10 GB + 10 GB = 20 GB di dati ha richiesto 68,7 secondi in totale, il che significa che le letture di più dischi traggono grande vantaggio da RAID1 su Linux. skip=$COUNTla parte è molto importante. Il secondo processo legge 10 GB di dati dall'offset di 10 GB.

La risposta di Jared e i commenti di ssh che si riferiscono a http://www.unicom.com/node/459 sono errati. Il benchmark da lì dimostra che le letture del disco non beneficiano di RAID1. Tuttavia, il test è stato eseguito con lo strumento di benchmarking bonnie ++ che non esegue due letture separate contemporaneamente. L'autore afferma esplicitamente che bonnie ++ non è utilizzabile per il benchmark di array RAID ( consultare il file Leggimi ).


5

Sì, otterrai un aumento delle prestazioni di lettura + la ridondanza. Potete facilmente immaginare che, mentre leggete le parti dei file contemporaneamente da due diversi HDD, poiché i file si trovano su entrambi gli HDD.

Quindi, in teoria, se il controller RAID fa bene il suo lavoro, è possibile ottenere una velocità di O (n).


5
mdadm è un software RAID, quindi in realtà non esiste un "controller RAID", ma fornirà una buona spinta alla lettura quando si eseguono letture multplie in parallelo, non tanto in questo caso suppongo che raramente si accede in modo coincidente a una scatola NAS. Vedi qui per i dettagli: freebsdwiki.net/index.php/…
Shadok

1
In pratica le prestazioni diminuiscono per la lettura dal raid di MD Software Linux. Vedere unicom.com/node/459 (in quel test la velocità di lettura è diminuita da 77 MB / sa 74 MB / s).
SS

2
@ssh unicom.com/node/459 è totalmente sbagliato. bonnie ++ non è utilizzabile per testare i mirror RAID, che è esplicitamente dichiarato nel readme. Vedi la mia risposta per maggiori dettagli. superuser.com/a/757264/68978
Nowaker,

4
  • man 4 mdafferma: "... Notare che il bilanciamento della lettura eseguito dal driver non rende il profilo delle prestazioni RAID1 uguale a quello del RAID0 ; un singolo flusso di input non sarà accelerato (ad esempio un singolo dd), ma più flussi sequenziali o un casuale il carico di lavoro utilizzerà più di un mandrino. In teoria , avere un RAID1 N-disk permetterà a N thread sequenziali di leggere da tutti i dischi ... "

  • Per finire, in pratica , in base iostatall'output osservato su una tipica configurazione RAID del software 2 HDD, non c'è nulla di bilanciamento . In effetti sembra che mdadml'opzione --write-mostlysia sempre attiva.


3

No, non riceverai alcun vantaggio durante la lettura da mdadm RAID1. Me lo stavo chiedendo qualche tempo fa.

dstatmostra l'utilizzo dei dischi, inoltre bwm-ngè di grande aiuto soprattutto in questo caso, poiché può mostrare l'utilizzo in lettura / scrittura su membri RAID mdadm separati. Basta premere n(avanti) alcune volte, passerà dalle statistiche dell'interfaccia alle statistiche del disco. Quindi passare ai valori massimi con tper visualizzare le letture / scritture massime da ciascun disco. Vedrai quanto segue:

Scrivere sul volume RAID1 bwm-ng mostra 2 x scritture, scrivendo su 2 dischi contemporaneamente. La lettura dal volume RAID1 bwm-ng mostra la lettura da una singola unità (membro dell'array).

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.