Dateisystemhierarchie Standard - Filesystem Hierarchy Standard

Dateisystemhierarchie-Standard
Status Veröffentlicht
Jahr begonnen 14. Februar 1994 ; Vor 27 Jahren ( 1994-02-14 )
Letzte Version 3,0
3. Juni 2015 ; vor 6 Jahren ( 2015-06-03 )
Organisation Linux Foundation
Domain Verzeichnisaufbau
Abkürzung FHS
Webseite Offizielle Website
Offizielle Website (Historisch)

Der Filesystem Hierarchy Standard ( FHS ) definiert die Verzeichnisstruktur und den Verzeichnisinhalt in Linux- Distributionen. Es wird von der Linux Foundation verwaltet . Die neueste Version ist 3.0, veröffentlicht am 3. Juni 2015.

Linux- Distributionen (und andere Betriebssysteme) können sich freiwillig dem FHS anpassen. Das Freedesktop.org- Projekt stellt eine Spezifikation namens XDG Base Directory Specification bereit , die FHS um verschiedene Umgebungsvariablen und Pfade erweitern soll, in denen einige benutzerspezifische Anwendungsdateien gespeichert werden sollen.

Verzeichnisaufbau

Typische Ubuntu- Dateisystemhierarchie

Im FHS erscheinen alle Dateien und Verzeichnisse unter dem Root-Verzeichnis / , auch wenn sie auf verschiedenen physischen oder virtuellen Geräten gespeichert sind. Einige dieser Verzeichnisse existieren nur auf einem bestimmten System, wenn bestimmte Subsysteme wie das X Window System installiert sind.

Die meisten dieser Verzeichnisse existieren in allen Unix-ähnlichen Betriebssystemen und werden im Allgemeinen auf die gleiche Weise verwendet; Die Beschreibungen hier werden jedoch speziell für den FHS verwendet und gelten nicht als maßgeblich für andere Plattformen als Linux.

Verzeichnis Beschreibung
/
Primärhierarchie- Root und Root-Verzeichnis der gesamten Dateisystemhierarchie.
/bin
Wesentlicher Befehl Binärdateien , die in verfügbar sein müssen Single-User - Modus , einschließlich dem System zu bringen oder zu reparieren es, für alle Benutzer (zB Katze , ls , cp ).
/boot
Bootloader- Dateien (zB kernels , initrd ).
/dev
Gerätedateien (z. B. /dev/null, /dev/disk0, /dev/sda1, /dev/tty, /dev/random).
/etc
Hostspezifische systemweite Konfigurationsdateien .

Über die Bedeutung des Namens selbst gab es Kontroversen. In frühen Versionen des UNIX-Implementierungsdokuments von Bell Labs /etcwird es als etcetera- Verzeichnis bezeichnet , da dieses Verzeichnis historisch alles enthielt, was nicht woanders hingehörte (das FHS beschränkt sich jedoch /etcauf statische Konfigurationsdateien und darf keine Binärdateien enthalten). Seit der Veröffentlichung der frühen Dokumentation wurde der Verzeichnisname auf verschiedene Weise neu erklärt. Neuere Interpretationen beinhalten Backronyme wie "Editable Text Configuration" oder "Extended Tool Chest".

