Beschreibung: Prüfungskandidaten sollten in der Lage sein, die Integrität von Dateisystemen zu prüfen, freien Speicherplatz und Inodes zu überwachen und einfache Dateisystemprobleme zu beheben. Dieses Lernziel beinhaltet die Kommandos, die für die Verwaltung eines Standard-Dateisystems notwendig sind sowie die zusätzlichen Notwendigkeiten eines Journaling Dateisystems.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Dieser Bereich hat eine verhältnismäßig hohe Bewertung und es kommen in der LPI 101 Prüfung wirklich einige Fragen zu diesem Thema an die Reihe. Zunächst einmal ist es notwendig, die Architektur der Unix-Dateisysteme zu verstehen, das wurde bereits auf den letzten Seiten erklärt. Ein großer Schwerpunkt liegt im Verständnis des I-Node-Systems. So ist z.B. eine häufige Fehlerursache das Fehlen von freien I-Nodes. Obwohl auf einer Platte noch haufenweise Megabytes frei wären kann keine Datei mehr angelegt werden. Daher sind Techniken notwendig, die das Erkennen solcher Probleme ermöglichen.
Grundsätzlich ist jedes dieser Programme dafür gedacht, die Konsistenz eines Dateisystems zu überprüfen und gegebenenfalls zu reparieren.
Die Anwendung des fsck-Programms sollte immer nur auf nicht gemounteten Dateisystemen stattfinden, da sonst die Gefahr droht, daß ein Schreibzugriff eines anderen Prozesses (wie etwa die ständige Synchronisation) Veränderungen vornimmt, die den Check bzw. die Reparatur durcheinanderbringen und so den Schaden nur vergrößern. Das ist allerdings ein Problem beim Überprüfen des Wurzel-Dateisystems, da es nicht so einfach möglich ist, es zu checken, ohne es zu mounten. In diesem Fall sollte grundsätzlich in den Single-User-Mode gewechselt werden und das Wurzeldateisystem sollte Read-Only gemountet sein!
Beim Systemstart wird das Programm fsck mit der Option -A aufgerufen, was das Programm veranlasst, alle Dateisysteme zu überprüfen, die in /etc/fstab aufgelistet sind. Die Reihenfolge ist dabei grundsätzlich durch die Angabe des sechsten Feldes innerhalb der /etc/fstab Datei geklärt. Das Wurzeldateisystem wird zuerst überprüft und dann werden entsprechend den Nummern in diesem sechsten Feld (fs_passno) die anderen Dateisysteme der Reihe nach abgearbeitet. Wenn mehrere solcher Systeme die gleiche Nummer haben, dann wird versucht, sie gleichzeitig zu bearbeiten.
Soll ein Dateisystem manuell (nicht beim Systemstart) überprüft werden, so gibt es ein paar Dinge zu bedenken. Neben der Tatsache, die oben schon erwähnt wurde, daß das System nicht gemountet sein sollte, gibt es ein paar zu bemerkende Optionsschalter, die bekannt sein müssen.
Die grundsätzliche Aufrufform ist
fsck Optionen DateisystemUm das Dateisystem jetzt manuell zu überprüfen, sollten zumindestens die wichtigsten Optionen bekannt sein, sonst kann es schlimmstenfalls dazu kommen, daß es gar nicht überprüft wird. Die folgenden Optionen beziehen sich hauptsächlich auf das EXT2 Dateisystem, das im Augenblick sicherlich der Standard unter Linux ist.
Die Angabe des Dateisystems erfolgt in Form der entsprechenden Gerätedatei. Ein manueller Aufruf könnte also z.B. so aussehen:
e2fsck -f /dev/hda7Damit würde das Dateisystem auf der siebten Partition (der dritten logischen Partition innerhalb der erweiterten Partition) des Masters des ersten IDE-Kanals zwingend (-f) überprüft.
Die Überprüfung und Reparatur von Journaling-Dateisystemen läuft grundsätzlich anders ab, als die von herkömmlichen Dateisystemen. Hier wird - im Falle einer Inkonsistenz - der Transaction-Log - eben das Journal - zurückverfolgt und alle Transaktionen rückgängig gemacht, bis das System wieder konsistent ist. Dieser Vorgang ist wesentlich schneller, als der bei einem traditionellen Dateisystem, da nicht die ganze Platte überprüft werden muß.
Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda2 2071328 1051656 914448 53% / /dev/hda5 3099108 1737096 1204580 59% /usr /dev/hda6 2071296 767708 1198364 39% /opt /dev/hda7 2071296 215212 1750860 11% /homeAus dieser Ausgabe ist also zu entnehmen, welche Dateisysteme gerade gemountet sind, wieviel 1 Kilobyte-Blocks insgesammt zur Verfügung stehen (1k-blocks), wieviel davon belegt sind (Used), wieviel also noch frei sind (Available), die prozentuale Auslastung - also wieviel Prozent sind belegt (Use%) und schließlich der Mountpoint, an dem das Dateisystem eingehängt ist.
Wird stattdessen der Befehl df mit einem bestimmten Dateisystem aufgerufen, entweder durch die Nennung des Mountpoints oder durch die Angabe der entsprechenden Gerätedatei, so werden nur die Angaben über dieses Dateisystem ausgegeben. Hätten wir also entweder
df /usroder
df /dev/hda5eingegeben, so wäre es zur folgenden Ausgabe gekommen:
Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda5 3099108 1737096 1204580 59% /usrEin wichtiger Parameter für df ist noch die Angabe -i oder --inodes. Wird df mit dieser Option aufgerufen, so werden statt den Angaben über die Kilobyte-Blöcke jetzt Angaben über die I-Nodes gemacht. die Ausgabe sähe jetzt also folgendermaßen aus:
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/hda2 263296 16769 246527 6% / /dev/hda5 393600 100095 293505 25% /usr /dev/hda6 263296 32595 230701 12% /opt /dev/hda7 263296 11088 252208 4% /homeJetzt sehen wir also die Anzahl aller Inodes, die Anzahl der benutzten Inodes (IUsed), die Anzahl der freien Inodes (IFree) und wieder die prozentuale Auslastung (IUse%).
Diese Angaben sind auserordentlich wichtig, weil - wie oben schon erwähnt - es dazu kommen kann, daß zwar noch reichlich Platz in Kilobyte auf einer Partition sein kann, jedoch keine Inodes mehr frei sind, weil sehr viele, sehr kleine Dateien darauf gespeichert sind.
Auch hier gibt es einen wichtigen Hinweis für moderne Journaling-Dateisysteme. Diese Systeme speichern ihre Daten in einer völlig anderen Struktur ab, in sogenannten B-Bäumen. Das hat zur Folge, daß solche Systeme keinen reservierten Platz für die Inodes aufweisen, also Inodes dynamisch anlegen können, wenn sie benötigt werden. Aus diesem Grund zeigt df -i bei solchen Systemen keine realen Werte für die Inodes an.
Das Programm ist in der Regel nur sinnvoll mit Kommandozeilenparametern anwendbar, weil es sonst alle Dateien und Verzeichnisse zeigt und die Ausgabe so etwas unübersichtlich wird. Der wichtigste Optionsschalter ist -s, der dafür sorgt, daß nur die Summe der verwendeten Bytes aller übergebenen Verzeichnisse ausgibt. So ist schnell feststellbar, wieviel Platz ein Verzeichnis mit allen darin enthaltenen Dateien und Unterverzeichnissen benötigt. Der Aufruf
du -s /optführt dann nur noch zu einer Ausgabe, die etwa folgendermaßen aussehen könnte:
767708 /optDie Angaben erfolgen normalerweise in Kilobyte, die obige Ausgabe besagt also, daß 760 Megabyte im /opt-Verzeichnis belegt sind. Wenn wir jetzt wissen wollen, wie sich diese Summe zusammensetzt, dann können wir einfach alle Verzeichnisse mitangeben, indem wir schreiben:
du -s /opt/*und bekommen jetzt eine Auflistung wie folgt:
20 /opt/Office51 20 /opt/fsuite 88556 /opt/gnome 157568 /opt/kde 184220 /opt/kde2 16 /opt/lost+found 31372 /opt/netscape 20924 /opt/netscape6 4 /opt/nps 258728 /opt/office52 4 /opt/oracle 8 /opt/skyrix 9476 /opt/slab 11764 /opt/tfd 8 /opt/tngfw 4 /opt/virtuoso-lite 5012 /opt/wwwJetzt lässt sich also schon ziemlich genau sagen, wer hier den vielen Platz braucht...