Linux Dateisystem Aufbau: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(2 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt)
Zeile 1: Zeile 1:
==Interna '''Unix''' Dateisysteme==
+
==Interne '''Unix''' Dateisysteme==
 
*Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt.  
 
*Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt.  
*Die Verwaltungsdaten werden in so  Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt.
+
*Die Verwaltungsdaten werden in so genannten Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt.
 
*Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert.
 
*Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert.
 
*Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer.
 
*Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer.
Zeile 61: Zeile 61:
 
Gruppe mit dem Unix-Prinzip:
 
Gruppe mit dem Unix-Prinzip:
  
[[Image:qwe2.png|alt text]]
 
 
{{#drawio:datsys-4}}
 
{{#drawio:datsys-4}}
  

Aktuelle Version vom 11. Juni 2024, 12:26 Uhr

Interne Unix Dateisysteme

  • Generell werden die Verwaltungsinformationen von den eigentlichen Daten getrennt.
  • Die Verwaltungsdaten werden in so genannten Inodes gehalten, deren vereinfachten Aufbau diese Abbildung zeigt.
  • Jede Datei (und das gilt für jeden Dateityp) wird durch genau einen Inode repräsentiert.
  • Innerhalb einer Partition besitzt jeder Inode eine eindeutige Nummer.
  • Im Laufe der Installation wird auf jeder Partition ein Dateisystem angelegt.
  • AlleUnix-Dateisysteme lassen sich in das in dieser Abbildung skizzierte Schema einordnen

Anfang der Partition

Erläuterung

Bootblock Der erste Block jeder Partition kann einen Bootloader (zum Start eines Betriebssystems) enthalten, er wird beim Einschalten des Rechners vom BIOS gelesen. Dieser Block existiert bei allen Dateisystemen.
Superblock Hier stehen Informationen zum Typ und internen Aufbau des Dateisystems. Der Inhalt ist also systemabhängig
Inode-Blöcke Inodes werden innerhalb der Filesysteme in Inode-Listen geführt, und sind definierte Datenstrukturen, die eine Datei eindeutig beschreiben und verwalten können.

Im einfachsten Fall stehen alle Inodes hintereinander auf der Platte. Ist die Datei sehr klein (<= 60 Bytes), werden ihre Daten direkt im Inode gespeichert, ansonsten verweist ein Eintrag im Inode auf einen (oder mehrere) Datenblock, in dem nun der Inhalt der Datei gespeichert wird. Reichen die in einem Inode referenzierten Blöcke (maximal 12) für eine Datei nicht aus, zeigt ein Eintrag im Inode auf einen (oder mehrere) Datenblock, welcher nun die eigentlichen Verweise zu den Datenblöcken beinhaltet. Man spricht von einem einfach indirekten Block. Bis zu dreifach indirekte Blöcke sind möglich, so dass theoretisch als maximale Dateigröße 8 TByte bei einer Blockgröße von 4 KByte erzielt werden ( [ 12 + 1024 + 1024*1024 + 1024*1024*1024 ] * 4 kb ). Durch weitere Faktoren auf 32 Bit Architekturen ist dieser Wert bei Kernel 2.2 allerdings auf 2 GByte begrenz

Datenblöcke Gehört ein Block zu einer normalen Datei, dann stehen hier die Daten zu dieser. Gehört der Block zu einem Verzeichniseintrag, so enthält er den

Inhalt des Verzeichnisses, also eine Tabelle aus Dateinamen und zugehöriger Inode. Ein Datenblock lässt (aus Sicht des Systems) keinen Rückschluss auf den zugehörigen Inode zu. Da die Blockgröße festliegt, wird im Falle, dass die Dateigröße diese nicht erreicht, Plattenplatz verschwendet. In Anbetracht der durchschnittlichen Dateigrößen in einem Unix-System hat sich 4096 Byte als optimale Blockgröße herausgestellt. Wählt man einen kleineren Wert, erhöht sich zwar die mittlere Auslastung der einzelnen Blöcke, allerdings benötigt man ggf. mehr indirekte Datenblöcke (sowie im konkreten Falle des Linux-Dateisystems größere Bitmaps).

Optimierungen im Linux-Dateisystem

Schauen wir uns nun die Einteilung einer Partition im ext2 an:


Scheinbar besitzt das ext2 keinerlei Änlichkeit mit herkömmlichen Unix- Dateisystemen. Abgesehen vom Bootblock, aber über diesen verfügt bekanntlich jedes Dateisystem. Aber das täuscht... Vergleichen wir einmal die Struktur einer Gruppe mit dem Unix-Prinzip:

Abbildung: Struktur einer ext2-Gruppe

Superblock, Inode-Tabelle und Datenblöcke sind hier enthalten.

Superblock Die Superblöcke der einzelnen Gruppen sind exakte Kopien

des Superblockes aus Gruppe 0. Er enthält in einer 1024 Bytes großen Struktur alle wichtigen Informationen zum Dateisystem, wie die Anzahl von Inodes und Datenblöcken (gesamt/frei), Blockgröße der Datenblöcke (ein Inode ist immer 128 Byte groß), Zeitpunkt des letzten Mountens, Zähler der Anzahl der Mountvorgänge, Status, Zeit der letzten Überprüfung usw.

Gruppendeskriptoren Hier wurde zusätzliche Sicherheit eingebaut. Die

Deskriptoren enthalten alle notwendigen Informationen zu allen anderen Gruppen, um diese nach einem Defekt restaurieren zu können. Sind in einer Gruppe also die Verwaltungsinformationen (Superblock, Gruppendeskriptoren oder Bitmaps) zerstört worden, können diese repariert werden und die Daten sind weiterhin verfügbar

Bitmaps Sie dienen dem schnellen Auffinden von freien

Inode/Datenblöcken. Ihre Größe entspricht der Datenblockgröße und beschränkt die Anzahl der Datenblöcke einer Gruppe (bei einer Blockgröße von 4096 Bytes sind es somit 32768).

Inodetabelle/Datenblöcke Hier gilt das schon in der allgemeinen Beschreibung gesagte.