Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 4

Swap-Space benutzen

Swap-Space (Auslagerungsspeicher) ist die Bezeichnung für Speicherplatz, der auf der Festplatte eingerichtet wird, um scheinbar den verfügbaren Arbeitsspeicher des Systems zu vergrößern. Unter Linux wird der Swap-Space benutzt, um das Paging zu ermöglichen. Paging bedeutet, daß Memory-Pages (Speicherseiten, eine Seite hat in der Regel 4096 Bytes) auf die Festplatte ausgelagert werden, wenn der physikalisch vorhandene Speicher knapp wird. Bei Bedarf werden die ausgelagerten Speicherseiten wieder in den physikalischen Arbeitsspeicher zurückgeladen. Der ganze Vorgang ist eine ziemlich komplizierte Angelegenheit, aber für bestimmte Zwecke ist das Paging optimiert worden. Das Subsystem, das unter Linux den virtuellen Speicher verwaltet, macht es möglich, daß mehrere aktive Programme die Memory-Pages gemeinsam nutzen. Wenn Sie z.B. mehrere Kopien von Emacs gleichzeitig aufgerufen haben, steht trotzdem nur eine Kopie davon im Arbeitsspeicher. Außerdem besteht auf Textseiten (Seiten mit Programmcode, nicht Daten) normalerweise nur Lesezugriff, so daß diese Seiten beim Auslagern nicht auf die Festplatte geschrieben werden. Solche Seiten werden statt dessen sofort aus dem Hauptspeicher entfernt und bei Bedarf aus der ursprünglichen ausführbaren Datei erneut gelesen.

Natürlich kann Swap-Space einen Mangel an physikalischem RAM nicht vollständig ausgleichen. Der Zugriff auf eine Festplatte ist um ein Mehrfaches langsamer als der RAM-Zugriff. Die Auslagerungsdatei wird deshalb in erster Linie als eine Methode benutzt, mehrere Programme gleichzeitig laufen zu lassen, die nicht zusammen im physikalischen RAM untergebracht werden könnten. Wenn Sie schnell zwischen diesen Programmen hin- und herwechseln, werden Sie feststellen, daß es beim Auslagern und Zurücklesen von Speicherseiten zu Verzögerungen kommt.

Auf jeden Fall unterstützt Linux zwei Arten von Swap-Space: in Form einer eigenen Partition oder als eine Datei innerhalb der existierenden Dateisysteme. Sie können bis zu 16 Swap-Bereiche einrichten, wobei jeder Bereich bis zu 128 Megabytes groß sein darf. Den Mathe-Zauberern da draußen dürfte jetzt klar sein, daß somit bis zu zwei Gigabytes an Swap-Space möglich sind. (Wenn jemand schon einmal versucht hat, soviel Swap-Space zu benutzen, würden wir gerne davon erfahren -- egal, ob Sie Mathe-Zauberer sind oder nicht.)

Die Benutzung einer Swap-Partition kann die Leistung des Systems verbessern, weil die Blöcke auf der Festplatte garantiert hintereinander stehen. Bei einer Swap-Datei dagegen kann es sein, daß die Blöcke über das ganze Dateisystem verteilt sind, was zu ernsten Leistungseinbußen führen kann. Viele Leute benutzen eine Datei, wenn sie nur vorübergehend mehr Swap-Space brauchen -- etwa weil das System ins Schwitzen gerät, wenn physikalisches RAM und Swap-Space knapp werden. Swap-Dateien sind eine geeignete Methode, bei Bedarf den vorhandenen Swap-Bereich zu vergrößern.

Fast alle Linux-Systeme benutzen die eine oder andere Art von Swap-Space, meistens eine einzelne Swap-Partition. In Kapitel 2 haben wir gezeigt, wie Sie während der Installation eine Swap-Partition einrichten können. In diesem Abschnitt wollen wir beschreiben, wie Sie Swap-Dateien und -Partitionen hinzufügen und löschen. Falls Sie bereits einen Swap-Bereich angelegt haben und damit zufrieden sind, ist dieser Abschnitt für Sie wahrscheinlich weniger interessant.

