Nächste: , Vorige: , Nach oben: Systemkonfiguration   [Inhalt][Index]


12.5 Swap-Speicher

Swap-Speicher, wie man ihn oft nennt, ist ein Bereich auf der Platte, wohin Speicherseiten verdrängt werden können. Als Seitenaustausch (englisch „Paging“) bezeichnet man das Verfahren, wie der für die Speicherverwaltung zuständige Prozess (d.h. der Linux-Kernel oder der „Default Pager“ in Hurd) entscheiden kann, manche Speicherseiten aus dem Arbeitsspeicher (RAM), die einem laufenden Prozess zugewiesen sind, ohne gerade benutzt zu werden, stattdessen auf der Platte zu speichern. Dadurch wird Arbeitsspeicher frei, wodurch mehr wertvoller schneller Speicher verfügbar wird; die Daten darin werden in den Swap-Speicher ausgelagert. Wenn das Programm auf eben diese Speicherseite zuzugreifen versucht, lädt der Speicherverwaltungsprozess die Daten zurück in den Speicher, damit das Programm sie benutzen kann.

Häufig begegnet man der falschen Vorstellung, Swap nütze nur dann etwas, wenn das System wenig Arbeitsspeicher zur Verfügung hat. Doch benutzen Kernels oft allen Arbeitsspeicher als Zwischenspeicher für Plattenzugriffe, um Ein- und Ausgaben zu beschleunigen. Deswegen steht durch den Austausch ungenutzter Teile des Arbeitsspeichers mehr RAM für diese Art von Caching zur Verfügung.

Wenn Sie genauer wissen wollen, wie Arbeitsspeicher aus Sicht eines monolithisch aufgebauten Kernels verwaltet wird, siehe Speicherkonzepte in Referenzhandbuch der GNU-C-Bibliothek.

Der Linux-Kernel unterstützt Swap-Partitionen und Swap-Dateien: Erstere reservieren eine ganze Plattenpartition für den Seitenaustausch, wohingegen Zweitere dafür eine Datei aus dem Dateisystem einsetzen (der Dateisystemtreiber muss sie unterstützen). Auf vergleichbaren Systemen haben beide die gleiche Leistung, also sollte man sich für das entscheiden, was es einem leichter macht. Partitionen sind „einfacher“ und brauchen keine Unterstützung durch das Dateisystem, aber man muss sie schon beim Formatieren der Platte zuweisen (außer man nutzt logische Datenträger). Dateien hingegen kann man jederzeit anlegen oder löschen.

Vorsicht, Swap-Speicher wird beim Herunterfahren nicht genullt. Sensible Daten (wie Passwörter) können sich darin befinden, wenn deren Speicherseiten verdrängt wurden. Daher sollten Sie in Betracht ziehen, Ihren Swap-Speicher auf ein verschlüsseltes Gerät zu legen (siehe Zugeordnete Geräte).

Datentyp: swap-space

Objekte dieses Typs repräsentieren Swap-Speicher. Sie weisen folgende Komponenten auf:

target

Welches Gerät oder welche Datei verwendet werden soll, angegeben entweder über die UUID, über ein file-system-label-Objekt mit der Bezeichnung oder über eine Zeichenkette wie in der Definition eines file-system-Objekts für ein Dateisystem (siehe Dateisysteme).

dependencies (Vorgabe: '())

Eine Liste von file-system-Objekten oder mapped-device-Objekten, die vorausgesetzt werden, damit der Speicher verfügbar ist. Achtung: Genau wie bei file-system-Objekten gilt auch für die Abhängigkeiten im dependencies-Feld, dass zum Hochfahren des Systems notwendige Abhängigkeiten, die beim Start der Anwendungsebene („User Space“) eingebunden werden, nicht durch Shepherd verwaltet werden, sondern weggefiltert werden.

priority (Vorgabe: #f)

Wird nur beim Linux-Kernel unterstützt. Entweder #f, damit keine Priorität festgelegt wird, oder eine ganze Zahl zwischen 0 und 32767. Der Kernel wird erst den Swap-Speicher mit der höheren Priorität für den Seitenaustausch benutzen und bei gleicher Priorität im Rundlauf wechseln („Round-Robin-Verfahren“). Swap-Speicher ohne festgelegte Priorität wird später als priorisierter verwendet, in der angegebenen Reihenfolge ohne Round Robin.

discard? (Vorgabe: #f)

Wird nur beim Linux-Kernel unterstützt. Wenn es wahr ist, benachrichtigt der Kernel die Steuereinheit (Controller) der Platte, welche Seiten verworfen wurden, zum Beispiel mit der TRIM-Operation auf SSD-Speicher.

Hier sind einige Beispiele:

(swap-space (target (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))

Die Swap-Partition mit der angegebenen UUID verwenden. Sie können die UUID einer Linux-Swap-Partition erfahren, indem Sie swaplabel Gerät ausführen, wobei Gerät der Dateiname unter /dev für die Partition ist.

(swap-space
  (target (file-system-label "swap"))
  (dependencies mapped-devices))

Die Swap-Partition mit der Bezeichnung swap verwenden. Die Bezeichnung können Sie finden, nachdem all die zugeordneten Geräte aus mapped-devices geöffnet wurden. Auch hier können Sie mittels swaplabel-Befehls die Bezeichnung einer Linux-Swap-Partition einsehen und ändern.

Nun folgt ein anspruchsvolleres Beispiel. Sie sehen auch den entsprechenden Teil zu file-systems aus der Deklaration eines operating-system.

(file-systems
  (list (file-system
          (device (file-system-label "root"))
          (mount-point "/")
          (type "ext4"))
        (file-system
          (device (file-system-label "btrfs"))
          (mount-point "/btrfs")
          (type "btrfs"))))

(swap-devices
  (list
    (swap-space
      (target "/btrfs/swapfile")
      (dependencies (filter (file-system-mount-point-predicate "/btrfs")
                            file-systems)))))

Die Datei /btrfs/swapfile als Swap-Speicher benutzen, die abhängig ist von dem als /btrfs eingebundenen Dateisystem. Sie sehen, wie wir mit Guiles filter-Prozedur das Dateisystem auf elegante Weise auswählen!


Nächste: Benutzerkonten, Vorige: Zugeordnete Geräte, Nach oben: Systemkonfiguration   [Inhalt][Index]