next up previous contents index
Next: Softwaremanagement Up: Systemverwaltung Previous: Benutzer eintragen

Subsections


Partitionen und Dateisysteme

Die Installation eine Linux-Systems geschieht in den seltensten Fällen zum Selbstzweck. Nach der Erstinstallation beginnt eine mehr oder weniger intensive Benutzung des Systems. Damit ist eine stetige Veränderung des Dateisystems verbunden: die Benutzer legen eigene Daten darin ab, die Anforderungen an das System erfordern die Installation zusätzlicher Programme, Mail und News drohen, den Rest des freien Festplattenplatzes aufzufüllen. In jedem Fall füllt sich jede noch so große Festplattenpartition nach und nach mit Daten. Früher oder später erfordern diese ``Abnutzungserscheinungen'' administrative Eingriffe in die bestehende Struktur des Dateisystems.

Wenn der Plattenplatz knapp wird, gibt es für die Systemverwalterin mehrere Möglichkeiten zu reagieren. Zuerst können überflüssige Daten gelöscht und selten benötigte Daten komprimiert werden. Wenn die Heimatverzeichnisse der Benutzer die gesamten Ressourcen verschlingen, kann das Problem durch Einrichtung von Disk-Quotas eingeschränkt werden. Schließlich kann das Dateisystem vergrößert werden, um den erweiterten Anforderungen gerecht zu werden.

Es gibt verschiedene Möglichkeiten, ein Dateisystem zu vergrößern:

Die Festplatte partitionieren

    

Beim PC muß eine Festplatte immer in Partitionen eingeteilt werden. Wenn Sie für die Erstinstallation oder zur Erweiterung Ihres Systems eine leere Festplatte benutzen, ist die Partitionierung unproblematisch. Wenn Sie jedoch die Partitionen einer bereits teilweise belegten Festplatte ändern wollen, müssen Sie unbedingt alle Daten der existierenden Installation auf einem anderen Medium sichern. Bei jeder Veränderung der bestehenden Partitionierung gehen mit sehr hoher Wahrscheinlichkeit die bisher auf der Festplatte gespeicherten Daten verloren.

Hintergrundinformation

Eine Festplatte besteht aus mehreren speziell beschichteten Aluminiumscheiben. Die Beschichtung kann magnetisiert werden und dadurch Daten speichern, ganz ähnlich wie ein Tonband Musik speichert. Zum Schreiben und Lesen gibt es die Schreib/Leseköpfe (oder einfach Köpfe), für jede beschichtete Scheibenseite einen. Diese Köpfe sind alle zusammen an einem Arm befestigt, der alle gemeinsam (in radialer Richtung) auf den Scheiben bewegen kann. Die Bewegung erfolgt in sehr genau bestimmten Schritten. Bei jedem Schritt erreicht jeder Kopf eine Spur der Scheibe. Die Gesamtheit aller Spuren, die von den parallelen Köpfen überstrichen wird, heißt Zylinder.   

Um einen möglichst schnellen und direkten Zugriff auf die Daten zu ermöglichen, werden die Spuren nicht kontinuierlich beschrieben. Der Festplattencontroller richtet beim Formatieren Sektoren ein, in denen jeweils 512 Bytes Platz haben. Diese Sektoren können einzeln ``adressiert'' werden, das bedeutet, daß jeder Sektor einzeln gelesen und beschrieben werden kann. Die Betriebssysteme verwalten aber in der Regel immer zwei Sektoren gemeinsam als einen Block von 1024 Bytes. 

Die konkrete ``Plattengeometrie'' ist herstellerabhängig. Bei den meisten Festplatten werden die Daten im Setupmenü eingegeben und im CMOS gespeichert. Bei den SCSI-Festplatten übernimmt der Hostadapter die unteren Ebenen der Gerätesteuerung, deshalb müssen diese Platten nicht im CMOS des Rechners eingetragen werden.

Aus verschiedenen Gründen ist es sinnvoll, die gesamte Kapazität einer Festplatte in verschiedene Partitionen zu unterteilen:
1.
können manche Betriebssysteme nur relativ kleine Festplatten in einem Stück verwalten,
2.
können sich verschiedene Betriebssysteme eine Festplatte teilen, indem jedes eine eigene Partition erhält,
3.
läßt sich der Datenbestand auf der Festplatte besser strukturieren,
4.
erhöht sich die Datensicherheit, weil von einem Plattenfehler oft nur eine Partition betroffen wird.

Die Partitionstabelle

 

Die Einteilung der Festplatte in Partitionen ist nicht an irgendwelche physikalischen Gegebenheiten gebunden, sondern wird allein durch die Vereinbarung in der Partitionstabelle festgelegt. Wenn Sie sich an ein paar Regeln halten, wird die Partitionstabelle von allen PC-Betriebssystemen akzeptiert.

Der erste Sektor der Festplatte ist der primäre Bootsektor. In diesem Sektor kann eine Partitionstabelle für höchstens vier Partitionen angelegt werden. Diese Partitionen heißen primäre Partitionen. Anstelle einer primären Partition kann in dem primären Bootsektor auch (genau) eine erweiterte Partition definiert werden, die den gesamten Plattenplatz enthält, der keiner primären Partition zugeordnet ist. In der erweiterten Partition können weitere logische Partitionen eingerichtet werden, die im Prinzip genauso aufgebaut sind wie die primären Partitionen, mit dem Unterschied, daß nur von den primären Partitionen direkt gebootet werden kann. Mit einem Hilfsprogramm wie dem Linux Loader (LILO) kann das Betriebssystem von beliebigen Partitionen, auch auf anderen Festplatten, gebootet werden, allerdings muß LILO selbst immer auf einer primären Partition der ersten Festplatte installiert werden (möglicherweise auch auf der erweiterten Partition). Weitere Hinweise dazu finden sich in der Dokumentation, die mit dem LILO-Paket verteilt wird.

