Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Über die Autoren
Über dieses Buch
Linux vs. BSD
1 Der Kernel
2 Die Grundlagen aus Anwendersicht
3 Die Shell
4 Reguläre Ausdrücke
5 Tools zur Dateibearbeitung
6 Die Editoren
7 Shellskriptprogrammierung
8 Benutzerverwaltung
9 Grundlegende Verwaltungsaufgaben
10 Netzwerk-Grundlagen
11 Anwendersoftware für das Netzwerk
12 Netzwerkdienste
13 Mailserver unter Linux
14 LAMP
15 DNS-Server
16 Secure Shell
17 Die grafische Oberfläche
18 Window-Manager und Desktops
19 X11-Programme
20 Multimedia und Spiele
21 Softwareentwicklung
22 Crashkurs in C und Perl
23 Sicherheit
24 Prozesse und IPC
25 Bootstrap und Shutdown
26 Dateisysteme
27 Virtualisierung und Emulatoren
A Die Installation
B Lösungen zu den einzelnen Aufgaben
C Kommandoreferenz
D X11-InputDevices
E MBR
F Die Buch-DVDs
G Glossar
H Literatur

Download:
- ZIP, ca. 6,3 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Linux von Johannes Plötner, Steffen Wendzel
Das distributionsunabhängige Handbuch
Buch: Linux

Linux
2., aktualisierte und erweiterte Auflage
1119 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1090-4
gp 26 Dateisysteme
  gp 26.1 Der Aufbau von Speichermedien
    gp 26.1.1 Die physikalische Struktur
    gp 26.1.2 Die logische Struktur
    gp 26.1.3 Integration ins VFS
  gp 26.2 Dateisysteme
    gp 26.2.1 ext2, ext3 und reiserfs
    gp 26.2.2 FFS und UFS/UFS2
    gp 26.2.3 ISO 9660
    gp 26.2.4 Loop Device und Ramdisk
    gp 26.2.5 Swap
    gp 26.2.6 DevFS
    gp 26.2.7 ProcFS
    gp 26.2.8 NFS
    gp 26.2.9 Ecryptfs
    gp 26.2.10 Weitere Dateisysteme
  gp 26.3 Dateitypen
    gp 26.3.1 Reguläre Dateien
    gp 26.3.2 Verzeichnisse
    gp 26.3.3 Links
    gp 26.3.4 Sockets
    gp 26.3.5 Named Pipes
    gp 26.3.6 Gerätedateien
  gp 26.4 Inodes
    gp 26.4.1 Die Metadaten
    gp 26.4.2 Alternative Konzepte
  gp 26.5 Administration
    gp 26.5.1 qtparted und gparted
    gp 26.5.2 disklabel
    gp 26.5.3 hdparm
    gp 26.5.4 fdisk und cfdisk
    gp 26.5.5 Das Tool cfdisk
    gp 26.5.6 mkfs
    gp 26.5.7 tune2fs
    gp 26.5.8 fsck
  gp 26.6 Praktische Beispiele
    gp 26.6.1 ZIP-Laufwerke
    gp 26.6.2 Neue Festplatten integrieren
    gp 26.6.3 Eine Datei als Dateisystem: Loop Device
    gp 26.6.4 USB-Sticks und -Platten, Digitalkameras und Co.
    gp 26.6.5 Das Device ansprechen
  gp 26.7 Zusammenfassung
  gp 26.8 Aufgaben


Galileo Computing

26.3 Dateitypen  downtop

Alles ist Datei

Unter Unix gibt es bezüglich Dateisystemen die Philosophie, dass eigentlich alles als »Datei« bezeichnet wird, was sich letztendlich im Dateisystem befindet. <Das ist nicht selbstverständlich. Beispielsweise unter Windows befindet sich »C:\>« auch im Dateisystem, ist aber keine Datei.} Die meisten Unix-Anwender, die von Windows kommen, denken, dass nur reguläre Dateien (d.  h. ausführbare Programme, Text-Dateien etc.) »richtige« Dateien seien. Dies ist aber unter Unix nicht der Fall. Unter Unix sind beispielsweise auch Sockets, FIFOs, Verzeichnisse und Devices Dateien. <Unter Solaris kennt man auch »Doors« als Dateitypen.> Auch wenn Sie mit einigen Begriffen nach der Lektüre der vorherigen Kapitel schon einiges anfangen können, wollen wir im Folgenden trotzdem noch eine zusammenfassende Übersicht geben.

Im Besonderen definiert sich ein Dateityp also nicht durch den Unterschied zwischen Text- oder Musikdateien, sondern vielmehr durch den Unterschied aus Sicht des Betriebssystems.


