web-dev-qa-db-fra.com

Comment interrompre la resynchronisation du raid logiciel?

Je souhaite interrompre une opération de resynchronisation en cours sur un raid logiciel Debian Squeeze. (Il s'agit de la resynchronisation de comparaison régulière planifiée. La baie de raid est toujours propre dans un tel cas. Ne confondez pas cela avec une reconstruction après qu'un disque a échoué et a été remplacé.)

Comment arrêter cette opération de resynchronisation planifiée pendant son exécution? Un autre tableau de raid est "resynchronisation en attente", car ils sont tous vérifiés le même jour (dimanche soir) l'un après l'autre. Je veux un arrêt complet de cette resynchronisation du dimanche soir.

[Éditer: Sudo kill -9 1010 ne l'arrête pas, 1010 est le PID du processus md2_resync]

Je voudrais également savoir comment je peux contrôler les intervalles entre les resynchronisations et le temps restant jusqu'à la prochaine.

[Edit2: Ce que j'ai fait maintenant, c'était de ralentir la resynchronisation, donc ça ne dérange plus:

Sudo sysctl -w dev.raid.speed_limit_max=1000

extrait de http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html

Pendant la nuit, je le redéfinis sur une valeur élevée, afin que la resynchronisation puisse se terminer.

Cette solution de contournement convient à la plupart des situations, mais il serait intéressant de savoir si ce que j'ai demandé est possible. Par exemple, il ne semble pas possible d'agrandir un tableau, alors qu'il est en train de resynchroniser ou de resynchroniser "en attente"]

51
Adam5

Si votre tableau est md0 puis echo "idle" > /sys/block/md0/md/sync_action

'idle' arrêtera une resynchronisation/récupération active, etc. Il n'y a aucune garantie qu'un autre resynchronisation/récupération ne sera pas redémarré automatiquement, bien qu'un événement soit nécessaire pour le déclencher.

http://www.mjmwired.net/kernel/Documentation/md.txt#477

49
Mark Wagner

Je voulais ralentir ou mettre en pause le processus de resynchronisation pour enregistrer certaines E/S pour sauvegarder certaines choses sur un autre ordinateur. Ce fil m'a aidé mais j'ai trouvé une autre solution.

Sur mon Debian Lenny:

  • echo "idle" > /sys/block/md0/md/sync_action fonctionne mais le processus de resynchronisation est immédiatement redémarré.

  • checkarray -x --all: fonctionne, mais même résultat: le processus de resynchronisation est immédiatement redémarré.

J'utilise donc cette méthode:echo 0 > /proc/sys/dev/raid/speed_limit_max

35
small

Vous pouvez annuler une resynchronisation de tableau en cours à l'aide de la séquence de commandes suivante (en tant que root):

echo frozen > /sys/block/md0/md/sync_action
echo none > /sys/block/md0/md/resync_start
echo idle > /sys/block/md0/md/sync_action

Notez que cela peut laisser votre tableau dans un état incohérent . Ne faites cela que si vous êtes sûr que la baie est en bon état et relancez la synchronisation plus tard.

(Crédit où le crédit est dû: a trouvé cette incantation dans ce fil .)

15
duskwuff -inactive-

Comme mentionné ci-dessus, sur les systèmes Debian/Ubuntu, le /etc/cron.d/mdadm le script invoque le /usr/share/mdadm/checkarray script pour lancer les vérifications de resynchronisation.

Ce script a une option pour annuler toutes les vérifications de synchronisation en cours:

/usr/share/mdadm/checkarray -x --all
9
Jason Hildebrand

Si votre périphérique md est md0 et que vous souhaitez arrêter l'écriture de resynchronisation:

echo "idle" > /sys/block/md0/md/sync_action
3
Victor

Vous ne savez pas comment annuler une resynchronisation, mais le calendrier est contrôlé par /etc/cron.d/mdadm sur les systèmes Debian/Ubuntu.

Le scénario /usr/share/mdadm/checkarray peut éclairer l'autre partie de votre question, car c'est ce que cron appelle.

3
Zoredache

Solution possible pour cela, a pris un peu de temps pour entrer dans les détails.

Mon système: CentOS 6.5 mdadm v3.3.2

Vérifications constantes chaque semaine, envie de suspendre l'une d'entre elles, le RAID est propre, la vérification a été appelée via le script /etc/cron.d/raid-check qui est exécuté chaque semaine.

Pour annuler la vérification, vous utilisez la fonction --misc --action. En supposant que le périphérique RAID est/dev/md0 et que ce n'est que la vérification de cohérence hebdomadaire et non une panne de périphérique, vous le feriez en tant que root:

mdadm --misc --action = idle/dev/md0

De même, pour démarrer le contrôle de cohérence

mdadm --misc --action = check/dev/md0

3
bill.rookard
echo "idle" > /sys/block/md0/md/sync_action

Ne fonctionne pas lorsque/sys/block/md */md/sync_action est "resync" (contrairement si son état est "check" ou "repair". Vous pouvez répercuter "idle" dans le fichier sync_action, mais cela n'affecte pas la Ce fichier de documentation du noyau ici indique incorrectement que cela fonctionnera, mais il n'a jamais fonctionné pour moi:

'idle' arrêtera une resynchronisation/récupération active, etc. Il n'y a aucune garantie qu'un autre resynchronisation/récupération ne sera pas redémarré automatiquement, bien qu'un événement soit nécessaire pour le déclencher.

2
brian

Je sais que c'est un article vieux de 4 ans mais vous pouvez également le faire (en supposant que md0 est le tableau et sdb4 le "disque" de resynchronisation):

    mdadm /dev/md0 --fail /dev/sdb4 && mdadm /dev/md0 --remove /dev/sdb4

Cette commande prétend que sdb4 est un disque en panne et le lance donc à partir de la baie, arrêtant la resynchronisation. S'il n'y a pas eu d'erreur pendant l'action d'arrêt de resynchronisation, cette commande supprimera également sdb4 du tableau md0. En cas d'erreur, le disque reste en état d'échec mais reste dans la baie.

Si vous échouez sur un disque n'importe où dans mdadm, vous le définissez logiquement échoué. Si le tableau était nettoyer (non dégradé), le disque reste cohérent et peut être rajouté par l'option --add << disk >> --assume-clean sans aucune crainte. S'il y avait tout action après c'était détaché (par exemple, resynchronisation, reconstruction ou même une écriture), alors --assume-clean échouera probablement et lancera immédiatement une action de resynchronisation.

En changeant raid.speed_limit_min et raid.speed_limit_max est en quelque sorte une mauvaise idée car il affecte non seulement les vitesses de resynchronisation/reconstruction mais aussi les vitesses de fonctionnement normales, et vous perdrez probablement beaucoup de performances obtenues en utilisant des matrices RAID.

0
eth