2 votes

Comment savoir quel disque dans un RAID1 multi-disques mdadm a déclenché une reconstruction ?

J'utilise mdadm pour plusieurs miroirs RAID1. md7 est un miroir N-way composé de 3 disques tournants (tous marqués en écriture) et d'un SSD :

md7 : active raid1 sdd1[0] sde5[3](W) sdf5[4](W) sdc1[1](W)
      234428416 blocks [4/4] [UUUU]

md6 : active raid1 sdf6[0] sde6[1]
      1220988096 blocks [2/2] [UU]

md2 : active raid1 sdb6[0] sda6[1]
      282229824 blocks [2/2] [UU]

md1 : active raid1 sdb2[0] sda2[1]
      19534976 blocks [2/2] [UU]

md0 : active raid1 sdb1[0] sda1[1]
      192640 blocks [2/2] [UU]

L'ensemble du système s'est bloqué 3 fois au cours des 2 dernières semaines, ce qui a nécessité un redémarrage à froid. Pour l'instant, je vais supposer que le blocage du système n'est pas lié à mon problème md, bien que je ne puisse pas complètement exclure cette possibilité. Chaque fois que nous avons redémarré, md7 a exigé une reconstruction, mais je ne peux pas trouver comment dire à partir des journaux quel disque a déclenché la reconstruction. J'ai pensé qu'iostat pourrait m'aider pendant que le RAID était en cours de reconstruction :

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              43.39      1038.34       558.83     223108     120075
sdb              66.88      1445.47       648.86     310588     139420
sdc              36.42        12.99     22256.81       2792    4782320
sdd             190.75     23227.78       331.14    4990954      71152
md0               2.11        21.39         0.23       4596         50
md1             173.72      1855.87       522.14     398770     112192
md2              11.68        65.84        27.59      14146       5928
md6              27.42       149.83        69.51      32194      14936
sde              75.83        70.81     22326.91      15214    4797384
sdf              79.31        99.41     22326.91      21360    4797384
sr0               0.04         2.61         0.00        560          0
md7             202.31      1287.41       331.07     276626      71136

...mais il me semble que md7 utilise sdd pour reconstruire tous les autres disques de ce RAID. Je pensais que c'était simplement parce que sdd est un SSD et que tous les autres disques sont marqués en écriture, mais dans ce cas, il ne devrait reconstruire que le seul disque qui était désynchronisé (à moins que tous les disques tournants soient désynchronisés, ce qui me semble peu probable).

Une autre théorie que j'ai est que tous les disques tournants sont toujours désynchronisés au redémarrage simplement parce que les écritures du SSD sont si rapides qu'il a le temps de finir d'écrire un bloc pendant que les autres sont encore en train d'écrire, puis le système se bloque avant que les autres disques finissent d'écrire ce bloc ?

Alors, comment puis-je savoir quel(s) disque(s) a (ont) déclenché la resynchronisation ? Est-ce que le fait que j'ai un miroir n-way avec un mélange de disques SSD et de disques rotatifs peut être responsable du fait que tous les disques rotatifs sont toujours reconstruits après l'un de ces gels, ou est-ce que le pilote md garantit qu'un bloc n'est pas considéré comme écrit sur un disque tant qu'il n'a pas été écrit avec succès sur tous les disques ?

1voto

Ondra Points 101

Je comprends que (au moins sous Linux) le raid fonctionne comme un système de fichiers à ces fins - si le système se bloque pendant qu'il est utilisé, il devra être vérifié au redémarrage. Ainsi, la cause des pannes de votre système ne peut pas être tout disques dans la matrice.

1voto

kiko Points 261

Comme Michael le souligne ci-dessus, les pendus et les conséquents arrêt de travail malpropre sont la raison pour laquelle vous voyez votre RAID se reconstruire. Le pilote md du noyau reconstruit les matrices non nettoyées afin de s'assurer qu'elles sont vraiment synchronisées, puisqu'un blocage, un crash ou une perte de puissance ne garantira pas quelles écritures ont réellement été transférées sur le disque.

Maintenant, quant à savoir pourquoi sdd est utilisé, la première chose à comprendre est que dans un arrêt non nettoyé, le tableau réel, par opposition à un périphérique membre individuel, est marqué comme sale. Dans la page de manuel que j'ai liée ci-dessus, ce qui suit est dit à propos du RAID-1 :

Si le pilote md trouve un tableau sale au démarrage, il procède à la correction de toute incohérence éventuelle. Pour le RAID1, cela implique de copier le contenu du premier disque sur tous les autres disques.

Dans votre exemple, le md7 La matrice a des partitions sur les lecteurs sdc , sdd , sde & sdf mais si vous regardez votre mdstat sortie :

md7 : raid1 actif sdd1[0] sde53 sdf54 sdc11

Notez comment la première partition, marquée d'un [0] est sur sdd à savoir, sdd1 . C'est la raison pour laquelle sdd est utilisé c'est le premier disque dur de l'histoire de l'humanité. md7 .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X