So fügen Sie Swap Space unter Debian hinzu 8

Einführung

Eine der einfachsten Möglichkeiten zum Schutz vor Fehlern aufgrund von Speichermangel in Anwendungen besteht darin, Ihrem Server Auslagerungsspeicher hinzuzufügen. In diesem Handbuch wird beschrieben, wie Sie eine Auslagerungsdatei zu einem Debian 8-Server hinzufügen.

Was ist Swap?

Swap ist ein Bereich auf einer Festplatte, der als Ort festgelegt wurde, an dem das Betriebssystem vorübergehend Daten speichern kann, die nicht mehr im RAM gespeichert werden können. Grundsätzlich können Sie auf diese Weise die Menge an Informationen erhöhen, die Ihr Server mit einigen Einschränkungen im Arbeitsspeicher behalten kann. Der Auslagerungsspeicherplatz auf der Festplatte wird hauptsächlich verwendet, wenn im RAM nicht mehr genügend Speicherplatz für die verwendeten Anwendungsdaten vorhanden ist.

Die auf die Festplatte geschriebenen Informationen sind erheblich langsamer als die im RAM gespeicherten Informationen. Das Betriebssystem zieht es jedoch vor, weiterhin Anwendungsdaten im Arbeitsspeicher auszuführen und Swap für die älteren Daten zu verwenden. Insgesamt kann ein Auslagerungsspeicher als Fallback für den Fall, dass der Arbeitsspeicher Ihres Systems erschöpft ist, ein gutes Sicherheitsnetz gegen Ausnahmen aufgrund von nicht genügend Arbeitsspeicher auf Systemen sein, auf denen kein SSD-Speicher verfügbar ist.

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

Bevor wir beginnen, können wir prüfen, ob auf dem System bereits Swap-Speicher verfügbar ist. Es ist möglich, mehrere Auslagerungsdateien oder Auslagerungspartitionen zu haben, aber im Allgemeinen sollte eine ausreichend sein.

Wir können sehen, ob das System einen konfigurierten Swap hat, indem wir Folgendes eingeben:

sudo swapon --show

Wenn Sie keine Ausgabe zurückerhalten, bedeutet dies, dass auf Ihrem System derzeit kein Auslagerungsspeicher verfügbar ist.

Sie können überprüfen, ob es keinen aktiven Swap gibt, indem Sie das Dienstprogramm + free + verwenden:

free -h
Output             total       used       free     shared    buffers     cached
Mem:          1.0G       331M       668M       4.3M        11M       276M
-/+ buffers/cache:        44M       955M

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

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

Bevor wir unsere Auslagerungsdatei erstellen, überprüfen wir die aktuelle Festplattennutzung, um sicherzustellen, dass genügend Speicherplatz vorhanden ist. Tun Sie dies, indem Sie Folgendes eingeben:

df -h
OutputFilesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G  946M   23G   4% /
udev             10M     0   10M   0% /dev
tmpfs           201M  4.3M  196M   3% /run
tmpfs           501M     0  501M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           501M     0  501M   0% /sys/fs/cgroup
tmpfs           101M     0  101M   0% /run/user/1001

Das Gerät mit "+ / " in der Spalte " Mounted on +" ist in diesem Fall unsere Festplatte. In diesem Beispiel steht ausreichend Platz zur Verfügung (nur 946M verwendet). Ihre Nutzung wird wahrscheinlich anders sein.

Obwohl es viele Meinungen über die angemessene Größe eines Swap Space gibt, hängt dies wirklich von Ihren persönlichen Vorlieben und Ihren Anwendungsanforderungen ab. Im Allgemeinen ist eine Menge gleich oder doppelt so viel RAM auf Ihrem System ein guter Ausgangspunkt. Eine andere gute Faustregel ist, dass alles über 4 GB Swap wahrscheinlich unnötig ist, wenn Sie es nur als RAM-Fallback verwenden.

Schritt 3 - Erstellen einer Auslagerungsdatei

Nachdem wir den verfügbaren Festplattenspeicherplatz ermittelt haben, können wir eine Auslagerungsdatei in unserem Dateisystem erstellen.

Wir erstellen eine Datei mit dem Namen "+ swapfile" in Ihrem Stammverzeichnis (/). Die Datei muss den für die Auslagerungsdatei erforderlichen Speicherplatz zuweisen. Es gibt zwei Möglichkeiten, dies zu tun:

Der traditionelle, langsame Weg

