Dateisystemcheck
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt für unter Ubuntu übliche Typen von Dateisystemen[3] wie beispielsweise ext2/3/4 oder XFS die beim Systemstart erfolgende automatische Überprüfung auf interne Fehler und ggf. Reparatur gefundener Fehler. Für bei Windows übliche Typen siehe Artikel: Windows-Partitionen unter Linux
Für Dateisysteme des Typs ext4 (Standard unter Ubuntu], ext3 oder XFS kann ein Dateisystemcheck durchgeführt werden, um sicherzustellen, dass das Dateisystem keine Fehler enthält. Diese Prozedur ähnelt dem Systemcheck, den Windows nach einem nicht ordnungsgemäßen Beenden des Systems durchführt.
Dieser Artikel legt den Fokus auf die reine Diagnose eines defekten Dateisystems. Die wichtigen Aspekte, wie man ein defektes Dateisystem heilen kann werden nicht hier, sondern anderen Stellen thematisiert:
Reparatur mit fsck: → Hinweise dazu
Hinweis:
Im folgenden Text wird zur Identifizierung des zu prüfenden Dateisystems stets die Gerätedatei /dev/sda99 verwendet. Diese Angabe ist jeweils durch die im Einzelfall zutreffende Bezeichnung zu ersetzen. Die kann auch ganz anders lauten, z.B. /dev/nvme9n1p99, wenn es sich um eine NVME-SSD handelt. Weitere Informationen liefert der Artikel Datenträger.
Experten-Info:
Wenn das Dateisystem nicht direkt auf der Hardware, sondern in einer regulären Datei in einem anderen Dateisystem abgelegt ist, kann man die meisten Befehle aus diesem Artikel trotzdem anwenden. Man muss dann eben nur statt einer Gerätedatei die reguläre Datei angeben.
Man kann auch, z.B. wenn in einem Image eines Datenträgers mehrere Partitionen existieren, sich mit dem Befehl losetup
für die Datei oder einen Teil aus der Datei eine Gerätedatei wie /dev/loop99 erstellen und diese verwenden.
Wann wird ein Dateisystemcheck durchgeführt?¶
Ab Ubuntu 12.04 führt Ubuntu standardmäßig keinen automatischen periodischen Dateisystemcheck mehr durch. Man kann aber mit den in diesem Artikel beschriebenen Methoden einen periodischen Dateisystemcheck konfigurieren.
Wird, z.B. beim Herunterfahren des Rechners, das Dateisystem[3] nicht sauber ausgehängt, wird das "dirty bit" gesetzt, welches eine automatische Überprüfung des Dateisystems bei der nächsten Einbindung, z.B. beim Neustart, erzwingt. Dieser Mechanismus ist bei Ubuntu standardmäßig immer aktiviert. Eine laufende Prüfung sollte man Durchlaufen lassen und nicht durch einem Druck auf Strg + C abbrechen.
Für manche Dateisysteme, jedenfalls bei ext, kann man im Dateisystem selbst einstellen, wann automatisch periodisch ein Dateisystemcheck durchgeführt wird. Möglich sind, auch in Kombination, automatische Checks nach einer bestimmten Anzahl von Einbindungen und nach Ablauf einer Zeitperiode.
⚓︎
Bei allen Dateisystemen, welche über die Datei /etc/fstab beim Systemstart automatisch eingebunden werden, kann man als Systemverwalter[4] mit einem Editor[2] in eben dieser Datei im 6. Feld (pass) durch Eintrag von 1
oder 2
festlegen, dass dieses Dateisystem regelmäßig geprüft werden soll. Ein Eintrag von 0
oder auch ein fehlender Wert verhindert dies.
Automatik¶
Generell muss in der Datei fstab die Überprüfung angefordert werden, wie vorstehend beschrieben.
Zusätzlich müssen im Dateisystem spezielle Parameter konfiguriert werden, dabei hängen die Details ab vom Typ des Dateisystems, wie anschließend beschrieben.
Konfiguration für ext¶
Die aktuelle Einstellung kann man auf einer Kommandozeile[1] mit Hilfe des Programms tune2fs abfragen und ändern. Das Programm ist unter Ubuntu standardmäßig installiert und benötigt erweitere Rechte[3].
Achtung!
Mit dem Programm tune2fs
kann man die Funktionsweise seines Dateisystems erheblich ändern und es bei ungeschickter Anwendung auch zerstören.
Tabelle 1: Ausgewählte Optionen für tune2fs | |
Option | Erklärung |
-l | Listet alle Einstellungen für dieses Dateisystem auf. |
-c -1 -c 0 | Deaktiviert die automatische Prüfung nach einer Anzahl von Einhängungen. |
-c N | N steht für eine positive ganze Zahl für den Wert des Parameters max-mount-count (Anzeige: "Maximum mount counts"). Die Prüfung erfolgt zukünftig automatisch bei der N-ten Einhängung. |
-c random | Wie vorstehend, der Wert N wird aber einmalig zufällig aus dem Bereich 20 bis 40 gewählt. |
-i 0 | Deaktiviert die automatische Prüfung nach Zeitablauf. |
-i PERIODE | Aktiviert die automatische Prüfung nach Zeitablauf. PERIODE ist eine positive ganze Zahl mit einem angehängten Buchstaben d (für Tage), w (für Wochen) oder m (für Monate) für den Parameter interval-between-checks. |
-C M | Verfälscht den Wert des Parameters mount-count (Anzeige: "Mount count") durch Setzen auf M, eine positive ganze Zahl. Dieser Parameter zählt normalerweise die Einhängungen ohne Prüfung und wird nach einer Prüfung auf 0 gesetzt. |
-T Z | Verfälscht den Wert des Parameters time-last-checked (Anzeige: "Last checked") durch Setzen auf Z, eine Ziffernfolge mit den Werten für Jahr, Monat, Tag, Stunde, Minute, Sekunde ohne Trennzeichen, z.B 2025022318 für den 23.2.2025 um 18 Uhr. |
Die für diesen Artikel relevanten Parameter im Dateisystem sind:
Mount count: Anzahl der tatsächlich vollzogenen Einbindungen dieses Dateisystems, sofern man diese Zahl niemals selbst gesetzt hat.
Maximum mount count: Anzahl der Einbindungen, bei denen kein automatischer Dateisystemcheck erfolgt.
Last checked: Zeitpunkt der letzten tatsächlich durchgeführten Prüfung, unabhängig von deren Auslösegrund, sofern man diese Angabe niemals selbst gesetzt hat.
Check interval: Maximal zulässiger Zeitraum ohne Prüfung.
Man kann die aus der Ausgabe von "tune2fs -l
" heraus filtern:
sudo tune2fs -l /dev/sda99 | grep -e 'ount count' -e interval -e checked
Beispielausgabe:
Mount count: 212 Maximum mount count: -1 Last checked: Sun Oct 6 09:22:21 2019 Check interval: 0 (<none>)
Wenn man
0 < max-mount-count ≤ mount-count
oder0 < interval-between-checks ≤ jetzt - time-last-checked
einstellt, erfolgt bei der nächsten Einbindung eine Prüfung.
Prüfung nach Anzahl Einhängungen¶
Abfrage:
sudo tune2fs -l /dev/sda99 | grep 'ount count'
Die
-1
in der Zeile "Maximum mount count" bedeutet, dass eine automatische Prüfung nach einer bestimmten Anzahl von Einhängungen deaktiviert ist.Mit der Option
-cN
kann man die automatische Prüfung bei Systemstart nach N (hier beispielhaft25
) Einhängungen aktivieren:sudo tune2fs -c 25 /dev/sda99
Wieder deaktivieren kann man die automatische Prüfung durch Angabe von
-1
oder0
für die Anzahl:sudo tune2fs -c -1 /dev/sda99
Zeitabhängige Prüfung¶
Abfrage:
sudo tune2fs -l /dev/sda99 | grep -e interval -e checked
Der Wert
0
in der ZeileCheck interval
bedeutet, dass keine zeitabhängige Prüfung eingerichtet ist.Zur Festlegung eines Zeitintervalls dient die Option
-i
:sudo tune2fs sudo tune2fs -i 3m /dev/sda99
Damit würde im Beispiel ein Intervall von 3 Monaten festgesetzt.
Zur Deaktivierung gibt man als Periode
0
an:sudo tune2fs sudo tune2fs -i 0 /dev/sda99
Konfiguration für Windows-Dateisystem¶
Bei Dateisystemen der Typen FAT und exFAT kann zwar in der Datei fstab eine automatische Prüfung angefordert werden, jedoch fehlen den Dateisystemen Parameter zur Steuerung; daher kann über diesen Mechanismus keine automatische Prüfung erfolgen. → Spezielle Artikel zu Windows-Dateisystemen
Bei Dateisystemen vom Typ NTFS ist grundsätzlich eine ähnliche Behandlung wie oben für ext beschrieben möglich, siehe dazu die speziellen Artikel über dieses Dateisystem.
Konfiguration für XFS, Btrfs u.a.¶
Ausbaufähige Anleitung
Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung:
Periodische Prüfung einrichten¶
Besitzt das System mehrere zu prüfenden Partitionen (z.B. eine Root- und eine Home-Partitionen) kann es gegebenenfalls sinnvoll sein, die Werte für beiden Partitionen so zu wählen, dass die Prüfung möglichst selten gleichzeitig erfolgt. Ein Grund dafür wäre, dass je nach Größe der Partition der Prüfvorgang länger dauern kann und den Systemstart entsprechend verzögert. Hier bieten sich Primzahlen als max-mount-count an, um zu vermeiden, dass mehrere Prüfungen beim Systemstart zusammenfallen. Beispiel: Partition sda99 Check nach dem 43. und Partition sda66 nach dem 47. Einhängevorgängen → gemeinsame, „zeitintensive“ Prüfung erst nach 2021 Einhängevorgängen.
Automatik übersteuern¶
Bei eingerichteter Automatik besteht gelegentlich der Wunsch, diese zu beeinflussen, beispielsweise sie einmalig oder dauerhaft auszuschalten oder eine beim nächsten Start anstehende Prüfung zu überspringen oder auch eine Prüfung zu erzwingen.
Die Automatik wird realisiert durch Units aus der Familie systemd-fsck, die systemd beim Systemstart automatisch nach den Angaben in der Datei fstab einrichtet. Diese Units und damit die Automatik kann man beeinflussen über die Parameter fsck.mode
und fsck.repair
für die Kommandozeile des Kernels lt. Tabelle 2.
Tabelle 2: Startparameter für systemd-fsck | |
Parameter | Erklärung |
fsck.mode=auto | Vorgabe. Die Automatik entscheidet, ob geprüft wird oder nicht. |
fsck.mode=force | Es erfolgen Prüfungen unabhängig von der Automatik. |
fsck.mode=skip | Es erfolgen keinerlei Prüfungen. |
fsck.repair=preen | Vorgabe. Wenn bei einer Prüfung Fehler gefunden wurden, die automatisch korrigierbar sind, dann werden sie auch korrigiert. |
fsck.repair=yes | Wenn bei einer Prüfung Fehler gefunden wurden, dann erfolgt ein Reparaturlauf durch fsck. Dabei werden alle Fragen von fsck mit "yes" beantwortet. |
fsck.repair=no | Wenn bei einer Prüfung Fehler gefunden wurden, dann erfolgt ein Reparaturlauf durch fsck. Dabei werden alle Fragen von fsck mit "no" beantwortet. |
Check erzwingen¶
Wenn einmal bei eingerichteter Automatik ein Dateisystemcheck außer der Reihe erforderlich sein sollte, kann man bei einer nicht lebenswichtigen Partition manuell einen solchen ausführen.
Bei einer lebenswichtigen Partition, die z.B. das Root-Dateisystem enthält, kann man ein Wartungssystem z.B. von DVD oder USB-Stick mit anderem Root-Dateisystem booten. In diesem ist das zu prüfende Dateisystem nicht lebenswichtig und kann daher wie vorstehend behandelt werden.
Man kann auch neu booten und dabei in GRUB 2 den Starteintrag editieren, indem man den Startparametern die Option
fsck.mode=force
hinzufügt. Dies betrifft dann allerdings nicht selektiv ein Dateisystem, sondern alle.Man kann selektiv für ein Dateisystem einen Dateisystemcheck beim nächsten Neustart erzwingen, indem man die maximale Anzahl von Einbindungen auf
1
setzt. Bei Dateisystemen vom Typ ext geht das wie oben beschrieben (natürlich mit dem Wert1
anstatt25
). Nach dem Neustart setzt man den Wert wieder auf den früheren, den man sich gemerkt hat.
⚓︎ Da letztlich die Auslösung eines Checks auf einem Vergleich der Werte im Dateisystem für max-mount-count und mount-count bzw. interval-between-checks und time-last-checked beruht, kann man auch mount-count bzw. time-last-checked ändern, um die Bedingung zur Auslösung eines Checks zu erfüllen. Man sollte dies nicht tun, da der Aufwand dafür nicht geringer als bei den vorstehend beschriebenen Methoden ist, man aber Information zum Dateisystem verliert.
Check einmalig verhindern¶
Einen „drohenden“ Dateisystemcheck kann man beim Neustart verhindern: Dazu ändert man in GRUB 2 den Starteintrag, indem man den Startparametern die Option
fsck.mode=skip
hinzufügt. Dies betrifft dann allerdings nicht selektiv ein Dateisystem, sondern alle.Man kann auch vor dem Neustart im Dateisystem die Werte der Parameter max-mount-count und interval-between-checks beide auf
0
setzt. Bei Dateisystemen vom Typ ext geht das wie oben beschrieben. Nach dem Neustart setzt man die Werte wieder auf die früheren, die man sich gemerkt hat.
Auch hier führen grundsätzlich Änderungen der Werte für mount-count bzw. time-last-checked zum Ziel, sind aber wie vorstehend beschrieben nicht sinnvoll.
Check dauerhaft ausschalten¶
Achtung!
Dateisystemchecks beim Neustart mag man zwar als nervig empfinden, sie schützen aber vor inkonsistenten Dateisystemen und halten das System intakt. Ihre permanente Deaktivierung ist nur dann zu empfehlen, wenn eine regelmäßige Überprüfung durch andere Maßnahmen sichergestellt wird.
Es gibt zwei Wege, den Dateisystemcheck immer zu deaktivieren, also auch bei gesetztem "dirty bit":
Man kann selektiv für ein Dateisystem dauerhaft die Checks deaktivieren, indem man in der Datei fstab die Automatik entfernt.
Man kann für alle Dateisysteme dauerhaft die Checks deaktivieren, indem man die Bootoption
fsck.mode=skip
in die Standard-Bootoptionen aufnimmt. Bei Verwendung des Bootmanagers GRUB 2 (Standard bei Ubuntu) editiert[2] man hierzu die Datei /etc/default/grub mit erweiterten Rechten[4] und generiert die Startdatei für GRUB neu.
Manuelle Prüfung¶
Man kann die Prüfung auch sowohl für normale als auch verschlüsselte Partitionen manuell im Terminal[1] anstoßen.
Hinweis:
Generell sollte während der Prüfung die Partition nicht eingehängt sein, obwohl manche Typen von Dateisystemen das erlauben. Unter bestimmten Betriebsumständen, z.B. bei der Root-Partition oder einer verschlüsselten Partition, muss sogar diese unabhängig vom Typ während der Prüfung ausgehängt sein; d.h. zum Prüfen der Root-Partition muss man in ein Wartungssystem booten.
Die Prüfung und ggf. anschließende Reparatur erfolgt mit dem allgemeinen Befehl fsck
, der zu jeder Standardinstallation gehört. Die verschiedenen Dateisysteme[3] bringen spezielle Prüfroutinen mit, beispielsweise fsck.ext4
für ext4, die von fsck
automatisch aufgerufen werden, sofern es den Typ des zu prüfenden Dateisystems selbst erkennen kann. Es gibt daher beim Aufruf von fsck
sowohl einige allgemein gültige Optionen, aber auch viele vom Typ des zu prüfenden Dateisystems abhängige spezielle und unterschiedlich benannte Optionen, über die man sich in der jeweiligen Manpage informieren sollte.
Zum Aufruf von fsck
und fsck.*
benötigt man erweiterte Rechte[4].
Normale Partition¶
Im Terminal[1] kann das Dateisystem einer Partition mit dem folgenden Kommando überprüft werden:
sudo fsck /dev/sda99
fsck
ermittelt selbstständig das Dateisystem und führt dann das passende Programm wie fsck.ext4
, fsck.ext3
oder fsck.xfs
aus. Für die eigentliche oder auch automatische Reparatur müssen je nach Dateisystemtyp Optionen hinzugefügt werden. Welche dies sind, wird beim Ergebnis der Überprüfung angezeigt. Der Test kann dann mit diesen Optionen wiederholt werden. Eine Übersicht über die Optionen findet man in der jeweiligen Manpage zu den Befehlen.
Verschlüsselte Partition¶
Achtung!
Eine verschlüsselte Partition darf man niemals mit fsck
bearbeiten!
Verschlüsselte Partitionen müssen entschlüsselt werden ohne sie einzuhängen, anschließend kann fsck auf die zugewiesene Gerätedatei im Device Mapper angewandt werden.
Die Anforderung, dass die mit LUKS verschlüsselte Partition nicht automatisch eingehängt wird, kann man bei einer externen Festplatte z.B. dadurch erreichen, indem man bei der Passwortabfrage auf "Abbrechen" klickt.
Folgender Befehl entschlüsselt die Partition, ohne sie einzuhängen:
sudo cryptsetup luksOpen /dev/sda99 lukstemp
Die Passphrase zum Entschlüsseln wird abgefragt.
Die weitere Vorgehensweise hängt davon ab, ob man im verschlüsselten Bereich direkt nur ein einziges Dateisystem angelegt hat oder den Bereich mit LVM unterteilt hat.
Wurde der Name des logischen Volumens vergessen, lässt man sich diese anzeigen:
sudo lvs
Arbeitet man ohne LVM, dann ist im nächsten Befehl anstelle „NameDesLogischenVolumes“ einfach
lukstemp
zu verwenden.
Nun kann man mit
sudo fsck.ext4 -pfv -C0 /dev/mapper/NameDesLogischenVolumes
die Überprüfung mit automatischer Reparatur starten. Der Befehl funktioniert so nur für ein Dateisystem vom Typ ext4 – in anderen Fällen muss man sowohl
ext4
als auch die Optionen anpassen.Entschlüsselte Partition wieder verschließen:
sudo cryptsetup close lukstemp
Links¶
Interne Artikel
Spezielle Artikel zu Windows-Dateisystemen
Externe Verweise