FACHHOCHSCHULE MUENCHEN FACHBEREICH ELEKTROTECHNIK UND INFORMATIONSTECHNIK FG TECHNISCHE INFORMATIK V BS 36 1 TH 7 ----------------------------------------------------------------------------------- UNIX-Dateisysteme - Allgemeines Es gibt kein einheitliches UNIX-Dateisystem, sondern je nach UNIX-System unterschiedliche sich mehr oder weniger stark unterscheidende Dateisystem-Varianten, die aber über eine Reihe gemeinsamer Eigenschaften und Kennzeichen verfügen. UNIX-Dateisysteme sind wie die MSDOS/WINDOWS-Dateisysteme hierarchisch strukturiert, d.h. neben einem Root- Directory können Sub-Directories vorhanden sein. Das Root-Directory ist nicht durch die logische Formatierung in der Größe begrenzt, sondern kann beliebig groß werden. Dateien werden über einen Datei(zugriffs)pfad angesprochen. Datei(zugriffs)pfad [/][dir/[dir/[.../]]]dateiname mit führendem '/' : absoluter Pfad (Beginn im Root-Directory) ohne führendem '/' : relativer Pfad (Beginn im aktuellen Directory) Beispiel : dateiname : Dateitypen : /usr/swt1/huber/dpar absoluter Pfad huber/dpar relativer Pfad (wenn /usr/swt1 aktuelles Directory ist) - 1 bis 14 (neuere Systeme bis ) Zeichen - zulässige Zeichen : Bu Zi '-' '_' '.' - es existiert keine spezielle Extension, - das Zeichen '.' kann aber ein- oder mehrmals enthalten sein Regular File (normale Datei) Directory Special File (Gerät) Block Device Special File Character Device Special File Named Pipe (FIFO) Symbolic Link (Soft Link) Special Files (Geräte) üblicherweise im Directory /dev eingetragen Beispiele : /dev/dsk1 /dev/lp /dev/tty /dev/null Ein Gerätezugriff erfolgt als Zugriff zu diesen Dateien. Geräte werden formal wie Dateien behandelt. In UNIX können dem Dateipfad keine Laufwerksbezeichnungen vorangestellt werden, denn in einem UNIX-System existiert immer nur ein Dateibaum der des Root-Laufwerks. Die Dateisysteme anderer logischer Laufwerke als des Root-Laufwerks (z.b. anderer Festplattenpartitionen oder von Disketten) werden in den Dateibaum des Root-Laufwerks "eingehängt" ( mount, umount) Dateien auf den "eingehängten" Laufwerken werden über ein spezielles Directory dieses Dateibaums angeprochen. Beispiel : mount /dev/dsk1 /media/floppy Das Root-Directory von dsk1 ist als Directory /media/floppy ansprechbar Die Sektor-Datei-Zuordnungs-Übersicht ist durch Verweistabellen realisiert
FACHHOCHSCHULE MUENCHEN FACHBEREICH ELEKTROTECHNIK UND INFORMATIONSTECHNIK FG TECHNISCHE INFORMATIK V BS 36 2 TH 7 ----------------------------------------------------------------------------------- Logische Aufteilung eines UNIX-Laufwerkes (Prinzip) Anmerkung : In UNIX-Systemen ist es üblich, logische Laufwerke in Blöcke zu unterteilen. logische Block-Nummer LBN Je nach System besteht ein Block aus einem oder mehreren Sektoren. Aufteilung in Teilbereiche LBN 1 2 Boot-Block Super-Block Block-Bitmap *) Inode-Bitmap *) *) bei einigen Varianten nicht vorhanden (dort durch (Teil-)Listen im Superblock ersetzt) Inode-Liste lbnd Daten-Bereich Boot-Block : enthält das Bootstrap-Programm (leer, wenn log. Laufwerk nicht bootfähig) Superblock : enthält Verwaltungsinformationen zum Dateisystem auf dem logischen Laufwerk Block-Bitmap : enthält Belegungsinformationen über die Datenblöcke Inode-Bitmap : enthält Belegungsinformationen über die Inodes Inode-Liste : Inode = index node Jedes Element der Inode-Liste ist einer Datei (bzw einem Directory) zugeordnet und enthält Beschreibungsinformationen zu dieser Datei (dies sind Informationen die bei anderen Dateisystemen häufig im Directory-Eintrag für die Datei enthalten sind) sowie eine Verweistabelle zur Selektion der einzelnen Datenblöcke der Datei (Sektor-Datei-Zuordnungsübersicht) Einer der Inodes ist dem Root-Directory zugeordnet ( Root-Inode) Daten-Bereich : dient zur Ablage der Dateien selbst sowie bei einigen Dateisystem-Varianten - zur Ablage von Verwaltungsinformationen. Die Allokation erfolgt blockweise (ein oder mehrere Sektoren) typische Blockgröße : 512 bzw 124 Bytes
FG TECHNISCHE INFORMATIK V BS 361 TH 1 Logische Aufteilung eines Laufwerkes mit dem Dateisystem LINUX Extended 2 / Extended 3 Besonderheit : Bei den LINUX-Dateisystemen Extended 2 und Extended 3 wird ein logisches Laufwerk in Blockgruppen (Bänder) aufgeteilt. Die Datenblöcke und die zugehörigen Verwaltungsinformationen (Block-Bitmap, Inode-Bitmap, Inode-Liste) sind auf die einzelnen Blockgruppen aufgeteilt. Zusätzliche Verwaltungsstruktur : Deskriptor-Block : enthält Beschreibungsinformationen für die einzelnen Blockgruppen Aufteilung in Teilbereiche Anm. : Aus Sicherheitsgründen enthalten die Blockgruppen mit den Nr., 1, 3**x, 5**x, 7**x (x=1, 2,...) eine Kopie des Superblocks und des Deskriptorblocks (Sparse Superblock-Technik). LBN Boot-Block Aufteilung einer Blockgruppe 1 2 Blockgruppe (Band ) Super-Block Deskriptor-Block? nur bei den Blockgruppen Nr., 1, 3**x, 5**x, 7**x (x=1, 2,...) vorhanden Block-Bitmap Inode-Bitmap Blockgruppe 1 (Band 1) Inode-Liste Daten-Bereich Blockgruppe n (Band n) Größe einer Blockgruppe : derzeitige Größe einer Bitmap : jeweils 1 Block maximale Blockgruppengröße bei Blockgröße von 124 Bytes 8192 Blöcke ( 8 MBytes), von 496 Bytes 32768 Blöcke ( 128 MBytes) Unterschied zwischen Extended 2 und Extended 3 : Beide Dateisysteme verwenden die gleichen Verwaltungsstrukturen. Extended 3 ist ein Journaling-Dateisystem. Es behandelt schreibende Dateisystem-Operationen als Transaktionen, deren Teiloperationen nach ihrer Ausführung in einem Journal gespeichert werden. Das Journal ist durch eine spezielle Journal-Datei realisiert, die sich im Daten-Bereich des Laufwerks befindet.
FG TECHNISCHE INFORMATIK V BS 362 1 TH 6 Der Super-Block der Dateisysteme LINUX Extended 2 / Extended 3 (1) Der 2. Block jedes logischen UNIX/LINUX-Laufwerks (LBN=1) ist der Super-Block. Er enthält Verwaltungsinformationen zu dem auf dem Laufwerk befindlichen Dateisystem. Aufbau : x Anzahl der Inodes 4 Bytes x4 Gesamtzahl der Datenblöcke (Größe des logischen Laufwerks) 4 Bytes x8 Anzahl reservierter Datenblöcke 4 Bytes xc Anzahl freier Datenblöcke 4 Bytes x1 Anzahl freier Inodes 4 Bytes x14 LBN des 1.Datenblocks 4 Bytes x18 ld (Blockgröße in Bytes / 124) 4 Bytes x1c ld (Fragmentgröße in Bytes / 124) 4 Bytes x2 Anzahl Blöcke pro Blockgruppe 4 Bytes x24 Anzahl Fragmente pro Blockgruppe 4 Bytes x28 Anzahl Inodes pro Blockgruppe 4 Bytes x2c Zeitpunkt des letzten Mountens 4 Bytes x3 Zeitpunkt des letzten Schreibzugriffs 4 Bytes x34 Mount Count 2 Bytes x36 maximaler Mount Count 2 Bytes x38 Magic Signature (Kennzeichnung des Dateisystems) (xef53) 2 Bytes x3a Gültigkeitsflag (File System State) 2 Bytes x3c Festlegung des Verhaltens bei Fehlern 2 Bytes x3e Minor Revision Level 2 Bytes x4 Zeitpunkt der letzten Dateisystemüberprüfung 4 Bytes x44 Maximale Zeit zwischen zwei Überprüfungen 4 Bytes x48 Erzeugungs-Betriebssystem (LINUX = ) 4 Bytes x4c Revision Level 4 Bytes x5 Default UID/GID für reservierte Blöcke (UID : 2 LS-Bytes) 4 Bytes x54 reserviert 94 Bytes u.a. bei Extended 3 an Offset xe (4 Bytes) : Inode-Nr. der Journal-Datei
FG TECHNISCHE INFORMATIK V BS 362 2 TH 6 Der Super-Block der Dateisysteme LINUX Extended 2 / Extended 3 (2) Beispiel (erster Sektor eines Super-Blocks) : Inhalt einiger Eintragsfelder : x : Anzahl der Inodes : x1788 = 6 24 x4 : Gesamtzahl der Datenblöcke : x5e = 24 64 x8 : Anzahl reservierter Datenblöcke : x4b3 = 1 23 xc : Anzahl freier Datenblöcke : x216c = 13 191 x1 : Anzahl freier Inodes : xf88 = 5 978 x18 : ld (Blockgröße in Bytes / 124) : x Blockgröße : 124 Bytes = 2 Sektoren x2 : Anzahl Blöcke pro Blockgruppe : x2 = 8 192 x28 : Anzahl Inodes pro Blockgruppe : x7d8 = 2 8 x38 : Magic Signature : xef53 Anzahl Blockgruppen = Anzahl Inodes / Anzahl Inodes pro Blockgruppe = 6 24 / 28 = 3
FG TECHNISCHE INFORMATIK V BS 363 TH 6 Der Deskriptor-Block der Dateisysteme LINUX Extended 2 / Extended 3 Allgemeines : Der Deskriptor-Block enthält die Beschreibungsinformationen für die einzelnen Blockgruppen (Datenbänder). Er folgt unmittelbar auf den Super-Block Beginn bei LBN = 2. Pro Blockgruppe enthält er einen Eintrag von 32 Bytes Länge. Die Größe des Deskriptor-Blocks hängt von der Anzahl der Blockgruppen ab. Beispiel : Blockgruppen 816 Bytes belegt werden 8 Datenblöcke zu je 124 Bytes Nicht verwendete Einträge der belegten Datenblöcke werden mit -Bytes aufgefüllt. Aufbau eines Deskriptor-Block-Eintrags : x LBN Beginn Block-Bitmap 4 Bytes x4 LBN Beginn Inode-Bitmap 4 Bytes x8 LBN Beginn Inode-Liste 4 Bytes xc Anzahl freier Datenblöcke 2 Bytes xe Anzahl freier Inodes 2 Bytes x1 Anzahl verwendeter Directories 2 Bytes x12 Füll-Bytes 2 Bytes x14 reserviert 12 Bytes Beispiel für einen Deskriptor-Block mit drei Einträgen : Erster Eintrag : LBN Beginn Block-Bitmap : x6 = 96 LBN Beginn Inode-Bitmap : x61 = 97 LBN Beginn Inode-Liste : x62 = 98 Anzahl freier Datenblöcke : x1295 = 4757 Anzahl freier Inodes : x7c = 1984 Anzahl Directories : x2 = 2
FG TECHNISCHE INFORMATIK V BS 364 1 TH 6 Inodes der Dateisysteme LINUX Extended 2 / Extended 3 (1) Allgemeines : Jeder auf einem logischen UNIX-Laufwerk abgelegten Datei (einschließlich Directory) ist eine Inode zugeordnet. Eine Inode enthält Beschreibungs-Informationen zu einer Datei sowie eine Verweistabelle zur Selektion der einzelnen Datenblöcke der Datei. Bei den Dateisystemen LINUX Extended 2 /Extended 3 sind die Inodes auf mehrere Inode-Listen aufgeteilt (pro Blockgruppe eine Liste). Die Gesamtzahl inmax der Inodes sowie die Anzahl der Inodes pro einzelner Liste wird durch die logische Formatierung festgelegt. Inode-Nummer : 1.. inmax Inode 1 : reserviert (für Pseudo-Datei, bestehend aus defekten Blöcken) Inode 2 : für Root-Directory Inode 3.. 1 : reserviert (z.b Inode 8 für die Journal-Datei bei Extended 3) Inode 11 : erste frei verwendete Inode Größe einer Inode bei LINUX Extended 2 / Extended 3 : 128 Bytes File Mode Erster Eintrag in der Inode (2 Bytes). Er besteht aus : den Zugriffsrechten und dem Dateityp Dateizugriffsrechte : Owner Read ( r ) Group jeweils Write ( w ) Other User Execute ( x ) z.b. rwx r-x r-x Dateitypen : Normale Datei (Regular File) Directory ( d ) Character Device ( c ) Block Device ( b ) Symbolic Link ( l ) Named Pipe (Fifo) ( p ) Socket ( s ) Aufbau des File Mode Eintrags (2 Bytes) Bit-Nr 15 14 13 12 11 1 9 8 7 6 5 4 3 2 1 Dateityp spezielle Zugriffs- Owner Group Other User modifier r w x r w x r w x 1 Named Pipe 1 Character Device 1 Directory 11 Block Device 1 Regular File 11 Symbolic Link 11 Socket 1-- setuid-bit -1- setgid-bit --1 sticky-bit
FG TECHNISCHE INFORMATIK V BS 364 2 TH 8 Inodes der Dateisysteme LINUX Extended 2 / Extended 3 (2) Aufbau einer Inode (Größe 128 Bytes) : x File Mode (Dateityp und Zugriffsrechte) 2 Bytes x2 User ID (Owner) 2 Bytes x4 Dateigröße in Bytes (bei Symbolic Link : Länge des Zielpfades) 4 Bytes x8 Zeitpunkt des letzten Zugriffs (Access Time) 4 Bytes xc Zeitpunkt der Dateierzeugung (Creation Time) 4 Bytes x1 Zeitpunkt der letzten Änderung (Modification Time) 4 Bytes x14 Zeitpunkt des Löschens der Datei (Deletion Time) 4 Bytes x18 Group ID 2 Bytes x1a Anzahl der Links auf Datei (Link Count) 2 Bytes x1c Anz. allok. Sektoren für Datei (Block Count) (kurzer Symbolic Link : ) 4 Bytes x2 Datei-Attribute (File Flags) 4 Bytes x24 reserviert (OS abhängig) 4 Bytes x28 LBN des 1. bis 12. Dateiblocks 12*4 Bytes bei kurzen Symbolic Links x58 LBN des Einfach-Indirektionsblocks 4 Bytes (bis zu 6 Bytes) : x5c LBN des Zweifach-Indirektionsblocks 4 Bytes Ziel-Dateipfad x6 LBN des Dreifach-Indirektionsblocks 4 Bytes 6 Bytes x64 Dateiversion 4 Bytes x68 File ACL (zukünftige Erweiterung der Zugriffskontrolle) 4 Bytes x6c Directory ACL (zukünftige Erweiterung der Zugriffskontrolle) 4 Bytes x7 Fragment-Adresse 4 Bytes x74 Fragment-Nummer 1 Byte x75 Fragment-Größe 1 Byte x76 reserviert (OS abhängig) 1 Bytes
FG TECHNISCHE INFORMATIK V BS 364 3 TH 5 Inodes der Dateisysteme LINUX Extended 2 / Extended 3 (3) Beispiele : Inode des Root-Directories (Inode-Nr. 2) 1 2 3 4 5 6 7 8 9 A B C D E F 123456789ABCDEF : ED 41 4 9D 56 73 31 6B 47 73 31 ía...vs1kgs1 1 : 6B 47 73 31 14 2 kgs1... 2 : 6 1... 3 :... 4 :... 5 :... 6 :... 7 :... Inode eines Sub-Directories (hier : Inode-Nr 11, "lost+found/") 1 2 3 4 5 6 7 8 9 A B C D E F 123456789ABCDEF : ED 41 3 D 45 73 31 A9 E1 E2 3 ía...es1 áâ 1 : A9 E1 E2 3 2 18 áâ... 2 : 7 1 8 1... 3 : 9 1 A 1 B 1 C 1... 4 : D 1 E 1 F 1 1 1... 5 : 11 1 12 1... 6 :... 7 :... Inode einer normalen Datei (hier : Inode-Nr. 12, "vmlinuz") 1 2 3 4 5 6 7 8 9 A B C D E F 123456789ABCDEF : A4 81 4 4C 7 A6 CA 7 31 83 F6 E2 3...L.. Êp1ƒöâ 1 : 83 F6 E2 3 1 A8 3 ƒöâ...... 2 : 16 1 17 1... 3 : 18 1 19 1 1A 1 1B 1... 4 : 1C 1 1D 1 1E 1 1F 1... 5 : 2 1 21 1 22 1 21 2...!..."...!... 6 : 1... 7 :... Inode eines Symbolic Links (hier : Inode-Nr. 4574, "linux") 1 2 3 4 5 6 7 8 9 A B C D E F 123456789ABCDEF : FF A1 E 3 F1 E2 3 3 F1 E2 3 ÿ...ñâñâ 1 : 3 F1 E2 3 1 ñâ... 2 : 2F 75 73 72 2F 73 72 63.../usr/src 3 : 2F 6C 69 6E 75 78 /linux... 4 :... 5 :... 6 : 1... 7 :...
FG TECHNISCHE INFORMATIK V BS 365 TH 6 Struktur der Datenblock-Verweise in den Dateisystemen LINUX Extended 2 / Extended 3 Annahmen : Blockgröße 124 Bytes, Größe einer LBN 4 Bytes max. Dateigröße : 16 GBytes Inode Datei RBN *) 11 11 12 13 14 Einfach- Indirektions- Block 12 267 268 Zweifach- Indirektions- Block Block Dreifach- Indirektions- Block Block 65 83 65 84 Block 65535 16 843 19 *) RBN relative Blocknummer innerhalb der Datei
FG TECHNISCHE INFORMATIK V BS 366 TH 5 Directory-Einträge der Dateisysteme LINUX Extended 2 / Extended 3 Allgemeines : Ein Directory-Eintrag stellt lediglich den Zusammenhang zwischen dem Dateinamen und der Nummer des zu der Datei gehörenden Inodes her. In den Dateisystemen LINUX Extended 2 /Extended 3 kann ein Dateiname 1 bis Zeichen lang sein. Um nicht unnötig Platz zu verschwenden, haben Directory-Einträge eine variable an die Länge des Dateinamens angepaßte Länge. Diese beträgt aber immer ein Vielfaches von 4 Bytes. Aufbau eines Directory-Eintrags : x Inode-Nummer 4 Bytes x4 Länge des Directory-Eintrags (immer Vielfaches von 4) 2 Bytes x6 Länge des Dateinamens 1 Byte x7 Dateityp *) 1 Byte x8 Dateiname 1 Bytes Füll-Bytes (Anzahl angepaßt an durch 4 teilbare Gesamtlänge) *) Codierung des Dateityps : (in den letzten 3 LS-Bits) unbekannt 1 normale Datei 1 Directory 11 Character Device 1 Block Device 11 Named Pipe 11 Socket 111 Symbolic Link Beispiel (Anfang eines Root-Directories) :