/etc/opt
Konfigurationsdateien für Add-On-Pakete, die in /opt.
/etc/sgml
Konfigurationsdateien wie Kataloge für Software, die SGML verarbeitet .
/etc/X11
Konfigurationsdateien für das X Window System , Version 11.
/etc/xml
Konfigurationsdateien wie Kataloge für Software, die XML verarbeitet .
/home
Home-Verzeichnisse der Benutzer , die gespeicherte Dateien, persönliche Einstellungen usw. enthalten.
/lib
Bibliotheken, die für die Binärdateien in /binund unerlässlich sind /sbin.
/lib<qual>
Wesentliche Bibliotheken im alternativen Format. Diese werden normalerweise auf Systemen verwendet, die mehr als ein ausführbares Codeformat unterstützen, wie z. B. Systeme, die 32-Bit- und 64-Bit- Versionen eines Befehlssatzes unterstützen . Solche Verzeichnisse sind optional, aber wenn sie existieren, haben sie einige Anforderungen.
/media
Mount-Punkte für Wechselmedien wie CD-ROMs (erschienen in FHS-2.3 im Jahr 2004).
/mnt
Vorübergehend gemountete Dateisysteme.
/opt
Add-on - Anwendungs - Software - Pakete .
/proc
Virtuelles Dateisystem, das Prozess- und Kernelinformationen als Dateien bereitstellt . Entspricht unter Linux einem procfs- Mount. Im Allgemeinen automatisch generiert und vom System im laufenden Betrieb ausgefüllt.
/root
Home-Verzeichnis für den Root- Benutzer.
/run
Laufzeitvariable Daten: Informationen über das laufende System seit dem letzten Booten, zB aktuell angemeldete Benutzer und laufende Daemons . Dateien in diesem Verzeichnis müssen zu Beginn des Bootvorgangs entweder entfernt oder abgeschnitten werden, dies ist jedoch auf Systemen, die dieses Verzeichnis als temporäres Dateisystem ( tmpfs ) bereitstellen, nicht erforderlich .
/sbin
Wesentliche Systembinärdateien (zB fsck , init , route ).
/srv
Site-spezifische Daten, die von diesem System bereitgestellt werden, wie Daten und Skripte für Webserver, von FTP- Servern angebotene Daten und Repositorys für Versionskontrollsysteme (erschienen in FHS-2.3 im Jahr 2004).
/sys
Enthält Informationen zu Geräten, Treibern und einigen Kernelfunktionen.
/tmp
Verzeichnis für temporäre Dateien (siehe auch /var/tmp). Wird häufig zwischen Systemneustarts nicht beibehalten und kann stark in der Größe eingeschränkt sein.
/usr
Sekundärhierarchie für schreibgeschützte Benutzerdaten; enthält die meisten ( Mehr- )Benutzer-Dienstprogramme und -Anwendungen. Sollte teilbar und schreibgeschützt sein.
/usr/bin
Nicht wesentliche Befehls- Binärdateien (im Einzelbenutzermodus nicht erforderlich ); für alle Benutzer.
/usr/include
Standard- Include-Dateien .
/usr/lib
Bibliotheken für die Binärdateien in /usr/binund /usr/sbin.
/usr/lib<qual>
Bibliotheken mit alternativem Format (z. B. /usr/lib32für 32-Bit-Bibliotheken auf einem 64-Bit-Computer (optional)).
/usr/local
Tertiäre Hierarchie für lokale Daten, spezifisch für diesen Host. Hat normalerweise weitere Unterverzeichnisse (zB bin, lib, share).
/usr/sbin
Nicht wesentliche Systembinärdateien (zB Daemons für verschiedene Netzwerkdienste ).
/usr/share
Architekturunabhängige (geteilte) Daten.
/usr/src
Quellcode (zB der Kernel-Quellcode mit seinen Header-Dateien).
/usr/X11R6
X Window System , Version 11, Release 6 (bis FHS-2.3, optional).
/var
Variable Dateien: Dateien, deren Inhalt sich während des normalen Betriebs des Systems voraussichtlich ständig ändern wird, wie Protokolle, Spool-Dateien und temporäre E-Mail-Dateien.
/var/cache
Anwendungscachedaten. Solche Daten werden durch zeitaufwändige I/O oder Berechnung lokal generiert. Die Anwendung muss in der Lage sein, die Daten neu zu generieren oder wiederherzustellen. Die zwischengespeicherten Dateien können ohne Datenverlust gelöscht werden.
/var/lib
Staatliche Informationen. Persistente Daten, die von Programmen während der Ausführung modifiziert werden (z. B. Datenbanken, Paketsystem-Metadaten usw.).
/var/lock
Dateien sperren. Dateien, die die aktuell verwendeten Ressourcen verfolgen.
/var/log
Protokolldateien. Verschiedene Protokolle.
/var/mail
Mailbox-Dateien. In einigen Distributionen befinden sich diese Dateien möglicherweise in der veralteten /var/spool/mail.
/var/opt
Variable Daten aus Add-On-Paketen, die in /opt.
/var/run
Laufzeitvariablen Daten. Dieses Verzeichnis enthält Systeminformationsdaten, die das System seit dem Booten beschreiben.

In FHS 3.0 /var/runwird ersetzt durch /run; ein System sollte entweder weiterhin ein /var/runVerzeichnis bereitstellen oder aus Gründen der Abwärtskompatibilität einen symbolischen Link von /var/runnach bereitstellen /run.

/var/spool
Spool für Aufgaben, die auf die Verarbeitung warten (z. B. Druckwarteschlangen und Warteschlange für ausgehende E-Mails).
/var/spool/mail
Veralteter Speicherort für die Postfächer der Benutzer.
/var/tmp
Temporäre Dateien, die zwischen Neustarts aufbewahrt werden sollen.

FHS-Konformität

