Mit tmpfs: "a start job is running"

L I V E Stammtisch ab 20:30 Uhr im Chat
  • Hallo Leute,

    dieser systemd bringt mich noch um den Verstand! Warum kann der nicht einfach mit normalen Linux-Einstellungen sauber umgehen? :@ :wallbash:


    Wollte meinen RaspPi jetzt für /var/log und /var/run auf tmpfs umstellen, um die schreibzugriffe auf die SD Karte zu minimieren.

    Füge also der /etc/fstab hinzu:

    Code
    tmpfs          /var/run        tmpfs   defaults,nosuid,mode=0755,size=10M,noatime      0 0
    tmpfs          /var/log        tmpfs   defaults,nosuid,mode=0755,size=10M,noatime      0 0

    Ergebnis: Der RaspBi Bootet nicht mehr und wechselt in den Maintenance-Mode mit Problemen beim mounten der "Partitionen". Genaues habe ich jetzt nicht da, weil nix ins Log geschrieben wird, aber es ist etwas mit "a start job is running for". Internetsuche hat ergeben, dass es ein weit verbreitetes Problem ist, aber meist keine brauchbare Lösungen :(

    Jemand eine Idee?

    /KNEBB


  • Internetsuche hat ergeben, dass es ein weit verbreitetes Problem ist, aber meist keine brauchbare Lösungen :(

    Dann siehe evtl. auf deinem PI mit (Jessie und) systemd, auch die Ausgaben von:

    Code
    man systemd-tmpfiles
    man tmpfiles.d
    systemctl status systemd-tmpfiles-setup.service
    ls -la /usr/lib/tmpfiles.d
    cat /usr/lib/tmpfiles.d/var.conf
    cat /usr/lib/tmpfiles.d/sshd.conf
    ls -la /var/run
    mount | grep run
    df -h | grep -i tmpfs

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Meine PIs

    PI4B/8GB (border device) OpenBSD 7.4 (64bit): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server

    PI3B+ FreeBSD 14.0-R-p3 (arm64): SSH-Serv., WireGuard-Serv., ircd-hybrid-Serv., stunnel-Proxy, Mumble-Serv., ddclient

    PI4B/4GB Bullseye-lite (64bit; modifiziert): SSH-Server, WireGuard-Server, ircd-hybrid-Server, stunnel-Proxy, Mumble-Server, botamusique, ample

  • Unter jessie liegt /var/run bereits von Haus aus auf einem tmpfs, der fstab-Eintrag stört also nur (wie man sieht).

    Das zweite Problem, das du wohl bei beiden Einträgen hat, ist dass die fstab für deine Zwecke vermutlich zu spät im Bootprozess abgearbeitet wird: Wenn versucht wird das tmpfs auf /var/log zu mounten haben andere Dienste vermutlich längst begonnen dorthin (und damit auf die SD-Karte) zu loggen.

    Mein Vorschlag wäre beide fstab-Einträge rauszuhauen und stattdessen sicherstellen dass kein syslog-Dienst (syslog-ng, rsyslog, dsyslog,…) installiert ist. systemd wird die Meldungen mit journals trotzdem (in einem tmpfs) aufzeichnen und die paar Kleinigkeiten, die von irgendwelchen Diensten ohne syslogd trotzdem direkt nach /var/log geschrieben werden, würde ich in Kauf nehmen/ignorieren, noch dazu wo da wirklich nützliche Dinge dabei sind, wie zB das Protokoll der Paketverwaltung.

    Wenn du die Schreibzugriffe auf /var/log trotzdem noch reduzieren willst, sieh dir ramlog an
    http://www.tremende.com/ramlog/
    ich weiß nicht ob das unter jessie noch funktioniert, ich kenne es nur von den armbian-Wheezy-Images für den Cubietruck, aber das hat dafür gesorgt, dass alles statt auf die Festplatte/SD-Karte in ein tmpfs geloggt wird, aber nachdem da eben durchaus wichtige Dinge dabei sind, hat es die Logs beim Herunterfahren wieder auf die Festplatte/SD-Karte kopiert.


  • Unter jessie liegt /var/run bereits von Haus aus auf einem tmpfs, der fstab-Eintrag stört also nur (wie man sieht).


    Ok, das wurde mir dank rpi444 jetzt auch klar. Stimmt, /var/run ist schon auf tmpfs. Fragt sich nur, wo das definiert ist.
    Die manpage sagt aus, dass sich Einträge in fstab NICHT beissen:

    Zitat


    /run Previously configured using RAMRUN in /etc/default/rcS, /run is now always mounted as a ram file system
    (tmpfs). The size of the tmpfs can be controlled using TMPFS_SIZE and RUN_SIZE. If desired, the
    defaults may also be overridden with an entry in in /etc/fstab, for example:

    tmpfs /run tmpfs nodev,nosuid,size=10%,mode=755 0 0


    Sehe ich das richtig, dass tmpfs keine anderen Pfade außer /run, /run/lock, /run/shm und /tmp unterstützt? Dann kann ich damit /var/log nicht hinlegen, oder? Nur via Symlink.... :baeh2:

    Dein Vorschlag, den Syslog zu deaktivieren ist für mich ein absolutes No-Go! Gerade die Loginformationen sind IMMER und stets wichtig- die möchte ich immer geschrieben wissen! Deshalb ist mein rsyslog hier ja auch so konfiguriert, dass er zusätzlich auf einen zentralen Syslog-Server schreibt. ISt der systemd unabhängig vom syslog logging? Wer hat sich das denn wieder ausgedacht :X ?
    Kann der systemd auch auf einen remote syslog loggen? Wenn ja, wie?

    Zitat

    Wenn du die Schreibzugriffe auf /var/log trotzdem noch reduzieren willst, sieh dir ramlog an

    das klingt auch nicht schlecht. Mal sehen.

    Also, noch jemand Tips, wie man den systemd bändigen kann? :fies:

    /KNEBB

  • Das alte Verhalten, das in der /etc/default/rcS konfiguriert wurde kenne ich, aber ich dachte eigentlich, dass fstab-Einträge dafür inzwischen keine Idee mehr sind…

    Ein tmpfs kann man grundsätzlich überall mounten wo man will, es ist nur nicht überall sinnvoll. ramlog macht ja auch nichts anderes als unter /var/log ein tmpfs zu mounten, nur trifft es vorher eben ein paar notwendige Vorkehrungen.

    Bei systemd nimmt das journal erst einmal alle Meldungen entgegen und zeichnet sie je nach Konfiguration dauerhaft in /var/log/journal (standardmäßig wenn das Verzeichnis existiert) oder eben nur so lange das System läuft in den diversen tmpfs auf (/var/run/systemd/journal für die systemweiten Dinge und /var/run/user/[User-ID]/journal für die benutzerspezifischen), leitet sie aber auch (entsprechend der Konfiguration) an die Konsole und die klassischen syslog-Dienste weiter.
    Das Loggen über das Netzwerk beherrscht das systemd-journal meines Wissens auch, allerdings habe ich keine Ahnung wie man das konfiguriert.


  • , dass fstab-Einträge dafür inzwischen keine Idee mehr sind…


    Was meinst Du damit? das die /etc/fstab keine Berechtigung mehr hat?

    Zitat

    Ein tmpfs kann man grundsätzlich überall mounten wo man will, es ist nur nicht überall sinnvol


    Kann man vielleicht im laufenden System- aber beim Boot wohl nur die angegebenen Pfade...also nicht /var/log?


    Bei systemd nimmt das journal [...] leitet sie aber auch (entsprechend der Konfiguration) an die Konsole und die klassischen syslog-Dienste weiter.[/quote]
    Und wie kann ich das überprüfen, ob er alles an syslog weiterleitet?

    Zitat

    Das Loggen über das Netzwerk beherrscht das systemd-journal meines Wissens auch, allerdings habe ich keine Ahnung wie man das konfiguriert.


    Dolles Ding, ehrlich. Ich mag systemd nicht. Es gab mal die Linux-Philosophie, dass eine Aufgabe von einem Werkzeug erfüllt wird. Aber nicht ein Riesenmonster für alles :mad_GREEN:


    Jetzt bin ich aber immer noch nicht weiter. syslog ausschalten fällt aus. Der darf aber gerne in ein tmpfs oder ramdisk schreiben. Nur: wie konfiguriere ich denn eine Ramdisk/ tmpfs für /var/log mit dem aktuellen Raspbian (und systemd)?

    Grüße

    /KNEBB
    Automatisch zusammengefügt:
    Update:
    Wenn ich nur die Zeile mit /var/log in der /etc/fstab lasse, funktioniert das Ganze! :bravo2:

    Also wohl gelöst- /var/run ist sowieso schon tmpfs und nun auch /var/log. Prima. :thumbs1:

    Einen cronjob, der mir /var/log regelmäßig irgendwohin kopiert, brauche ich nicht- das übernimmt die Datensicherung einmal täglich :)

    Jetzt steht einem 24/7 Betrieb mit dem Pi nichts mehr entgegen :D

    Einmal editiert, zuletzt von knebb (18. März 2016 um 17:18)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!