Man lernt nie aus … Partition in fstab doppelt einbinden kann Probleme beim Start machen

3 Kommentare Autor: Jürgen (jdo)

Gestern einen Anruf bekommen, dass der Server nach einem Stromausfall nicht mehr hochfährt. Der Startbildschirm zeigt an, dass bei der Überprüfung von /dev/sdb1 (zweite Festplatte -> backup) schwere Fehler aufgetreten sind. Der erste Gedanke war natürlich – oh, Platte geschossen.

Also hingefahren und den Patienten untersucht. smartctl -a /dev/sdb (aus den smartmontools) hat ergeben, dass der Gesundheitszustand der Festplatte ausgezeichnet ist – kein einziger Fehler. /dev/sdb1 hat sich auch wunderbar in das Backup-Verzeichnis einbinden lassen. Alles schien zu funktionieren. Ein e2fsck /dev/sdb1 hat ergeben, dass alles clean sei. bei einem Neustart wieder das selbe Problem.

Ein bisschen gekruscht und dann auf den Fehler gekommen. Auf dem Server läuft eine kleine Zeitmaschine und das Backup-Verzeichnis ist am sichersten Platz des Servers unter /root/backup, damit keiner darin rumpfuschen kann. Dort befinden sich 7 komprimierte Archive und man könnte Dateien bis zu einer Woche alt wieder herstellen.

Damit die Leute mich nicht jedesmal anrufen müssen, habe ich die Partition ein zweites Mal unter /media/backup/ als read-only eingebunden und dieses via Samba zur Verfügung gestellt. Sollte eine Datei aus dem Backup gebraucht werden, kann der Chef das Archiv auf den lokalen Rechner kopieren, es dort auspacken und sich die entsprechende Datei wieder herstellen.

Durch den Stromausfall wurde der Rechner aber einfach abgeschossen und das System wollte die Platten beim Hochfahren prüfen. Ist /dev/sdb1 nur einmal eingebunden, kann das System anscheinend damit umgehen und hängt es entsprechend aus. Ist es aber über die Datei /etc/fstab doppelt in verschiedenen Verzeichnissen gemountet, wird der Fehler ausgegeben, dass sich die Partition in Benutzung befindet. Hatte ich nicht gewusst und nun bin ich schlauer. ich bin einfach davon ausgegangen

Als Lösung habe ich nun das als read-only eingebundene Verzeichnis aus der fstab rausgenommen. Da der ro-Zugriff auf die Backups weiter gegeben sein soll, lasse ich /dev/sdb1 nun über die Datei /etc/rc.local einbinden. rc.local wird nach den ganzen anderen init-Scripten ausgeführt und kommt mir dann beim Startprozess nicht in die Quere.

Ich weiß nicht, ob es dafür eine schönere Lösung gibt, aber diese scheint zu funktionieren. Nun ließ sich der Server wieder hochfahren, hat sein /dev/sdb1 ohne zu meckern geprüft und sollte auch in Zukunft friedlich sein. Man lernt eben nie aus: 2x die gleiche Partition in /etc/fstab einbinden -> kann Probleme machen.




 Alle Kommentare als Feed abonnieren

3 Kommentare zu “Man lernt nie aus … Partition in fstab doppelt einbinden kann Probleme beim Start machen”

  1. SpiritOfTux says:

    Step 1: smartctl -a /dev/sdb; OK
    Step 2: filesystem-check /dev/sd{a,b,c..}{1,2,3,...} OK

    fstab wird durch den Befehl mount verwendet, welche Dateisysteme auf welchen Mount-Punkte zugeordnet werden, Verwendung beim Start des Systems.

    mtab wird verwendet, um die verwendeten Dateisysteme zu halten und zu verfolgen, welche Dateisysteme gerade montiert sind.

    durch den crash bleibt die alte mtab erhalten was zu Filesysteme in use or all ready mounted führt,

    Step 3:
    ein rename mtab mtab.crash ausführen und dann ein reboot die mtab wird wieder beim restart erzeugt.

    Gruß
    SpiritOfTux

  2. Michael says:

    Etwas zweimal mounten tönt für mich nach "mount --(r)bind". Aus der man-page: "After this call the same contents is accessible in two places."
    Ich bin da aber kein Experte und weiss nicht inwiefern dies in deinem Fall hilft...

    • Thalhammer says:

      Ja bind ist schon der richtige weg, und beweitem sauberer als eine Doppelte Einbindung der Partition, auch wenn das durch das read only des zweiten mounts keine ernsthaften Probleme verursacht.
      Wie sich aber an diesem Problem erkennen lässt ist es nicht der normale Weg.
      Besser währe es das verzeichnis in /root/backup als rw zu mounten und über einen Bind eintrag nochmal in /media/backup als ro, etwa so:

      /dev/sdb1 /root/backup ext4 default 0 0
      /root/backup /media/backup none ro,bind 0 0

      Das bindet /dev/sdb1 als ext4 dateisystem in /root/backup ein (ext4 je nach verwendung anpassen) und anschliesend /root/backup (also indirekt /dev/sdb1) nochmal in /media/backup als read only.

      Mit freundlich Grüßen Thalhammer