RAID1 augmente-t-il les performances avec Linux mdadm?

26

J'ai un NAS à 2 baies bon marché avec un disque dur de 2 To. Pour être robuste contre les pannes de disque, je pense acheter un deuxième disque dur de 2 To et le mettre en RAID1 avec Linux mdadm. Le système de fichiers est ext4.

Est-ce que cela augmentera ou diminuera les performances du NAS? Qu'en est-il simplement de lire ou d'écrire les performances?

Il semble y avoir beaucoup d'opinions à ce sujet en ligne, mais aucun consensus.

Merci.

Modifier:

J'ai donc déjà trois réponses différentes: "un peu plus vite", "vous ne remarquerez pas" et "diminuera les performances si vous en avez". (Je m'intéresse principalement aux performances de lecture.) Wikipedia dit "les performances de lecture peuvent augmenter à peu près comme un multiple linéaire du nombre de copies". Laquelle est-ce?

Modifier 2:

J'ai trouvé des preuves de montage à l'appui de l'augmentation des performances de lecture de RAID1, y compris la page de manuel MD:

Les modifications sont écrites sur tous les appareils en parallèle. Les données sont lues à partir de n'importe quel appareil. Le pilote tente de distribuer les demandes de lecture sur tous les appareils pour maximiser les performances.

J'ai également découvert le RAID10 de MD avec --layout=f2, qui fournit une redondance de RAID1 avec les performances de lecture de RAID0, et peut être utilisé avec seulement deux disques. Les performances d'écriture sont cependant réduites, car une écriture séquentielle implique que les deux lecteurs effectuent des allers-retours entre des parties distantes du lecteur. man mdpour plus de détails.

Jesse
la source
2
écrit; un peu plus lent. lit; un peu plus vite. D'après ce que je comprends, la différence d'écriture est presque nulle et la lecture est assez perceptible.
Sirex
Juste ce que dit sirex .. vous ne remarquerez pas la différence de performance à l'œil nu .. Ne vous attendez pas à le doubler ou même à la moitié.
Piotr Kula
1
Une partie me manque: à quelle vitesse l'accès au NAS est-il rapide? Si un disque remplit déjà la connexion réseau, une vitesse interne plus importante ne vous sera pas très utile.
Hennes

Réponses:

39

Oui, l' implémentation Linux de RAID1 accélère les opérations de lecture de disque deux fois plus longtemps que deux opérations de lecture de disque distinctes sont effectuées à la fois . Cela signifie que la lecture d'un fichier de 10 Go ne prendra pas plus rapidement sur RAID1 que sur un seul disque, mais la lecture de deux fichiers distincts de 10 Go * prendra plus rapidement.

Pour le démontrer, lisez simplement quelques données avec dd. Avant d'effectuer quoi que ce soit, videz le cache de lecture du disque avec sync && echo 3 > /proc/sys/vm/drop_caches. Sinon hdparm, réclamera des lectures super rapides.

Un seul fichier:

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

Deux fichiers:

# 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 lecture de 10 Go de données a pris 65 secondes tandis que la lecture de 10 Go + 10 Go = 20 Go de données a pris 68,7 secondes au total, ce qui signifie que les lectures sur plusieurs disques bénéficient grandement de RAID1 sur Linux. skip=$COUNTune partie est très importante. Le deuxième processus lit 10 Go de données à partir du décalage de 10 Go.

La réponse de Jared et les commentaires de ssh se référant à http://www.unicom.com/node/459 sont faux. La référence à partir de là prouve que les lectures de disque ne bénéficient pas de RAID1. Cependant, le test a été effectué avec l'outil d'analyse comparative bonnie ++ qui n'effectue pas deux lectures distinctes à la fois. L'auteur déclare explicitement que bonnie ++ n'est pas utilisable pour l'analyse comparative des matrices RAID ( reportez-vous au fichier Lisez-moi ).

Nowaker
la source
5

Oui, vous obtiendrez une amélioration des performances de lecture + la redondance. Vous pouvez facilement imaginer cela car vous pouvez lire les parties des fichiers en même temps à partir de deux disques durs différents car les fichiers se trouvent sur les deux disques durs.

Donc, théoriquement, si le contrôleur RAID fait bien son travail, vous pourriez gagner une accélération de O (n).

inf
la source
5
mdadm est un RAID logiciel donc il n'y a en fait pas de "contrôleur RAID" mais il fournira un bon coup de pouce en lecture lorsque vous effectuez des lectures multieplies en parallèle, pas tellement dans ce cas, je suppose, car une boîte NAS est rarement concurremment accessible. Voir ici pour plus de détails: freebsdwiki.net/index.php/…
Shadok
1
En pratique, les performances diminuent pour la lecture à partir du RAID logiciel Linux Software. Voir unicom.com/node/459 (dans ce test, la vitesse de lecture est passée de 77 Mo / s à 74 Mo / s).
ssh
2
@ssh unicom.com/node/459 est totalement faux. bonnie ++ n'est pas utilisable pour tester les miroirs RAID, ce qui est explicitement indiqué dans le fichier Lisez-moi. Voir ma réponse pour plus de détails. superuser.com/a/757264/68978
Nowaker
4
  • man 4 mddéclare: "… Notez que l'équilibrage de lecture effectué par le pilote ne fait pas que le profil de performance RAID1 soit le même que pour RAID0 ; un seul flux d'entrée ne sera pas accéléré (par exemple un seul dd), mais plusieurs flux séquentiels ou un aléatoire La charge de travail utilisera plusieurs broches. En théorie , le fait d'avoir un RAID1 à N disques permettra à N threads séquentiels de lire à partir de tous les disques. … "

  • Pour couronner le tout - en pratique , sur la base de la iostatsortie observée sur une configuration RAID logicielle typique de 2 disques durs, il n'y a pas d'équilibrage . En fait, il semble que mdadml'option --write-mostlysoit toujours activée .

poige
la source
3

Non, vous ne bénéficierez d'aucun avantage lors de la lecture à partir de mdadm RAID1. Je me posais cette question il y a quelque temps.

dstatmontre l'utilisation des disques, bwm-ngaide également particulièrement dans ce cas, car il peut montrer l'utilisation en lecture / écriture sur des membres RAID mdadm distincts. Appuyez simplement sur n(suivant) plusieurs fois, il passera des statistiques d'interface aux statistiques de disque. Passez ensuite aux valeurs maximales avec tpour voir le nombre maximal de lectures / écritures sur chaque disque. Vous verrez ce qui suit:

L'écriture sur le volume RAID1 bwm-ng affiche 2 écritures, écrivant sur 2 disques en même temps. La lecture à partir du volume RAID1 bwm-ng montre la lecture à partir d'un seul lecteur (membre de la baie).

TooMeeK
la source