Um bei der geteilten Nutzung der Festplatte durch mehrere Betriebssysteme Fehlinterpretationen der Partitionstabelle zu vermeiden, sollten Sie die Partitionsgrenzen immer auf Zylindergrenzen legen. Wenn Sie die Standardeinstellung von unit bei fdisk nicht verändern, werden die Partitionsgrenzen automatisch auf Zylindergrenzen gelegt.

Benutzung von fdisk

  Das fdisk-Programm von Linux dient zur Erstellung von Linux-Partitionen auf Festplatten. Um DOS Partitionen einzurichten, sollte das gleichnamige Programm für DOS verwendet werden.

Wenn fdisk ohne Parameter aufgerufen wird, bearbeitet es die Partitionstabelle der ersten Festplatte, das ist /dev/hda. Um die zweite Festplatte, /dev/hdb, zu partitionieren, muß das Programm als `fdisk /dev/hdb' aufgerufen werden. Die erste SCSI Platte wird entsprechend als `/dev/sda' angesprochen.

Wenn es korrekt aufgerufen wurde, meldet sich fdisk mit dem Prompt:

     Command (m for help): _
fdisk erwartet einen einzelnen Buchstaben gefolgt von einem RETURN als Kommando. Das Kommando `m' zeigt folgendes Menü:
     Command action
        a   toggle a bootable flag
        c   toggle the dos compatiblity flag
        d   delete a partition
        l   list known partition types
        m   print this menu
        n   add a new partition
        p   print the partition table
        q   quit without saving changes
        t   change a partition's system id
        u   change display/entry units
        v   verify the partition table
        w   write table to disk and exit
        x   extra functionality
Das print-Kommando zeigt die aktuelle Partitionstabelle an. Eine typische Anzeige sieht beispielsweise so aus:
Disk /dev/hda: 15 heads, 17 sectors, 1001 cylinders
Units = cylinders of 255 * 512 bytes

   Device Boot  Begin   Start     End  Blocks   Id  System
/dev/hda1           1       1     402   51246+   6  DOS 16-bit >=32M
/dev/hda2   *     403     403     550   18870   81  Linux/MINIX
/dev/hda3         551     551     920   47175   83  Linux native
/dev/hda4         921     921    1001   10327+  82  Linux swap
In diesem Beispiel werden 4 Partitionen angezeigt. Es sind vier Primärpartitionen angelegt. Von den Partitionen hda2 kann gebootet werden.

Das unit-Kommando ändert die Einheiten, in denen die Partitionstabelle angezeigt und bearbeitet wird. Das Kommando schaltet zwischen Sektoren und Zylindern als Einheit um. Weil MS-DOS die Partitionen auf kompletten Zylindern erwartet, ist es sinnvoll, mit der (voreingestellten) Zylindereinheit zu arbeiten.

Die Anzeige in Sektoren soll trotzdem am gleichen Beispiel gezeigt werden:

Disk /dev/hda: 15 heads, 17 sectors, 1001 cylinders
Units = sectors of 1 * 512 bytes

   Device Boot  Begin   Start     End  Blocks   Id  System
/dev/hda1           1      17  102509   51246+   6  DOS 16-bit >=32M
/dev/hda2   *  102510  102510  140249   18870   81  Linux/MINIX
/dev/hda3      140250  140250  234599   47175   83  Linux native
/dev/hda4      234600  234600  255254   10327+  82  Linux swap

Der Beginn einer Partition muß nicht mit dem Start des Datenbereichs übereinstimmen, wie das Beispiel der MS-DOS Partition zeigt, bei der die ersten Sektoren für Verwaltungsdaten freigehalten werden. Das Linux-fdisk setzt den Start des Datenbereichs normalerweise auf den Partitionsbeginn.

Die auf die Partitionsgröße folgenden `+' Zeichen markieren Partitionen mit ungerader Sektorzahl. Weil Linux immer Blocks zu zwei Sektoren, also immer mindestens 1024 Bytes belegt, bleibt auf diesen Partitionen ein Sektor ungenutzt.

Das verify-Kommando überprüft die Partitionstabelle auf Fehler und gibt die Anzahl der nicht belegten Sektoren aus.

Das quit-Kommando beendet fdisk. Die Veränderungen an der Partitionstabelle werden nicht automatisch geschrieben. Eine Veränderung an der Partitionstabelle wird erst durch ein write-Kommando auf der Festplatte gesichert. Es ist möglich, fdisk zu jedem Zeitpunkt mit CTRL-C zu unterbrechen.

Das delete-Kommando löscht eine Partition aus der Partitionstabelle. Die von dieser Partition belegten Sektoren werden freigegeben. Alle auf diesen Sektoren gespeicherten Daten gehen dabei normalerweise verloren. Das delete-Kommando fragt nach der Partitionsnummer, die es löschen soll. Soll doch lieber keine Partition gelöscht werden, kann fdisk mit CONTROL-C beendet werden.

Wenn eine nicht existierende Partition angegeben wird, erscheint eine Fehlermeldung. Wenn die erweiterte Partition gelöscht wird, verschwinden automatisch alle logischen Partitionen auf der erweiterten Partition mit.

Wenn eine logische Partition gelöscht wird, werden alle darüberliegenden logischen Partitionen sofort neu numeriert, so daß alle logischen Partitionen immer fortlaufende Nummern haben.

Das new (add) Kommando erlaubt das Anlegen einer neuen Partition. Voraussetzung zum Anlegen einer neuen Partition ist natürlich, daß noch freie Sektoren existieren.

Wenn mehr als eine Möglichkeit zum Anlegen einer neuen Partition existiert, wird gefragt, ob eine primäre, erweiterte oder logische Partition angelegt werden soll. Wenn eine primäre oder die erweiterte Partition angelegt werden soll, muß eine freie Partitionsnummer im Bereich 1-4 gewählt werden.

Nun muß der Beginn der neuen Partition angegeben werden. Dazu erscheint beispielsweise folgende Meldung:

     First cylinder (403-1001): _
