Eine Diskussion über Linux-Dateisystemkonzepte auf hohem Niveau

Dieser Artikel soll eine Diskussion über Linux-Dateisystemkonzepte auf sehr hohem Niveau sein. Er ist nicht dazu gedacht, auf niedriger Ebene zu beschreiben, wie ein bestimmter Dateisystemtyp, wie EXT4, funktioniert, und er ist auch nicht dazu gedacht, eine Anleitung für Dateisystembefehle zu sein.

Jeder Allzweckcomputer muss Daten verschiedener Art auf einer Festplatte (HDD) oder einem Äquivalent, wie einem USB-Speicherstick, speichern. Hierfür gibt es mehrere Gründe. Erstens verliert RAM seinen Inhalt, wenn der Computer ausgeschaltet wird. Es gibt nichtflüchtige RAM-Typen, die die dort gespeicherten Daten auch nach dem Ausschalten beibehalten können (z. B. Flash-RAM, das in USB-Speichersticks und Solid-State-Laufwerken verwendet wird), aber Flash-RAM ist viel teurer als flüchtiges Standard-RAM wie DDR3 und andere, ähnliche Typen.

Der zweite Grund, warum Daten auf Festplatten gespeichert werden müssen, ist, dass selbst Standard-RAM immer noch teurer ist als Festplattenspeicher. Sowohl die Kosten für RAM als auch für Festplatten sind rapide gesunken, aber RAM ist immer noch führend bei den Kosten pro Byte. Eine schnelle Berechnung der Kosten pro Byte auf der Grundlage der Kosten für 16 GB RAM gegenüber einer 2-TB-Festplatte zeigt, dass RAM pro Einheit etwa 71 Mal teurer ist als eine Festplatte. Ein typischer Preis für RAM liegt heute bei etwa 0,0000000043743750 $ pro Byte.

Um die heutigen RAM-Kosten in die richtige Perspektive zu rücken, ein kurzer historischer Hinweis: In den Anfängen der Computertechnik basierte eine Art von Speicher auf Punkten auf einem Röhrenbildschirm. Das war mit etwa 1,00 Dollar pro Bit sehr teuer!

Definitionen

Man hört, dass über Dateisysteme auf verschiedene und verwirrende Weise gesprochen wird. Das Wort selbst kann mehrere Bedeutungen haben, und Sie müssen die richtige Bedeutung aus dem Kontext einer Diskussion oder eines Dokuments herausfinden.

Ich werde versuchen, die verschiedenen Bedeutungen des Wortes „Dateisystem“ zu definieren, basierend auf der Art und Weise, wie ich beobachtet habe, wie es unter verschiedenen Umständen verwendet wird. Beachten Sie, dass ich zwar versuche, mich an die „offiziellen“ Standardbedeutungen zu halten, dass es aber meine Absicht ist, den Begriff auf der Grundlage seiner verschiedenen Verwendungen zu definieren. Diese Bedeutungen werden in den folgenden Abschnitten dieses Artikels ausführlicher behandelt.

  1. Die gesamte Linux-Verzeichnisstruktur, beginnend mit dem obersten (/) Stammverzeichnis.
  2. Ein bestimmter Typ von Datenspeicherformat, wie EXT3, EXT4, BTRFS, XFS usw. Linux unterstützt fast 100 Arten von Dateisystemen, darunter einige sehr alte und einige der neuesten. Jeder dieser Dateisystemtypen verwendet seine eigenen Metadatenstrukturen, um zu definieren, wie die Daten gespeichert und auf sie zugegriffen wird.
  3. Eine Partition oder ein logisches Volume, das mit einem bestimmten Dateisystemtyp formatiert ist und an einem bestimmten Einhängepunkt in einem Linux-Dateisystem eingehängt werden kann.

Grundlegende Dateisystemfunktionen

Datenspeicherung ist eine Notwendigkeit, die einige interessante und unausweichliche Details mit sich bringt. Offensichtlich ist ein Dateisystem dazu gedacht, Platz für die nichtflüchtige Speicherung von Daten bereitzustellen; das ist seine eigentliche Funktion. Es gibt jedoch noch viele andere wichtige Funktionen, die sich aus dieser Anforderung ergeben.

