reboot für fsck beim shutdown

  • Mich hat es die ganze Zeit genervt, wenn der VDR mehrere Minuten für den FSCK beim booten braucht. Meißtens tritt das ja genau dann auf wenn man es überhaupt nicht brauchen kann.


    Ich hab deshalb mal die Datei /etc/vdr/shutdown-hooks/S90.custom
    angepasst. Jetzt wird überprüft, ob in den nächsten 24h ein FSCK nötig ist.
    Falls ja, wird das SHUTDOWNCMD mit "shutdown -F -r now" überschrieben.


    Also der VDR wird neu gebootet und ein FSCK auf allen Partitionen durchgeführt.
    Zusätzlich wird auch noch ein entsprechender Kommentar ins Syslog geschrieben.


    Damit alles richtig funktioniert sollte noch /usr/share/vdr/shutdown-hooks/S90.nvram-wakeup in /usr/share/vdr/shutdown-hooks/S80.nvram-wakeup umbenannt werden.


    Die Nummerierung kann auch anders sein, hauptsache Sx0.nvram-wakeup wird vor Sy0.custom ausgeführt, also x < y. Sonst wird das SHUTDOWNCMD von nvram-wakeup nochmal überschrieben.


    Mit "tune2fs /dev/hda1 -c 0" kann der FSCK nach "Max Mount Count" deaktiviert werden. (Das sollte für alle Partitionen entsprechend gemacht werden).
    Mit "tune2fs /dev/hda1 -i 1m" wird das Intervall für den FSCK auf 1 Monat eingestellt.
    Es reicht wenn man das Intervall für die Partition, die im Shutdown-Hook abgefragt wird, einstellt. Durch "shutdown -F -r now" werden trotzdem alle Partitionen überprüft. Es kann aber auch nichts schaden wenn man für alle Partitionen ein Intervall einstellt.


    Was noch stört / fehlt:
    Nach dem Reboot für den FSCK sollte der VDR automatisch wieder heruntergefahren werden, da er ja sonst für die "Mindest Benutzer-Inaktivität" weiterläuft. Im schlimmsten Fall läuft der VDR dann 2x die "Mindest Benutzer-Inaktivität", ohne das es nötig wäre.
    Gibt es sowas wie einen Start-Hook? z.B. könnte man dem VDR ja nach dem Start ein Shutdown-Command übergeben, falls der Mount Count auf der Root-Partition 1 ist, weil dann davor gerade ein FSCK durchgeführt wurde. Die Frage ist nur wann und wo ich das dem VDR übergeben kann.


    Vor dem Shutdown / Reboot sollte noch eine Message über das OSD ausgegeben werden, die darüber informiert dass ein Reboot für den FSCK gemacht wird. Sonst fragen mich meine Eltern einmal im Monat warum der VDR sich manchmal nicht ausschaltet. Gibt es da ein entsprechendes Gegenstück zu ABORT_MESSAGE?


    Falls da noch jemand eine Idee / Tipp hat, wäre ich sehr dankbar.


    Gruß Hermann

  • Hallöchen


    ...was hälst du von der Idee, den fsck nicht durch einen reboot zu erzwingen,
    sondern vor dem runterfahren auszuführen? Dann wäre das automatische abschalten nach dem fsck kein Problem...


    Bei LinVDR ist das so gelöst, da wird 1 x im Monat beim Shutdown ein fsck ausgeführt... Ich habe leider nur noch nicht rausfinden können, wie dieser Aufruf erfolgt ... X(


    Ich bin auch deshalb interessiert daran, das der Check vor dem Runterfahren erfolgt, da ich ein Grafikdisplay betreibe, wo (während des fsck´s) diese FileSystemCheck-Anzeige gezeigt werden könnte...


    MfG


    Crue

  • Es ist übrigens essentiell wichtig, dass ein fsck auch beim Start aufgerufen wird. Wenn es nämlich Dateisystemfehler gibt, MÜSSEN die behoben werden, bevor wild auf der Platte herumgeschrieben wird, da sonst im schlimmsten Fall Daten weg sind. Alles andere widerspräche dem Sinn von journalling file systems. Bei LinVDR wird fsck daher ein Mal beim Start aufgerufen und beim Beenden wird es dann nur erzwungen, falls in Kürze ein Routinecheck anstünde.

  • Hi,

    Zitat

    Original von hoerme
    Die Nummerierung kann auch anders sein, hauptsache Sx0.nvram-wakeup wird vor Sy0.custom ausgeführt, also x < y. Sonst wird das SHUTDOWNCMD von nvram-wakeup nochmal überschrieben.


    Und was ist, wenn nvram-wakeup einen Reboot mit dem Shutdown-Kernel per lilo/grub erzwungen hat?


    Gruß
    Rainer

  • Hiho


    Zitat

    Es ist übrigens essentiell wichtig, dass ein fsck auch beim Start aufgerufen wird.


    Ok, da gebe ich dir Recht.


    Zitat

    Bei LinVDR wird fsck daher ein Mal beim Start aufgerufen und beim Beenden wird es dann nur erzwungen, falls in Kürze ein Routinecheck anstünde.


    Hmm, also fsck führt beim Start doch keinen Check durch, wenn der Mountcount noch nicht reicht !? Oder gibt´s trotzdem eine Art "Mini-Test" ?? ?(


    Andersrum gefragt: Bei LinVDR muß man nicht beim Start ewig warten, sondern beim Runterfahren ? Genau daß ist es, was ich will... ;)


    Comments are Welcome


    MfG


    Crue

  • Hiho


    das konnte ich aus der LinVDR.iso / rcShutdown extrahieren...



    Jetzt ist die Überlegung, wie man das z. B. in ein Debian / C´T VDR integriert ...


    Comments are Welcome


    MfG


    Crue

  • Zitat

    Original von Crue
    Jetzt ist die Überlegung, wie man das z. B. in ein Debian / C´T VDR integriert


    So vielleicht:


    /etc/ini.t/fsckvideo :


    Und einen Symlink K35fsckvideo nach /etc/rc6.d


    Gruß
    Rainer

  • Zitat

    ...was hälst du von der Idee, den fsck nicht durch einen reboot zu erzwingen,


    viel und wenig.
    Hab ich mir auch überlegt, aber bei ca. 300GB dauert der FSCK schon recht lange. Es könnte ja theoretisch passieren dass der Shutdown mit dem FSCK zu lange dauert und der VDR den per nvram gesetzten Aufwachzeitpunkt verpasst (->WORST CASE). Dann schläft mein VDR 1 Monat, wenn ich ihn nicht dazwischen manuell einschalte.


    Zitat

    Und was ist, wenn nvram-wakeup einen Reboot mit dem Shutdown-Kernel per lilo/grub erzwungen hat?


    Der nvram-Shutdown-hook überschreibt auch "nur" das SHUTDOWNCMD. Deshalb ist es wichtig, dass der Custom-Hook als letzter aufgerufen wird und so das Kommando nochmal überschreiben kann. Bei mir war es nämlich erst mal andersrum.


    Zitat

    Es ist übrigens essentiell wichtig, dass ein fsck auch beim Start aufgerufen wird.


    So wie ich das bis jetzt verstanden habe legt der "Max mount count" und/oder das "Check interval" nur die Häufigkeit der Routinechecks fest.
    Beim Start wird auf jedenfall überprüft ob es ein Problem gab, und falls nötig ein FSCK durchgeführt. Korrigiert mich wenn ich da falsch liege.


    Ich hab ja nur gemeint das man das Interfall für die Routinechecks nicht auf jeder Partition setzen muss, da über "shutdown -F -r now" sowieso alle gecheckt werden. Das Skript frägt eh nur den Zeitpunkt von einer Partition ab.


    Rainer_HB:
    Wenn dein Skript jetzt noch überprüft ob der nächste Aufwachzeitpunkt schon verpasst wurde oder z.B. innerhalb der nächsten 5min. liegt und dann gleich ein Reboot statt dem ursprünglichen Shutdown durchgeführt wird sind meine Probleme gelöst.


    Gruß Hermann

  • Zitat

    Es könnte ja theoretisch passieren dass der Shutdown mit dem FSCK zu lange dauert und der VDR den per nvram gesetzten Aufwachzeitpunkt verpasst (->WORST CASE). Dann schläft mein VDR 1 Monat, wenn ich ihn nicht dazwischen manuell einschalte.


    Das Scenario mußt du mir genauer erklären...


    -wenn du den VDR ausschaltest, obwohl ih 20 Minuten eine Aufnahme ansteht??
    ...und der fsck dauert dann eine halbe Stunde...


    ...oder was meinst du?


    MfG


    Crue

  • Zitat


    Rainer_HB:
    Wenn dein Skript jetzt noch überprüft ob der nächste Aufwachzeitpunkt schon verpasst wurde oder z.B. innerhalb der nächsten 5min. liegt und dann gleich ein Reboot statt dem ursprünglichen Shutdown durchgeführt wird sind meine Probleme gelöst.


    Rechnen wir mal großzügig:
    - fsck dauert 10 min
    - wakeup soll 10 min vor Sendungsbeginn erfolgen
    Dann muss, um deine Befürchtung wahr werden zu lassen, der VDR ausgehen, obwohl in 20 min eine Aufnahme ansteht.
    Tut er das?


    Gruß
    Rainer

  • Ich weiß, dass dieses Scenario mit den richtigen Einstellungen unwahrscheinlich ist. Ich will aber, wenn es einfach zu lösen ist, auch das ausschließen, damit ich den VDR möglichst häufig schlafen lassen kann.
    Auch 15 Min. die der VDR nicht läuft sparen Strom.
    Nach Murphys Law wird dieses unwahrscheinliche Scenario aber auch irgendwann eintreten. Und dann wird es sicher nicht einfach nachzuvollziehen, warum der VDR sporadisch (z.B. einmal im halben Jahr) nicht aufwacht. Ich will dann nicht nach dem Fehler suchen.


    Im Moment hab ich die MindestEventPause auf 30 Min.
    Zusätzlich geb ich den Timern noch einen Puffer von 10 Min. am Anfang mit. Ich glaub NVRAM setzt davor nochmal einen Puffer von 5 Min. für den Wakeup.
    Bisher hab ich dadurch noch keinen Sendungsbeginn verpasst, allerdings wurde ja auch immer nur eine Partition beim FSCK überprüft.
    Wenn der VDR nichtmehr aufwacht wäre dass aber auch gravierender, wie nur ein verzögerter Aufnahmebeginn durch einen zu langen FSCK beim Start.


    Die 10 Min. Puffer für die Timer kann ich auf jedenfall reduzieren, wenn der FSCK beim Shutdown durchgeführt wird, egal ob mit oder ohne Reboot.


    Die MindestEventPause würde ich gern auf 20min. reduzieren. Bei weniger würde sich das Ausschalten des VDR wirklich nicht mehr lohnen.
    Der 5 Min. Puffer von NVRAM bleibt auf jedenfall. Dann kommt aber die restliche Zeit (15 Min.) schon sehr nahe an die Zeit des FSCK.
    Zumal ja der normale Shutdown + Reboot für den Shutdown-Kernel auch noch Zeit benötigt. Es soll ja auch noch Leute mit deutlich mehr Festplattenkapazität geben.


    Ich hab leider keine Statistik darüber wie häufig sich diese kürzere MindestEventPause überhaupt auswirken würde. Mein Eindruck bisher war aber schon, dass zwischen einigen Timern, durch die Puffer davor und dahinter, die Pause ca. 30 min. beträgt.


    Es würde sicher mehr bringen wenn ich nicht alles mögliche Aufnehmen würde, wo ich dann eh keine Zeit hab zum anschauen. Dann wären die Pausen zwischen den Timern größer und die Festplatte könnte wieder etwas kleiner werden -> würde beides das Problem entschärfen.


    Also ich werd auf jedenfall auch mal das Script von Rainer testen.


    Gruß Hermann

  • Supi, meine Bedeken sind jetzt erst mal ausgeräumt.
    Sogar gleich als HowTO.
    Dass hätte es letzte Woche schon geben sollen, dann hät ich mir üverhaupt nicht den Kopf darüber zerbrochen.


    Die For-Schleife mit den DrivesToCheck gefällt mir sehr gut.


    Ich hab ne 160GB und ne 200GB Platte. Bei meiner bisherigen Lösung mit dem "Shutdown -F -r now" hat er eben beide hintereinander überprüft, dadurch kam die (gefühlte) Zeit von etwas über 10Min. für den FSCK zustande.
    Wenn ich nun den Zeitpunkt für beide Platten auf unterschiedliche Tage lege, bleibt die Zeit jeweils deutlich darunter.
    Für noch mehr Platten / Partitionen gibts ja zum Glück 30 Tage im Monat.
    Damit dürfte auch Murphys Law nicht zuschlagen.


    Jetzt muss ich mir wohl doch noch so ein LCD zulegen, damit ich auch die Animation zu sehen bekomme.


    Das hätte nun doch wirklich die Aufnahme in die C't-Distri verdient.


    Gruß Hermann

  • Hiho


    Zitat

    Dass hätte es letzte Woche schon geben sollen, dann hät ich mir üverhaupt nicht den Kopf darüber zerbrochen.

    Hehe, dein Thread hatt mich (mit) dazu angeregt.


    Zitat

    Bei meiner bisherigen Lösung mit dem "Shutdown -F -r now" hat er eben beide hintereinander überprüft, dadurch kam die (gefühlte) Zeit von etwas über 10Min. für den FSCK zustande.


    Mensch, war ja garnicht geplant, aber du hast Recht, die Lösung ist (durch unterschiedliche MaxMountCounts auf den versch. Platten) tatsächlich sogar für größere Speicherplatzmengen skalierbar *freu :gap


    Zitat

    Jetzt muss ich mir wohl doch noch so ein LCD zulegen, damit ich auch die Animation zu sehen bekomme.

    Wie gesagt, ist kein Muss, ist Nonnsens :D klickst du unten in meiner Signatur das LCD...


    Zitat

    Das hätte nun doch wirklich die Aufnahme in die C't-Distri verdient.

    Danke für die Blumen


    MfG


    Crue

  • Zitat

    Hehe, dein Thread hatt mich (mit) dazu angeregt.


    schon klar. war mir ein vergnügen.


    Zitat

    ...die Lösung ist (durch unterschiedliche MaxMountCounts auf den versch. Platten) tatsächlich sogar für größere Speicherplatzmengen skalierbar...


    Net ganz. Die MaxMountCounts bzw. die Intervalle sollten schon überall gleich sein. Sonst kommt es ab und zu vor dass sie doch wieder am gleichen Tag gecheckt werden.
    Aber wenn man am Anfang jeder Partition einen anderen Startwert (MountCount oder LastCheck) gibt klappts.
    Alternativ könntest du in dein Script auch noch irgendwo einen break, nach dem ersten Check einer Partition, einfügen damit er immer nur eine Partition checkt. War das verständlich? Dann müsste man sich ja überhaupt keine gedanken über die Intervalle machen.


    UPPS: Das war natürlich doof. Wenn der Check nicht bei allen Platten beim Shutdown erfolgt, wird er ja doch wieder beim nächsten Boot gemacht.


    Also lassen wir dass doch lieber so.


    Das Display ist ja cool. Leider sind die alle schon lange weg.
    Aber irgendwann gibts bei mir auch eins. Steht ganz oben auf der Wunschliste für den VDR.


    Gruß Hermann

  • Zitat

    Die MaxMountCounts bzw. die Intervalle sollten schon überall gleich sein. Sonst kommt es ab und zu vor dass sie doch wieder am gleichen Tag gecheckt werden.

    Daran habe ich noch nicht gedacht... Da könnte man ´ne Abfrage einbauen, ob mehr als eine Platte getestet werden soll. Wenn ja -->nur 1. platte testen und MountCount der anderen Minus 1 : die werden dann beim nächsten Reboot gecheckt... Zeitersparniss wäre das nicht, eher Zeitaufteilung ;D nicht 3x fsck bei einem Shutdown(WorstCase), sondern 1 x fsck dann reboot, wieder 1 x fsck und reboot...(also jetzt nicht hintereinander, sondern wenn DU runterfährst :D)



    Zitat

    Das Display ist ja cool. Leider sind die alle schon lange weg.


    versuch es hier mal


    MfG


    Crue

  • Diese Umstände mit immer nur einer Partition checken sind gar nicht nötig.
    Wenn man fsck mehrere Partitionen auf unterschiedlichen Platten angibt, werden die alle parallel gecheckt und die Gesamtdauer für alle Platten ist somit die des längsten scans.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!