Re: Shutdown-Reihenfolge
Hallo Matthias,
wieder einmal herzlichsten Dank für deine Ausführungen.
Ich bin jetzt einfach mal so frei und poste hier meine Lösung. Mit der
fahre ich gut und alles ist (aus meiner Sicht) wunderbar.
Thema: Start
------------
Hier nutze ich deine Idee mit dem Ändern des LSB-Headers von mdadm-raid.
Der sieht wie folgt aus.
/etc/insserv/overrides/mdadm-raid
# Required-Start: mountkernfs open-iscsi
In Anbetracht dessen, dass auf dem Raid das Datenverzeichnis von
PostgreSQL rumwabert und das vorherige Mounten aus bereits dargelegten
Gründen nicht sauber klappt, wird auch für PostgreSQl ein Override erstellt.
/etc/insserv/overrides/postgresql
# Default-Start:
Sprich, das Teil soll nicht starten. Das soll erst nach dem Mount
erfolgen. Das passiert in der rc.local. In der rc.local werden daher der
Mount und das anschließende Starten von PostgreSQl durchgeführt.
Durch diese Reihenfolge habe ich zumindest schon einmal ein gemountetes
Raid. Im nächsten Schritt zeige ich, wie ich das Raid auch noch so
hinbekomme, dass es auch nach dem Stop/Neustart konsistent ist.
Thema: Neustart/Halt
--------------------
Der Start von PostgreSQl sieht soweit sauber aus. Soll heißen, dass der
Shutdown gleich am Anfang erfolgt.
Für mdadm-raid und open-iscsi sieht das schon anders aus. Folgende
Reihenfolge ist angestrebt.
- 1. Raid unmounten
- 2. Raid stoppen
- 3. Pause
- 4. LUNs stoppen
1. Raid unmounten
Hierfür habe ich ein Init-Skript erstellt mit Namen umountmd. Es macht
nichts anderes als das md-Gerät zu unmounten.
Der Header ist so gestaltet (nur die wichtigen Felder).
/etc/init.d/umountmd
# Required-Stop: mdadm-raid
# X-Stop-After: postgresql
2. Raid stoppen
Das Teil soll nach dem Stop von umountmd ausgeführt werden.
/etc/innserv/overrides/mdadm-raid
# Required-Stop: mountkernfs pause
# X-Stop-After: umountmd
pause ist ein Skript, was die zuvor schon angedeutete Pause erzeugt.
3. Pause
Die Pause wurde eingefügt, weil der Stop vom Raid bei mir etwas länger
dauert. Sofern diese nicht gemacht wird, erscheint beim Stop von
open-iscsi eine formvollendete Fehlermeldung, weil z.B. sdc1 durch md0
verwendet wird.
Daher gibts nen Initskript mit dem Namen pause, was wirklich nur eine
Pause von 10 sek macht.
/etc/init.d/pause
# Required-Stop: open-iscsi
# X-Stop-After: mdadm-raid
4. LUNs stoppen
Abschließend müssen nur noch die LUNs gestoppt werden. Dafür wurde der
Header von open-iscsi angepasst.
/etc/insserv/overrides/open-iscsi
# X-Stop-After: pause
Schlußendlich wurde nur noch insserv ausgeführt und ich habe eine
Reihenfolge wie folgt erhalten (für Halt/Neustart):
K01mdadm
K01postgresql
K01umountiscsi.sh
K02umountmd
K03mdadm-raid
K04pause
K05open-iscsi
Durch diese "harte" Definierung der Reihenfolge habe ich erreicht, dass
das Raid bei jedem Start sauber ist und nicht ständig gesynct werden muss.
Sicherlich kann man die umountmd- und pause-Geschichte zusammenfassen
und wahrscheinlich wird auch irgendwo eine Lösung existieren, die um
Längen einfacher ist, aber für mich reicht es.
Zudem bin ich auch der Meinung, dass die Konstellation
md-Gerät/open-iscsi gar nicht mal so abwägig ist.
Ich hoffe, dass ich anderen eine kleine Hilfe bin.
Gruß und herzlichen Dank für eure Denkansätze.
Michael
Reply to: