AA-pflaster-taste_PO19055.jpg

© Gernot Krautberger, Fotolia

Dateisysteme verarzten mit E2fsprogs

Inode in Not

Mit den richtigen Werkzeugen fühlen Sie Ihrem Dateisystem auf den Zahn, beseitigen Inkonsistenzen und restaurieren beschädigte Dateien.

Dateisysteme verhalten sich in freier Wildbahn eher unauffällig. Sie rücken schlagartig erst dann in den Fokus des Benutzers, wenn sie den Geist aufgeben, beim Booten plötzlich stundenlange Selbsttests durchführen oder den Bootvorgang abbrechen. Einsteiger glauben dann mitunter, ihr Rechner sei gerade dabei, sich selbst zu zerstören – dabei gelten diese Checks als Features und nicht als Bugs (und man kann sie abstellen bzw. ihren Turnus ändern).

Zunächst stellt sich die Frage, wie inkonsistente Dateisysteme überhaupt entstehen. Das von den großen Linux-Distributionen (OpenSuse, Ubuntu, Debian) verwendete Dateisystem Ext3 bringt eine Funktion namens Journaling mit. Die Systeme führen quasi Buch über ihre Transaktionen. Die bestehen aus mehreren Schritten, die zusammenhängen: Beim Anlegen einer Datei werden neue Inodes angelegt, Verzeichnisse zugeordnet, Blöcke auf der Festplatte reserviert, Metadaten geschrieben und einiges mehr. Erst nach dem Abschluss dieser Schritte schreibt Ext3 die Daten vom Journal in das Dateisystem.

Kann Ext3 einen solchen Zyklus nicht abschließen, weil jemand zum Beispiel spontan die Stromversorgung des Rechners kappt, schreibt es die Änderungen später noch einmal vom Journal auf die Platte. So gelangen keine inkonsistenten Daten auf die Festplatte. Zur Pflege des Dateisystems prüfen Distributionen wie Ubuntu und Debian regelmäßig die Konsistenz des Dateisystems. Opensuse verzichtet darauf, überprüft aber bei jedem Bootvorgang ein bestimmtes Flag. Signalisiert das ein nicht korrekt heruntergefahrenes System, startet automatisch eine Dateisystemprüfung via Fsck.

Im Zweifelsfall können Sie eine Wartung aber auch manuell erzwingen, wenn Sie nicht sicher sind, ob das Dateisystem konsistent ist. Standardmäßig hängt Ubuntu 8.10 Dateisysteme beim Auftreten eines Fehlers im Lesemodus ein. Das bewirkt die Option error=remount-ro in der Datei /etc/fstab. Unter Opensuse 11 fährt das Betriebssystem hingegen im Fehlerfall mit dem Mounten fort.

TIPP

Überprüft Ihr Linux bei jedem Booten ausführlich das Dateisystem, trägt daran nicht selten ein falscher Eintrag in der Datei /etc/fstab Schuld. Wenn sich das dort angegebene Dateisystem nicht mounten lässt, startet die Überprüfung automatisch.

Wartungszyklus

Ubuntu 8.10 überprüft das Dateisystem standardmäßig nach 32 Neustarts oder spätestens nach einem halben Jahr, falls der Rechner ständig oder sehr selten läuft. Um vorab nachzusehen, wann es wieder einmal soweit ist, öffnen Sie eine Konsole und geben mount ein. So stellen Sie erstmal fest, welche Partition Sie gerade nutzen. Auf ihr befindet sich auch das Root-Dateisystem (Listing 1). Befindet sich Ihr Home-Verzeichnis auf einer eingehängten externen Partition, verrät Ihnen der Befehl auch, wie diese heißt.

Listing 1
$ mount
/dev/sda6 on / type ext3 (rw,relatime,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
lrm on /lib/modules/2.6.24-23-generic/volatile type tmpfs (rw)
/dev/sda7 on /home/public type ext3 (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw)

Ihre Root-Partition (/) befindet sich vermutlich unter /dev/sdXN, wobei das X für einen zusätzlichen Buchstaben, das N für eine Ziffer steht. Die Partition heißt also beispielsweise sda6 oder sdb4. Wir gehen in den folgenden Beispielen davon aus, dass Ihre Root-Partition auf /dev/sda6 liegt. Geben Sie nun tune2fs -l /dev/sda6 ein, so erhalten Sie als Ausgabe die Informationen im Superblock Ihrer Festplatte (Listing 2).

Tune2fs führen Sie sowohl unter Opensuse als auch unter Ubuntu stets mit Root-Rechten aus. Das Programm gehört zu den E2fsprogs (http://e2fsprogs.sf.net), einer Sammlung von Werkzeugen, die bei der Pflege und Verwaltung des Dateisystems helfen. Das gesuchte Intervall für die Dateisystemprüfung (Check interval) zeigt Listing 2, das aber nur für Ubuntu 8.10 gilt.

Listing 2
# tune2fs -l /dev/sda6
tune2fs 1.40.8 (13-Mar-2008)
Filesystem volume name:   <none>
Last mounted on:          <not available>
[…]
Mount count:              30
Maximum mount count:      32
Last checked:             Sat Jan 31 22:36:57 2009
Check interval:           15552000 (6 months)
Next check after:         Thu Jul 30 23:36:57 2009
[…]

Das Check interval verrät, dass Ubuntu die Festplatte alle 6 Monate (der Wert davor gibt die entsprechende Sekundenzahl an) überprüft. Alternativ wartet die Distribution bis zum 32. Mountvorgang, bevor sie einen Check beginnt (Maximum mount count). Die Angabe hinter Mount count verrät, dass das Dateisystem bis jetzt 30 mal gemountet wurde (die Zahl kann bei Ihnen abweichen). Bei Opensuse lesen Sie an dieser Stelle andere Werte (Listing 3): Es gibt weder ein Prüfintervall, noch eine maximale Anzahl an Mounts, nach der Opensuse das Dateisystem überprüft.

Listing 3
[…]
Mount count:              16
Maximum mount count:      -1
Last checked:             Sat Jan 31 22:36:57 2009
Check interval:           0 (none)
[…]

Wollen Sie nun das Dateisystem beim nächsten Booten prüfen, geben Sie unter Ubuntu tune2fs -C 32 /dev/sda6 ein. Damit setzen Sie den Wert für Mount count auf 32 und erreichen so die maximale Anzahl an Mount-Vorgängen. Nach dem Neustart unterbricht Ubuntu den Bootvorgang: Unter dem Bootsplash erscheinen die folgenden zwei Zeilen, wobei YY% den Fortschritt des Konsistenzchecks zeigt.

Routine check of drives: /dev/sda6 YY%
Press ESC to skip

Mit [Esc] überspringen Sie die Prüfung bei Bedarf: Gemäß Murphy's Law treten die Routinechecks besonders gern genau dann auf, wenn Sie gerade vor vollem Saal eine Präsentation zeigen wollen.

Bei Opensuse setzen Sie zunächst über tune2fs -c 32 /dev/sda6 die maximale Mount-Anzahl auf 32 und forcieren über tune2fs -C 32 /dev/sda6 einen Check beim nächsten Booten. Opensuse 11 verzichtet dann auf den Bootsplash und zeigt den Fortschritt auf der Kommandozeile an. Mit [Strg]+[C] unterbrechen Sie den Prozess.

Reparatur

Weist das Dateisystem tatsächlich Fehler auf, kommt e2fsck zum Einsatz. Diesen Reparaturbefehl dürfen Sie nicht auf ein eingehängtes Root-Dateisystem anwenden, das Sie sonst stark beschädigen könnten. Daher booten Sie den Rechner von einer Live-CD (etwa Ihrer Opensuse- oder Ubuntu-Installations-CD/DVD). Nach dem Hochfahren öffnen Sie eine Konsole und geben folgenden Befehl ein:

$ sudo e2fsck -C0 -p -f -v /dev/sda6

Die Zeile handelt einen Großteil aller Problemfälle bei Konsistenzprüfungen ab. Dank der Option -f überprüfen Sie auch saubere und ausgehängte Dateisysteme, der Schalter -v macht das Kommando redseliger. Über den Parameter -C0 erhalten Sie einen hübschen Fortschrittsbalken für die Aktion, und -p repariert das Dateisystem automatisch und ohne Ihr weiteres Zutun (Abbildung 1).

Abbildung 1: Ein Befehl, sie alle zu prüfen: Mit einer handvoll angehängter Parameter löst E2fsck die meisten auftretenden Inkonsistenzen vollautomatisch auf.

Geben Sie zusätzlich die Option -c an, nutzt die Software das Programm badblocks, um per Read-only-Test defekte Blöcke zu identifizieren und zu markieren. Diese kommen quasi in Quarantäne: Das Dateisystem übergibt sie an einen speziellen "Bad Block Inode" und verwendet sie zukünftig nicht mehr. Der Vorgang kann sich etwas hinziehen. Geben Sie die Option -c doppelt an, erfolgt der Badblocks-Test im nicht-destruktiven Lese-/Schreibmodus (Abbildung 2).

Abbildung 2: Per Badblocks-Option identifiziert E2fsck die schlechten Blöcke auf einer Festplatte und stellt sie unter Quarantäne.

Erscheint nach dem oben genannten Befehl die Fehlermeldung Run fsck MANUALLY, müssen Sie stärkere Geschütze auffahren. Der Befehl sudo e2fsck -f -v -y /dev/sda6 legt nicht zuzuordnende Dateien und Verzeichnisse im Ordner /lost+found ab. Das bedeutet unter Umständen, dass es bereits Dateien und Ordner gibt, die sich nicht mehr im Dateisystem befinden: Sie sollten also spätestens jetzt die wichtigsten Daten sichern. Der Schalter -y sorgt dafür, dass Sie nicht jede einzelne Inode-Verschiebung per Tastendruck absegnen müssen. Da das Tool die Namen der verlorenen Dateien nicht rekonstruieren kann, durchforsten Sie lost+found anschließend am besten mit Konqueror oder Nautilus, die Sie mit Root-Rechten aufrufen. Bei der Identifikation von Dateien hilft ansonsten auch der Befehl file.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Umstieg auf das Ext3-Dateisystem
    Dateisysteme mit Journal erleichtern den Umgang mit Linux: Stürzt der Rechner ab, muss man beim Neustart nicht die langwierige Überprüfung der Dateisysteme mit "fsck" abwarten. Wir helfen bei der Umstellung auf Ext3fs und zeigen auch den Weg zurück.
  • Dateisysteme aufsetzen, konfigurieren und warten mit Bordmitteln
    Mit ein paar einfachen Shell-Befehlen legen Sie die Grundlage für jede moderne Linux-Distribution: das Dateisystem.
  • Festplatten und Dateisysteme
    Wer heute mit einem handelsüblichen Computer arbeitet, verwendet automatisch auch eine Festplatte. Wie die Dateien dort gespeichert werden und welche Möglichkeiten dabei geboten werden, weiß hingegen kaum jemand. Dieser Artikel will etwas Licht ins Dunkel bringen.
  • Dr. Linux
    Komplizierte Organismen, wie Linux-Systeme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.
  • Integrität gespeicherter Daten sicherstellen
    Enthält die Festplatte defekte Speicherblöcke, hilft das beste Backup nichts: Es speichert dann nur fehlerhafte Dateien. Abhilfe schafft regelmäßige Kontrolle.
Kommentare

Infos zur Publikation

LU 08/2016: Multimedia

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...
lidl internetstick für linux mint
rolf meyer, 04.06.2016 14:17, 3 Antworten
hallo zusammen ich benötige eure hilfe habe einen lidl-internetstick möchte ihn auf linux mint i...