Pourquoi RAID1 resynchronise-t-il si longtemps?

1

J'ai créé un tableau RAID1 de deux partitions vides identiques.

Maintenant, il dit:

$ tail -f /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[1] sdb1[0]
      3906885440 blocks super 1.2 [2/2] [UU]
      [>....................]  resync =  1.6% (66113792/3906885440) finish=3821.3min speed=16750K/sec

Donc, il prévoit de synchroniser pendant 3 jours. Est-ce normal? Que fait-il réellement? Calculer la masse de protons avec la chromodynamique quantique? Ne voit-il pas que les lecteurs sont identiques?

MISE À JOUR

Il a été proposé ci-dessous que, lors de la synchronisation, RAID1 ne fait que copier aveuglément une partition sur une autre. Si cela est vrai, pourquoi n'est-il pas possible de le dire: relaxez-vous, tout est déjà identique, indiquez simplement que les données sont déjà copiées.

Comme dans le formatage rapide.

C'est possible?

Dims
la source
1
BTW, êtes-vous sûr que vos partitions sont correctement alignées? Si ce sont des disques 4k et que vous n'avez pas aligné les éléments, cela pourrait avoir un impact important sur les performances.
Zoredache
Je ne peux pas imaginer ce que l'alignement est. Les lecteurs sont identiques et ont été formatés de manière identique.
Dims
Les lecteurs étant identiques est sans importance. Les disques les plus récents s'alignent sur des blocs de 4 ko. Ils étaient auparavant alignés sur des blocs de 512 octets. Si votre partition est mal alignée, chaque opération de lecture et d'écriture implique en fait de lire 2 blocs sur le disque dur alors qu'il aurait dû en lire un. Cela fait une énorme différence pendant quelque chose comme la synchronisation initiale d'un grand RAID1, puisqu'un disque mal aligné effectuerait deux fois plus de travail. Voir: en.wikipedia.org/wiki/Partition_alignment et superuser.com/questions/tagged/ format avancé
Zoredache
BTW juste pour voir, il pourrait être utile si vous avez posté la sortie de fdisk -u -l /dev/sdc /dev/sdb.
Zoredache

Réponses:

2

Le RAID fonctionne en dessous du niveau du système de fichiers. Donc, il n'a aucune idée que les partitions sont "vides". Il s'agit simplement de tout copier d'une partition à l'autre. En supposant que le nombre de 3,9 térablocs soit la taille de chaque partition, ainsi que le nombre de blocs dans la matrice finale, vous disposez alors de deux partitions de 2 To chacune ... cela signifie que vous copiez 2 To. 2 To / 3800 minutes équivaut à environ 9 Mo / s. Ce n'est pas particulièrement rapide, mais étant donné qu'il s'agit probablement d'une implémentation stupide qui en lit une, en écrit une, en lit une, en écrit une, etc ... ce n'est pas terriblement déplacé pour un logiciel RAID. Il se peut même qu’il effectue une vérification après écriture.

Jamie Hanrahan
la source
Il devrait avoir un moyen de comparer les données, n'est-ce pas? Pourquoi ne pas lire et comparer alors?
Dims
1
MD n’est pas stupide par rapport à la synchronisation initiale. Sur les nouveaux lecteurs sur un système complètement inactif. La synchronisation initiale sur mes disques de 3 To il y a quelques mois était de 60-70 Mo / s, ce qui correspond à environ la moitié de la vitesse maximale théorique de mes disques de 140 Mo / s.
Zoredache
Why it doesn't read and compare then?c'est fondamentalement ce qu'il fait. Cela prend juste beaucoup de temps. Il est probable que vos disques ne peuvent faire que 150 Mo / s au mieux. Mais si vous faites autre chose sur votre système, il ne pourra pas effectuer la synchronisation efficacement.
Zoredache
2
Lorsque vous configurez votre RAID1, vous ne dites jamais comment vous l'avez fait. Vous lui avez probablement dit "utilisez cette partition existante et transmettez-la à RAID1 en utilisant cette autre partition" et non "utilisez ces deux partitions et créez un nouveau périphérique RAID1 vide", je parie que si vous l'aviez fait de cette façon, il serait rapide comme vous attendons. Modifiez dans votre question initiale les étapes et les commandes que vous avez effectuées pour créer le périphérique RAID1.
Scott Chamberlain
2
So, during syncing my system is highly vulnerable. Don't see any reason to use RAID then. Pourquoi pensez-vous que les gens travaillent sur les espaces de stockage ZFS, BTRFS, Windows, etc. La plupart des niveaux RAID courants deviennent de moins en moins utiles compte tenu de la taille actuelle de nos disques et de leurs caractéristiques de taux d'erreur.
Zoredache
1

alors pourquoi n'est-il pas possible de le dire: détendez-vous, tout est déjà identique,

Comme vous le remarquerez dans la page de manuel (man mdadm)

--assume-clean Indique à mdadm que le tableau existait déjà et qu'il est connu pour être propre. Cela peut être utile lorsque vous tentez de récupérer une défaillance majeure, car vous pouvez être sûr qu'aucune donnée ne sera affectée à moins d'écrire dans le tableau. Il peut également être utilisé lors de la création d'un RAID1 ou RAID10 si vous souhaitez éviter la resynchronisation initiale. Toutefois, cette pratique - bien que normalement sécurisée - n'est pas recommandée . Utilisez-le uniquement si vous savez vraiment ce que vous faites. Lorsque les périphériques qui feront partie d'un nouveau tableau ont été remplis de zéros avant la création, l'opérateur sait que le tableau est en réalité propre. Si tel est le cas, par exemple après avoir exécuté badblocks, cet argument peut être utilisé pour indiquer à mdadm les faits connus de l'opérateur.

Zoredache
la source