Wie man Swap-Speicher auf Ubuntu 22.04 hinzufügt

Einführung

Eine Möglichkeit, sich gegen Out-of-Memory-Fehler in Anwendungen zu schützen, besteht darin, Ihrem Server etwas Swap-Speicher hinzuzufügen. In diesem Leitfaden werden wir erläutern, wie Sie einer Ubuntu 22.04-Server eine Swap-Datei hinzufügen können.

Was ist Swap?

Swap ist ein Teil des Festplattenspeichers, der vom Betriebssystem vorübergehend reserviert wurde, um Daten zu speichern, die es nicht mehr im RAM halten kann. Dies ermöglicht es Ihnen, die Menge an Informationen zu erhöhen, die Ihr Server im Arbeitsspeicher behalten kann, allerdings mit einigen Einschränkungen. Der Swap-Speicher auf der Festplatte wird hauptsächlich verwendet, wenn im RAM nicht mehr genügend Platz vorhanden ist, um die aktuell verwendeten Anwendungsdaten zu speichern.

Die auf die Festplatte geschriebenen Informationen werden erheblich langsamer sein als die im RAM gehaltenen Informationen, aber das Betriebssystem wird bevorzugen, laufende Anwendungsdaten im Speicher zu behalten und Swap für ältere Daten zu verwenden. Insgesamt kann das Vorhandensein von Swap-Speicher als Rückfalloption für den Fall, dass der RAM Ihres Systems erschöpft ist, ein guter Schutz gegen Out-of-Memory-Ausnahmen auf Systemen mit verfügbarem Nicht-SSD-Speicher sein.

Schritt 1 – Überprüfen des Systems auf Swap-Informationen

Bevor wir beginnen, können wir überprüfen, ob das System bereits über einige Swap-Speicher verfügt. Es ist möglich, mehrere Swap-Dateien oder Swap-Partitionen zu haben, aber im Allgemeinen sollte eine ausreichen.

Wir können sehen, ob das System über konfigurierten Swap verfügt, indem wir Folgendes eingeben:

  1. sudo swapon --show

Wenn Sie keine Ausgabe erhalten, bedeutet dies, dass Ihr System derzeit keinen verfügbaren Swap-Speicher hat.

Sie können überprüfen, ob kein aktiver Swap vorhanden ist, indem Sie das Dienstprogramm free verwenden:

  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi Swap: 0B 0B 0B

Wie Sie in der Ausgabe unter der Swap-Zeile sehen können, ist kein Swap auf dem System aktiv.

Schritt 2 – Überprüfen des verfügbaren Speicherplatzes auf der Festplattenpartition

Bevor wir unsere Swap-Datei erstellen, überprüfen wir unsere aktuelle Festplattenbelegung, um sicherzustellen, dass wir genügend Platz haben. Tun Sie dies, indem Sie Folgendes eingeben:

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on udev 474M 0 474M 0% /dev tmpfs 99M 932K 98M 1% /run /dev/vda1 25G 1.4G 23G 7% / tmpfs 491M 0 491M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 491M 0 491M 0% /sys/fs/cgroup /dev/vda15 105M 3.9M 101M 4% /boot/efi /dev/loop0 55M 55M 0 100% /snap/core18/1705 /dev/loop1 69M 69M 0 100% /snap/lxd/14804 /dev/loop2 28M 28M 0 100% /snap/snapd/7264 tmpfs 99M 0 99M 0% /run/user/1000

Das Gerät mit / in der Gemountet auf-Spalte ist in diesem Fall unsere Festplatte. Wir haben in diesem Beispiel viel Platz zur Verfügung (nur 1,4G verwendet). Ihre Nutzung wird wahrscheinlich anders sein.

Obwohl es viele Meinungen über die geeignete Größe eines Auslagerungsbereichs gibt, hängt es wirklich von Ihren persönlichen Vorlieben und den Anforderungen Ihrer Anwendung ab. Im Allgemeinen ist eine Menge gleich oder doppelt so groß wie der RAM-Speicher auf Ihrem System ein guter Ausgangspunkt. Eine weitere Faustregel besagt, dass alles über 4G an Auslagerung wahrscheinlich unnötig ist, wenn Sie es nur als RAM-Ersatz verwenden.

