Nächste: Benutzerkonten, Vorige: Zugeordnete Geräte, Nach oben: Systemkonfiguration [Inhalt][Index]
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).
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]