Die Zahlen bezeichnen den ersten und den letzten freien Zylinder. Es müssen nicht alle Zylinder in dem angegebenen Bereich frei sein, weil innerhalb des Bereichs noch eine komplette andere Partition liegen kann. Die Angabe eines bereits belegten Zylinders wird einfach abgelehnt, und es wird erneut nach dem ersten Zylinder der neuen Partition gefragt.

Wenn ein gültiger Zylinder für den Beginn der Partition bestimmt ist, wird nach dem letzten Zylinder gefragt:

     Last cylinder (403-1001): _
Hierbei sind alle Zylinder in dem angegebenen Bereich erlaubt.

Wenn nicht alle freien Zylinder belegt worden sind, kann das Kommando erneut aufgerufen werden.

Bevor die veränderte Partitionstabelle gesichert wird, sollte auf jeden Fall das verify-Kommando aufgerufen werden.

Die veränderte Partitionstabelle wird in jedem Fall nur durch ein ausdrückliches write-Kommando auf die Festplatte geschrieben. In diesem Fall erscheint die Aufforderung, den Rechner neu zu starten:

     The partition table has been altered.
     Please reboot before doing anything else.
Es ist ohne Problem möglich, fdisk sofort wieder zu starten, um weitere Veränderungen an der Partitionierung vorzunehmen.

ACHTUNG! Es darf auf keinen Fall eines der Programme mkfs, mkswap, mount oder swapon aufgerufen werden, bevor der Rechner neu gestartet wurde!

Die Bedeutung des Boot-Flags

Die meisten modernen Rechner haben ihr Betriebssystem nicht mehr in permanenten Speicherbausteinen auf der Hauptplatine, sondern laden erst nach dem Einschalten ein Betriebssystem in den Arbeitsspeicher. Und selbst dieser Ladevorgang findet nicht auf eine ganz bestimmte Art und Weise statt, sondern wird von einem Bootprogramm ausgeführt. Einzig der Aufruf dieses Bootprogramms ist durch das BIOS festgelegt:

Wenn es nicht ausdrücklich im BIOS-Setup anders bestimmt ist, wird im ersten Diskettenlaufwerk nach einer Diskette gesucht. Auf dieser Diskette wird aus dem ersten Sektor (in dem sich auch die Partitionstabelle befindet) das Bootprogramm geladen und ausgeführt.

Wenn keine Diskette im Laufwerk ist, wird das Bootprogramm aus dem Bootsektor (Master Boot Record) der ersten Festplatte ausgeführt. Es gibt verschiedene solcher Bootprogramme. Einige dieser Programme werten die Boot-Flags aus der Partitionstabelle aus, um zu bestimmen, von welcher Partition das Betriebssystem geladen werden soll.

Das Boot-Flag ist ein einzelnes Bit für jede Partition. Ist dieses Bit gesetzt, kann von dieser Partition ein Betriebssystem geladen werden.

Das MS-DOS Bootprogramm erwartet genau ein gesetztes Boot-Flag. LILO als primärer Bootloader ignoriert die Bootflags. Andere Bootmanager erlauben mehrere gesetzte Bootflags.

Die Bedeutung des Partitionstyps

 

Um den verschiedenen Betriebssystemen die Möglichkeit zu geben, Partitionen anderer Formate zu erkennen, werden die Partitionen mit Kennzahlen (ID) versehen. Linux selbst kümmert sich nicht wirklich um die Partitionskennung, schließlich kann Linux mit einer Vielzahl fremder Dateisysteme gut umgehen. Der Kernel prüft beim Mounten eines Dateisystems immer die für das jeweilige Dateisystem typische magische Zahl und erkennt so, ob es sich um ein gültiges Dateisystem eines bestimmten Typs handelt.

Andere Betriebssysteme sind da viel weniger flexibel. In der Regel ordnet jeder Hersteller seinem Betriebssystem eine bestimmte Kennzahl für den Partitionstyp zu, mit der das Betriebssystem ``seine'' Partitionen markieren und erkennen kann. fdisk kann z.Zt. 30 Kennzahlen bestimmten Betriebssystemen zuordnen. Es ist aber auch - mit ein paar Ausnahmen - möglich, beliebige andere ID's zu setzen.

Es ist nicht möglich, eine Partition vom oder nach dem Typ ``extended'' (5) zu ändern. Es ist nicht möglich, einer leeren Partition (Typ 0) irgendeinen anderen Typ zu geben. Einer Partition den Typ 0 zuzuordnen, heißt sie zu löschen.

Die Typ-ID wird als hexadezimale Zahl angegeben. Die folgenden Typen werden erkannt:

 0  Empty            9  AIX bootable    75  PC/IX           b7  BSDI fs        
 1  DOS 12-bit FAT   a  OS/2 Boot Manag 80  Old MINIX       b8  BSDI swap      
 2  XENIX root      40  Venix 80286     81  Linux/MINIX     c7  Syrinx         
 3  XENIX usr       51  Novell?         82  Linux swap      db  CP/M           
 4  DOS 16-bit <32M 52  Microport       83  Linux native    e1  DOS access     
 5  Extended        63  GNU HURD        93  Amoeba          e3  DOS R/O        
 6  DOS 16-bit >=32 64  Novell Netware  94  Amoeba BBT      f2  DOS secondary  
 7  OS/2 HPFS       65  Novell Netware  a5  BSD/386         ff  BBT            
 8  AIX

