14.8 Dateisystem
Linux ist wie eine Zwiebel? Stimmt, aber Sie werden dennoch nicht weinen, wenn Sie sich näher mit dem Aufbau von Linux beschäftigen. Der Zwiebel-Vergleich soll das Schalenmodell verdeutlichen, das wir zur Veranschaulichung von Linux verwenden können.
14.8.1 Aufbau moderner Softwarestrukturen
Sie haben während des Boot-Vorgangs schon Bekanntschaft mit den einzelnen Schichten des Gesamtkunstwerks »Linux« gemacht. Wird ein Programm im System gestartet, so kommuniziert es über einige Ebenen hinweg mit der Hardware. Abbildung 14.6 zeigt den prinzipiellen Aufbau moderner Softwarestrukturen am Beispiel des Betriebssystems Linux.
Abbildung 14.6 Die Softwareschichten des Linux-Systems liegen übereinander wie bei einer Zwiebel.
Um zu verstehen, woran es liegt, wenn ein bestimmtes Programm nicht so läuft, wie Sie möchten, sollten Sie zuerst festzustellen versuchen, welche der obigen Schichten für die Fehlfunktion verantwortlich ist. Ein Beispiel: In den Internet-Newsgroups liest man oft von Linux-Einsteigern, die es geschafft haben, ihr System zum Absturz zu bringen. In 99,9 % aller Fälle ist das System aber gar nicht abgestürzt; lediglich ein Glied der Kette funktioniert nicht mehr: Beispielsweise könnte ein Grafikprogramm den Fenstermanager zum Abstürzen gebracht haben.
Tipp 224: X-Server-Neustart mit der magischen Tastenkombination |
Für einen simplen Neustart des grafischen Systems (X-Server) brauchen Sie nicht das gesamte System zeitaufwendig neu zu starten. Bei älteren Ubuntu-Versionen erledigt die Tastenkombination + + dies blitzschnell für Sie. Bei neueren Ubuntu-Versionen verwenden Sie stattdessen die Tastenkombination + + . Diese beendet alle Programme der aktuellen Konsole. Führen Sie sie also im X-Server aus, so wird dieser beendet. |
Die Tastenkombination ist nur für den Notfall gedacht, alle laufenden Programme werden sofort geschlossen, und Sie finden sich auf dem Anmeldebildschirm wieder. Wenn Sie laufende Programme auf diese Art und Weise »schließen«, ist ein Datenverlust meistens nicht zu vermeiden. |
Störungen bei der grafischen Oberfläche
Selbst wenn Sie während des Betriebs von Ubuntu plötzlich Störungen in der grafischen Oberfläche haben, wenn beim Einbinden von externen Grafikkartentreibern zum Beispiel etwas schiefgelaufen ist, so haben Sie immer noch die Möglichkeit, auf der Konsole weiterzuarbeiten, um das Problem zu lösen. Wissen Sie noch, wie Sie auf die Konsole(n) von Linux gelangen? Richtig: Mit der Tastenkombination + + bis kommen Sie auf die sechs Standardkonsolen von Linux, und mit + + gelangen Sie zurück auf den X-Server.
14.8.2 Datenträger
Wenn Sie sich auf eine Entdeckungsreise durch Ihr neues System machen, werden Sie ziemlich schnell feststellen, dass es unter Linux keine Laufwerksbuchstaben wie beispielsweise C:\ gibt. Umsteiger von Windows auf Linux fragen sich oft, wo die gewohnten Laufwerksbuchstaben zu finden sind. Die Antwort ist einfach: Nirgendwo – es gibt sie schlichtweg nicht. Dateisysteme werden unter Linux ganz anders und wesentlich flexibler gehandhabt. Man spricht bei Linux von einem Verzeichnisbaum. Wir werden diesen im Folgenden gemeinsam genauer betrachten, beginnend bei den Wurzeln des Systems. Diese Wurzeln sind dafür verantwortlich, dass der Baum »Linux« einen sicheren Stand hat – selbst wenn ungebetene Gäste an ihm hochklettern möchten (zum Beispiel Viren oder sonstige Eindringlinge).
Ubuntu wächst
Wir aber haben den Baum in unserem Computer – einem kleinen Biotop für vom Aussterben bedrohte Betriebssysteme – gepflanzt und ihn liebevoll gepflegt, bis er groß wurde. Nun dürfen wir auch in seine Krone klettern und den Ausblick von dort genießen. Und schauen Sie sich um: Merken Sie, wie klein die Microsoft-Bäume von hier aus sind?
Skalierbarkeit
Nun aber genug der biologischen Abschweifungen, und ran an die Arbeit. Datenträger befinden sich physisch immer an einem bestimmten Ort, dies ist keine Überraschung. Als »Datenträger« bezeichnet man unter anderem die Partition einer Festplatte oder ein CD-ROM-Laufwerk. In einem Linux-System werden diese Datenträger an einer bestimmten Stelle in einem Verzeichnisbaum verwendet (/home/media/cdrom ...). An der Schreibweise dieser »Orte« können Sie schon erkennen, dass es sich um (beliebige) Verzeichnisse handelt.
Der physische Ort ist zweitrangig
Unter Linux lässt sich der Ort, an dem Sie auf einen Datenträger zugreifen können, beliebig festlegen. An der Stelle des Verzeichnisses /home/benutzer/test könnte sich demzufolge technisch gesehen eine Festplattenpartition befinden oder eine CD-ROM oder etwas ganz anderes.
Dies kann mehrere Vorteile haben, zum Beispiel bei der Datensicherung. Ich möchte Ihnen hierzu ein kurzes Beispiel geben. Bei der Installation des Betriebssystems haben Sie alles auf einer einzigen Partition gespeichert, das System ebenso wie die Dateien der einzelnen Benutzer selbst. Nun haben Sie eine zusätzliche Festplatte oder Partition in Ihrem Computer und möchten diese Dateien auf die neue Partition verschieben. Unter Windows wären die Daten dann unter einem anderen Laufwerksbuchstaben erreichbar. Bei Linux nicht; /home bleibt /home, ob darunter nun die einzige Partition der einzigen Festplatte liegt, die dritte Partition auf der externen Festplatte oder eine Netzwerkfreigabe auf irgendeinem Server oder was auch immer. Man spricht hier von »Skalierbarkeit« – Linux ist in höchstem Maße skalierbar.
Mounten
Jeder Datenträger kann also jederzeit an einer beliebigen Stelle in den Verzeichnisbaum eingehängt werden. Dieser Vorgang wird auch als Einbinden oder Mounten bezeichnet. Zwischen dem physischen Ort und dem Zugriffsort besteht kein Zusammenhang.
Tipp 225: Zugriffszeiten messen |
Wenn Sie wissen möchten, wie hoch die Lese- und Schreibraten Ihrer Festplatte sind, können Sie das Werkzeug hdparm verwenden: |
sudo hdparm -tT --direct /dev/sda |
Gegebenenfalls müssen Sie eine andere Hardwareadresse angeben. Eine Ausgabe sieht folgendermaßen aus: |
/dev/sda: |
Wie Sie an der Ausgabe erkennen, erreicht die Festplatte beim Lesen bis zu 212,2 MBit/s. |
14.8.3 Die fstab
Jedes Dateisystem kann einem Mount-Punkt (Einhängepunkt) zugewiesen werden. So weiß das System beim Start, welcher Datenträger zum Beispiel das Verzeichnis /home enthält oder wo das CD-ROM-Laufwerk einzuhängen ist. Diese Zuordnungen sind in einer Datei namens fstab (Filesystem Table) gespeichert, die sich im Verzeichnis /etc befindet. In dieser /etc/fstab werden die physischen Datenträger gemeinsam mit ihren Einhängepunkten aufgelistet.
Konfigurationsdateien
Die meisten editierbaren Konfigurationsdateien für einzelne Bestandteile des Systems befinden sich im Verzeichnis /etc. Sie finden hier unter anderem die Dateien /etc/apt/sources.list zum Bearbeiten der Paketquellen sowie /etc/X11/xorg.config zum Modifizieren der Konfiguration des X-Servers. Sämtliche Dateien sind generell für das Bearbeiten durch einzelne User gesperrt. Nur Benutzer mit sudo-Rechten dürfen diese Dateien editieren (lesbar sind sie für jeden).
Abbildung 14.7 Ein Beispiel für eine »fstab«-Datei
Wenn Sie fstab bearbeiten möchten, rufen Sie die Datei wie folgt auf:
sudo gedit /etc/fstab
Die Datei fstab besteht aus mehreren Einträgen:
- Geräte
Im Verzeichnis /dev befinden sich alle Gerätedateien, mit deren Hilfe sich die Hardware, also das physische Gerät (zum Beispiel eine Partition auf einer Festplatte oder ein CD-ROM-Laufwerk), ansprechen lässt. Wenn Sie in dieses Verzeichnis hineinschauen, werden Sie den Nautilus wahrscheinlich gleich wieder erschrocken schließen. Eine nahezu unüberschaubare Anzahl an Gerätetreibern erwartet Sie dort. Aber keine Angst: Auch wenn es nicht so aussehen mag, die Bezeichnung dieser Geräte folgt einem einfachen Schema, das Sie nun kennenlernen werden.An erster Stelle steht die Art des Geräts:
- Festplatten (also viele normale, interne Festplatten) beginnen mit den Buchstaben sd.
- Normale CD/DVD-Laufwerke (ATAPI) beginnen ebenfalls mit sd, denn sie werden ebenso wie Festplatten angeschlossen.
- Externe oder SCSI-CD/DVD-Laufwerke beginnen mit scd.
- UUID
In Ubuntu ist es Standard, Festplattenpartitionen über ihre UUID zu identifizieren. Mit dem Befehlsudo blkid
werden für alle verfügbaren Festplattenpartitionen sowohl der Eintrag in /dev als auch die UUID und, falls vorhanden, das Label angezeigt. Das ist aber noch nicht alles. Festplatten können darüber hinaus in mehrere Partitionen unterteilt sein. Es gibt zwei Arten von Partitionen:
- Die klassischen primären Partitionen werden nummeriert (/dev/sda1, /dev/sdb3 ...).
- Eine der primären Partitionen kann als erweiterte Partition weitere Partitionen, die sogenannten logischen Laufwerke, enthalten. Deren Benennung beginnt in jedem Fall bei der Ziffer 5 (/dev/sdb5, /dev/sda12 ...).
- RAID-Geräte beginnen mit md und werden dann mit 0 beginnend hochgezählt (dev/md0, /dev/md1 ...).
- Dateisystem
Das Dateisystem ist der dritte Eintrag in der fstab. Die Daten auf einem Datenträger sind dort nicht willkürlich verteilt oder einfach aneinandergehängt, sondern so organisiert, dass Sie auf einzelne Dateien und Verzeichnisse zugreifen, diese verschieben und bearbeiten sowie Berechtigungen zuweisen können. Die zugrundeliegenden Organisationsprinzipien, die solche Aktivitäten erst ermöglichen, werden als Dateisysteme bezeichnet.Es gibt verschiedene Typen, von denen die folgenden für Sie von Interesse sein könnten:
- ext4 ist das Standard-Dateisystem für Festplatten unter Ubuntu.
- iso9660 und udf werden auf CD-ROMs und DVDs verwendet. Sie kennen keine Berechtigungen. udf wird für DVD-RAMs benutzt.
- NTFS ist das Dateisystem neuerer Windows-Versionen. Da die Spezifikation von NTFS geheim ist und freie Treiber den Interessen von Microsoft zuwiderlaufen, müssen die NTFS-Treiber in Linux mit großem Aufwand per Reverse Engineering geschrieben werden. NTFS lässt sich von Linux dennoch problemlos lesen und beschreiben.
- FAT ist das Dateisystem der Windows-Versionen bis Win98/ME. Es ist ziemlich primitiv, neigt zur Fragmentierung und unterstützt keine Berechtigungen. Allerdings kann Linux FAT beschreiben, so dass sich eine mit FAT formatierte Partition zum Datenaustausch mit Windows anbietet.
- Mount-Optionen
Die fstab hat noch mehr Informationen zu bieten. Es folgen verschiedene Optionen, die festlegen, auf welche Weise das betreffende Dateisystem eingehängt werden soll. Beispielsweise führt die Option ro (read-only) dazu, dass auf dem Dateisystem nichts geschrieben werden kann, und noexec (no execution) verbietet das Ausführen von Dateien. Eine ausführliche Auflistung aller Optionen findet sich in der Anleitung zum Befehl mount, die Sie im Terminal mit man mount aufrufen können.
UUID: Die Universally Unique Identifier (UUID) besteht aus einer 16-Byte-Zahl, ist ein Standard für Identifikatoren und wurde von der Open Software Foundation (OSF) als Teil des Distributed Computing Environment (DCE) standardisiert. Die Absicht hinter UUIDs ist, Informationen in verteilten Systemen eindeutig kennzeichnen zu können.
LVM: Der Logical Volume Manager (LVM) ist eine Abstraktionsebene zwischen Festplatten, Partitionen und Dateisystemen. Durch LVM sind dynamisch veränderbare Partitionen (sogenannte Logical Volumes, kurz LV) möglich, die sich auch über mehrere Festplatten hinweg erstrecken können und deren Größe auch nach dem Anlegen eines Dateisystems noch veränderbar sind. Sie erfahren mehr über LVM in Abschnitt 17.4.4, »Methode II – Logical Volume Manager«.
Was bedeuten diese zwei Zahlen?
Am Ende einer fstab-Zeile stehen zwei merkwürdige Zahlen. Die erste Zahl bezieht sich auf das Programm dumpfs und wird im Moment ignoriert. Sie ist sozusagen prophylaktisch eingebaut, falls sie später gebraucht wird. Die zweite Zahl gibt an, ob und in welcher Reihenfolge das Dateisystem beim Systemstart in die regelmäßigen Fehlerüberprüfungen einbezogen werden soll. Meistens ist an dieser Stelle für die Root-Partition (die Wurzel des Dateisystems, /) 1 eingetragen, für alle anderen Partitionen 2 (danach prüfen) oder 0 (keine Überprüfung). Das Programm dumpfs gibt Informationen über den Superblock und die Blockgruppen eines entsprechenden Geräts heraus.
Superblock: Der Superblock ist Teil verschiedener Dateisysteme von UNIX. Er enthält zahlreiche Verwaltungsinformationen des Dateisystems wie beispielsweise die Größe und die Anzahl freier Blöcke.
Welches ist die gesuchte Partition?
Es kann vorkommen, dass Sie sich einmal einen Überblick über die Partitionen auf einer Festplatte verschaffen wollen. Damit Sie nicht erst einen Texteditor bemühen müssen (oder falls Sie keine grafische Benutzeroberfläche zur Verfügung haben), können Sie sich die grundlegenden Informationen auch in einem Terminal anschauen:
sudo fdisk -l
Am Partitionstyp und an der relativen Größe lässt sich dann die gesuchte Partition meist leicht herleiten.
14.8.4 Swap
Swap ist eine Art »Hintergrundspeicher« auf einem Massenspeichergerät (beispielsweise die Festplatte), der zusammen mit dem physisch vorhandenen Speicher (RAM = Random Access Memory) den sogenannten virtuellen Speicher (VM = Virtual Memory) bildet. Swap ist im Vergleich zu anderen Speichern sehr langsam – am schnellsten ist das CPU-Register, dann kommen die Level-1- und -2- (und eventuell -3-)Caches.
Swap: Eine »Tauschpartition« auf der Festplatte. Das Swapping beschreibt in der Informatik den Vorgang des Ein- und Auslagerns von Speichersegmenten vom Arbeitsspeicher auf die Festplatte (und zurück). Dieser Vorgang ist Teil der Segmentierung, einer speziellen Art der Speicherverwaltung in Betriebssystemen.
Wie groß soll der Swap-Bereich sein?
Sehr oft hört man, dass der Swap-Bereich ungefähr doppelt so groß wie der RAM sein soll. In vielen Fällen ist es aber nicht sinnvoll, sehr viel Swap anzulegen, auch wenn es bei der Größe heutiger Festplatten kaum eine Rolle spielt, ob Sie einige Gigabyte für einen Swap-Bereich reservieren.
Je nach Bedarf kann der Linux-Kernel Speicherseiten auslagern, d. h., vom RAM in den Swap-Bereich verlagern. Selbst bei genügend RAM kann eine Swap-Partition aber Vorteile bringen, da Speicherseiten, auf die lange nicht zugegriffen wurde, ausgelagert werden können. So kann der physische Speicher beispielsweise als Cache genutzt werden.
Oftmals verwenden PCs ein Suspend-to-Disk, um den Rechner schlafen zu legen. Dazu werden die Speicherseiten auf der Swap-Partition auf der Festplatte abgelegt. Beim nächsten Booten werden die Speicherseiten zurück in den RAM geladen. Um dieses Feature zu nutzen, sollte die Swap-Partition auf der Festplatte also ausreichend groß sein.
Lässt sich das Swap-Verhalten beeinflussen?
Der Kernel hat im Prinzip zwei Möglichkeiten, wenn der RAM momentan vollständig genutzt wird. Er kann den Cache verkleinern, indem er die ältesten Daten im Cache verwirft, oder es können Speicherseiten, die nur selten angesprochen werden, in den Swap-Bereich ausgelagert werden (/proc/sys/vm/swappiness).
Suspend-to-Disk: Der Ruhezustand, auch Hibernation oder Suspend-to-Disk, ist eine Energiesparfunktion moderner Rechner. Der Rechner wird dabei in einen stromlosen Zustand versetzt, und der Benutzer kann später an gleicher Stelle weiterarbeiten.
Tipp 227: Swap im laufenden Betrieb leeren |
Gerade bei umfangreichen Programmierarbeiten kann es vorkommen, dass man es mit sehr großen Dateien zu tun hat, die den RAM und Swap vollständig ausnutzen. Während der RAM sich sehr schnell wieder leert, bleibt die Swap-Datei gefüllt und steht nicht mehr so schnell zur Verfügung. Dies kann die Leistungsfähigkeit des Systems massiv ausbremsen. Um den Swap-Speicher manuell zu leeren, schalten Sie ihn mit den folgenden Befehlen aus und wieder ein: |
swapoff -a |
swappiness
Der Standardwert für swappiness ist 60, im Prinzip kann swappiness Werte zwischen 0 und 100 annehmen. Bei einem Wert von 100 wird der Kernel stets das Auslagern von inaktiven Speicherseiten bevorzugen. Bei einem Wert von 0 wird der Kernel stets das Verkleinern des Caches bevorzugen.
Swappen trotz freiem RAM
Falls übrigens Speicherseiten in den Swap-Bereich ausgelagert wurden und sich danach später die Speicherbelegung des Systems reduziert, werden die ausgelagerten Seiten nicht automatisch zurück in den RAM geladen (das wäre ineffizient). So kann es passieren, dass eigentlich RAM wirklich frei ist (free, also auch nicht als Cache genutzt wird), trotzdem aber auch Swap-Bereich in Gebrauch ist. Mit einem einfachen echo-Befehl können Sie einen anderen Wert nach /proc/sys/vm/swappiness schreiben – wie üblich beim Tunen des Systems über das proc-Filesystem sollten Sie dabei aber sehr umsichtig vorgehen.
Tipp 228: Swappen trotz freiem RAM |
Zum Anlegen einer Swap-Datei generieren Sie sich mit dd eine Datei bestimmter Größe mit Nullen (Auslesen von /dev/zero): |
dd if=/dev/zero of=/swap.file bs=1M count=500 |
Diese Datei wandeln Sie dann mit Hilfe von mkswap in eine Swap-Datei um, die wiederum mit swapon aktiviert werden kann. Haben Sie mehrere Swap-Bereiche unterschiedlicher Schnelligkeit, so sollten Sie gegebenenfalls geeignete Prioritäten für die jeweiligen Bereiche angeben. Nach erfolgreicher Aktivierung sollte der neue Swap-Bereich in der Ausgabe von cat /proc/swaps gelistet werden: |
cat /proc/swaps |
Wird beim swapon-Befehl keine Priorität explizit angegeben, so erhält der erste Swap-Bereich eine Standardpriorität, der zweite Bereich eine etwas niedrigere Priorität usw. Swap-Bereiche mit höherer Priorität werden beim Auslagern gegenüber Bereichen mit niedrigerer Priorität bevorzugt. |
14.8.5 Der Verzeichnisbaum
Im Dateisystembaum von Linux gibt es drei wichtige und wissenswerte Verzeichnisse:
- /home enthält die persönlichen Verzeichnisse der Benutzer.
- In /media erscheinen Wechseldatenträger wie CD-ROMs oder USB-Sticks. (Natürlich erscheint alles auch auf dem Desktop, so dass Sie nur draufklicken brauchen.)
- /mnt kann wie /media zum Einbinden zusätzlicher Datenträger verwendet werden.
Abbildung 14.8 Verzeichnishierarchie unter Linux
Solange ein Datenträger eingehängt (gemountet) ist, dürfen Sie ihn nicht entfernen. Bei CDs wird einfach die Schublade verriegelt, bei USB-Sticks müssen Sie allerdings selbst aufpassen: Klicken Sie vor dem Abziehen des Sticks immer mit der rechten Maustaste auf das passende Symbol auf dem Desktop, und bestätigen Sie dann Datenträger sicher entfernen. Wenn Sie ein Gerät nicht ordentlich wieder aus dem Dateibaum aushängen, können Daten verlorengehen. Aber selbst wenn die Daten nicht verlorengehen, kann es sein, dass Sie das eingehängte Dateisystem auf dem USB-Datenträger beschädigen. Dies äußert sich dann darin, dass Sie den Inhalt des Datenträgers beim nächsten Einhängen nicht mehr lesen können oder dass das Einhängen gänzlich misslingt. Meistens hilft in solch einem Fall ein erneutes Formatieren des Datenträgers, um wieder ein sauberes Dateisystem auf diesem zu erzeugen.
Filesystem Hierarchy Standard
Dass Sie Geräte aus dem Dateisystem entfernen müssen, ist im Prinzip bei Windows nicht anders, nur wissen Sie jetzt durch Linux, warum dies so ist. Die Verzeichnisse eines Linux-Systems folgen bis auf wenige Ausnahmen den Regeln, die der sogenannte Filesystem Hierarchy Standard festlegt. Dies ist ein Standard, auf den sich die Linux-Distributoren geeinigt haben. Diese Festlegung hat den enormen Vorteil, dass bei allen Linux-Distributionen das Dateisystem gleich aufgebaut ist und weitgehend dieselben Verzeichnisse enthält:
- /
Das ist das Haupt-, Root- oder Wurzelverzeichnis, der Beginn des Verzeichnisbaums. Hier sollten möglichst keine Dateien liegen, nur Verzeichnisse. - /bin
Hier befinden sich wichtige Programme (binaries) zur Systemverwaltung, die immer verfügbar sein müssen, wie echo oder kill. Anwendungsprogramme (wie zum Beispiel LibreOffice) befinden sich nicht in diesem Verzeichnis. - /boot
Dieses Verzeichnis beherbergt das Herz des Betriebssystems, den Kernel. Außerdem enthält es den Bootloader. - /cdrom
Dieses Verzeichnis gehört nicht zum Standard-Verzeichnisbaum. Es ist unter Ubuntu lediglich eine Verknüpfung mit dem Verzeichnis /media/cdrom0, dem eigentlichen Einhängepunkt einer CD-ROM. - /dev
Dieses Verzeichnis enthält ausschließlich Gerätedateien für die gesamte Peripherie \linebreak(devices). Solche Gerätedateien dienen als Schnittstellen für die eingesetzte Hardware. /dev/fd0 ist beispielsweise für die Kommunikation mit dem (ersten) Diskettenlaufwerk (floppy disk 0) zuständig. - /etc
Hier befinden sich die globalen Konfigurationsdateien des Systems. Dies sind in der Regel einfache Textdateien, die mit einem beliebigen Editor verändert werden können. Die Dateisystem-Tabelle (fstab) befindet sich zum Beispiel in diesem Verzeichnis. - /floppy
Dieses Verzeichnis ist eigentlich gar keines, sondern eine Verknüpfung zu dem Ordner, der die Dateien des Diskettenlaufwerks enthält. Dieser Ordner kann an verschiedenen Stellen im Dateisystem liegen, findet sich meist jedoch entweder unter /mnt/floppy oder bei manchen neueren Distributionen wie zum Beispiel Ubuntu unter /media/floppy. - /home
Das home-Verzeichnis ist wohl eines der meistgenutzten Verzeichnisse. Die Heimatverzeichnisse der angelegten Benutzer werden hier als Unterverzeichnisse angelegt. Nur in seinem home-Verzeichnis kann ein Benutzer Dateien und Verzeichnisse anlegen, ändern oder löschen. - /initrd
Hierbei handelt es sich meist um eine Verknüpfung zu der Initial Ramdisk des (üblicherweise) neuesten installierten Kernels. Bei Ubuntu ist das Verzeichnis leer. - /lib
Hier liegen die Programmbibliotheken (libraries). Diese Bibliotheken enthalten Funktionen, die von mehreren Programmen gleichzeitig genutzt werden. Das spart jede Menge Systemressourcen. Von diesem Verzeichnis sollten Sie am besten die Finger lassen! - /lost+found
Auch dieses Verzeichnis gehört nicht zum Standard-Verzeichnisbaum. Es wird nur angelegt, wenn Sie das Dateisystem ext3/4 verwenden, und ist normalerweise leer. Nach einem Systemabsturz werden gerettete Daten beim nächsten Systemstart hierher verschoben. - /media
In diesem Verzeichnis werden – allerdings nicht bei allen Distributionen – die Mount-Punkte für Wechseldatenträger (CD-ROM-Laufwerk, Diskettenlaufwerk) als Unterverzeichnisse angelegt. Andere Distributionen nutzen dafür das Verzeichnis /mnt. - /mnt
Das Standard-Mount-Verzeichnis unter Linux heißt /mnt. Es wird zwar unter Ubuntu standardmäßig nicht benutzt, ist aber vorhanden. Stattdessen wird das Verzeichnis /media verwendet. Festplattenpartitionen anderer Betriebssysteme sollten Sie aber der Ordnung halber hier einhängen. - /opt
Dieses Verzeichnis gehört nicht zum Standard und ist auch nicht bei jeder Distribution im Dateisystem vorhanden. In /opt können vom Benutzer selbst installierte Programme, die nicht als Pakete vorliegen, (optional) installiert werden. - /proc
In diesem (virtuellen) Dateisystem werden Informationen über aktuell laufende Prozesse (process) in Unterverzeichnissen gespeichert. - /root
Das ist das Heimatverzeichnis des Superusers Root. Es liegt traditionell im Wurzelverzeichnis, damit der Systemverwalter auch bei Wartungsarbeiten darauf Zugriff hat. - /sbin
Hierin befinden sich, ähnlich wie in /bin, wichtige Programme, die nur mit Systemverwaltungsrechten ausgeführt werden dürfen. - /srv
Dieses Verzeichnis gehört nicht zum Standard; es soll Beispielumgebungen für Web- und FTP-Server enthalten. Unter Ubuntu ist es in der Regel leer. - /sys
Ein solches Verzeichnis gehört nicht zum Standard. Es enthält unter Ubuntu Systeminformationen des Kernels. - /tmp
Dieses Verzeichnis kann jederzeit von Benutzern und Programmen als Ablage für temporäre Dateien verwendet werden. Daher hat hier auch jeder Benutzer Schreibrechte. - /usr
Das Kürzel bedeutet nicht, wie vielfach angenommen, User, sondern steht für Unix System Resources. Das Verzeichnis /usr hat die umfangreichste Struktur des Linux-Systems. Hier liegt ein Großteil der (als Pakete) installierten Programme, die meisten davon im Unterverzeichnis /usr/bin. Auch die Dateien der grafischen Oberfläche (X-Window-System) werden hier gespeichert. - /var
Hier werden, ähnlich wie in /tmp, Daten gespeichert, die sich ständig verändern, etwa die Zwischenablage, die Druckerwarteschlange oder (noch) ungesendete E-Mails.
14.8.6 Beschädigte Dateisysteme reparieren
Eine vorhandene Systemkomplettsicherung ist ungemein beruhigend. Dennoch kann das Rückspielen des Backups nur den Systemzustand zum Zeitpunkt der Datensicherung wiederherstellen. Daten, die in der Zwischenzeit auf dem Computer gelandet sind, verlieren Sie trotzdem. Daher ist es immer sinnvoll, vor einer eventuellen Rücksicherung zu versuchen, ein »zerschossenes« System zu reanimieren.
Tipp 229: Dateien finden und sortieren |
Sie brauchen nicht immer Ihre Desktop-Suche zu bemühen, wenn Sie einmal schnell und bequem eine Datei finden wollen. Die Dateisuche funktioniert auch hervorragend im Terminal. Eine Allzweckwaffe gegen verlorene Dateien ist der Befehl find. Leider speichern Dateisysteme wie ext2, ext3 oder ReiserFS kein Erstellungsdatum, so dass Sie Ihre Dateien nicht nach diesem filtern können. Allerdings haben Sie bei diesen Dateisystemen die Möglichkeit, die Dateien nach Änderungs- und Zugriffszeitpunkten zu sortieren (inklusive Unterverzeichnisse). Der Befehl |
find . -printf 'TY-Tm-Td:TT p n' | sort |
sucht nach Dateien, die zu einem definierten Zeitpunkt verändert wurden. Das Kürzel T steht hierbei für die mtime (den Modifikationszeitpunkt). Sie können hier auch C (change time) oder A (access time) verwenden. Y, m, d stehen für year, month, day, geben also die Reihenfolge der Darstellung an. Um nun bestimmte Dateien zu finden, bietet es sich an, sie nach ihrem Änderungsdatum zu filtern: |
find . -mtime +0 – Dateien, die vor mehr als 24 Stunden verändert wurden |
find . -mtime 0 oder -1 – Dateien, die innerhalb der letzten 24 Stunden verändert wurden |
Das kommt in den besten Familien vor: Ein Mitbewohner steckt den Staubsauger in die Steckdose, die Sicherung fliegt raus, und das gerade hochgefahrene Linux-System wird in einer Nanosekunde von 100 auf null gefahren. Linux-Veteranen der ersten Stunde wissen, was in früheren Zeiten damit verbunden war: eine mühsame Überprüfung des Dateisystems, die einige Zeit in Anspruch nahm.
Der Grund für die Verhaltensweise ist der Linux-typische Umgang mit den Schreib-/Lesevorgängen im System: Das System puffert diese im RAM und führt den Befehl dann aus, wenn wenig zu tun ist. Hier wirkt sich ein Crash natürlich tödlich aus: Stürzt das System ab, wenn noch nicht alle Schreib-/Lesevorgänge abgeschlossen sind, so kommt es unweigerlich zu Datenverlusten. Nach dem erneuten Hochfahren des Computers müssen Sie dann in jedem Fall das Dateisystem überprüfen.
Tipp 230: Dateisystem überprüfen |
Ein ext-Dateisystem überprüfen Sie folgendermaßen: Geben Sie direkt auf einer Kommandozeile den Befehl |
sudo fsck /dev/sda1 |
ein. Das Dateisystem darf dabei aber nicht eingehängt sein! Benutzen Sie also am besten eine LiveCD/DVD. |
Wenn Sie zu dieser langwierigen Aktion einen Fortschrittsbalken sehen möchten, verwenden Sie den Parameter -C. Sollte die Routine nun auf Fehler stoßen, so wird versucht, diese zu reparieren. Bestätigen Sie in diesem Fall sämtliche Nachfragen mit . Zur Überprüfung des Reiser-Dateisystems verwenden Sie den folgenden Befehl: |
sudo reiserfsck --check /dev/hda10 |
Weitere Parameter und deren Wirkungsweise entnehmen Sie bitte den Manpages von fsck und reiserfsck. |
Journaling-Dateisysteme
Heute verwendet man unter Linux sogenannte Journaling-Dateisysteme. Diese führen genau Protokoll über alle anstehenden und abgeschlossenen Dateioperationen, so dass ein notwendiger Datei-Systemcheck relativ schnell erfolgen kann. Um diese Dateisysteme zu überprüfen, bieten sich mehrere Tools an. Die Kommandos beginnen allesamt mit fsck. Bei Ubuntu wird eine Vielzahl von Dateisystemen unterstützt:
user$ fsck <Tabulatortaste><Tabulatortaste>
fsck fsck.ext3 fsck.msdos fsck.reiserfs
fsck.cramfs fsck.jfs fsck.nfs fsck.vfat
fsck.ext2 fsck.minix fsck.reiser4 fsck.xfs
Bevor Sie aber eines Ihrer installierten Systeme auf Herz und Nieren prüfen, beachten Sie folgenden wichtigen Hinweis: Ein Dateisystem, das überprüft werden soll, muss ausgebunden sein! Anderenfalls bestehen gute Chancen, durch die Reparatur den Zustand des Systems zu »verschlimmbessern«.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.