Protokoll der Vorlesung DOLINUX vom 10.11.2004 zum Thema
Transcription
Protokoll der Vorlesung DOLINUX vom 10.11.2004 zum Thema
Protokoll der Vorlesung DOLINUX vom 10.11.2004 zum Thema Dateisysteme und Partitionen Richard Membarth Peter Baumann Alexander Würstlein 12. November 2004 1 Devices Beispiele: • Platte, Floppy, USB-Stick, etc. (haben 512-Byte-Blöcke) • CD-ROM, DVD (haben 2048-Byte-Blöcke) Von Devices können nur ganze Blöcke gelesen werden. • Wenn Dateien kleiner als Blockgrösse wird trotzdem ein kompletter Block gelesen oder geschrieben. • Wenn sehr viele Blöcke vorhanden, wie verwalten? ⇒ Dateisystem 2 Dateisystem Das Dateisystem unterteilt Platte in 5 Teile wie in Abbildung 1 zu sehen. Superblock Inode Allocation Table Block Allocation Table Inodes Data Blocks Abbildung 1: erstes Unix System V Dateisystem Alle neueren Unix Dateisysteme (ext3, reiserfs, xfs, etc.) verhalten sich im wesenlichen semantisch gleich. Sie verwenden alle zur Repräsentation einer Datei sogenannte Inodes. Die Belegung der Inodes wird in der Inode-Allocation-Table mittels einer Bitliste verwaltet, die Datenblöcke in der Block-Allocation-Table analog. Der Superblock, der sich am Anfang einer Platte in Block 0 befindet, gibt die Anzahl der Inodes und Datenblöcke im Dateisystem an. Daraus ergibt sich die Position bzw. die Grenze zwischen den Bereichen. Problem: Beschädigung des Superblocks macht Dateisystem unlesbar. ⇒ in neueren Dateisystemen wird der Superblock redundant abgelegt. 1 2.1 Inodes Ein Inode1 enthält: size : Grösse der Datei (um Belegung des letzten Blocks zu berechnen) direct blocks : Blockliste (10 Einträge, 0-terminiert2 ). Diese direct blocks“ ” zeigen auf die Datenblöcke. indirect block : 1 Eintrag indirect block“, zeigt auf Block im Bereich der ” data blocks“, der Blocknummern für weitere Datenblöcke enthält ” inindirect block : 1 Eintrag inindirect block“, zeigt auf einen indirect Block“ ” ” ininindirect block : 1 Eintrag ininindirect block“, der wiederum auf einen ” inindirect Block“ zeigt. ” uid und gid : für Besitzer und Gruppe modes (Zugriffsrechte): in der Form rwx rwx rwx, erster Dreierblock gibt Rechte für Besitzer zweiter für Gruppe, dritter für alle Anderen an. Es werden nur die jeweils zutreffenden Bits geprüft, man kann anderen also Zugriff auf eigene Dateien gestatten und im schlimmsten Fall sich selbst aussperren. Vorsicht: Bei Zugriff auf ein directory erlauben Schreibrechte ebenfalls das Erstellen und Löschen von fremden Dateien. Bei Verzeichnissen erlaubt das r-Bit die Auflistung des Inhalts (z.B. mit ls). Das x-Bit erlaubt den Zugriff auf Dateien im Verzeichnis und das Wechseln ins Verzeichnis, aber nicht das Auflisten. type : Gibt den Typ an z.B. directory, file, symlink, special device, etc. atime : Access time: Zeitpunkt als zuletzt aus der Datei gelesen wurde. Nützlich um unbenutzte Dateien zu erkennen. mtime : Modification time: geändert beim Schreiben in die Datei. ctime : Change time: Bei Änderung am Inode, aber nicht beim automatischen Update der Zeiten. nlink : Anzahl der Hardlinks auf eine Datei. Abfragen dieser Informationen über ls -lisa. Früher erfolgte der Zugriff über Inode-Nummern über read(nr, buffer, count) write(nr, buffer, count) Funktioniert nur mit wenigen Dateien und einem User, da sonst das Problem besteht, dass unterschiedliche Benutzer sich gegenseitig ihre Daten überschreiben. 2 Inode 13: etc-directory 13 . 2 .. 1024 profile 27 passwd Inode 2: root-directory 2 . 2 .. 13 etc 24 tmp 5 test 5 blubb 24 . 4711 home 2 .. 1011 dolinux 1527 gcc Inode 24: tmp-directory Abbildung 2: Aufbau des Root-Verzeichnisses mit Unterverzeichnissen 2.2 Verzeichnisse und Hardlinks Daher: Datei mit inode-Nummer 2 als Liste (siehe Abbildung 2). Ein Hardlink ist die Verknüpfung eines Dateinamens mit einer Datei über deren Inode-Nummer. Jeder Hardlink inkrementiert nlink im Inode (beim löschen dekrementiert). Daher ist das Löschen einer Datei erst dann möglich, wenn nlink 0 ist. Der Dateiname .“ in einem Verzeichnis zeigt immer auf das Verzeichnis ” selbst. Der Dateiname ..“ verweist auf das übergeordnete Verzeichnis, ausge” nommen im root-Verzeichnis, da es kein dazu übergeordnetes Verzeichnis gibt. Der Administrator kann .“ und ..“ ändern und auf ein anderes Verzeichnis ” ” zeigen lassen. neue Systemaufrufe: open(name,...), close(nr), link, unlink, chdir. open gibt eine inode-Nummer zurück, link erstellt einen neuen Namen für einen Inode, unlink löscht einen Namen, dekrementiert nlink und löscht den Inode wenn nlink 0 ist. /bin/pwd gibt das aktuelle Verzeichnis aus. Es existert kein pwd()-Systemaufruf. /bin/pwd folgt den ..“-Hardlinks bis ins root-Verzeichnis und setzt die Namen ” der besuchten Verzeichnisse zusammen. 1 internal 2 da node Block 0 Superblock 3 3 Partitionen Problem: 2 Betriebssysteme in einem Dateisystem nicht möglich. ⇒ Partitionen PT Partition 1 Partition 2 Partition 3 Partition 4 Abbildung 3: Aufteilung der Platte in Partitionen Partitionen entsprechen virtuellen (logischen) Platten. In der Partitionstabelle sind Anfang, Grösse und Typ der Partitionen verzeichnet. Mehrere Partitionen können auch bei nur einem Betriebssystem Sinn machen, beispielsweise werden Backups vereinfacht. Nachteil hierbei ist, dass die Partitionsgrenzen nicht verschiebbar sind und Hardlinks zwischen Dateien auf verschiedenen Partitionen nicht möglich sind. 4