Voreinstellung für neue Linux-Partitionen ist `83' für das Linux-Dateisystem. Diese Kennzahl ermöglicht es den anderen aufgeführten Betriebssystemen, die Linux-Partitionen als ``fremd'' zu erkennen.

Die ID 83 führt beim DR-DOS zu Problemen. Wenn eine Festplatte von Linux   und DR-DOS gemeinsam genutzt werden soll, ist es sinnvoll, anstelle der 81 bzw. 83 als Partitionskennziffer die 42 oder 43 als Linux-ID zu verwenden.

   

Das Dateisystem einrichten

  

Das Dateisystem präsentiert sich dem Benutzer als ein Verzeichnisbaum mit einer Menge verschiedener Dateien. Um diese Daten in der gewohnten Form zu organisieren, benötigt das Betriebssystem eine Grundstruktur auf dem Datenträger, in der es die Dateien einordnen kann. Diese Grundstruktur wird ebenfalls als Dateisystem bezeichnet, wenngleich es unmittelbar nach seiner Erzeugung noch keine echten Dateien sondern nur das Potential zur Aufnahme derselben enthält.

Diese Doppelbelegung des Begriffes erfordert manchmal etwas Überlegung, um den Sinn aus dem Zusammenhang zu erkennen. In diesem Abschnitt geht es um die Grundstruktur, das ``kleine'' Dateisystem auf einer Partition. Der nächste Abschnitt behandelt dann die Zusammensetzung mehrerer keiner Dateisysteme zu dem großen Dateisystem.

Linux kann mit mehreren Dateisystemtypen umgehen, deren Grundstruktur jeweils unterschiedlich ist. In der Praxis hat sich für die Verwendung auf reinen Linux-Partitionen das sogenannte Zweite Erweiterte Dateisystem, Extended 2 (EXT2), durchgesetzt. Es zeichnet sich durch hohe Geschwindigkeit, Sicherheit und Freiraum für zukünftige Erweiterungen aus. Im Anhang dieses Buches finden Sie eine ausführliche Beschreibung der Arbeitsweise von Dateisystemen allgemein und einen Vergleich der für Linux-Partitionen relevanten Typen.

Bei der Installation eines neuen Linux-Systems wird von den Installationsprozeduren immer das EXT2-Dateisystem erzeugt. Mit dem Systemprogramm mke2fs kann das EXT2-Dateisystem auch unabhängig von einem Installationsprogramm auf jeder Festplattenpartition eingerichtet werden. Die von mke2fs erzeugte Grundstruktur ist zu Beginn immer leer. Es gehen durch die Einrichtung eines neuen Dateisystems unbedingt alle bisher auf einer Parition gespeicherten Daten verloren.

Das Dateisystem zusammenbauen

 

Linux organisiert alle Dateien auf Festplatten, Disketten, CDs und verwandten Medien in einem einzigen hierarchischen Dateisystem. Egal ob die Verzeichnisse auf der Linux-Partition einer lokalen Festplatte, auf einer DOS-Partition oder auf einem NFS-Server beheimatet sind, aus der Sicht des Benutzers werden alle Dateien auf einheitliche Weise präsentiert.

Um dieses homogene Bild zu erhalten, muß die Systemverwalterin die auf unterschiedlichen Medien (Festplattenpartitionen, CDs, NFS-Server) befindlichen Daten in geeigneter Form zusammenführen. Dazu werden die einzelnen Verzeichnisbäume auf den Medien zu einem einzigen, großen Dateisystem zusammengesetzt. Das Werkzeug, mit dem das Dateisystem zusammengebaut werden kann, ist das Systemprogramm mount, um es wieder auseinanderzunehmen dient das Programm umount.

Ein typisches Beispiel für ein Kommando zum Einhängen einer Partition in das Dateisystem zeigt die Benutzung von mount:

[01] # mount -t ext2 -o grpquota /dev/hdb1 /usr/src
[02] # _
Durch das Kommando wird die erste Partition der zweiten Festplatte am ersten IDE Controller, /dev/hdb1, auf dem Verzeichnis /usr/src gemountet. Durch die Option -t wird der Typ des Dateisystems festgelegt, in diesem Fall ext2. Mit der Option -o wird dem Kerneltreiber beim Mounten des Dateisystems ein Schlüsselwort übergeben, in diesem Fall grpquota, das den Treiber veranlaßt, die Quotierung des Plattenplatzes auf der Basis von Gruppenzugehörigkeit abzurechnen.

Die Dateisystemtypen von Linux 2.0

 

Mit der Kernelversion 2.0 unterstützt Linux 16 verschiedene Dateisystemtypen.  

ext2
ist das zweite erweiterte Dateisystem von Remy Card. Es kann als das Standarddateisystem für neuere Linux-Installationen bezeichnet werden. Die Dateinamen können bis zu 255 Zeichen lang sein, die maximale Größe für eine Partition liegt bei 2 GB.
iso9660
ist das Dateisystem auf CD-ROMs. Der Linux-Kernel versteht die ,,Rock Ridge Extensions``  zum Standard ISO9660-Dateisystem, mit denen beispielsweise lange Dateinamen benutzt werden können. CD-ROMs müssen ``Read-Only'' gemountet werden.
proc
ist das Prozeßdateisystem. Es handelt sich hierbei nicht um ein ``physisches`` Dateisystem, sondern um eine Repräsentation relevanter Daten aus dem laufenden Linux-Kernel. Dieses Dateisystem wird üblicherweise auf dem Verzeichnis /proc aufgesetzt.
nfs
ist das Network File System. In diesem Dateisystem können Verzeichnisäste verschiedener Rechner im lokalen Netzwerk ausgetauscht werden.
smb
ist das Samba Filesystem, mit dem auf die exportierten Verzeichnisse eines Rechners mit NetBIOS- und TCP/IP-Unterstützung zugegriffen werden kann. Zum Beispiel bietet Windows für Workgroups diese Funktionalität, wenn ein TCP/IP-Stack installiert ist.
ncp
ist eine eingeschränkte Variante des NetWare Dateisystems. Es ist möglich, mit dem NCP-Protokoll auf Daten eines NetWare-Servers zuzugreifen.
ext
ist das alte erweiterte Dateisystem von Remy Card. Es ist durch das zweite erweiterte Dateisystem ext2 abgelöst worden und ist nur noch auf alten Linux-Installationen zu finden.
xiafs
ist das alternative Linux-Dateisystem von Frank Q. Xia. Es ist ,,schlanker`` als das ext2, bietet aber weniger Features und Erweiterungsmöglichkeiten.
minix
ist das von A. Tanenbaum's Minix Betriebssystem übernommene Dateisystem. Es wird auch heute noch häufig für Diskettendateisysteme benutzt. Die Partitionsgröße ist auf maximal 64 MB beschränkt. Die Dateinamen können 14 (30) Zeichen lang sein.
msdos
ist das DOS Dateisystem[*]. Linux kann DOS Disketten oder Festplattenpartitionen fest in den Verzeichnisbaum einbinden. 
umsdos
ist eine zweite Ebene für DOS Dateisysteme[*], in der zusätzliche Features wie Permissions, lange Dateinamen, Links usw. realisiert werden können.
vfat
ist die erweiterte Variante des DOS-Dateisystems[*], die von Windows95 unterstützt wird. Hauptunterschied ist die Vergrößerung des Name-Space: es sind Dateinamen bis zu einer Länge von 255 Zeichen mit Unterscheidung von Groß- und Kleinschreibung erlaubt.
hpfs
ist das Dateisystem von OS/2. Dieses Dateisystem kann zur Zeit nur zum Lesen gemountet werden.
sysv
ist ein Dateisystem von Unix System V Release 2. Dieses Dateisystem wird zur Zeit nur auf Disketten unterstützt, Festplattenpartitionen können nicht gemountet werden. Mit der gleichen Option kann auch ein Xenix- oder Coherent-Diskettendateisystem gemountet werden.
affs
ist das Amiga Fast Filesystem mit seinen Varianten. Außer den speziell für Disketten optimierten Subtypen mit Directory-Cache, die nur zum Lesen geöffnet werden können, kann Linux im AFFS auch schreiben.
ufs
ist das Dateisystem der BSD-Systeme. Linux unterstützt zur Zeit nur das Lesen von Disketten und Fesplattenpartitionen dieses Typs.

 

Allgemeine Optionen beim Mounten der Dateisysteme

Ähnlich wie die Gerätetreiber, die durch Bootoptionen beeinflußt werden können, sind auch bestimmte Eigenschaften der Dateisysteme durch zusätzliche Optionen beim Mounten einer Partition oder eines Gerätes veränderbar.

Wie in dem Beispiel oben gezeigt, werden diese Optionen als Argument mit dem Schalter -o auf der Kommandozeile von mount angegeben. Es können mehrere Optionen durch Kommata getrennt zu einer Liste zusammengefügt werden. Die meisten Optionen können auch als feste Vorgabe für ein Dateisystem in der Datei /etc/fstab eingetragen werden. Zur Vereinfachung der Darstellung werden in dieser Liste auch Optionen aufgeführt, die entweder nur bei der interaktiven Benutzung von mount oder nur als Vorgabe in der fstab sinnvoll sind.

Einige der optionalen Veränderungen der Dateisystemparameter betreffen allgemeine Eigenschaften, die bei jedem der unterstützten Typen zu finden sind. Diese Optionen können also beim Mounten jedes Dateisystems angegeben werden.

defaults
entspricht normalerweise der Kombination suid, rw. Wenn ein Dateisystem von jedem Systembenutzer eingebunden werden kann (mit der Option user, s.u.), entspricht default für nicht privilegierte Benutzer der Kombination nosuid, noexec, nodev, rw.
noauto
(nur fstab) verhindert das automatische Einbinden der Partition.
noexec
Das Betriebssystem ignoriert die Executable-Bits im Permission-Feld, verbietet also die Ausführung jedes Programms von dieser Partition.
nosuid
unterdrückt die Wirkung der SUID und SGID Bits bei der Ausführung von Programmen aus dieser Partition.
nouser
(Voreinstellung, nur fstab) verbietet ausdrücklich die Benutzung von mount durch normale Systembenutzer.
nodev
die zeichen- und blockorientierten Gerätedateien in dieser Partition werden nicht angesprochen.
rw
erlaubt das Lesen und das Schreiben auf dieser Partition.
ro
verbietet das Schreiben auf diese Partition.
sync
die Metadaten (Superblock, Inode, Verzeichnisdaten) werden ungepuffert (synchron) auf das Speichermedium geschrieben (nur beim ext2fs implementiert).
user
(nur fstab) Mit dieser Option kann die Superuserin das Einbinden von Dateisystemen durch normale Systembenutzer erlauben. Die Benutzer können dann die Kommandos mount und umount benutzen, denen sie entweder die Gerätedatei oder das Verzeichnis zum Aufsetzen als Parameter übergeben können.
remount
(nur mount) Diese Option veranlaßt mount ein bereits aufgesetztes Dateisystem mit veränderten Optionen neu zu Mounten. Diese Option wird benutzt, um beim Systemstart nach dem Filesystemcheck die Schreibberechtigung für das read-only gemountete Rootfilesystem zu erteilen. Dateisystemspezifische Einstellungen können mit remount nicht geändert werden.

Gemeinsame Optionen für verschiedene Dateisystemtypen

Einige Dateisysteme haben spezielle Features, die durch zusätzliche Optionen beeinflußt werden können. In diesem Abschnitt werden zunächst Optionen beschrieben, die von mehreren Dateisystemtypen unterstützt werden. In den darauffolgenden Abschnitten werden jeweils die speziellen Optionen für die einzelnen Typen behandelt.

conv=Modus
(für FAT, hpfs und iso9660 Dateisysteme) schaltet die automatische Konvertierung von Zeilenenden (LINEFEED und CARRIAGE RETURN) von dem Dateisystem zu. Der Modus bestimmt, welche Daten konvertiert werden.
binary
(default) Es findet keine Konvertierung statt.
text
Beim Lesen werden CR/LF zu LF, nur bei FAT wird beim Schreiben LF zu CR/LF.
auto
Dateien mit bekannten Endungen für Binärdateien (exe, com, dll, lzh, tif etc.) werden nicht konvertiert.
mtext
(nur bei iso9660) Wie text, es werden CR zu LF konvertiert.

debug
(nur ext2 und FAT) Es werden die Dateisystemparameter ausgegeben.
gid=Wert
bei FAT und hpfs Dateisystemen wird allen Dateien die angegebene Gruppen-ID zugeordnet.
uid=Wert
bei FAT und hpfs Dateisystemen wird allen Dateien die angegebene User-ID zugeordnet.
umask=Wert
läßt die Zugriffsrechte für Dateien und Verzeichnisse im FAT oder hpfs Dateisystem durch die Maske Wert erscheinen. Der Wert wird als Oktalzahl eingegeben und interpretiert wie beim Shellkommando umask beschrieben.

Spezielle Optionen für das EXT2FS

 

check[=Art]
veranlaßt den Kernel, beim Mounten eines ext2fs eine Konsistenzprüfung durchzuführen. Die Art der Prüfung kann optional angegeben werden. Dabei bedeutet:
none
Es wird keine Prüfung durchgeführt. Diese Option kann auch mit nocheck abgekürzt werden.
normal
(default) Es werden die Inodes und die Bitmaps geprüft.
strict
Es wird zusätzlich geprüft, ob die freien Blöcke im Datenbereich liegen.

Wenn der Kernel einen Fehler feststellt, wird das Valid-Flag auf einen speziellen Wert gesetzt, um dem e2fsck-Programm den Fehler anzuzeigen (nur für ext2fs). Zusätzlich kann durch die errors Option das Verhalten des Kernels nach Entdeckung eines Fehlers eingestellt werden.
errors=Aktion
Diese Option regelt das Verhalten vom ext2 Dateisytem nach der Erkennung von Fehlern.
continue
Das Dateisystem wird ohne weitere Aktion als fehlerhaft markiert.
remount-ro
Das Dateisystem wird in den ``read only'' Modus gebracht.
panic
Eine Kernelpanik wird erzeugt (das Dateisystem wird synchonisiert und der Kernel angehalten).

sysvgroups | nogrpid
veranlaßt das ext2fs, Dateien nur dann mit der Gruppen-ID des Verzeichnisses zu erzeugen, wenn das SGID-Bit des Verzeichnissees gesetzt ist. Sonst wird die Datei (wie bei allen anderen Linux-Dateisystemen) mit der GID des erzeugenden Prozesses angelegt.
sb=Zahl
veranlaßt den Kernel, den Superblock aus dem mit der Zahl bezeichneten Block einer ext2fs Partition zu lesen. Das ext2fs legt typischerweise Kopien des Superblocks in den Blöcken 8193, 16385 usw. an (nur für ext2fs).
minixdf
verändert den statfs Aufruf des ext2fs so, daß er die Gesamtzahl der Datenblöcke inclusive der vom Dateisystem selbst belegten Blöcke liefert.
bsddf
Der statfs Systemaufruf liefert als Gesamtgröße des Dateisystems den maximalen verfügbaren Platz, das ist die Differenz aus der physikalischen Größe und dem vom Dateisystem selbst bereits belegten Platz.
bsdgrps | grpid
veranlaßt das ext2fs, Dateien mit der Gruppen-ID des Verzeichnisses zu erzeugen (wie bei BSD).
resuid=UID
resgid=GID
Mit diesen beiden Optionen wird festgelegt, welche User bzw. Benutzergruppe den reservierten Datenbereich einer EXT2-Partition benutzen darf. Die Voreinstellung des Systems ist für beide Werte die ID 0, der Bereich ist also für den Superuser reserviert.
quota | usrquota | grpquota
Die Quota-Optionen sind erlaubt aber wirkungslos: sie werden ignoriert.

Spezielle Optionen für die FAT-Dateisysteme

  

Unter dem Sammelbegriff FAT-Dateisysteme werden die von DOS, Windows95 und Windows-NT benutzten Dateisysteme mit File Allocation Table zusammengefaßt. Linux unterstützt diese Filesysteme in verschiedenen Variationen mit den Typen msdos, umsdos und vfat.

Wegen der gemeinsamen Grundstruktur teilen sich diese drei Typen folgende Optionen:

check=Art
Durch diese Einstellung wird festgelegt, wie streng die DOS Namenskonvention beim Erzeugen von Dateien geprüft wird:
relaxed
Lange Dateinamen werden gekürzt, Leer- und Sonderzeichen (?<*+= etc.) sind erlaubt.
normal
Wie relaxed, die meisten Sonderzeichen (?<*) sind nicht erlaubt.
strict
Lange Dateinamen werden nicht automatisch gekürzt, sind also schlicht verboten.

fat=Wert
erzwingt die Bearbeitung der FAT mit 12 oder 16 Bit Einträgen, unabhängig von der automatischen Erkennungsroutine.
quiet
unterdrückt beim DOS Dateisystem die Fehlermeldungen beim Versuch, Eigentümer oder Modus einer Datei zu verändern.

Außerdem werden die Optionen debug, conv, gid, uid und umask unterstützt, die auch für andere Dateisyteme benutzt werden können.

Speziell für den Dateisystemtyp vfat gibt es noch drei zusätzliche Optionen:

uni_xlate
Wenn diese Option gesetzt ist, werden Unicode-Zeichen in Dateinamen durch eine Sequenz aus Doppelpunkt und einem unter Linux darstellbaren Zeichen umgewandelt.
posix
Diese Option ermöglicht die Unterscheidung von Groß- und Kleinschreibung bei Dateinamen.
nonumtail
Mit dieser Option kann die Methode zur Erzeugung von 8.3 Dateinamen verändert werden. Normalerweise wird der Basisteil eines Dateinamens beim Kürzen mit einer Seriennummer versehen. Wenn diese Option gesetzt ist, werden Dateinamen, die bei der Kürzung auf 8 Zeichen eindeutig sind, ohne Seriennummer gekürzt.

Spezielle Optionen für das iso9660 Dateisystem

 

block=Größe
setzt die Blockgröße bei iso9660 Dateisystemen auf den angegebenen Wert. Mögliche Werte sind 512, 1024 und 2048, Voreinstellung ist 1024.
cruft
Diese Option kann beim Mounten defekter CD-ROMs hilfreich sein.
map=Art
Bei iso9660 Dateisystemen ohne Rock-Ridge Erweiterung bestehen Dateinamen aus Großbuchstaben und werden von der Zeichenkette `;1' abgeschlossen. Normalerweise (normal) wird die Endung abgeschnitten und der Name in Kleinbuchstaben umgesetzt. Dieses Mapping kann auch aus (off) geschaltet werden. Bei Dateisystemen mit Rock-Ridge Erweiterung muß der norock Schalter gesetzt sein, damit die map Option wirksam wird.
norock
schaltet die Rock-Ridge Erweiterung bei iso9660 Dateisystemen ab.
mode=Rechte
stellt die Zugriffsrechte für Dateien auf CDs ohne Rock-Ridge Erweiterung ein. Vorgegeben ist freies Leserecht für alle User.
unhide
läßt normalerweise unsichtbare Dateien wieder auftauchen.