Galileo Computing

26.3.1 Reguläre Dateien  downtop

In die Kategorie der regulären Dateien gehören alle Text- und Binärdateien – also etwa ausführbare Programme, Shellskripts, Konfigurationsdateien, Savegames oder Library-Dateien. Ein unbedarfter Betrachter würde vielleicht im semantischen Unterschied dieser Dateien unterschiedliche Dateitypen ausmachen wollen. Jedoch kennt das Betriebssystem diese Unterschiede nicht, da im Zugriff auf diese Dateien abstrahiert und die Interpretation des Inhalts einem Benutzerprogramm überlassen wird.


Galileo Computing

26.3.2 Verzeichnisse  downtop

Verzeichnisse (engl. »directories«) stellen einen ganz eigenen Dateityp dar. Ein Verzeichnis beinhaltet die so genannten Inode-Nummern der in diesem Verzeichnis befindlichen Dateinamen. Diese Nummern stellen Verweise auf die eigentlichen Dateien dar. Außerdem ist im Verzeichnis jeder darin enthaltenen Inode-Nummer mindestens ein Dateiname zugeordnet.

Dateien befinden sich demzufolge also nicht in einem Verzeichnis – das gaukelt Ihnen das System nur vor --, sondern an irgendeinem x-beliebigen Ort auf dem Speichermedium. Im Prinzip kann eine Datei also in mehreren Verzeichnissen gleichzeitig unter verschiedenen Namen existieren. Das Verzeichnis »weiß« also nur, dass es einen Dateinamen »x« gibt, der auf einen Inode-Eintrag mit der Nummer »y« verweist.

Kopieren vs. Verschieben

Wird also eine Datei innerhalb eines Dateisystems von einem Verzeichnis A in ein Verzeichnis B verschoben, so werden nur die Inode-Einträge der Verzeichnisse angepasst, die Daten selbst müssen nicht kopiert werden. Daher dauert ein Kopiervorgang mittels cp auch wesentlich länger als ein Verschiebungsvorgang mit dem Kommando mv, da beim Kopieren die Daten Byte für Byte kopiert werden müssen.

Ihnen ist bereits bekannt, dass die Verzeichnisstruktur in Unix hierarchisch aufgebaut ist. Ein Verzeichnis kann Dateien eines jeden Typs und somit insbesondere natürlich auch Unterverzeichnisse enthalten. In diesen Unterverzeichnissen können wiederum viele weitere Verzeichnisse, Unterverzeichnisse und natürlich auch reguläre Dateien liegen.

Ausgangspunkt dieser Hierarchie ist das bereits bekannte Wurzelverzeichnis. Im Verzeichnisbaum werden dabei auch alle anderen Dateisysteme, etwa das eines CD- Laufwerks oder ein NFS-Dateisystem, gemountet.

Die Hierarchie eines Unix-Dateisystems ist im Filesystem Hierarchy Standard genau festgelegt.

Diesen finden Sie in Kapitel 2 zusammengefasst oder ausführlich unter www.pathname.com/fhs.

Abbildung 26.1    Hierarchie der Verzeichnisse


Galileo Computing

26.3.3 Links  downtop

Auf Dateien verweisen

Links sind Verweise auf andere Dateien beziehungsweise stellen eine (weitere) Instanz für eine Datei dar. Links werden grundsätzlich in zwei Typen unterteilt: in Hardlinks und Softlinks. Letztere werden oft auch als symbolische Links bezeichnet.

Ein symbolischer Link /cdrom wäre eine spezielle Datei mit »/mnt/cdrom« oder einen anderem Ziel als Inhalt. Greift ein Benutzer nun auf /cdrom zu, so merkt das Betriebssystem, dass es sich bei diesem Verzeichnis um einen Link handelt, und leitet den Benutzer entsprechend zum Ziel weiter.

Bei einem Hardlink handelt es sich dagegen nur um einen weiteren Dateinamen für eine bereits vorhandene Datei.

Dies bedeutet, dass dieser Dateiname auf den gleichen Inode-Eintrag des Dateisystems wie die Orginaldatei verweist. Da jede reguläre Datei, etwa eine Textdatei, ein Verweis auf einen Inode-Eintrag ist, ist sie immer auch ein Hardlink.

ln

Links werden mit dem Tool ln erzeugt. Dabei können sowohl Soft- als auch Hardlinks erzeugt werden. Übergibt man als Parameter nur die Originaldatei und den Namen des neuen Links, wird ein Hardlink erstellt. Fügt man hingegen die Option -s hinzu, wird ein Softlink erstellt.

