Dateisystemhierarchie Standard - Filesystem Hierarchy Standard
Status | Veröffentlicht |
---|---|
Jahr begonnen | 14. Februar 1994 |
Letzte Version | 3,0 3. Juni 2015 |
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
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. |
|
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 ). |
Bootloader- Dateien (zB kernels , initrd ). | |
Gerätedateien (z. B. /dev/null , /dev/disk0 , /dev/sda1 , /dev/tty , /dev/random ).
|
|
|
Hostspezifische systemweite Konfigurationsdateien . Über die Bedeutung des Namens selbst gab es Kontroversen. In frühen Versionen des UNIX-Implementierungsdokuments von Bell Labs |
|
Konfigurationsdateien für Add-On-Pakete, die in /opt .
|
|
Konfigurationsdateien wie Kataloge für Software, die SGML verarbeitet . |
|
Konfigurationsdateien für das X Window System , Version 11. |
|
Konfigurationsdateien wie Kataloge für Software, die XML verarbeitet . |
|
Home-Verzeichnisse der Benutzer , die gespeicherte Dateien, persönliche Einstellungen usw. enthalten. |
|
Bibliotheken, die für die Binärdateien in /bin und unerlässlich sind /sbin .
|
|
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. |
|
Mount-Punkte für Wechselmedien wie CD-ROMs (erschienen in FHS-2.3 im Jahr 2004). |
|
Vorübergehend gemountete Dateisysteme. |
|
Add-on - Anwendungs - Software - Pakete . |
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. | |
|
Home-Verzeichnis für den Root- Benutzer. |
|
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 . |
|
Wesentliche Systembinärdateien (zB fsck , init , route ). |
|
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). |
|
Enthält Informationen zu Geräten, Treibern und einigen Kernelfunktionen. |
|
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.
|
|
Sekundärhierarchie für schreibgeschützte Benutzerdaten; enthält die meisten ( Mehr- )Benutzer-Dienstprogramme und -Anwendungen. Sollte teilbar und schreibgeschützt sein. |
|
Nicht wesentliche Befehls- Binärdateien (im Einzelbenutzermodus nicht erforderlich ); für alle Benutzer. |
|
Standard- Include-Dateien . |
|
Bibliotheken für die Binärdateien in /usr/bin und /usr/sbin .
|
|
Bibliotheken mit alternativem Format (z. B. /usr/lib32 für 32-Bit-Bibliotheken auf einem 64-Bit-Computer (optional)).
|
|
Tertiäre Hierarchie für lokale Daten, spezifisch für diesen Host. Hat normalerweise weitere Unterverzeichnisse (zB bin , lib , share ).
|
|
Nicht wesentliche Systembinärdateien (zB Daemons für verschiedene Netzwerkdienste ). |
|
Architekturunabhängige (geteilte) Daten. |
|
Quellcode (zB der Kernel-Quellcode mit seinen Header-Dateien). |
|
X Window System , Version 11, Release 6 (bis FHS-2.3, optional). |
|
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. |
|
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. |
|
Staatliche Informationen. Persistente Daten, die von Programmen während der Ausführung modifiziert werden (z. B. Datenbanken, Paketsystem-Metadaten usw.). |
|
Dateien sperren. Dateien, die die aktuell verwendeten Ressourcen verfolgen. |
|
Protokolldateien. Verschiedene Protokolle. |
|
Mailbox-Dateien. In einigen Distributionen befinden sich diese Dateien möglicherweise in der veralteten /var/spool/mail .
|
|
Variable Daten aus Add-On-Paketen, die in /opt .
|
|
Laufzeitvariablen Daten. Dieses Verzeichnis enthält Systeminformationsdaten, die das System seit dem Booten beschreiben. In FHS 3.0 |
|
Spool für Aufgaben, die auf die Verarbeitung warten (z. B. Druckwarteschlangen und Warteschlange für ausgehende E-Mails). |
|
Veralteter Speicherort für die Postfächer der Benutzer. |
|
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
/sys
Verzeichnis 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/sys
als 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
/lib
und/usr/lib
und haben einen/lib
Symlink zu/usr/lib
. - Einige Linux-Distributionen unterscheiden nicht mehr zwischen
/bin
und/usr/bin
und zwischen/sbin
und/usr/sbin
. Sie können/bin
mit/usr/bin
und/sbin
zu 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 /run
Verzeichnis 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/.systemd
oder /dev/.mount
Verzeichnissen, 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 |
---|---|---|
1.0 | 1994-02-14 | FSSTND |
1.1 | 1994-10-09 | FSSTND |
1,2 | 1995-03-28 | FSSTND |
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. |
2.1 | 2000-04-12 | FHS |
2.2 | 2001-05-23 | FHS |
2.3 | 2004-01-29 | FHS |
3.0 | 2015-05-18 | FHS |
Legende:
Alte Version
Ältere Version, noch gepflegt
Letzte Version
|
Siehe auch
Anmerkungen
Verweise
Externe Links
- Offizielle Heimat des Filesystem Hierarchy Standard (FHS) bei der Linux Foundation
- objectroot – ein Vorschlag für eine neue Dateisystemhierarchie, basierend auf objektorientierten Designprinzipien
- Die gepunktete Standarddateinamenhierarchie, noch eine ganz andere Hierarchie (in cLIeNUX verwendet) ( Spiegel )
- Linux - Programmierhandbuch - Übersicht, Tagungen und Miscellanea -