linux:dateisystemaufbau

Dateisystemaufbau

Unter Linux haben viele Verzeichnisse (dank der UNIX-Historie und dem Filesystem Hierarchy Standard) eine fest definierte Funktion. Das erleichert die Orientierung und Distributoren/Softwareentwickler können standardkonforme Pakete erstellen.

Wenn „tree“ installiert ist, kann man sich eine Übersicht im Textmodus anzeigen lassen

tree / -L 1
Mountpoint Ablageort für …
/bin enthält Programme welche beim booten benötigt werden (systemweite programme).
/boot Verzeichnis welches die (den) Linuxkernel enthalten, werden beim booten gestartet. Außerdem liegen hier die Konfigurationsdateien des Bootmanagers Grub im Verzeichnis /boot/grub.
/dev Enthält Gerätedateien (Gerätenummern und Zuordnungen (z.B. /dev/hda1 usw.). Das dev-verzeichnis wird bei jedem Start durch udev in einem eigenen Dateisystem neu erstellt.
/etc Enthält Konfigurationsdateien. Diese Konfigurationsdateien gelten Systemweit. Benutzerspezifische Konfigurationsdateien befinden sich im Heimatverzeichnis des jeweiligen Benutzers.
/home Enthält die Heimatverzeichnisse der Benutzer.
/initrd initrd ist ein temporäres Dateisystem, das vom Linux-Kernel während des Bootvorgangs verwendet wird.
/lib enthält Systembibliotheken welche von Programmen in /bin oder /sbin benötigt werden. Außerdem auch Kernelmodule.
/lost+found hier werden nach Dateisystemchecks (gefundene) verlorene Zuordnungseinheiten gespeichert.
/media bzw. manchmal /mnt, letzteres ist für temporäre mount gedacht) Diese beiden Verzeichnisse enthalten Mountpoints für zusätzliche Datenträger, wie etwa CD-Rom oder USB-Sticks. Das ältere Verzeichnis /mnt wird dabei auf den meisten Distributionen durch die Alternative /media verdrängt. Bei den meisten Distributionen werden hier externe Datenträger eingehangen.
/opt In diesem Verzeichnis ist optionale Anwendungssoftware enthalten. Meist handelt es sich um größere Programmpakete, wie z. B. OpenOffice.org oder KDE. Nicht alle Distributionen verwenden dieses Verzeichnis.
/proc und /sys Die darin enthaltenen Dateien existieren nicht wirklich auf der Festplatte, sondern werden beim booten mit Dateien gefüllt, die Informationen über Prozesse, angeschlossene Hardware und Kerneleinstellungen wie Stromsparmechanismen liefern. Zum /proc-Dateisystem siehe unten.
/root Ist das Heimatverzeichnis des Benutzers root.
/sbin enthält Programme welche beim booten benötigt werden, aber nur solche, welche nur von root benutzt werden können.
/srv Verzeichnis für Daten der Serverdienste (nicht überall vorhanden)
/tmp Ordner für temporäre Dateien, ist für alle Benutzer des Systems schreibbar. Dennoch kann jeder Benutzer nur seine Dateien löschen, da das „Sticky Bit“ gesetzt ist.
/usr Enthält die Mehrzahl der Anwendungsprogramme, inklusive ihrer Manpages und Dokumentation. Dieses Unterverzeichnis besitzt selber Unterverzeichnisse wie /usr/bin, /usr/sbin, /usr/lib, welche den obigen /bin, /sbin und /lib-Verzeichnissen entsprechen. Zusätzlich auch noch /usr/share, welches zusätzliche Dateien zu Programmen enthält (beispielsweise Übersetzungsdateien oder grafische Icons), sowie /usr/local, in welchen standardmäßig selbstkompilierte Programme landen.
/var Variable Daten, wie z. B. Mailspool oder Druckerspooldateien oder die Logdateien. Logdateien liegen in /var/log. Auch manche Serverdienste legen ihre Datendateien hier ab (z. B. Datenbankdateien oder Emails eines Mailservers).

Der Standardsuchpfad (Variable PATH) enthält meist die Verzeichnisse /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin (Trennung durch Doppeltpunkt).