Spezielle Optionen für Netzwerk-Dateisysteme (NFS und SMB)

 

Die mit den Linux-Distributionen zur Zeit ausgelieferte Version von mount unterstützt nur das NFS. Für Samba gibt es ein spezielles Programm, smbmount.

Beide Varianten verstehen eine Vielzahl von Argumenten, aus denen sie eine spezielle Datenstruktur generieren, die sie dem Treiber für das entsprechende Dateisystem übergeben. In der folgenden Liste werden die wichtigsten dieser Optionen aufgeführt, eine vollständige Erklärung aller Einstellungen finden Sie in den Manualpages zu nfs(5).

rsize=Bytes
stellt die Größe eines Datenpakets beim Lesen vom Server ein. Vorgabe des Kernels ist 1024 Bytes.
wsize=Bytes
stellt die Größe eines Datenpakets beim Schreiben auf einen Server ein. Vorgabe des Kernels ist 1024 Bytes.
timeo=Zehntelsekunden
setzt die Zeit, die nach einem RPC-Timeout vergeht, bevor ein Datenpaket zum zweiten Mal gesendet wird. Voreinstellung sind 7 Zehntel Sekunden. Nach der ersten Retransmission wird die Zeitspanne verdoppelt, bis das Maximum von 60 Sekunden erreicht ist. Danach wird die Kaskade mit verdoppeltem Startwert erneut durchlaufen.
retrans=Anzahl
stellt die maximale Anzahl der Durchläufe der oben beschriebenen Timeout-Kaskade ein. Wenn danach keine Verbindung mit dem Server besteht, wird die Fehlermeldung ``server not responding'' ausgegeben.
soft
Wenn dieser Schalter gesetzt ist, wird das mount-Kommando abgebrochen, nachdem die mit retrans bestimmte Anzahl von Timeout-Kaskaden durchlaufen wurde.
hard
Beim harten Mounten wird ohne Ende versucht, eine Verbindung zum Server herszustellen. Das ist die vorgegebene Methode.
intr
Wenn dieser Schalter gesetzt ist, können Dateioperationen auf dem Netzwerk-Dateisystem durch ein Signal unterbrochen werden. Normalerweise sind Unterbrechungen nicht erlaubt.

