Je souhaite interrompre une opération de resynchronisation en cours sur un raid logiciel Debian Squeeze. (Il s'agit de la resynchronisation régulière des comparaisons planifiées. Dans un tel cas, le réseau RAID est toujours propre. Ne confondez pas ceci avec une reconstruction après la défaillance d'un disque et son remplacement.)
Comment arrêter cette opération de resynchronisation planifiée pendant son exécution? Un autre tableau de raid est "en attente de resynchronisation", car ils sont tous vérifiés le même jour (dimanche soir) les uns après les autres. Je veux un arrêt complet de la resynchronisation de ce dimanche soir.
[Edit: sudo kill -9 1010
ne l'arrête pas, 1010 est le PID du processus md2_resync]
J'aimerais aussi savoir comment je peux contrôler les intervalles entre les resynchronisations et le temps restant jusqu'au prochain.
[Edit2: Ce que je faisais maintenant était de faire en sorte que la resynchronisation soit très lente, pour que cela ne gêne plus:
sudo sysctl -w dev.raid.speed_limit_max=1000
tiré de http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html
Pendant la nuit, je vais redéfinir la valeur pour que la resynchronisation puisse se terminer.
Cette solution de contournement convient à la plupart des situations. Néanmoins, il serait intéressant de savoir si ce que j'ai demandé est possible. Par exemple, il ne semble pas possible de développer un tableau alors qu'il est en train de resynchroniser ou de resynchroniser "en attente"]
Réponses:
Si votre tableau est
md0
alorsecho "idle" > /sys/block/md0/md/sync_action
http://www.mjmwired.net/kernel/Documentation/md.txt#477
la source
/sys/block/md0/md/sync_min’. To reset this write
0` dans ce fichier.Je voulais ralentir ou suspendre le processus de resynchronisation pour enregistrer certaines E / S afin de sauvegarder des éléments sur un autre ordinateur. Ce fil m'a aidé mais j'ai trouvé une autre solution.
Sur ma 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é.Donc j'utilise cette méthode:
echo 0 > /proc/sys/dev/raid/speed_limit_max
la source
speed_limit_min
à 0 pour mettre en pause la resynchronisation.Vous pouvez annuler une resynchronisation de tableau en cours à l'aide de la séquence de commandes suivante (en tant qu'utilisateur root):
Notez que cela peut laisser votre tableau dans un état incohérent . Ne le faites que si vous êtes certain que la matrice est en bon état et réexécutez la synchronisation ultérieurement.
(Crédit où le crédit est dû: a trouvé cette incantation dans ce fil .)
la source
Comme mentionné ci-dessus, sur les systèmes Debian / Ubuntu, le
/etc/cron.d/mdadm
script l'invoque/usr/share/mdadm/checkarray
pour lancer des vérifications de resynchronisation.Ce script a une option pour annuler toutes les vérifications de synchronisation en cours d'exécution:
la source
Vous ne savez pas comment annuler une resynchronisation, mais la planification est contrôlée par
/etc/cron.d/mdadm
les systèmes Debian / Ubuntu.Le script
/usr/share/mdadm/checkarray
peut apporter des éclaircissements sur l’autre partie de votre question, puisque c’est ainsi que Cron l’appelle.la source
Si votre périphérique md est md0 et que vous souhaitez arrêter l'écriture de resynchronisation:
la source
Solution possible pour cela, a pris un peu pour entrer dans les détails.
Mon système: CentOS 6.5 mdadm v3.3.2
Des contrôles constants chaque semaine, nous voulions en suspendre un, le RAID est propre, le contrôle a été appelé 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 soit / dev / md0, il s’agit du contrôle de cohérence hebdomadaire et non d’une défaillance de périphérique, vous le feriez en tant que root:
De même, pour démarrer le contrôle de cohérence
la source
Ne fonctionne pas lorsque / sys / block / md * / md / sync_action est "resync" (contrairement à son état "check" ou "repair". Vous pouvez insérer "inactif" dans le fichier sync_action, mais cela n'affecte pas la Ce fichier de documentation du noyau indique ici à tort que cela fonctionnera, mais cela n’a jamais fonctionné pour moi:
la source
Je sais que cela a 4 ans, mais vous pouvez également le faire (en supposant que md0 est le tableau et que sdb4 est le "disque" resynchronisé):
Cette commande prétend que sdb4 est un disque en panne et le renvoie donc du tableau, arrêtant ainsi la resynchronisation. S'il n'y a pas eu d'erreur pendant l'action resync-stop, cette commande supprimera également sdb4 du tableau md0. En cas d'erreur, le disque reste en état d'échec mais reste dans la matrice.
Si vous échouez sur un disque
mdadm
, vous le définissez comme un échec logique . Si la matrice était propre (non dégradée), le disque reste cohérent et peut être rajouté à l'aide de l'option --add << disque >> --assume-clean sans aucune crainte. S'il y a eu une action après son détachement (par exemple, resynchroniser, reconstruire ou même une écriture), alors --assume-clean échouera et lancera immédiatement une action de resynchronisation.Changer
raid.speed_limit_min
etraid.speed_limit_max
c'est en quelque sorte une mauvaise idée car cela affecte non seulement les vitesses de resynchronisation / reconstruction, mais également les vitesses de fonctionnement normales, et vous risquez de perdre beaucoup de performances gagnées en utilisant des matrices RAID.la source
--assume-clean
sur un système actif et que des écritures se produisent sur le disque restant, vous vous posez des problèmes.