UNIX Dateien und Dateisysteme |
| System | Tool |
|---|---|
| Linux | fdisk |
| SCO | divvy |
Nach der Partitionierung der Platte gibt es im Verzeichnis /dev einen Eintrag, der auf die Partition referenziert. Vor der Verwendung der Partition muß zunächst ein Dateisystem (filesystem) gebildet werden. Dieser Vorgang entspricht dem Formatieren unter MS-DOS.
Beim Partitionieren ist im Normalfall eine Partition für den
Swap-Bereich anzulegen.
fsck wird beim Booten der Maschine regelmässig aufgerufen. Im normalen
Betrieb ist aber nicht jedesmal ein Prüfen der Platte erforderlich. Aus diesem
Grund wird geprüft, ob das System korrekt heruntergefahren wurde. In dem Fall
wird nur ein Zähler hoch gezählt. Bei einem gewissen Stand wird eine
Prüfung erzwungen. Soll explizit eine Prüfung durchgeführt werden,
muss dies fsck per Option mitgeteilt werden, sonst setzt es nur den
Zähler hoch.
Einige Systeme liefern diese Angaben in 512-Byte-Blöcken statt in Kilobyte.
Oft stellt dann die Flag -k auf KB-Anzeige um. Auch der Füllgrad wird nicht von allen
Systemen mitangezeigt. Durch die Option -v erscheint eine vollständigere
Auflistung.
Der Befehl du (disk used) setzt auf einer logisch höheren Ebene an. Er zeigt den
Platzverbrauch der als Parameter angegebenen Dateien bzw. Verzeichnisse.
Bei der Größe der Datei spielt aber auch das Programm eine wesentliche
Rolle, das die Datei liest und schreibt.
Arbeitet das Programm sequentiell, stellt das Betriebssystem die obere Grenze.
Wird aber im direkten Zugriff gearbeitet, dann verwendet das Programm den Aufruf
lseek mit einem 32-Bit-Wert als Positionierparameter.
32 Bit können maximal 4.294.967.296 Bytes adressiert werden. Sobald
aber ein Vorzeichen verwendet wird, verliert man ein Bit und die maximale
Größe beträgt 2.147.483.648, also 2 GByte.
Programmtechnisch ist das Problem zu umgehen, indem nicht von der Anfangsstelle
der Datei aus positioniert wird. Dann mu&szig; das Programm bereits
mit der Absicht geschrieben sein, die 2 GB-Grenze zu durchbrechen. Die meisten
Programme tun dies nicht.
Der Aufruf zum Einbinden eines Filesystems lautet mount, der
zum Freigeben umount. Freigegeben werden kann ein System nur dann,
wenn es von niemandem mehr benutzt wird.
Die Datei /etc/fstab enthält die Filesysteme, die beim
Booten bereits eingebunden werden. Eine typische fstab:
Erstellen und Prüfen eines Filesystems
mkfs <Device>
Erzeugt ein Filesystem auf einem Device. Typische weitere Parameter sind die Anzahl
der Blöcke und die Grösse eines Blocks. Je grösser die Blöcke,
desto schneller wird der Zugriff auf grosse Dateien. Allerdings wird bei vielen
kleinen Dateien auch der Platzverbrauch erheblich ansteigen.
fsck <Device>
Überprüft die Konsistenz eines Filesystems. Optimalerweise wird dies
bei einem abgehängten Dateisystem durchgeführt, da vermieden werden
muss, dass andere Benutzer parallel darauf zugreifen. Das ist auch der Grund, warum
ein fsck meist im Single-User-Modus ausgeführt wird.
mount <Optionen> <Device> <Verzeichnis>
Hängt das Filesystem in den Verzeichnisbaum an der Stelle eines
existierenden Verzeichnisses.
umount <Device>
entfernt das Filesystem aus dem Baum
Überwachen des Filesystems
Der Befehl df (disk free) zeigt eine Liste aller Filesysteme mit deren
Platzverbrauch und den Füllgrad in Prozent. Ferner zeigt der
Befehl, welche Filesysteme wo eingehängt sind. Man kann sich auch einzelne
Filesysteme ansehen, indem man das Filesystem als Parameter angibt.
Maximalwerte
Lange Zeit galt die 2 GByte Grenze für die maximale Größe einer
Datei und die maximale Größe eines Filesystems.
Heute erlauben fast alle UNIX-Derivate größere Filesysteme.
Dies kann auch recht bedenkenlos genutzt werden.
SCO-Grenze ULIMIT
SCO hat noch eine zusätzliche Grenze, die in den Kernel-Parametern durch ULIMIT
festgelegt wird. In einer Standardinstallation ist die maximale Dateigröße
auf 1 GB beschränkt.
Damit nicht genug, wird ULIMIT auch noch als Environmentvariable in /etc/default/login
eingesetzt, die vom Terminal gestartete Prozesse auf diese Größe
beschränken.
Der Wert, den ULIMIT angibt, ist die maximale Anzahl der Blöcke, die 512 Byte
groß sind. Also sind 2 GB 4194303 Blöcke.
Maximal geöffnete Dateien
Eine weitere Schranke kann die Anzahl der maximal geöffneten Dateien sein.
Dabei gibt es zwei Werte. Der eine beschränkt die Gesamtzahl der offenen Dateien
und der andere die Anzahl der Dateien, die ein einzelner Prozess eröffnen darf.
LINUX-Parameter für maximal geöffnete Dateien
Bei einer Standard-Installation wird die Anzahl der gleichzeitig offenen Dateien
auf 1024 begrenzt. Die Einstellung befindet sich in /usr/src/linux/include/linux/fs.h
und heißt NR_FILES. NR_INODES ist um den gleichen Faktor hochzuziehen.
Eine Neubildung des Kernels ist notwendig, um den Parameter zu erhöhen.
Einbinden eines Filesystems (mount und fstab)
Nachdem ein Filesystem erzeugt wurde, muss es in den Verzeichnisbaum
eingehängt werden, damit es nutzbar ist.
Dies betrifft nicht nur Festplattenpartitionen, sondern auch bewegliche
Medien wie CD-ROMs und Disketten.
/dev/hda3 swap swap defaults 0 2 /dev/hda2 /boot ext2 defaults 1 2 /dev/hda5 / ext2 defaults 1 1 /dev/cdrom /cdrom auto ro,noauto,user,exec 0 0 /dev/fd0 /floppy auto noauto,user 0 0 |
In der ersten Spalte stehen die Filesysteme bzw. Partitionen. Die zweite Spalte bezeichnet den Ort, wo die Partition ihren Platz im Verzeichnisbaum findet. Die dritte Spalte bezeichnet den Typ des Filesystems (ext2 ist beispielsweise das Standardfilesystem von Linux).
Die vierte Spalte bezeichnet die Optionen, die kommasepariert aufgeführt werden, aber aus naheliegenden Gründen kein Leerzeichen enthalten dürfen. Diese Optionen sind die des Befehls mount. Man findet sie auch unter man mount. ro bezeichnet nur Lesen, wie beim CD-ROM zu erwarten. user bedeutet, dass der Anwender das Filesystem mounten darf und anschließend auch die Rechte auf dieses Filessystem hat.
Die Zahl der fünften Spalte ist 1, wenn das Filesystem bei einem
dump mitgenommen werden muss.
Die Zahl in der sechsten Spalte wird von fsck verwendet, um festzustellen,
in welcher Reihenfolge die Filesysteme beim Booten geprüft werden
müssen. Steht dort eine 0, braucht das System nicht geprüft zu
werden.
So gross der Block ist, so gross ist dann auch die kleinste Datei, da die Platte
immer blockweise belegt wird. Bei vielen kleinen Dateien wird der verschwendete
Speicherraum entsprechend gross.
Die Blockgrösse kann nur beim Erzeugen des Dateisystems (mkfs)
festgelegt werden.
Fast jedes UNIX verwendet zunächst eine Swap-Partition. Der Vorteil
liegt in der Geschwindigkeit. Der Nachteil ist, daß man zum Installationszeitpunkt
festlegen muß, wieviel Speicher die Maschine benötigen wird.
Über die Größe der Swappartition gibt es
leicht ideologische Auseinandersetzungen.
Die Faustregel, den Hauptspeicher noch einmal als Swap
zu nehmen, ist wenig sinnvoll, da die Summe beider den
virtuellen Speicher ausmachen. Diese Summe sollte auch
im Schlimmsten Fall noch ausreichend sein.
Die meinsten UNIX-Systeme können übrigens auch
mit Swap-Dateien arbeiten.
Dies wird vor allem dann eingesetzt, wenn der Swap-Bereich zu eng wird und
eine erneute Partitionierung vermieden werden soll.
Optimierung des Dateisystems
Überfüllung der Dateisysteme vermeiden
Die Geschwindigkeit voller Filesysteme geht zurück, da eine
größere Fragmentierung eintritt. Dadurch steigt die Zeit auf der Suche
nach freien Clustern. Der Füllgrad sollte 90% nicht überschreiten.
Besser sind Werte von etwa 75%.
Blockgrösse
Je grösser der Block ist, den das System mit einem mal liest, desto geringer
wird der Einfluss der langsamen Plattenzugriffe auf die gesamte Dateioperation.
Ab einer gewissen Blockgrösse allerdings kippt dieser Wert wieder, wenn
oft mehr geladen wird, als tatsächlich benötigt wird.
Eigenes Filesystem für /tmp
Das Verzeichnis /tmp kann auf eine eigene Platte gelegt werden.
Dies bringt auf Systemen etwas, die das tmp-Verzeichnis intensiv nutzen, wie
beispielsweise bei der Compilierung.
Es wird
eine höhere Geschwindigkeit erreicht, da das ständige Schreiben und Löschen
zu einer starken Zerclusterung führt. Da /tmp aber immer wieder gelöscht
wird, kann keine Zerclusterung entstehen. Ferner ist der Vorteil, daß im
Bereich des /tmp-Verzeichnisses bei einem Absturz am häufigsten ein
unzusammenhängendes Dateisystem entsteht. Da /tmp bedenkenlos gelöscht
werden kann, ist der Schaden nur gering.
Swapping
UNIX nutzt den Swap-Mechanismus recht intensiv und es ist kein Zeichen
für einen Engpaß, wenn die Swap-Partition gut gefüllt ist.
Alle Dämonen, die nur selten gebraucht werden, landen bald im Swap-Bereich
und geben so den wertvollen Hauptspeicher frei.
Erst wenn das Ein- und Auslagern zunimmt, wenn also starke Aktivitäten
im Swap-Bereich feststellbar sind, ist zu vermuten, daß man das System
durch Hinzufügen von Hauptspeicher beschleunigen könnte.
| Homepage | (C) Copyright 1999, 2000 Arnold Willemer |