Wieviel Swap-Space haben Sie angelegt? Der Befehl free gibt Ihnen Auskunft über den Systemspeicher:

rutabaga% free 
total       used       free     shared    buffers
Mem:         19308      17672       1636       8012      10820
Swap:        16408          0      16408

Alle diese Werte geben die Anzahl von 1024-Byte-Blöcken an. Wir sehen ein System mit 19.308 Blöcken an physikalischem RAM (etwa 19 MBytes), von denen derzeit 17.672 Blöcke belegt sind (etwa 17 MBytes). Dieses System hat in Wirklichkeit mehr physikalisches RAM, als in der Spalte »total« angezeigt wird; dieser Wert enthält nicht den Speicher, den der Kernel für verschiedene eigene Zwecke benutzt.

Die Spalte »shared« zeigt an, wieviel physikalischer Speicher von den vorhandenen Prozessen gemeinsam genutzt wird. Wir sehen, daß dies etwa acht Megabytes sind, was eine sehr gute Ausnutzung des Speichers anzeigt. Die Spalte »buffers« zeigt, wieviel Speicher der Kernel als Cache nutzt. Dieser Cache (wir sind im vorhergehenden Abschnitt bereits kurz darauf eingegangen) wird benutzt, um Zugriffe auf die Festplatte zu beschleunigen, indem Schreib- und Leseanforderungen direkt aus dem Speicher bedient werden. Die Größe des Cache ändert sich je nach Benutzung des Speichers durch das System; der Cache wird bei Bedarf von Anwendungsprogrammen angefordert. Das bedeutet, daß nicht die gesamten 17 MBytes des benutzten Systemspeichers von Anwendungen belegt werden.

Unter den Werten für physikalisches RAM wird die Größe des Swap-Bereichs angezeigt, in diesem Fall 16.408 Blöcke (etwa 16 Megabytes). Im Beispiel wird der Swap-Space nicht benutzt -- es ist reichlich physikalisches RAM vorhanden. Wenn weitere Anwendungen gestartet würden, käme zuerst ein Teil des Cache-Bereichs zum Einsatz. Im allgemeinen wird der Swap-Space als letzte Instanz aktiviert, wenn das System keine andere Möglichkeit mehr hat, sich physikalischen Speicher anzueignen.

Beachten Sie, daß die Menge an Swap-Space, die free meldet, etwas kleiner ist als die Größe der Swap-Partitionen und -Dateien insgesamt. Das liegt daran, daß einige Blöcke in jedem Swap-Bereich benutzt werden, um die Lage der einzelnen Speicherseiten zu vermerken. Diese Information sollte recht wenig Platz belegen; nicht mehr als einige Kilobytes pro Swap-Bereich.

Wenn Sie vorhaben, einen Swap-Bereich anzulegen, können Sie mit dem Befehl df nachsehen, wieviel Platz in den verschiedenen Dateisystemen noch vorhanden ist. df zeigt eine Liste der Dateisysteme samt ihrer Größe und prozentualen Belegung an.

Swap-Space einrichten

Der erste Schritt zur Erweiterung des Swap-Bereichs ist das Anlegen einer Datei oder Partition, die den Swap-Bereich aufnimmt.

Wenn Sie eine zusätzliche Swap-Partition einrichten möchten, können Sie das mit fdisk erledigen, wie wir das im Abschnitt » Linux-Partitionen anlegen « in Kapitel 2 beschrieben haben.

Zum Anlegen einer Swap-Datei müssen Sie eine Datei öffnen und soviele Bytes hineinschreiben, wie die Swap-Datei groß sein soll. Eine einfache Methode hierfür ist der Befehl dd . Wenn Sie z.B. eine acht Megabytes große Swap-Datei anlegen möchten, geben Sie ein:

dd if=/dev/zero of=/swap bs=1024 count=8192

Damit werden 8192 Datenblöcke von /dev/zero in die Datei /swap geschrieben. ( /dev/zero ist ein spezieller Gerätename, der bei Lesezugriffen immer Null-Bytes liefert; es ist so etwas wie die Umkehrung von /dev/null .)

Nach dem Anlegen der Datei sollten Sie mit:

sync