Feste Vorgaben für die Zusammensetzung des Dateisystems

  Um bestimmten Festplattenpartitionen oder Geräten Dateisystemtypen und Mountoptionen fest zuzuordnen, können diese Parameter in der Datei /etc/fstab verzeichnet werden. Das Systemprogramm mount benutzt diese Datei, um das Dateisystem beim Systemstart automatisch zusammenzusetzen und um bei der interaktiven Benutzung fehlende Parameter zu ergänzen.

Die Einträge haben folgende Form:

Device Mountpunkt Typ Optionen Dump Check

Die sechs Felder werden durch Leerzeichen voneinander getrennt, Kommentare werden durch das Nummernzeichen # eingeleitet.

Device
Im ersten Feld wird die Gerätedatei angegeben, für die der Eintrag gelten soll. Das kann eine Festplattenpartition sein, aber auch die Gerätedatei für ein CD-ROM- oder Diskettenlaufwerk. Der Name wird mit absolutem Pfad eingetragen, also zum Beispiel /dev/hda1 für die erste Festplattenpartition, /dev/fd0 für die Floppy usw.
Mountpunkt
Im zweiten Feld wird angegeben, auf welchem Verzeichnis die Partition gemountet werden soll. Wenn die Partitionen automatisch zusammengesetzt werden sollen, muß durch die Reihenfolge der Einträge in der fstab sichergestellt werden, daß das Verzeichnis auch tatsächlich im Dateisystem vorhanden ist.
Typ
Das dritte Feld ordnet der Partition oder dem Gerät einen Dateisystemtyp zu. Die Liste der von Linux unterstützten Dateisysteme finden Sie am Anfang dieses Abschnitts.
Optionen
Im vierten Feld werden die Optionen eingetragen, mit denen das Dateisystem gemountet werden soll. Es sind alle Optionen erlaubt, die auch bei der interaktiven Benutzung von mount akzeptiert werden. Das Feld kann eine Liste von mehreren, durch Kommata getrennten Optionen enthalten.
Dump
Das fünfte Feld dient zur Markierung eines Dateisystems als Kandidat für die Datensicherung durch das Systemprogramm dump. Mit dump können nur EXT2 Dateisysteme gesichert werden.
Check
Mit dem sechsten Feld kann die Reihenfolge bestimmt werden, in der die Dateisysteme beim automatischen Filesystemcheck während des Bootens geprüft werden. Das Rootfilesystem sollte hier als einziges mit der 1 gekennzeichnet werden, damit dessen Prüfung als erstes und allein erfolgt. Partitionen auf unterschiedlichen Geräten können danach parallel geprüft werden. Die Reihenfolge der Prüfung von Partitionen auf der gleichen Festplatte können Sie durch fortlaufende Nummern selbst bestimmen. Partitionen, die im sechsten Feld mit einer Null gekennzeichnet sind, werden nicht automatisch einem Filesystemcheck unterworfen.
 