Dateien (bzw. symbolische Links) im Wurzelverzeichnis „/“
Name symbolischer Link auf Zweck
initrd.img → /boot/initrd.img-2.6.20-16-generic enthält die („initial ramdisk“, siehe initrd) also Treiber etc. die zum booten gebraucht werden.
initrd.img.old → /boot/initrd.img-2.6.20-16-generic Hier wird die alte „initial ramdisk“ mit vmlinuz.old referenziert, um ihn bei Problemen mit dem neuen Kernel zu nutzen.
vmlinuz → /boot/vmlinuz-2.6.20-16-generic Verweis auf das aktuelle Kernelimage
vmlinuz.old → /boot/vmlinuz-2.6.20-16-generic Hier wird der alte Kernel mit vmlinuz.old referenziert, um ihn bei Problemen mit dem neuen Kernel zu nutzen.

In boot werden die Dateien des Bootmanagers installiert, ebenso wie die initrd (falls benutzt) und das (die) Kernel-Image(s).

Das virtuelle Proc-Dateisystem hat eine spezielle Aufgabe: Es stellt Einstellungen und Informationen über das System bereit die zur Laufzeit verändert bzw. angezeigt werden können.

Eine Liste von Einstellungen gibt der Befehl „sysctl -a“, einzelne Parameter lassen sich zur Laufzeit mit „sysctl -w Einstellung“ und permanent in in /etc/sysctl.conf setzen.

Siehe auch proc(5) - Linux man page und Das Proc File System verstehen.

proc-Pfad enthält/bewirkt was? Wert dauerhaft in /etc/sysctl.conf setzen
echo 1 > /proc/sys/net/ipv4/ip_forward IP-Routing einschalten (bzw.echo 1 >/proc/sys/net/ipv6/conf/all/forwarding bei IPv6) net.ipv4.ip_forward=1 bzw. bei IPv6: net.ipv6.conf.all.forwarding=1
cat /proc/6410/sched Beispiel: Informationen zum Prozess 6410 (scheduling)
cat /proc/cpuinfo oder lscpu Informationen zu Prozessor (CPU)
/proc/ioports Informationen zur I/O-Adressen
cat /proc/meminfo Informationen zur Speicherbelegung
cat /proc/mounts /proc/partitions Informationen über gemountete Datenträger und Partitionen anzeigen
cat /proc/scsi/scsi zeigt die aktiven SCSI-Geräte an. Damit kann man auch neue per hotplug entfernen oder hinzufügen:
echo "scsi scan-new-devices" > /proc/scsi/scsi

Siehe auch: SCSI-Programmierung

cat /proc/sys/kernel/random/uuid eine zufällige UUID wird angezeigt.
cat /proc/sys/vm/swappiness Beeinflusst das Verhalten Programmteile im Arbeitsspeicher auf Festplatte auszulagern gegenüber möglichst viel Cache anzulegen. Wertebereich ist von 0 (nicht auslagern sondern erst alten Cache zu löschen) bis 100 (viel auslagern, möglichst viel Cache anlegen). Standardwert ist 60, Server deren Antwortzeit kritisch sind (Datenbankserver, …) sollten eher unter 50 gehen, Desktop sind über 50 durchaus gut bedient. vm.swappiness=30
Verzeichnis Bedeutung
/usr/bin von allen Benutzern ausführbare Dateien
/usr/lib Bibliotheken, die für die Ausführung zusätzlich installierter Pakete notwendig sind
/usr/sbin ausführbare Dateien für den Superuser
/usr/share Gemeinsame Dateien installierter Pakete
/usr/local/… Dateien manuell eingerichteter Programmpakete (bin), Bibliotheken (lib), für den Superuser (sbin) und gemeinsame Dateien (share)

FIXME

Verzeichnis Bedeutung
/var/lib variable Dateien diverser auf dem Server laufender Applikationen
/var/lib/mysql Hier finden sich die von MySQL verwalteten Datenbanken in jeweils eigenen Unterverzeichnissen.
/var/lib/named beinhaltet die Informationen von Bind (DNS-Server)
/var/log globales Verzeichnis für allgemeine Protokolldateien
/var/spool/cron/crontabs crontabs der Benutzer (crontab -l)