Alle Dateisysteme müssen einen Namensraum bereitstellen, d.h. eine Benennungs- und Organisationsmethodik. Diese definiert, wie eine Datei benannt werden kann, insbesondere die Länge eines Dateinamens und die Teilmenge der Zeichen, die für Dateinamen verwendet werden können, aus der Gesamtmenge der verfügbaren Zeichen. Sie definiert auch die logische Struktur der Daten auf einer Festplatte, wie z.B. die Verwendung von Verzeichnissen für die Organisation von Dateien, anstatt sie einfach in einer einzigen, riesigen Ansammlung von Dateien zusammenzufassen.

Nachdem der Namensraum definiert wurde, ist eine Metadatenstruktur erforderlich, um die logische Grundlage für diesen Namensraum zu schaffen. Dazu gehören die Datenstrukturen, die zur Unterstützung einer hierarchischen Verzeichnisstruktur erforderlich sind; Strukturen, die bestimmen, welche Speicherblöcke auf der Festplatte belegt und welche verfügbar sind; Strukturen, die es ermöglichen, die Namen der Dateien und Verzeichnisse zu verwalten; Informationen über die Dateien, wie z. B. ihre Größe und die Zeiten, zu denen sie erstellt, geändert oder zuletzt darauf zugegriffen wurde; und der Speicherort oder die Speicherorte der zur Datei gehörenden Daten auf der Festplatte. Andere Metadaten werden verwendet, um übergeordnete Informationen über die Unterteilungen des Datenträgers zu speichern, z. B. logische Volumes und Partitionen. Diese übergeordneten Metadaten und die Strukturen, die sie repräsentieren, enthalten die Informationen, die das auf dem Laufwerk oder der Partition gespeicherte Dateisystem beschreiben, sind jedoch von den Dateisystem-Metadaten getrennt und unabhängig.

Die Dateisysteme benötigen auch eine Anwendungsprogrammierschnittstelle (API), die den Zugriff auf Systemfunktionsaufrufe ermöglicht, mit denen Dateisystemobjekte wie Dateien und Verzeichnisse bearbeitet werden. APIs sorgen für Aufgaben wie das Erstellen, Verschieben und Löschen von Dateien. Sie stellen auch Algorithmen zur Verfügung, die z. B. bestimmen, wo eine Datei im Dateisystem platziert wird. Solche Algorithmen können Ziele wie Geschwindigkeit oder Minimierung der Festplattenfragmentierung berücksichtigen.

Moderne Dateisysteme bieten auch ein Sicherheitsmodell, das ein Schema für die Definition von Zugriffsrechten auf Dateien und Verzeichnisse ist. Das Sicherheitsmodell des Linux-Dateisystems trägt dazu bei, dass Benutzer nur auf ihre eigenen Dateien zugreifen können und nicht auf die anderer Benutzer oder des Betriebssystems selbst.

Der letzte Baustein ist die Software, die zur Implementierung all dieser Funktionen erforderlich ist. Linux verwendet eine zweiteilige Software-Implementierung, um sowohl die Effizienz des Systems als auch die des Programmierers zu verbessern.


Abbildung 1: Die zweiteilige Software-Implementierung des Linux-Dateisystems.

Der erste Teil dieser zweiteiligen Implementierung ist das virtuelle Dateisystem von Linux. Dieses virtuelle Dateisystem bietet dem Kernel und den Entwicklern einen einzigen Satz von Befehlen für den Zugriff auf alle Arten von Dateisystemen. Die Software des virtuellen Dateisystems ruft den spezifischen Gerätetreiber auf, der für die Schnittstelle zu den verschiedenen Arten von Dateisystemen erforderlich ist. Die dateisystemspezifischen Gerätetreiber sind der zweite Teil der Implementierung. Der Gerätetreiber interpretiert den Standardsatz von Dateisystembefehlen in solche, die für den Typ des Dateisystems auf der Partition oder dem logischen Datenträger spezifisch sind.

Verzeichnisstruktur

Als normalerweise sehr organisierte Jungfrau mag ich es, wenn Dinge in kleineren, organisierten Gruppen gespeichert werden, anstatt in einem großen Eimer. Die Verwendung von Verzeichnissen hilft mir dabei, die gewünschten Dateien zu speichern und dann zu finden, wenn ich sie suche. Verzeichnisse werden auch als Ordner bezeichnet, weil man sie sich wie Ordner vorstellen kann, in denen Dateien in einer Art physischer Desktop-Analogie aufbewahrt werden.

