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