Tauchen Sie ein in die faszinierende Welt der Linux-Dateisysteme und enthüllen Sie die Geheimnisse, die hinter der reibungslosen Datenverwaltung auf Ihrem System stecken. Dieses Buch ist Ihr umfassender Leitfaden, um das Innenleben des Virtual File System (VFS) und des EXT2-Dateisystems zu verstehen – den Eckpfeilern der Linux-Speicherarchitektur. Entdecken Sie, wie das VFS als universelle Schnittstelle fungiert, die es ermöglicht, unterschiedlichste Dateisysteme nahtlos zu integrieren, von traditionellen Systemen wie EXT bis hin zu spezialisierten Lösungen für CD-ROMs (ISO9660) und Netzwerkfreigaben (NFS, SMB). Erforschen Sie die detaillierte Struktur des EXT2-Dateisystems, von den grundlegenden Blöcken und I-Nodes bis hin zu den Optimierungen, die es zu einem robusten und zuverlässigen Standard gemacht haben. Lernen Sie, wie Dateinamen, Zugriffsrechte und Mount-Prozesse funktionieren, und gewinnen Sie Einblicke in die Mechanismen, die die Datenintegrität gewährleisten. Ob Sie ein angehender Systemadministrator, ein neugieriger Entwickler oder einfach nur ein Linux-Enthusiast sind, dieses Buch bietet Ihnen das Wissen, um Ihr System besser zu verstehen, Probleme zu beheben und die Leistung zu optimieren. Wagen Sie sich tiefer in die Materie und entdecken Sie die Unterschiede zwischen verschiedenen Dateisystemtypen, wie z.B. EXT3 mit seinen Journaling-Funktionen, oder spezialisierte Systeme wie ReiserFS. Erfahren Sie, wie Sie mit den Herausforderungen der Datenrettung nach Systemabstürzen umgehen und wie die regelmäßige Überprüfung Ihres Dateisystems dazu beitragen kann, Datenverlust zu vermeiden. Mit klaren Erklärungen, detaillierten Diagrammen und praktischen Beispielen ist dieses Buch Ihr unverzichtbarer Begleiter auf dem Weg zum Dateisystem-Experten. Lassen Sie sich von der Eleganz und Effizienz der Linux-Dateisystemarchitektur überraschen und meistern Sie die Kunst der Datenverwaltung unter Linux.
Inhaltverzeichnis
Vorwort
VFS – Virtual File System
interessantere Dateisysteme
Das EXT2 Dateisystem
Das Blocksystem – die grundlegende Struktur eins UNIX Dateisystems
Der Bootblock
I-Nodes
Optimierungen im Linux-Dateisystem EXT
Warum Gruppen?
EXT2 – Umgang mit dem Dateisystem
Dateinamen
Zugriffsdatum
Eigentümer
Gruppenzugehörigkeit
Anzahl der Dateinamen
Zugriffsmodus und Dateiart
Das Mounten von Dateisystemen
Die Überprüfung beim Systemstart
Dateiarten unter Unix
Reguläre Dateien
Symbolische Links
Verzeichnisse
Blockorientierte Geräte
Zeichenorientierte Geräte
Schlusswort
Quellen:
Vorwort
Ein Dateisystem eignet sich dafür, die Aufnahme von Dateien auf Speichern (zum Beispiel Festplatten, Disketten oder CD-ROMs) zu ermöglichen. Das System stellt ein gemeinsames Interface für alle Dateisystemtypen bereit, mit denen es arbeiten kann. Unter Linux gehören das Second Extended Filesystem (oderext2fs) dazu, unter dem man Linux-Dateien ablegen kann. Die Anforderungen der Einfachheit, der Sicherheit und der Erweiterbarkeit stehen im Vordergrund und dadurch eignet sich nicht jedes Dateisystem zum Standard. Das Extended Filesystem 2 hat sich in den letzten Jahren dank der Unterstützung dieser Eigenschaften zum Standard durchgesetzt. Der Aufbau, die Funktionsweise und die Schnittstelle zum Betriebssystem (VFS) werden in dieser Ausarbeitung dargestellt.
VFS – Virtual File System
Ein großer Vorteil des Linux-Dateisystems, gegenüber anderen Betriebssystemen, ist es, dass viele verschiedene Dateisysteme unterstützt werden. Der Linux Kernel ist so modular aufgebaut, dass es, ab der Version 1.1.8, möglich ist, neue Dateisysteme zur Laufzeit einzubinden.
Die Dateisysteme, wie das EXT2, werden von dem Virtual Filesystem Switch (VFS) verwaltet.
Das VFS dient als Schnittstelle zwischen den speziellen Dateisystemen und den zugreifenden Prozessen. Innerhalb des virtuellen Dateisystems werden die Systemaufrufe der Applikationen an das eigentliche Dateisystem weitergeleitet.
Die Idee, die demvirtual file system(VFS) zugrunde liegt, besteht darin, dateisystemunabhängige Datenstrukturen zur Repräsentation von Dateisystemtypen, Superblöcken, Inodes und Dateien zu schaffen.
Jede der Datenstrukturen der VFS-Schicht enthält einen Zeiger auf eine Struktur, die nur aus Funktionszeigern besteht. Diese Funktionszeiger definieren den dateisystemspezifischen Satz von Operationen, die auf der betreffenden Datenstruktur anwendbar sind. Das VFS enthält den allgemeinen Code, der mit Superblöcken, Inodes und Dateien umgeht. Wann immer in diesem Kontext dateisystemspezifische Operationen notwendig sind, wird über die mit der Datenstruktur assoziierten Funktionszeiger die zugehörige spezialisierte Funktion aufgerufen.
Wenn dem Kernel ein Dateisystemtyp bekannt ist, kann ein Dateisystem dieses Typs aktiviert werden, indem sein Superblock mit Hilfe der durch den Funktionszeiger read_super bezeichneten Funktion eingelesen wird. Das Ergebnis dieses Funktionsaufrufes ist ein initialisierter Superblock, der neben typunabhängigen Informationen auch die für diesen Dateisystemtyp spezifischen Informationen enthält. Linux verwaltet die Superblöcke aller angemeldeten Dateisysteme unabhängig von ihrem Typ in einem Feld super_block. Der Dateisystemtyp eines Superblocks ist über den in ihm enthaltenen Rückwärtsverweis s_type leicht feststellbar. Ein Dateisystem kann deaktiviert werden, indem man über den Zeiger put_super die spezifische Deaktivierungsfunktion aufruft.
Durch diese Schicht zwischen den Anwendungen und Dateisystem ist es also möglich, mit einem Befehlssatz alle vorhandenen Systeme universell anzusprechen und mit ihnen individuell zu arbeiten
Beispiel: rm, cp, mkdir und andere Befehle sind immer einsetzbar und werden in die typabhängigen Funktionen übersetzt.
Um ein neues Dateisystem dem VFS bekannt zu machen, muss dieses mit der Funktionregister_filesystem() hinzugefügt werden. Diese Funktion muss mit den entsprechenden Parametern, von der Initialisierungsroutine des neuen Filesystems aufgerufen werden.
Die Strukturen des neuen FS werden in einer einfach verketteten Liste abgelegt.
Einigederinteressanteren Dateisysteme fasst die folgende Tabelle zusammen:
- bfsUnixWare Boot Filesystem
- extDer Vorgänger des ext2, kaum mehr in Gebrauch
- ext2Das Standarddateisystem von Linux
- ext3Weiterentwicklung von ext2 mit zusätzlichen Funktionen eines Journaling File Systems, allerdings ist die Entwicklung noch nicht abgeschlossen
- iso9660Alle CD-ROMs speichern ihre Daten unter diesem Format
- hpfsOS-2 (nur lesend) loopback Mounten einer einzelnen Datei als Dateisystem
- minixMinix ist der eigentliche Vorgänger von Linux, sein Dateisystem wird gern noch für (Installations-) Disketten eingesetzt
- msdosDOS, wichtig für den Zugriff auf DOS-formatierte Disketten
- ncpfsNovell Netware
- nfsNetwork File System
- ntfsWindowsNT, schreiben ist auf dieses Dateisystem zwar möglich, jedoch kann dies leicht zu irreparablen Schäden führen
- ramdiskMounten eines Bereichs des Hauptspeichers als Dateisystem
- SMB(Server Message Block) NT, Windows für Workgroups; zum Zugriff auf von einem Windows-Rechner freigegebene Verzeichnisse
- swapSwap-Partitionen oder -Dateien
- SystemVVerschiedene Unixe
- procProzessverwaltung
- reiserfsEines der ersten Journaling File Systeme für Linux
- umsdosDOS-Dateisystem unter Linux verwenden, hier wird vor allem ein Mapping der unterschiedlichen Dateinamensformate und -rechte vorgenommen
- vfatWindows95, sowohl in der 16 bit als auch 32 bit Variante
Das EXT2 Dateisystem
Das Extended Filesystem gilt als der Standard in der Linuxwelt. Durch seine Stabilität und Anpassungsfähigkeit eignet es sich für kleine Heimcomputer wie auch für große Serversysteme. Zum heutigen Zeitpunkt mit dem verfügbaren Kernel 2.4.x kann man im ext2, so die Abkürzung des Extended Filesystem 2, eine maximale Dateigröße von 4Gigabyte erreichen. Wie sich diese Größe zusammensetzt, lässt sich später in Verbindung mit der Struktur das Dateisystem einfach erklären. Weitere Möglichkeiten, das System unanfällig gegen Ausfälle zu machen, ist z.B. die Reservierung von Speicherplatz zur Vermeindung eines „Overflow“. D.h. es wird eine festgelegte Größe von Speicherplatz nicht zur Verfügung gestellt, damit im Fall, dass sehr viele Daten geschrieben werden und das Speichermedium ausgelastet ist, kein Systemausfall passieren kann.
Das Blocksystem – die grundlegende Struktur eins UNIX Dateisystems
Bootblock Superblock Inodeblock Datenblock
Der Superblock
Ein Unix-Dateisystem besitzt einen so genannten Superblock, einen Block, der die grundlegenden Informationen zum Dateisystem selbst enthält. Einige wichtige Daten des Superblocks sind:
- Die Größe des Dateisystems in Blöcken
- Die Größe der Blöcke in Bytes
- Zeiger auf den ersten freien Datenblock
- Zeiger auf erste freie I-Node
- Verschiedene Statusbits (Flags)
Häufig gestellte Fragen
Was ist der Zweck des VFS (Virtual File System)?
Das VFS dient als Schnittstelle zwischen den speziellen Dateisystemen (wie EXT2, EXT3, etc.) und den zugreifenden Prozessen. Es ermöglicht, dass verschiedene Dateisysteme unter Linux unterstützt werden können, indem es Systemaufrufe der Applikationen an das eigentliche Dateisystem weiterleitet.
Wie macht man ein neues Dateisystem dem VFS bekannt?
Ein neues Dateisystem wird dem VFS mit der Funktion register_filesystem() bekannt gemacht. Diese Funktion wird mit den entsprechenden Parametern von der Initialisierungsroutine des neuen Filesystems aufgerufen.
Welche Dateisysteme werden unter Linux unterstützt?
Einige der unterstützten Dateisysteme sind bfs, ext, ext2, ext3, iso9660, hpfs, minix, msdos, ncpfs, nfs, ntfs, ramdisk, SMB, swap, SystemV, proc, reiserfs, umsdos und vfat.
Was ist das EXT2 Dateisystem?
Das Extended Filesystem 2 (EXT2) ist ein Standard-Dateisystem in der Linuxwelt, das sich durch seine Stabilität und Anpassungsfähigkeit auszeichnet. Es eignet sich sowohl für kleine Heimcomputer als auch für große Serversysteme.
Wie groß kann eine Datei im EXT2 maximal sein?
Mit dem Kernel 2.4.x kann im EXT2 eine maximale Dateigröße von 4 Gigabyte erreicht werden.
Was ist ein Superblock in einem UNIX-Dateisystem?
Ein Superblock ist ein Block, der die grundlegenden Informationen zum Dateisystem selbst enthält. Dazu gehören die Größe des Dateisystems in Blöcken, die Größe der Blöcke in Bytes, Zeiger auf den ersten freien Datenblock und die erste freie I-Node sowie verschiedene Statusbits (Flags).
Warum kann es nach einem Systemabsturz zu Inkonsistenzen im Dateisystem kommen?
Der Superblock wird beim Mounten eines Dateisystems in den Speicher gelesen und alle Veränderungen werden dort vorgenommen. Die Daten werden dann sporadisch gechached, und beim Unmounten des Dateisystems werden diese Veränderungen physikalisch auf der Platte gespeichert. Wenn es vor dem physikalischen Schreiben zu einem Absturz kommt, kann es zu Inkonsistenzen kommen.
Was sind I-Nodes?
I-Nodes (Index Nodes) enthalten Metadaten über Dateien in einem Dateisystem, wie z.B. Zugriffsrechte, Eigentümer, Gruppenzugehörigkeit, Dateigröße und Zeiger auf die Datenblöcke, in denen der Inhalt der Datei gespeichert ist.
Was sind die verschiedenen Dateiarten unter Unix?
Die verschiedenen Dateiarten unter Unix sind reguläre Dateien, symbolische Links, Verzeichnisse, blockorientierte Geräte und zeichenorientierte Geräte.
Was ist der Zweck des Mountens von Dateisystemen?
Das Mounten von Dateisystemen ermöglicht es, ein Dateisystem in die Verzeichnisstruktur des Betriebssystems einzubinden, so dass auf die Dateien und Verzeichnisse des Dateisystems zugegriffen werden kann.
- Quote paper
- Christoph Berlin (Author), 2002, Dateisysteme unter Linux, Munich, GRIN Verlag, https://www.grin.com/document/106960