In Linux und vielen anderen Betriebssystemen können Verzeichnisse in einer baumartigen Hierarchie strukturiert werden. Die Linux-Verzeichnisstruktur ist gut definiert und im Linux Filesystem Hierarchy Standard (FHS) dokumentiert. Um auf diese Verzeichnisse zuzugreifen, verwendet man die durch Schrägstriche (/) verbundenen, sequentiell tieferen Verzeichnisnamen wie /var/log und /var/spool/mail. Diese werden Pfade genannt.

Die folgende Tabelle enthält eine sehr kurze Liste der standardmäßigen, bekannten und definierten Top-Level-Linux-Verzeichnisse und ihrer Zwecke.

Verzeichnis Beschreibung
/ (Root Filesystem) Das Root Filesystem ist das Top-Level-Verzeichnis des Dateisystems. Es muss alle Dateien enthalten, die zum Booten des Linux-Systems erforderlich sind, bevor andere Dateisysteme eingehängt werden. Es muss alle erforderlichen ausführbaren Dateien und Bibliotheken enthalten, die zum Booten der übrigen Dateisysteme erforderlich sind. Nachdem das System gebootet ist, werden alle anderen Dateisysteme an standardmäßigen, wohldefinierten Einhängepunkten als Unterverzeichnisse des Root-Dateisystems eingehängt.
/bin Das Verzeichnis /bin enthält ausführbare Dateien des Benutzers.
/boot Enthält den statischen Bootloader und die ausführbaren Kernel- und Konfigurationsdateien, die zum Booten eines Linux-Computers erforderlich sind.
/dev Dieses Verzeichnis enthält die Gerätedateien für jedes an das System angeschlossene Hardware-Gerät. Dies sind keine Gerätetreiber, sondern Dateien, die jedes Gerät auf dem Computer repräsentieren und den Zugriff auf diese Geräte erleichtern.
/etc Enthält die lokalen Systemkonfigurationsdateien für den Host-Computer.
/home Home-Verzeichnis für Benutzerdateien. Jeder Benutzer hat ein Unterverzeichnis in /home.
/lib Enthält gemeinsam genutzte Bibliotheksdateien, die zum Booten des Systems erforderlich sind.
/media Ein Ort, an dem externe Wechseldatenträger wie USB-Sticks eingehängt werden, die an den Host angeschlossen sein können.
/mnt Ein temporärer Einhängepunkt für reguläre Dateisysteme (d.h. nicht für Wechselmedien), der verwendet werden kann, während der Administrator ein Dateisystem repariert oder daran arbeitet.
/opt Optionale Dateien, wie z.B. vom Hersteller gelieferte Anwendungsprogramme, sollten hier abgelegt werden.
/root Dies ist nicht das Root (/) Dateisystem. Es ist das Heimatverzeichnis für den Root-Benutzer.
/sbin System-Binärdateien. Dies sind ausführbare Dateien, die für die Systemverwaltung verwendet werden.
/tmp Temporäres Verzeichnis. Wird vom Betriebssystem und vielen Programmen verwendet, um temporäre Dateien zu speichern. Auch Benutzer können hier Dateien vorübergehend speichern. Beachten Sie, dass hier gespeicherte Dateien jederzeit ohne vorherige Ankündigung gelöscht werden können.
/usr Dies sind gemeinsam nutzbare, schreibgeschützte Dateien, einschließlich ausführbarer Binärdateien und Bibliotheken, man-Dateien und andere Arten von Dokumentation.
/var Hier werden Dateien mit variablen Daten gespeichert. Dazu können Dinge wie Protokolldateien, MySQL- und andere Datenbankdateien, Webserver-Datendateien, E-Mail-Postfächer und vieles mehr gehören.

Tabelle 1: Die oberste Ebene der Linux-Dateisystemhierarchie.

Die in Tabelle 1 gezeigten Verzeichnisse und ihre Unterverzeichnisse, die einen blaugrünen Hintergrund haben, werden als integraler Bestandteil des Root-Dateisystems betrachtet. Das heißt, sie können nicht als separates Dateisystem erstellt und beim Start eingehängt werden. Das liegt daran, dass sie (genauer gesagt, ihr Inhalt) zur Bootzeit vorhanden sein müssen, damit das System ordnungsgemäß starten kann.