Die Konsistenz des Dateisystems prüfen

   

Wenn der Rechner unkontrolliert ausgeschaltet wurde, oder wenn es zu einem Systemabsturz gekommen ist, muß damit gerechnet werden, daß sich das Dateisystem in einem inkonsistenten Zustand befindet.

Fehler im Dateisystem können auftreten, weil die Schreiboperationen durch den Festplattencache im Arbeitsspeicher gepuffert werden und diese Daten beim Abschalten des Rechners verloren gehen. Andere Fehler entstehen, wenn das System mitten in einer ungepufferten Schreiboperation seinen Dienst aufgibt.

Anlegen, Erweitern und Löschen von Dateien sind keine einfachen Abläufe, die in einem ``atomaren'' Schritt durchgeführt werden können. Alloziierung einer I-Node, Eintrag des Dateinamens, Alloziierung der Datenblöcke und Beschreiben der Blöcke mit Daten sind einzelne Abschnitte des Prozesses, die mit mehr oder weniger langen Unterbrechungen nacheinander ausgeführt werden, um das Ziel zu erreichen.

Die meisten bei einem Systemabsturz entstehenden Fehler betreffen die Daten in den Dateien, die bis zum Abschalten des Rechners nicht ordentlich geschlossen wurden. Die Reparatur dieser Daten kann nur von den Programmen oder Usern vorgenommen werden, die diese Dateien angelegt haben.