Schritt 3 – Erstellen einer Auslagerungsdatei

Jetzt, da wir unseren verfügbaren Festplattenspeicher kennen, können wir eine Auslagerungsdatei auf unserem Dateisystem erstellen. Wir werden eine Datei der gewünschten Größe namens swapfile in unserem Stammverzeichnis (/) zuweisen.

Die beste Methode zur Erstellung einer Auslagerungsdatei ist mit dem Programm fallocate. Dieser Befehl erstellt sofort eine Datei der angegebenen Größe.

Da der Server in unserem Beispiel 1G RAM hat, werden wir in diesem Leitfaden eine 1G Datei erstellen. Passen Sie dies an die Bedürfnisse Ihres eigenen Servers an:

  1. sudo fallocate -l 1G /swapfile

Wir können überprüfen, ob die richtige Menge an Speicherplatz reserviert wurde, indem wir Folgendes eingeben:

  1. ls -lh /swapfile
  1. -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Unsere Datei wurde mit der richtigen Menge an reserviertem Speicherplatz erstellt.

Schritt 4 – Aktivieren der Auslagerungsdatei

Nun, da wir eine Datei der richtigen Größe zur Verfügung haben, müssen wir diese tatsächlich in Auslagerungsspeicher umwandeln.

Zuerst müssen wir die Berechtigungen der Datei so einschränken, dass nur Benutzer mit Root-Berechtigungen den Inhalt lesen können. Dadurch wird verhindert, dass normale Benutzer auf die Datei zugreifen können, was erhebliche Sicherheitsimplikationen hätte.

Erstellen Sie die Datei nur zugänglich für Root, indem Sie Folgendes eingeben:

  1. sudo chmod 600 /swapfile

Überprüfen Sie die Berechtigungsänderung, indem Sie Folgendes eingeben:

  1. ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Wie Sie sehen können, hat nur der Benutzer Root die Lese- und Schreibflags aktiviert.

Wir können die Datei nun als Auslagerungsspeicher markieren, indem wir Folgendes eingeben:

  1. sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Nachdem die Datei markiert wurde, können wir den Auslagerungsspeicher aktivieren, sodass unser System ihn verwenden kann:

  1. sudo swapon /swapfile

Überprüfen Sie, ob der Auslagerungsspeicher verfügbar ist, indem Sie Folgendes eingeben:

  1. sudo swapon --show
Output
NAME TYPE SIZE USED PRIO /swapfile file 1024M 0B -2

Wir können erneut die Ausgabe des Dienstprogramms free überprüfen, um unsere Ergebnisse zu bestätigen:

  1. free -h
Output
total used free shared buff/cache available Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi Swap: 1.0Gi 0B 1.0Gi

Unser Auslagerungsspeicher wurde erfolgreich eingerichtet, und unser Betriebssystem wird beginnen, ihn bei Bedarf zu verwenden.

Schritt 5 – Den Auslagerungsspeicher dauerhaft machen

Unsere jüngsten Änderungen haben die Auslagerungsdatei für die aktuelle Sitzung aktiviert. Wenn wir jedoch neu starten, behält der Server die Auslagerungseinstellungen nicht automatisch bei. Wir können dies ändern, indem wir die Auslagerungsdatei zu unserer /etc/fstab-Datei hinzufügen.

Erstellen Sie eine Sicherungskopie der Datei /etc/fstab, falls etwas schief geht:

  1. sudo cp /etc/fstab /etc/fstab.bak

Fügen Sie die Swap-Datei-Informationen am Ende Ihrer /etc/fstab-Datei hinzu, indem Sie Folgendes eingeben:

  1. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Anschließend werden einige Einstellungen überprüft, die wir aktualisieren können, um unseren Swap-Speicher anzupassen.

Schritt 6 – Anpassen Ihrer Swap-Einstellungen

Es gibt einige Optionen, die Sie konfigurieren können, die sich auf die Leistung Ihres Systems beim Umgang mit Swap auswirken werden.