Die Verzeichnisse /media und /mnt sind Teil des Root-Dateisystems, sollten aber niemals Daten enthalten. Vielmehr sind sie einfach temporäre Einhängepunkte.

Die übrigen Verzeichnisse, die in Tabelle 1 nicht farblich hinterlegt sind, müssen während der Boot-Sequenz nicht vorhanden sein, werden aber später eingehängt, während der Startsequenz, die den Rechner darauf vorbereitet, nützliche Arbeit zu verrichten.

Schauen Sie unbedingt auf der offiziellen Linux Filesystem Hierarchy Standard (FHS)-Webseite nach, um Einzelheiten über jedes dieser Verzeichnisse und ihre vielen Unterverzeichnisse zu erfahren. Wikipedia hat auch eine gute Beschreibung des FHS. Dieser Standard sollte so genau wie möglich befolgt werden, um betriebliche und funktionale Konsistenz zu gewährleisten. Unabhängig von den auf einem Rechner verwendeten Dateisystemtypen ist diese hierarchische Verzeichnisstruktur die gleiche.

Linux einheitliche Verzeichnisstruktur

In einigen Nicht-Linux-PC-Betriebssystemen wird bei mehreren physischen Festplatten oder mehreren Partitionen jeder Festplatte oder Partition ein Laufwerksbuchstabe zugewiesen. Es ist notwendig zu wissen, auf welcher Festplatte sich eine Datei oder ein Programm befindet, z. B. C: oder D:. Dann geben Sie den Laufwerksbuchstaben als Befehl an, z. B. D:, um zum Laufwerk D: zu wechseln, und verwenden dann den Befehl cd, um in das richtige Verzeichnis zu wechseln und die gewünschte Datei zu finden. Jede Festplatte hat ihren eigenen, separaten und vollständigen Verzeichnisbaum.

Das Linux-Dateisystem fasst alle physischen Festplatten und Partitionen in einer einzigen Verzeichnisstruktur zusammen. Alles beginnt an der Spitze – dem Stammverzeichnis (/). Alle anderen Verzeichnisse und ihre Unterverzeichnisse befinden sich unter dem einzigen Linux-Stammverzeichnis. Das bedeutet, dass es nur einen einzigen Verzeichnisbaum gibt, in dem nach Dateien und Programmen gesucht werden kann.

Dies kann nur funktionieren, weil ein Dateisystem wie /home, /tmp, /var, /opt oder /usr auf separaten physischen Festplatten, einer anderen Partition oder einem anderen logischen Volume als das / (Root-)Dateisystem erstellt und dann an einem Einhängepunkt (Verzeichnis) als Teil des Root-Dateisystembaums eingehängt werden kann. Sogar Wechsellaufwerke wie ein USB-Stick oder eine externe USB- oder ESATA-Festplatte werden in das Root-Dateisystem eingebunden und werden zu einem integralen Bestandteil dieses Verzeichnisbaums.

Ein guter Grund, dies zu tun, zeigt sich bei einem Upgrade von einer Version einer Linux-Distribution auf eine andere oder beim Wechsel von einer Distribution zu einer anderen. Im Allgemeinen und abgesehen von Upgrade-Utilities wie dnf-upgrade in Fedora ist es ratsam, die Festplatte(n), auf der sich das Betriebssystem befindet, während eines Upgrades gelegentlich neu zu formatieren, um jeglichen Schrott zu entfernen, der sich im Laufe der Zeit angesammelt hat. Wenn /home Teil des Root-Dateisystems ist, wird es ebenfalls neu formatiert und müsste dann von einem Backup wiederhergestellt werden. Wenn /home ein separates Dateisystem ist, wird es dem Installationsprogramm als separates Dateisystem bekannt sein und die Formatierung kann übersprungen werden. Dies kann auch für /var gelten, wo Datenbanken, E-Mail-Postfächer, Websites und andere variable Benutzer- und Systemdaten gespeichert werden.