Normalerweise erstellen wir eine Datei mit vorab zugewiesenem Speicherplatz mit dem Befehl + dd +. Dieses vielseitige Festplatten-Dienstprogramm schreibt von einem Ort an einen anderen.

Wir können dies verwenden, um Nullen in die Datei von einem speziellen Gerät in Linux-Systemen zu schreiben, das sich unter "+ / dev / zero +" befindet und nur so viele Nullen ausspuckt, wie angefordert wurden.

Wir geben die Dateigröße an, indem wir eine Kombination aus "+ bs " für die Blockgröße und " count +" für die Anzahl der Blöcke verwenden. Was wir jedem Parameter zuordnen, ist nahezu beliebig. Was zählt, ist das Ergebnis der Multiplikation.

In unserem Beispiel möchten wir beispielsweise eine 1-Gigabyte-Datei erstellen. Wir können dies tun, indem wir eine Blockgröße von 1 Megabyte und eine Anzahl von 1024 angeben:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
Output1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 1.36622 s, 786 MB/s

Überprüfen Sie Ihren Befehl, bevor Sie die EINGABETASTE drücken, da dies möglicherweise Daten zerstört, wenn Sie das "" von "" (was für die Ausgabedatei steht) an die falsche Stelle setzen.

Wir können sehen, dass 1 Gigabyte zugewiesen wurde, indem wir Folgendes eingeben:

ls -lh /swapfile
Output-rw-r--r-- 1 root root  May 30 15:07 /swapfile

Wenn Sie den obigen Befehl ausgeführt haben, bemerken Sie möglicherweise, dass es einige Sekunden gedauert hat. Nur 1,3 Sekunden für diese kleine Auslagerungsdatei, aber das könnte sich für größere Dateien auf langsameren Festplatten erheblich erhöhen.

Wenn Sie lernen möchten, wie Sie die Datei schneller erstellen können, entfernen Sie die Datei-Auslagerungsdatei mit + sudo rm / swapfile und folgen Sie den nachstehenden Anweisungen:

Der schnellere Weg

Der schnellste Weg, um dieselbe Datei zu erhalten, ist die Verwendung des Programms + fallocate +. Beachten Sie, dass dieser Befehl nur mit moderneren Dateisystemen funktioniert. Wenn Sie beispielsweise ein "+ ext3 +" - System verwenden, steht Ihnen diese Option nicht zur Verfügung.

Mit dem Befehl "+ fallocate +" wird sofort eine Datei mit einer vorab zugewiesenen Größe erstellt, ohne dass Dummy-Inhalte geschrieben werden müssen.

Wir können eine 1-Gigabyte-Datei erstellen, indem wir Folgendes eingeben:

sudo fallocate -l 1G /swapfile

Die Eingabeaufforderung wird fast sofort an Sie zurückgeschickt. Wir können überprüfen, ob die richtige Menge an Speicherplatz reserviert wurde, indem wir Folgendes eingeben:

ls -lh /swapfile
Output-rw-r--r-- 1 root root  May 30 15:07 /swapfile

Wie Sie sehen, wird unsere Datei mit der richtigen Menge an Speicherplatz erstellt.

Schritt 4 - Aktivieren der Auslagerungsdatei

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

Zuerst müssen wir die Berechtigungen der Datei sperren, damit nur Benutzer mit * root * -Rechten den Inhalt lesen können. Dies verhindert, dass normale Benutzer auf die Datei zugreifen können, was erhebliche Sicherheitsrisiken mit sich bringen würde.

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

sudo chmod 600 /swapfile

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

ls -lh /swapfile
Output 1 root root 1.0G May 29 17:34 /swapfile

Wie Sie sehen, sind die Lese- und Schreibflags nur für den Benutzer * root * aktiviert.

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

sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1048572 KiB
no label, UUID=757ee0b7-db04-46bd-aafb-adf6954ea077

Nach dem Markieren der Datei können wir die Auslagerungsdatei aktivieren, damit unser System sie verwenden kann:

sudo swapon /swapfile

Stellen Sie sicher, dass der Swap verfügbar ist, indem Sie Folgendes eingeben:

sudo swapon --show
OutputNAME      TYPE  SIZE USED PRIO
/swapfile file 1024M   0B   -1

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

free -h
Output             total       used       free     shared    buffers     cached
Mem:          1.0G       925M        74M       4.3M        13M       848M
-/+ buffers/cache:        63M       936M

Unser Swap wurde erfolgreich eingerichtet und wird von unserem Betriebssystem nach Bedarf verwendet.

Schritt 5 - Festlegen der Auslagerungsdatei

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

Sichern Sie die Datei + / etc / fstab +, falls etwas schief geht:

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

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

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

Als Nächstes überprüfen wir einige Einstellungen, die wir aktualisieren können, um unseren Swap Space zu optimieren.

Schritt 6 - Optimieren Sie Ihre Swap-Einstellungen

Sie können einige Optionen konfigurieren, die sich auf die Leistung Ihres Systems auswirken, wenn Sie mit Swap arbeiten.

Anpassen der Swappiness-Eigenschaft

Der Parameter "+ swappiness +" konfiguriert, wie oft Ihr System Daten aus dem RAM in den Auslagerungsbereich auslagert. Dies ist ein Wert zwischen 0 und 100, der einen Prozentsatz darstellt.

Bei Werten nahe Null tauscht der Kernel nur dann Daten auf die Festplatte aus, wenn dies unbedingt erforderlich ist. Denken Sie daran, dass Interaktionen mit der Auslagerungsdatei insofern „teuer“ sind, als sie viel länger dauern als Interaktionen mit dem Arbeitsspeicher und zu einer erheblichen Verringerung der Leistung führen können. Wenn Sie dem System mitteilen, dass es sich nicht auf den Swap verlassen soll, wird Ihr System im Allgemeinen schneller.

Bei Werten, die näher an 100 liegen, wird versucht, mehr Daten in den Swap zu verschieben, um mehr RAM-Speicherplatz freizuhalten. Abhängig vom Speicherprofil Ihrer Anwendung oder davon, wofür Sie Ihren Server verwenden, ist dies in einigen Fällen möglicherweise besser.

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

cat /proc/sys/vm/swappiness
Output60

Für einen Desktop ist eine Swap-Einstellung von 60 kein schlechter Wert. Für einen Server möchten Sie ihn möglicherweise näher an 0 heranrücken.

Wir können die Swap-Funktion mit dem Befehl + sysctl + auf einen anderen Wert setzen.

Um zum Beispiel die Austauschbarkeit auf 10 zu setzen, könnten wir Folgendes eingeben:

sudo sysctl vm.swappiness=10
Outputvm.swappiness = 10

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

sudo nano /etc/sysctl.conf

Unten können Sie Folgendes hinzufügen:

/etc/sysctl.conf

vm.swappiness=10

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

Anpassen der Cache-Druckeinstellung

Ein weiterer verwandter Wert, den Sie möglicherweise ändern möchten, ist "+ vfs_cache_pressure +". Mit dieser Einstellung wird konfiguriert, wie viel das System auswählen soll, um inode- und dentry-Informationen über andere Daten zwischenzuspeichern.

Grundsätzlich handelt es sich hierbei um Zugangsdaten zum Dateisystem. Das Nachschlagen ist in der Regel sehr kostspielig und wird häufig angefordert. Daher ist es eine hervorragende Sache, wenn Ihr System zwischengespeichert wird. Sie können den aktuellen Wert anzeigen, indem Sie das + proc + - Dateisystem erneut abfragen:

cat /proc/sys/vm/vfs_cache_pressure
Output100

In der aktuellen Konfiguration entfernt unser System die Inode-Informationen zu schnell aus dem Cache. Wir können dies auf eine konservativere Einstellung wie 50 setzen, indem wir Folgendes eingeben:

sudo sysctl vm.vfs_cache_pressure=50
Outputvm.vfs_cache_pressure = 50

Auch dies gilt nur für unsere aktuelle Sitzung. Das können wir ändern, indem wir es unserer Konfigurationsdatei hinzufügen, wie wir es mit unserer Einstellung swappiness gemacht haben:

sudo nano /etc/sysctl.conf

Fügen Sie unten 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.

Fazit

Wenn Sie die Schritte in diesem Handbuch befolgen, haben Sie in Fällen, in denen es ansonsten zu Ausnahmen wegen unzureichendem Speicherplatz kommen würde, etwas Luft zum Atmen. Swap Space kann unglaublich nützlich sein, um einige dieser häufigen Probleme zu vermeiden.

Wenn bei Ihnen OOM-Fehler (zu wenig Arbeitsspeicher) auftreten oder Sie feststellen, dass Ihr System die von Ihnen benötigten Anwendungen nicht verwenden kann, ist es die beste Lösung, Ihre Anwendungskonfigurationen zu optimieren oder Ihren Server zu aktualisieren.