Anpassen der Swappiness-Eigenschaft

Der swappiness-Parameter konfiguriert, wie oft Ihr System Daten von RAM in den Swap-Speicher verschiebt. Dies ist ein Wert zwischen 0 und 100, der einen Prozentsatz darstellt.

Mit Werten nahe Null wird der Kernel Daten nur dann auf die Festplatte auslagern, wenn es unbedingt erforderlich ist. Denken Sie daran, dass Interaktionen mit der Swap-Datei „teuer“ sind, da sie deutlich länger dauern als Interaktionen mit RAM und sie eine erhebliche Leistungsreduzierung verursachen können. Dem System mitzuteilen, dass es sich nicht stark auf den Swap verlassen soll, macht Ihr System im Allgemeinen schneller.

Werte, die näher an 100 liegen, versuchen mehr Daten in den Swap zu setzen, um mehr RAM-Speicherplatz frei zu halten. Abhängig vom Speicherprofil Ihrer Anwendungen oder davon, wofür Sie Ihren Server verwenden, kann dies in einigen Fällen besser sein.

Wir können den aktuellen Swappiness-Wert anzeigen, indem wir Folgendes eingeben:

  1. cat /proc/sys/vm/swappiness
Output
60

Für einen Desktop ist ein Swappiness-Wert von 60 kein schlechter Wert. Für einen Server möchten Sie ihn möglicherweise näher an 0 verschieben.

Wir können den Swappiness-Wert auf einen anderen Wert setzen, indem wir das sysctl-Befehl verwenden.

Zum Beispiel könnten wir den Swappiness-Wert auf 10 setzen, indem wir Folgendes eingeben:

  1. sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Diese Einstellung bleibt bis zum nächsten Neustart erhalten. Wir können diesen Wert automatisch beim Neustart festlegen, indem wir die Zeile zu unserer /etc/sysctl.conf-Datei hinzufügen:

  1. sudo nano /etc/sysctl.conf

Am Ende können Sie Folgendes hinzufügen:

/etc/sysctl.conf
vm.swappiness=10

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.

Anpassen der Cache-Druckeinstellung

Ein weiterer verwandter Wert, den Sie möglicherweise ändern möchten, ist der vfs_cache_pressure. Diese Einstellung konfiguriert, wie viel das System dazu neigt, Inode– und Dentry-Informationen gegenüber anderen Daten zu zwischenspeichern.

Grundsätzlich handelt es sich dabei um Zugriffsdaten auf das Dateisystem. Dies ist in der Regel sehr kostspielig zu durchsuchen und wird sehr häufig angefordert, daher ist es eine ausgezeichnete Sache für Ihr System, dies zu zwischenspeichern. Sie können den aktuellen Wert erneut abfragen, indem Sie das proc-Dateisystem verwenden:

  1. cat /proc/sys/vm/vfs_cache_pressure
Output
100

Wie derzeit konfiguriert, entfernt unser System Inode-Informationen zu schnell aus dem Cache. Wir können dies auf eine konservativere Einstellung wie 50 setzen, indem wir Folgendes eingeben:

  1. sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Erneut, dies gilt nur für unsere aktuelle Sitzung. Wir können dies ändern, indem wir es zu unserer Konfigurationsdatei hinzufügen, wie wir es mit unserer Swappiness-Einstellung getan haben:

  1. sudo nano /etc/sysctl.conf

Fügen Sie am Ende die Zeile hinzu, die Ihren neuen Wert angibt:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Abschluss

Wenn Sie die Schritte in diesem Leitfaden befolgen, haben Sie etwas Spielraum für Fälle, die sonst zu Speicherüberlauf-Ausnahmen führen würden. Swap-Speicher kann unglaublich nützlich sein, um einige dieser häufigen Probleme zu vermeiden.

Wenn Sie auf OOM (Out of Memory) Fehler stoßen oder feststellen, dass Ihr System nicht in der Lage ist, die benötigten Anwendungen zu verwenden, ist die beste Lösung, Ihre Anwendungskonfigurationen zu optimieren oder Ihren Server zu aktualisieren.

Source:
https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-22-04