Es gibt noch andere Gründe, bestimmte Teile des Linux-Verzeichnisbaums als separate Dateisysteme zu führen. Vor langer Zeit, als ich mir noch nicht der möglichen Probleme bewusst war, die damit verbunden sind, alle benötigten Linux-Verzeichnisse als Teil des / (Root-)Dateisystems zu haben, habe ich es beispielsweise geschafft, mein Home-Verzeichnis mit einer großen Anzahl sehr großer Dateien zu füllen. Da weder das /home-Verzeichnis noch das /tmp-Verzeichnis separate Dateisysteme waren, sondern einfach Unterverzeichnisse des Root-Dateisystems, füllte sich das gesamte Root-Dateisystem. Für das Betriebssystem blieb kein Platz mehr, um temporäre Dateien anzulegen oder bestehende Datendateien zu erweitern. Zuerst beschwerten sich die Anwendungsprogramme, dass kein Platz zum Speichern von Dateien vorhanden war, und dann begann das Betriebssystem selbst, sich sehr seltsam zu verhalten. Nachdem ich in den Einzelbenutzermodus gewechselt und die beanstandeten Dateien in meinem Home-Verzeichnis gelöscht hatte, konnte ich wieder loslegen. Anschließend installierte ich Linux mit einem Standard-Multifilesystem neu und konnte so verhindern, dass das System erneut komplett abstürzte.

Ich hatte einmal eine Situation, in der ein Linux-Host zwar weiterlief, der Benutzer sich aber nicht über die grafische Benutzeroberfläche anmelden konnte. Ich konnte mich über die Befehlszeilenschnittstelle (CLI) lokal über eine der virtuellen Konsolen und aus der Ferne über SSH anmelden. Das Problem bestand darin, dass das Dateisystem /tmp voll war und einige temporäre Dateien, die vom GUI-Desktop benötigt wurden, bei der Anmeldung nicht erstellt werden konnten. Da für die CLI-Anmeldung keine Dateien in /tmp erstellt werden mussten, hinderte mich der fehlende Speicherplatz dort nicht daran, mich über die CLI anzumelden. In diesem Fall war das Verzeichnis /tmp ein separates Dateisystem, und in der Volume-Gruppe, zu der das logische Volume /tmp gehörte, war reichlich Platz vorhanden. Ich habe das logische Volume /tmp einfach auf eine Größe erweitert, die meinen neuen Erkenntnissen über den benötigten Speicherplatz für temporäre Dateien auf diesem Host entsprach, und das Problem war gelöst. Diese Lösung erforderte keinen Neustart, und sobald das /tmp-Dateisystem vergrößert war, konnte sich der Benutzer am Desktop anmelden.

Eine andere Situation trat auf, als ich als Laboradministrator in einem großen Technologieunternehmen arbeitete. Einer unserer Entwickler hatte eine Anwendung am falschen Ort (/var) installiert. Die Anwendung stürzte ab, weil das Dateisystem /var voll war und die Protokolldateien, die in /var/log auf diesem Dateisystem gespeichert sind, aufgrund des Platzmangels nicht mit neuen Meldungen ergänzt werden konnten. Das System lief jedoch weiter, da die kritischen Dateisysteme / (root) und /tmp nicht voll waren. Das Entfernen der fehlerhaften Anwendung und ihre Neuinstallation im /opt-Dateisystem löste das Problem.

Dateisystemtypen