Die meisten Linux-Distributionen folgen dem Filesystem Hierarchy Standard und deklarieren ihn zu ihrer eigenen Richtlinie, um die FHS-Konformität zu gewährleisten. GoboLinux und NixOS bieten Beispiele für absichtlich nicht konforme Dateisystemimplementierungen.

Einige Distributionen folgen im Allgemeinen dem Standard, weichen jedoch in einigen Bereichen davon ab. Der FHS ist ein „nachlaufender Standard“ und dokumentiert damit gängige Praktiken zu einem bestimmten Zeitpunkt. Natürlich ändern sich die Zeiten und Vertriebsziele und -bedürfnisse erfordern Experimente. Einige häufige Abweichungen sind:

  • Moderne Linux-Distributionen enthalten ein /sysVerzeichnis als virtuelles Dateisystem ( sysfs , vergleichbar mit /proc, das ein procfs ist ), das die an das System angeschlossenen Geräte speichert und modifiziert, während viele traditionelle Unix-ähnliche Betriebssysteme /sysals symbolische Verbindung zum Kernel- Quellbaum.
  • Viele moderne Unix-ähnliche Systeme (wie FreeBSD über sein Ports- System) installieren Pakete von Drittanbietern in /usr/local, während Code als Teil des Betriebssystems in /usr.
  • Einige Linux-Distributionen unterscheiden nicht mehr zwischen /libund /usr/libund haben einen /libSymlink zu /usr/lib.
  • Einige Linux-Distributionen unterscheiden nicht mehr zwischen /binund /usr/binund zwischen /sbinund /usr/sbin. Sie können /binmit /usr/binund /sbinzu symbolisch verknüpft sein /usr/sbin. Andere Distributionen entscheiden sich dafür, alle vier zu konsolidieren und symbolisieren sie mit /usr/bin.

Moderne Linux-Distributionen enthalten nach der FHS-Version 3.0 ein /runVerzeichnis als temporäres Dateisystem ( tmpfs ), das flüchtige Laufzeitdaten speichert. Nach der FHS-Version 2.3 wurden solche Daten in gespeichert /var/run, dies war jedoch in einigen Fällen ein Problem, da dieses Verzeichnis beim frühen Booten nicht immer verfügbar ist. Infolgedessen mussten diese Programme auf Tricks zurückgreifen, wie die Verwendung von /dev/.udev, /dev/.mdadm, /dev/.systemdoder /dev/.mountVerzeichnissen, obwohl das Geräteverzeichnis nicht für solche Daten vorgesehen ist. Neben anderen Vorteilen erleichtert dies die normale Verwendung des Systems, wenn das Root-Dateisystem schreibgeschützt eingehängt ist. Im Folgenden sind beispielsweise die Änderungen aufgeführt, die Debian in seiner Wheezy-Version von 2013 vorgenommen hat:

  • /dev/.*/run/*
  • /dev/shm/run/shm
  • /dev/shm/*/run/*
  • /etc/* (beschreibbare Dateien) → /run/*
  • /lib/init/rw/run
  • /var/lock/run/lock
  • /var/run/run
  • /tmp/run/tmp

Geschichte

FHS wurde als FSSTND (kurz für "Filesystem Standard") erstellt und basiert weitgehend auf ähnlichen Standards für andere Unix-ähnliche Betriebssysteme. Bemerkenswerte Beispiele sind diese: die hier(7) -Beschreibung des Dateisystem-Layouts, die seit der Veröffentlichung von Version 7 Unix (1979) existiert; das SunOS- Dateisystem(7) und sein Nachfolger, das Solaris- Dateisystem(5) .

Veröffentlichungsverlauf

Ausführung Veröffentlichungsdatum Anmerkungen
Alte Version, nicht mehr gepflegt: 1.0 1994-02-14 FSSTND
Alte Version, nicht mehr gepflegt: 1.1 1994-10-09 FSSTND
Alte Version, nicht mehr gepflegt: 1,2 1995-03-28 FSSTND
Alte Version, nicht mehr gepflegt: 2.0 1997-10-26 FHS 2.0 ist der direkte Nachfolger von FSSTND 1.2. Der Name des Standards wurde in Filesystem Hierarchy Standard geändert.
Alte Version, nicht mehr gepflegt: 2.1 2000-04-12 FHS
Alte Version, nicht mehr gepflegt: 2.2 2001-05-23 FHS
Ältere Version, aber noch gepflegt: 2.3 2004-01-29 FHS
Aktuelle stabile Version: 3.0 2015-05-18 FHS
Legende:
Alte Version
Ältere Version, noch gepflegt
Letzte Version
Neueste Vorschauversion
Zukünftige Veröffentlichung

Siehe auch

Anmerkungen

Verweise

Externe Links