$ echo "ABC" > datei 
$ ln datei symlink_datei 
$ cat symlink_datei 
ABC 
$ cd /etc 
$ ls 
X11 
adduser.conf 
adduser.message 
afs 
amd 
astrocam.conf 
... 
$ ln -s /etc /tmp/symlink_etc 
$ ls /tmp/symlink_etc 
X11 
adduser.conf 
adduser.message 
afs 
amd 
astrocam.conf 
... 
$ ln /etc /tmp/symlink_etc2 
ln: /etc: is a directory

Listing 26.14    Einen symbolischen Link erzeugen

Softlinks (symbolische Links) können auf Dateien verweisen, die nicht mehr existieren, und können zudem auf Verzeichnisse verweisen, was mit Hardlinks nicht funktioniert.

Link-Counter

Im Inode-Eintrag einer jeden Datei ist ein sogenannter Link-Counter enthalten.

Dieser Link-Counter gibt an, wie viele Dateinamen (Hardlinks) im Dateisystem auf den Inode- Eintrag verweisen. Damit kann das Betriebssystem zu jeder Zeit in Erfahrung bringen, ob überhaupt noch ein Dateiname in irgendeinem Verzeichnis auf diesen Inode-Eintrag verweist. Ist das nicht der Fall, können dieser Inode-Eintrag sowie die Datenbereiche, auf die er verweist, gelöscht werden. Somit steht der verwendete Speicherplatz wieder zur Nutzung durch andere Dateien zur Verfügung.

Wird eine Datei im Dateisystem erstellt, erhält der entsprechende Link-Counter den Wert 1. Wird daraufhin noch ein zusätzlicher Hardlink auf diesen Inode-Eintrag erstellt, erhöht der Dateisystem-Code im Kernel den Link-Counter-Wert, der somit den Wert 2 hat. Löscht man nun einen dieser Hardlinks, sinkt der Wert wieder auf 1. Löscht man den letzten Hardlink ebenfalls, sinkt der Wert auf 0 und die Datei kann physikalisch gelöscht werden.

Nehmen wir einmal die Datei /tmp/file als Beispiel. Sie hat einen Link-Counter-Wert von 1, da nur ein Dateiname auf diese Datei verweist. Erstellt man nun einen Hardlink auf diese Datei, zeigt ls den jetzt inkrementierten Wert des Link-Counters an.

$ touch file 
$ ls -l file 
-rw-------  1 cdp_xe  wheel  0 May  1 19:10 file 
$ ln file fileb 
$ ls -l file 
-rw-------  2 cdp_xe  wheel  0 May  1 19:10 file

Listing 26.15    Link-Counter (2. Spalte der ls-Ausgabe)


Galileo Computing

26.3.4 Sockets  downtop

Sockets sind nicht zwangsläufig im Dateisystem abgelegt. Dies ist nämlich durch den Typ des Sockets bedingt. TCP/IP-Sockets liegen beispielsweise nicht im Dateisystem. Ausschließlich Unix-Domain-Sockets sind als Datei im Dateisystem zu finden. Programme können dann in diesen Socket schreiben (also senden) und aus ihm lesen (also empfangen). Dabei kann vom Programmierer je nach Wunsch eine Stream- oder eine Datagrammverbindung verwendet werden.

Dabei werden, wie Sie aus Kapitel 24 über »Prozesse und IPC« bereits wissen, die üblichen Socket-Syscalls genutzt, die auch für TCP-Stream-Sockets bzw. UDP-Datagramm-Sockets verwendet werden.


Galileo Computing

26.3.5 Named Pipes  downtop

Pipes kennen Sie bereits aus den Kapiteln zur Shell und zur Interprozesskommunikation. Named Pipes werden, im Gegensatz zu einfachen Pipes, als Datei im Dateisystem abgelegt. Pipes bieten dabei eine Kommunikationsmöglichkeit innerhalb einer Prozesshierarchie (unterhalb eines Session-Leader-Prozesses wie der Shell oder eines Dämonprozesses).


Galileo Computing

26.3.6 Gerätedateien  toptop

Gerätedateien (engl. »device files«) sind im Dateisystem unterhalb von /dev untergebrachte Dateien, die eine Hardwarekomponente repräsentieren. Dabei kann eine solche Hardwarekomponente entweder real vorhanden oder nur virtueller Natur sein. Letzteres bezeichnet man als Pseudo-Device. Ein Pseudo-Device wäre beispielsweise /dev/null.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Linux






 Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: Einstieg in Linux






 Einstieg in Linux


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-
 Programmierung


Zum Katalog: Praxisbuch Netzwerk-Sicherheit






 Praxisbuch
 Netzwerk-Sicherheit


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de