Ich möchte einen laufenden Resync-Vorgang auf einem Debian-Squeeze-Software-Raid unterbrechen. (Dies ist die reguläre geplante Resynchronisation von Vergleichen. Das RAID-Array ist in einem solchen Fall 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 beenden, während er ausgeführt wird? Ein anderes Raid-Array ist "Resync pending", da alle nacheinander am selben Tag (Sonntagabend) überprüft werden. Ich möchte einen vollständigen Stopp dieser Neusynchronisierung am Sonntagabend.
[Edit: sudo kill -9 1010
hört nicht auf, 1010 ist die PID des md2_resync-Prozesses]
Ich möchte auch wissen, wie ich die Intervalle zwischen Resynchronisierungen und der verbleibenden Zeit bis zur nächsten steuern kann.
[Edit2: Was ich jetzt getan habe war, das Resync sehr langsam laufen zu lassen, damit es 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 wieder auf einen hohen Wert setzen, 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. Beispielsweise scheint es nicht möglich zu sein, ein Array zu vergrößern, während es resynchronisiert oder "ausstehend" resynchronisiert.]
Antworten:
Wenn Ihr Array
md0
dann istecho "idle" > /sys/block/md0/md/sync_action
http://www.mjmwired.net/kernel/Documentation/md.txt#477
quelle
/sys/block/md0/md/sync_min’. To reset this write
0 "zu dieser Datei fortgesetzt .Ich wollte den Resync-Vorgang verlangsamen oder anhalten, um einige E / A-Vorgänge 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-Vorgang wird sofort neu gestartet.checkarray -x --all
: funktioniert, aber gleiches Ergebnis: Der Resync-Vorgang wird sofort neu gestartet.Also benutze ich diese Methode:
echo 0 > /proc/sys/dev/raid/speed_limit_max
quelle
speed_limit_min
auf 0 setzen , um die erneute Synchronisierung vollständig anzuhalten.Sie können eine laufende Array-Resynchronisation mit der folgenden Befehlsfolge (als Root) abbrechen:
Beachten Sie, dass sich Ihr Array dadurch möglicherweise in einem inkonsistenten Zustand befindet . Tun Sie dies nur, wenn Sie sicher sind, dass das Array in gutem Zustand ist, und führen Sie die Synchronisierung später erneut durch.
(Kredit, bei dem der Kredit fällig ist: Diese Beschwörung wurde in diesem Thread gefunden .)
quelle
Wie oben erwähnt,
/etc/cron.d/mdadm
ruft das/usr/share/mdadm/checkarray
Skript auf Debian / Ubuntu-Systemen das Skript auf , um Re-Sync-Prüfungen einzuleiten.Dieses Skript bietet eine Option zum Abbrechen aller ausgeführten Synchronisierungsprüfungen:
quelle
Ich bin nicht sicher, wie ich eine erneute Synchronisierung abbrechen soll, aber der Zeitplan wird von
/etc/cron.d/mdadm
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.quelle
Wenn Ihr md-Gerät md0 ist und Sie die Resynchronisierung beenden möchten, schreiben Sie:
quelle
Mögliche Lösung für diese, nahm ein bisschen in die Details zu bekommen.
Mein System: CentOS 6.5 mdadm v3.3.2
Ständige Überprüfungen jede Woche, wollte eine von ihnen anhalten, RAID ist sauber, Ü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. Als Root würden Sie:
Ebenso, um die Konsistenzprüfung zu starten
quelle
Funktioniert nicht, wenn / sys / block / md * / md / sync_action "resync" ist (im Gegensatz zu "check" oder "repair"). Sie können "idle" in die sync_action-Datei zurückschreiben, dies hat jedoch keine Auswirkungen auf die Diese Kernel-Dokumentationsdatei gibt fälschlicherweise an, dass es funktionieren wird, aber bei mir hat es nie funktioniert:
quelle
Ich weiß, dass dies ein 4 Jahre alter Beitrag ist, aber Sie können dies auch tun (unter der Annahme, dass md0 das Array und sdb4 die "Festplatte" für die Resynchronisation ist):
Dieser Befehl gibt vor, dass sdb4 ein ausgefallener Datenträger ist, und entfernt ihn daher aus dem Array, wodurch die erneute Synchronisierung gestoppt wird. Wenn bei der Aktion zum erneuten Synchronisieren 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, verbleibt jedoch im Array.
Wenn Sie einen Datenträger an einer beliebigen Stelle ausfallen lassen
mdadm
, legen Sie fest, dass der Datenträger logisch ausgefallen ist. Wenn das Array sauber war (nicht beeinträchtigt wurde), bleibt die Festplatte konsistent und kann mit der Option --add << disk >> --assume-clean ohne Angst wieder hinzugefügt werden. Wenn es irgendeine Aktion , nachdem er wurde abgelöst (zB. Resync, neu zu erstellen, oder sogar ein Schreib) dann --assume-clean wird via Modem fehlschlagen und eine Resynchronisation Aktion sofort starten.Ändern
raid.speed_limit_min
undraid.speed_limit_max
ist irgendwie eine schlechte Idee , weil es nicht nur Affekte resync / rebuild Geschwindigkeiten , sondern auch die normalen Betriebsgeschwindigkeiten, und wahrscheinlich werden Sie eine Menge Leistung durch Verwendung von RAID - Arrays gewonnen verlieren.quelle
--assume-clean
auf einem Live - System, und Sie hatten alle Schreibvorgänge geschehen auf die verbleibende Disk, fordern Sie für Ärger.