vorsichtshalber die Dateisysteme wieder synchronisieren.

Sobald eine Swap-Datei oder -Partition eingerichtet ist, können Sie mit dem Befehl mkswap diesen Bereich »formatieren«.

Wie wir bereits im Abschnitt » Den Swap-Bereich anlegen « von Kapitel 2 beschrieben haben, hat der Befehl mkswap folgendes Format:

mkswap -c gerätename größe

Dabei ist der Gerätename der Name der Swap-Partition oder -Datei, und Größe ist die Größe des Swap-Bereichs in Blöcken. Der Schalter -c ist optional und bewirkt, daß der Swap-Bereich bei der Formatierung auf fehlerhafte Blöcke untersucht wird.

Für die oben eingerichtete Swap-Datei würden Sie also:

mkswap -c /swap 8192

eingeben. Wenn es sich um eine Swap-Partition handelt, würden Sie statt dessen den Namen der Partition angeben (z.B. /dev/hda3 ) und die Größe ebenfalls in Blöcken.

Nach dem Einrichten einer Swap-Datei mit mkswap sollten Sie immer sync aufrufen, damit die Formatierungsinformationen auf jeden Fall physikalisch in die neue Swap-Datei geschrieben werden. Nach dem Formatieren einer Swap-Partition ist der Aufruf von sync nicht notwendig.

Den Swap-Space initialisieren

Damit Sie den neuen Swap-Bereich auch benutzen können, müssen Sie ihn noch mit dem Befehl swapon initialisieren. Nach dem Einrichten der oben gezeigten Swap-Datei und dem Aufruf von mkswap und sync würden wir mit:

swapon /swap

die neue Swap-Datei der Gesamtgröße an Swap-Bereich hinzufügen; mit dem Befehl free läßt sich das überprüfen. Eine neue Swap-Partition können Sie mit:

swapon /dev/hda3

initialisieren, wenn die neue Swap-Partition auf /dev/hda3 liegt.

Ähnlich wie Dateisysteme werden auch Swap-Bereiche beim Booten initialisiert, und zwar mit dem Befehl swapon -a in einer der Startdateien (in der Regel /etc /rc.d/rc.S ). Dieser Befehl liest die Datei /etc/fstab , die, wie Sie sich vielleicht aus dem Abschnitt » Dateisysteme aufsetzen « noch erinnern, Informationen zu den Dateisystemen und Swap-Bereichen enthält. Alle Einträge in /etc/fstab mit dem Wert sw im Feld Optionen werden mit swapon -a initialisiert.

Wenn /etc/fstab also folgende Einträge enthält:

# device     directory    type   options
/dev/hda3    none         swap   sw
/swap        none         swap   sw

dann werden die beiden Swap-Bereiche /dev/hda3 und /swap beim Booten initialisiert. Für jeden neu angelegten Swap-Bereich sollten Sie in /etc/fstab einen Eintrag hinzufügen.

Swap-Space entfernen

Wie so oft ist auch hier das Entfernen einfacher als das Hinzufügen. Wenn Sie einen Swap-Bereich entfernen möchten, geben Sie einfach ein:

swapoff gerätename

wobei der Gerätename den Namen der zu entfernenden Swap-Partition oder -Datei angibt. Wenn Sie z.B. /dev/hda3 nicht mehr als Swap-Bereich nutzen möchten, geben Sie ein:

swapoff /dev/hda3

Wenn Sie eine Swap-Datei löschen möchten, entfernen Sie die Datei einfach mit dem Befehl rm , und zwar nachdem Sie swapoff aufgerufen haben. Löschen Sie niemals eine Swap-Datei, ohne Sie vorher zu deaktivieren; das kann schlimme Folgen haben.

Sobald Sie eine Swap-Partition mit swapoff deaktiviert haben, können Sie diese Partition nach Belieben weiterbenutzen -- sie z.B. mit fdisk entfernen oder was auch immer.

Sie sollten auch einen eventuell vorhandenen Eintrag in /etc/fstab für diesen Swap-Bereich entfernen, weil Sie sonst beim nächsten Booten Fehlermeldungen erhalten, wenn der Swap-Bereich nicht gefunden wird.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt