Wie füge ich Swap-Speicher zu einem Debian 11 Server hinzu?

Was ist Swap?

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

Die auf die Festplatte geschriebenen Informationen sind erheblich langsamer als die im RAM gespeicherten Informationen. Das Betriebssystem bevorzugt jedoch, laufende Anwendungsdaten im Speicher zu halten und Swap für ältere Daten zu nutzen. Insgesamt kann Swap-Speicher als Sicherheitsnetz dienen, wenn der RAM des Systems erschöpft ist, insbesondere bei Systemen mit nicht-SSD-Speicher.

Schritt 1 – Überprüfen, ob Swap-Speicher vorhanden ist

Bevor wir beginnen, können wir prüfen, ob das System bereits Swap-Speicher hat. Es ist möglich, mehrere Swap-Dateien oder -Partitionen zu haben, aber in der Regel reicht eine aus.

Wir können überprüfen, ob das System Swap konfiguriert hat, indem wir Folgendes eingeben:

Wenn keine Ausgabe zurückgegeben wird, bedeutet dies, dass Ihr System derzeit keinen Swap-Speicher hat.

Sie können überprüfen, dass kein aktiver Swap vorhanden ist, indem Sie das Free-Utility verwenden:

Ausgabe:

               total        used        free      shared  buff/cache   available
Mem:           976Mi        75Mi       623Mi       0.0Ki       276Mi       765Mi
Swap:             0B          0B          0B

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

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

Bevor wir unsere Swap-Datei erstellen, überprüfen wir unseren aktuellen Speicherverbrauch, um sicherzustellen, dass wir genug Platz haben. Geben Sie dazu Folgendes ein:

Ausgabe:

Filesystem      Size  Used Avail Use% Mounted on
udev            472M     0  472M   0% /dev
tmpfs            98M  500K   98M   1% /run
/dev/vda1        25G  1.1G   23G   5% /
tmpfs           489M     0  489M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/vda15      124M  5.9M  118M   5% /boot/efi
tmpfs            98M     0   98M   0% /run/user/0

Das Gerät mit / in der Spalte Mounted on ist in diesem Fall unsere Festplatte. Wir haben in diesem Beispiel genügend Platz (nur 1,4 GB genutzt). Ihr Verbrauch wird wahrscheinlich unterschiedlich sein.

Obwohl es viele Meinungen über die angemessene Größe eines Swap-Speichers gibt, hängt es wirklich von Ihren persönlichen Vorlieben und den Anforderungen Ihrer Anwendungen ab. Im Allgemeinen ist eine Menge, die dem Doppelten des RAM Ihres Systems entspricht, ein guter Ausgangspunkt. Eine weitere Faustregel besagt, dass alles über 4 GB Swap wahrscheinlich unnötig ist, wenn Sie es nur als RAM-Sicherungsoption verwenden.

Schritt 3 – Erstellen einer Swap-Datei

Jetzt, da wir unseren verfügbaren Festplattenspeicher kennen, können wir eine Swap-Datei im Dateisystem erstellen. Wir werden eine Datei der gewünschten Größe namens swapfile im Root-Verzeichnis (/) anlegen.

Die beste Methode, eine Swap-Datei zu erstellen, ist das Programm fallocate. Dieser Befehl erstellt sofort eine Datei mit der angegebenen Größe.

Da der Server in unserem Beispiel 1 GB RAM hat, erstellen wir eine 1 GB große Datei. Passen Sie dies an die Anforderungen Ihres eigenen Servers an:

sudo fallocate -l 1G /swapfile

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

Ausgabe:

-rw-r--r-- 1 root root 1.0G Aug 23 11:14 /swapfile

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

Schritt 4 – Aktivieren der Swap-Datei

Nun, da wir eine Datei mit der richtigen Größe haben, müssen wir diese tatsächlich in Swap-Speicher umwandeln.

Zuerst müssen wir die Berechtigungen der Datei so einstellen, dass nur Benutzer mit Root-Rechten auf den Inhalt zugreifen können. Dies verhindert, dass normale Benutzer auf die Datei zugreifen können, was erhebliche Sicherheitsprobleme verursachen könnte.

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

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

Ausgabe:

-rw------- 1 root root 1.0G Aug 23 11:14 /swapfile

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

Wir können die Datei jetzt als Swap-Speicher markieren, indem wir Folgendes eingeben:

Ausgabe:

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 Swap-Speicher aktivieren, sodass unser System ihn verwenden kann:

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

Ausgabe:

NAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -2

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

Ausgabe:

               total        used        free      shared  buff/cache   available
Mem:           976Mi        85Mi       612Mi       0.0Ki       279Mi       756Mi
Swap:          1.0Gi          0B       1.0Gi

Unser Swap wurde erfolgreich eingerichtet, und das Betriebssystem wird ihn bei Bedarf verwenden.

Schritt 5 – Swap-Datei dauerhaft machen

Unsere kürzlich vorgenommenen Änderungen haben die Swap-Datei für die aktuelle Sitzung aktiviert. Nach einem Neustart wird der Server die Swap-Einstellungen jedoch nicht automatisch beibehalten. Wir können dies ändern, indem wir die Swap-Datei zu unserer /etc/fstab-Datei hinzufügen.

Sichern Sie die /etc/fstab-Datei, falls etwas schiefgeht:

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

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

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

Schritt 6 – Optimieren der Swap-Einstellungen

Es gibt einige Optionen, die Sie konfigurieren können, um die Leistung Ihres Systems im Umgang mit Swap zu verbessern.

Anpassen der Swappiness-Eigenschaft

Der Swappiness-Parameter konfiguriert, wie oft Ihr System Daten aus dem RAM in den Swap-Bereich auslagert. Dies ist ein Wert zwischen 0 und 100, der einen Prozentsatz darstellt.

Bei Werten nahe null wird der Kernel Daten nur dann auf die Festplatte auslagern, wenn es absolut notwendig ist. Denken Sie daran, dass die Interaktion mit der Swap-Datei „teuer“ ist, da sie viel länger dauert als Interaktionen mit dem RAM und zu einer erheblichen Leistungseinbuße führen kann. Indem Sie dem System sagen, dass es Swap nicht stark nutzen soll, wird Ihr System im Allgemeinen schneller.

Werte, die näher an 100 liegen, versuchen, mehr Daten in den Swap zu verschieben, um mehr RAM-Speicherplatz freizuhalten. 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:

cat /proc/sys/vm/swappiness

Ausgabe:

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

Wir können den Swappiness-Wert mit dem Befehl sysctl auf einen anderen Wert setzen.

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

sudo sysctl vm.swappiness=10

Ausgabe:

Diese Einstellung bleibt bis zum nächsten Neustart gültig. Wir können diesen Wert automatisch beim Neustart setzen, indem wir die Zeile in unsere Datei /etc/sysctl.conf hinzufügen:

sudo nano /etc/sysctl.conf

Fügen Sie am Ende Folgendes hinzu:

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

Anpassen der Cache-Druck-Einstellung

Ein weiterer verwandter Wert, den Sie möglicherweise ändern möchten, ist der vfs_cache_pressure. Diese Einstellung konfiguriert, wie stark das System dazu neigt, Inode- und Dentry-Informationen im Vergleich zu anderen Daten im Cache zu speichern.

Im Grunde handelt es sich hierbei um Zugriffsdaten über das Dateisystem. Diese sind in der Regel sehr teuer zu suchen und werden sehr häufig angefordert, daher ist es eine hervorragende Sache, sie für Ihr System zu cachen. Sie können den aktuellen Wert anzeigen, indem Sie erneut das Proc-Dateisystem abfragen:

cat /proc/sys/vm/vfs_cache_pressure

Ausgabe:

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

sudo sysctl vm.vfs_cache_pressure=50

Ausgabe:

vm.vfs_cache_pressure = 50

Auch dies gilt nur für unsere aktuelle Sitzung. Wir können dies ändern, indem wir es wie bei unserer Swappiness-Einstellung zur Konfigurationsdatei hinzufügen:

sudo nano /etc/sysctl.conf

Fügen Sie am Ende die folgende Zeile hinzu:

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

Fazit

Wenn Sie die Schritte in dieser Anleitung befolgen, schaffen Sie sich etwas Spielraum in Situationen, die ansonsten zu Speicherfehlern führen würden. Swap-Speicher kann äußerst nützlich sein, um einige dieser häufigen Probleme zu vermeiden.

Wenn Sie auf Speicherfehler stoßen oder feststellen, dass Ihr System die benötigten Anwendungen nicht verwenden kann, besteht die beste Lösung darin, Ihre Anwendungskonfigurationen zu optimieren oder Ihren Server aufzurüsten.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Java-Array: So prüfst du Werte effizient

JavaScript
Wie prüft man, ob ein Java Array einen Wert enthält? Es gibt viele Möglichkeiten, um zu überprüfen, ob ein Java Array einen bestimmten Wert enthält. Einfache Iteration mit einer for-Schleife…
centron Managed Cloud Hosting in Deutschland

Wie berechnet man den BLEU-Score in Python?

Python
Wie berechnet man den BLEU-Score in Python? Der BLEU-Score in Python ist eine Metrik, die die Güte von maschinellen Übersetzungsmodellen misst. Ursprünglich wurde er nur für Übersetzungsmodelle entwickelt, wird jedoch…