it-swarm.com.de

Wie unterbreche ich die Residierung von Software-Raids?

Ich möchte einen laufenden Resync-Vorgang bei einem Debian-Squeeze-Software-Raid unterbrechen. (Dies ist die reguläre geplante Vergleichssynchronisierung. In einem solchen Fall ist das RAID-Array immer noch sauber. Verwechseln Sie dies nicht mit einer Neuerstellung, nachdem eine Festplatte ausgefallen ist und ersetzt wurde.)

Wie kann ich diesen geplanten Resync-Vorgang stoppen, während er ausgeführt wird? Ein weiteres Raid-Array ist "Resync ausstehend", da alle nacheinander am selben Tag (Sonntagabend) überprüft werden. Ich möchte einen vollständigen Stopp dieser sonntäglichen Resynchronisierung.

[Bearbeiten: Sudo kill -9 1010 stoppt es nicht, 1010 ist die PID des md2_resync-Prozesses]

Ich würde auch gerne wissen, wie ich die Intervalle zwischen Resyncs und der verbleibenden Zeit bis zur nächsten steuern kann.

[Edit2: Was ich jetzt getan habe, war, die Resynchronisation sehr langsam zu machen, damit sie nicht mehr stört:

Sudo sysctl -w dev.raid.speed_limit_max=1000

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

Während der Nacht werde ich es auf einen hohen Wert zurücksetzen, damit die Resynchronisation beendet werden kann.

Diese Problemumgehung ist für die meisten Situationen in Ordnung, es wäre jedoch interessant zu wissen, ob das, was ich gefragt habe, möglich ist. Zum Beispiel scheint es nicht möglich zu sein, ein Array zu vergrößern, während es neu synchronisiert oder "ausstehend" neu synchronisiert wird.]

51
Adam5

Wenn Ihr Array md0 Ist, dann echo "idle" > /sys/block/md0/md/sync_action

'idle' stoppt eine aktive Neusynchronisierung/Wiederherstellung usw. Es gibt keine Garantie dafür, dass eine andere Neusynchronisierung/Wiederherstellung möglicherweise nicht automatisch erneut gestartet wird, obwohl ein Ereignis erforderlich ist, um dies auszulösen.

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

49
Mark Wagner

Ich wollte den Resync-Prozess verlangsamen oder anhalten, um einige E/A zu speichern und einige Daten auf einem anderen Computer zu sichern. Dieser Thread hat mir geholfen, aber ich habe eine andere Lösung gefunden.

Auf meinem Debian Lenny:

  • echo "idle" > /sys/block/md0/md/sync_action funktioniert, aber der Resync-Prozess wird sofort neu gestartet.

  • checkarray -x --all: funktioniert, aber das gleiche Ergebnis: Der Resync-Prozess wird sofort neu gestartet.

Also benutze ich diese Methode :echo 0 > /proc/sys/dev/raid/speed_limit_max

35
small

Sie können eine laufende Array-Neusynchronisierung mit der folgenden Befehlsfolge (als Root) abbrechen:

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

Beachten Sie, dass dies Ihr Array in einem inkonsistenten Zustand belassen kann . Tun Sie dies nur, wenn Sie sicher sind, dass das Array in gutem Zustand ist, und führen Sie die Synchronisierung später erneut aus.

(Gutschrift, wo Gutschrift fällig ist: fand diese Beschwörung in diesem Thread .)

15

Wie oben erwähnt, ist auf Debian/Ubuntu-Systemen das /etc/cron.d/mdadm Skript ruft das /usr/share/mdadm/checkarray Skript zum Initiieren von Überprüfungen zur erneuten Synchronisierung.

Dieses Skript bietet eine Option zum Abbrechen aller laufenden Synchronisierungsprüfungen:

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

Wenn Ihr md-Gerät md0 ist und Sie das Resync-Schreiben stoppen möchten:

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

Sie sind sich nicht sicher, wie Sie eine erneute Synchronisierung abbrechen sollen, aber der Zeitplan wird von /etc/cron.d/mdadm Auf Debian/Ubuntu-Systemen gesteuert.

Das Skript /usr/share/mdadm/checkarray Kann etwas Licht in den anderen Teil Ihrer Frage bringen, da dies von cron aufgerufen wird.

3
Zoredache

Mögliche Lösung hierfür, brauchte ein wenig, um ins Detail zu kommen.

Mein System: CentOS 6.5 mdadm v3.3.2

Ständige Überprüfungen jede Woche, wollte eine davon anhalten, RAID ist sauber, die Überprüfung wurde über das Skript /etc/cron.d/raid-check aufgerufen, das wöchentlich ausgeführt wird.

Um die Prüfung abzubrechen, verwenden Sie die Funktion --misc --action. Angenommen, das RAID-Gerät ist/dev/md0 und dies ist nur die wöchentliche Konsistenzprüfung und kein Gerätefehler, würden Sie als root:

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

Ebenso, um die Konsistenzprüfung zu starten

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

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

Funktioniert nicht, wenn/sys/block/md */md/sync_action "resync" ist (im Gegensatz zu "check" oder "repar"). Sie können "idle" in die Datei "sync_action" zurückgeben, dies hat jedoch keine Auswirkungen auf Fortschritt. Diese Kernel-Dokumentationsdatei hier gibt fälschlicherweise an, dass es funktionieren wird, aber es hat bei mir nie funktioniert:

'idle' stoppt eine aktive Neusynchronisierung/Wiederherstellung usw. Es gibt keine Garantie dafür, dass eine andere Neusynchronisierung/Wiederherstellung möglicherweise nicht automatisch erneut gestartet wird, obwohl ein Ereignis erforderlich ist, um dies auszulösen.

2
brian

Ich weiß, dass dies ein 4 Jahre alter Beitrag ist, aber Sie können dies auch tun (vorausgesetzt, md0 als Array und sdb4 als resyncierende "Festplatte"):

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

Dieser Befehl gibt vor, dass sdb4 eine ausgefallene Festplatte ist, und wirft sie daher aus dem Array, wodurch die erneute Synchronisierung gestoppt wird. Wenn während der Resync-Stop-Aktion kein Fehler aufgetreten ist, wird mit diesem Befehl auch sdb4 aus dem md0-Array entfernt. Wenn ein Fehler aufgetreten ist, bleibt die Festplatte im fehlerhaften Zustand, bleibt jedoch im Array.

Wenn Sie irgendwo in mdadm eine Festplatte ausfallen lassen, legen Sie sie fest logisch gescheitert. Wenn das Array war sauber (nicht verschlechtert) dann bleibt die Festplatte konsistent und kann mit der Option --add << disk >> --assume-clean ohne Angst wieder hinzugefügt werden. Wenn ja irgendein Aktion nachdem es war freistehend (z. B. Resync, Neuerstellung oder sogar Schreiben) Dann schlägt --assume-clean wahrscheinlich fehl und startet sofort eine Resync-Aktion.

Ändern raid.speed_limit_min und raid.speed_limit_max ist irgendwie eine schlechte Idee, da sie nicht nur die Geschwindigkeit der erneuten Synchronisierung/Wiederherstellung, sondern auch die normalen Betriebsgeschwindigkeiten beeinflusst und Sie wahrscheinlich viel Leistung verlieren, wenn Sie RAID-Arrays verwenden.

0
eth