Es können aber auch Fehler in der Struktur des Dateisystems entstehen, die durch geeignete Programme erkannt und repariert werden können. Bei dem am häufigsten benutzten Dateisystem für Linux, dem ext2fs, können beispielsweise folgende Fehler behoben werden:

Nicht alle Reparaturen können ganz ohne Datenverlust vorgenommen werden, das Dateisystem kann aber in der Regel wieder in einen konsistenten Zustand gebracht werden. Wenn beim File-System-Check eine Datei gefunden wird, die in keinem Verzeichnis eingetragen ist, wird sie automatisch in das Verzeichnis ./lost+found mit der Nummer der I-Node eingetragen.

Wenn das System nicht korrekt heruntergefahren wurde, erkennt das System das beim nächsten Booten am Status des Ext2-Dateisystems. Bei einem ordentlichen Systemabschluß werden die Dateisysteme abgebaut und dabei das Valid-Flag im Superblock gesetzt. Beim Booten kann diese Information aus dem Superblock genutzt werden, um die möglicherweise fehlerhaften Dateisysteme automatisch während der Systeminitialisierung testen und nötigenfalls reparieren zu lassen.

Bei allen Linux-Distributionen enthalten die Shellscripts[*] zur Systeminitialisierung, die von dem Programm init nach dem Booten ausgeführt werden, die notwendigen Kommandos zur Durchführung eines File-System-Check.

Jedes der unter Linux verwendeten Dateisysteme benötigt sein spezielles Programm für den File-System-Check. Zu diesem Zweck existieren die Systemprogramme fsck.minix, fsck.ext2 und fsck.xiafs. Das Programm fsck arbeitet als Front-End für alle File-System-Checker und ermöglicht es, mit einem einzigen Aufruf alle Dateisysteme gemeinsam zu prüfen.

Wenn Sie die Konsistenz eines Dateisystems prüfen wollen, müssen Sie damit nicht bis zum nächsten Booten warten. Sie können die Programme zum File-System-Check zu jedem beliebigen Zeitpunkt aufrufen. Sollte ein Dateisystem allerdings Fehler enthalten, darf die Reparatur nur auf einem Dateisystem durchgeführt werden, auf das der Kernel keinen Schreibzugriff hat. Diese Einschränkung ist notwendig, damit sich Kernel und Reparaturprogramm bei der Veränderung des Dateisystems nicht in die Quere kommen. Auch aus diesem Grund bietet sich der automatische Test vor dem Zusammenbau des Dateisystems beim Booten an.

Das Rootfilesystem reparieren

Der Linux-Kernel kann das Rootfilesystem beim Booten im Read-Only mounten. Dazu muß ein entsprechendes Flag in der Kerneldatei gesetzt sein ($\to$rdev) oder es muß die entsprechende Option vom LILO-Bootloader übergeben werden.

Wenn Sie das System im Single-User-Mode starten, können Sie die Schreibberechtigung für das Rootfilesystem auch ``von Hand'' ändern. Das Systemprogramm mount ermöglicht dieses remount zum Ändern der Optionen.

Die Kommandos zum Wechseln des Schreib-Lese-Status sehen folgendermaßen aus:

# mount -n -o remount,ro /
# touch /foo
touch: foo: Permission denied
# mount -n -o remount,rw /
# _

Um das Kommando zum Löschen der Schreibberechtigung ausführen zu können, darf kein Prozeß eine Datei im Rootfilesystem zum Schreiben geöffnet haben. Sie müssen also, notfalls mit kill, alle Programme beenden, die noch offene Dateien haben. In der Regel sind das Dämonen wie syslogd, lpd oder crond. Beim kmem-ps gibt es das Programm fstat, das dabei helfen kann, die problematischen Prozesse zu identifizieren.

Auch wenn das Rootfilesystem Read-Only gemountet ist, bleibt ein Teufelskreis bei dessen Reparatur erhalten: die Programme zum Reparieren werden von dem eventuell defekten Dateisystem geladen.

Um dieses Problem zu umgehen, können Sie ein Minimalsystem von Diskette laden, wie es als ``Rescue-System'' von einigen Linux-Distributionen angeboten wird. Nachdem das System mit einer ,,bootable Rootdisk`` gestartet ist, kann dann das Rootfilesystem auf der Festplatte von außen repariert werden.     


next up previous contents index
Next: Softwaremanagement Up: Systemverwaltung Previous: Benutzer eintragen

Das Linux Anwenderhandbuch
(C) 1997 LunetIX