Linux unterstützt das Lesen von etwa 100 Partitionstypen; es kann nur einige davon erstellen und beschreiben. Es ist jedoch möglich – und sehr üblich -, Dateisysteme verschiedener Typen in dasselbe Root-Dateisystem einzuhängen. In diesem Zusammenhang sprechen wir von Dateisystemen im Sinne der Strukturen und Metadaten, die zum Speichern und Verwalten der Benutzerdaten auf einer Partition einer Festplatte oder eines logischen Volumes erforderlich sind. Die vollständige Liste der Dateisystem-Partitionstypen, die vom Linux-Befehl fdisk erkannt werden, finden Sie hier, damit Sie ein Gefühl für den hohen Grad an Kompatibilität bekommen, den Linux mit sehr vielen Systemtypen hat.

 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden or c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi ea Rufus alignment e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ee GPT10 OPUS 55 EZ-Drive a7 NeXTSTEP ef EFI (FAT-12/16/11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f0 Linux/PA-RISC b12 Compaq diagnost 5c Priam Edisk a9 NetBSD f1 SpeedStor14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f4 SpeedStor16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ f2 DOS secondary17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fb VMware VMFS18 AST SmartSleep 65 Novell Netware b8 BSDI swap fc VMware VMKCORE1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fd Linux raid auto1c Hidden W95 FAT3 75 PC/IX bc Acronis FAT32 L fe LANstep1e Hidden W95 FAT1 80 Old Minix be Solaris boot ff BBT

Der Hauptzweck der Unterstützung der Fähigkeit, so viele Partitionstypen zu lesen, besteht darin, Kompatibilität und zumindest eine gewisse Interoperabilität mit den Dateisystemen anderer Computersysteme zu ermöglichen. Die Auswahlmöglichkeiten, die beim Erstellen eines neuen Dateisystems mit Fedora zur Verfügung stehen, sind in der folgenden Liste aufgeführt.

  • btrfs
  • cramfs
  • ext2
  • ext3
  • ext4
  • fat
  • gfs2
  • hfsplus
  • minix
  • msdos
  • ntfs
  • reiserfs
  • vfat
  • xfs

Andere Distributionen unterstützen das Erstellen verschiedener Dateisystemtypen. CentOS 6 unterstützt beispielsweise nur die in der obigen Liste fett hervorgehobenen Dateisysteme.

Mounting

Der Begriff „mounten“ eines Dateisystems in Linux geht auf die frühen Tage der Computertechnik zurück, als ein Band- oder Wechseldatenträger physisch auf ein entsprechendes Laufwerk montiert werden musste. Nachdem es physisch auf dem Laufwerk platziert wurde, wurde das Dateisystem auf dem Datenträger vom Betriebssystem logisch eingehängt, um den Inhalt für den Zugriff durch das Betriebssystem, Anwendungsprogramme und Benutzer verfügbar zu machen.

Ein Einhängepunkt ist einfach ein Verzeichnis wie jedes andere, das als Teil des Root-Dateisystems erstellt wird. So wird z.B. das Home-Dateisystem in das Verzeichnis /home eingehängt. Dateisysteme können an Einhängepunkte auf anderen Nicht-Root-Dateisystemen eingehängt werden, aber das ist weniger üblich.

Das Linux-Root-Dateisystem wird sehr früh in der Boot-Sequenz in das Root-Verzeichnis (/) eingehängt. Andere Dateisysteme werden später von den Linux-Startprogrammen eingehängt, entweder von rc unter SystemV oder von systemd in neueren Linux-Versionen. Das Einhängen von Dateisystemen während des Startvorgangs wird durch die Konfigurationsdatei /etc/fstab verwaltet. Ein einfacher Weg, sich daran zu erinnern, ist, dass fstab für „file system table“ (Dateisystemtabelle) steht und eine Liste von Dateisystemen ist, die eingehängt werden sollen, ihre zugewiesenen Einhängepunkte und alle Optionen, die für bestimmte Dateisysteme erforderlich sein könnten.

Dateisysteme werden mit dem Befehl mount in ein bestehendes Verzeichnis/einen Einhängepunkt eingehängt. Im Allgemeinen sollte jedes Verzeichnis, das als Einhängepunkt verwendet wird, leer sein und keine anderen Dateien enthalten. Linux hindert Benutzer nicht daran, ein Dateisystem über ein bereits vorhandenes oder über ein Verzeichnis mit Dateien einzuhängen. Wenn Sie ein Dateisystem über ein bestehendes Verzeichnis oder Dateisystem mounten, wird der ursprüngliche Inhalt versteckt und nur der Inhalt des neu gemounteten Dateisystems ist sichtbar.

Abschluss

Ich hoffe, dass dieser Artikel einen Teil der möglichen Verwirrung um den Begriff Dateisystem geklärt hat. Es hat lange gedauert und einen sehr hilfreichen Mentor gebraucht, bis ich die Komplexität, Eleganz und Funktionalität des Linux-Dateisystems in all seinen Bedeutungen wirklich verstehen und schätzen gelernt habe.

Wenn Sie Fragen haben, schreiben Sie sie bitte in die Kommentare unten und ich werde versuchen, sie zu beantworten.

Nächster Monat

Ein weiteres wichtiges Konzept ist, dass für Linux alles eine Datei ist. Dieses Konzept hat einige interessante und wichtige praktische Anwendungen für Benutzer und Systemadministratoren. Der Grund, warum ich das erwähne, ist, dass Sie vielleicht meinen Artikel „Alles ist eine Datei“ vor dem Artikel über das /dev-Verzeichnis lesen wollen, den ich für den nächsten Monat plane.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.