So fügen Sie Swap unter CentOS 7 hinzu
Eine der einfachsten Möglichkeiten, Ihren Server reaktionsschneller zu machen und sich vor Speichermangel in Ihrer Anwendung zu schützen, besteht darin, etwas Auslagerungsspeicher hinzuzufügen. Swap ist ein Bereich auf einem Speicherlaufwerk, in dem das Betriebssystem Daten vorübergehend speichern kann, die es nicht mehr im Speicher halten kann.

Einführung
Eine der einfachsten Möglichkeiten, Ihren Server reaktionsschneller zu machen und sich vor Speichermangel in Ihrer Anwendung zu schützen, besteht darin, etwas Auslagerungsspeicher hinzuzufügen. Swap ist ein Bereich auf einem Speicherlaufwerk, in dem das Betriebssystem Daten vorübergehend speichern kann, die es nicht mehr im Speicher halten kann.
Dies gibt Ihnen die Möglichkeit, die Menge an Informationen, die Ihr Server in seinem Arbeitsspeicher halten kann, mit einigen Einschränkungen zu erhöhen. Das Lesen von und Schreiben in den Swap ist langsamer als die Verwendung von Arbeitsspeicher, aber es kann ein gutes Sicherheitsnetz bieten, wenn Ihr Server wenig Arbeitsspeicher hat.
Ohne Swap kann ein Server, dem der Speicher ausgeht, damit beginnen, Anwendungen zu beenden, um Speicher freizugeben, oder sogar abstürzen. Dies kann dazu führen, dass nicht gespeicherte Daten verloren gehen oder Ausfallzeiten auftreten. Um einen zuverlässigen Datenzugriff zu gewährleisten, benötigen einige Anwendungen einen Swap, um zu funktionieren.
In diesem Handbuch erfahren Sie, wie Sie eine Auslagerungsdatei auf einem CentOS 7-Server erstellen und aktivieren.
Notiz
Obwohl Swap im Allgemeinen für Systeme empfohlen wird, die herkömmliche rotierende Festplatten verwenden, kann die Verwendung von Swap mit SSDs im Laufe der Zeit zu Problemen mit Hardwareverschlechterung führen. Aufgrund dieser Überlegung empfehlen wir nicht, Swap auf einem Anbieter zu aktivieren, der SSD-Speicher verwendet. Dies kann die Zuverlässigkeit der zugrunde liegenden Hardware für Sie und Ihre Nachbarn beeinträchtigen.
Wenn Sie die Leistung Ihres Servers verbessern müssen, empfehlen wir Ihnen, Ihr Droplet zu aktualisieren. Dies führt im Allgemeinen zu besseren Ergebnissen und verringert die Wahrscheinlichkeit, zu Hardwareproblemen beizutragen, die Ihren Dienst beeinträchtigen können.
Voraussetzungen
Bevor Sie mit diesem Handbuch beginnen, müssen zunächst einige Schritte ausgeführt werden.
Sie benötigen einen CentOS 7-Server, der mit einem Nicht-Root-Benutzer mit sudo Berechtigungen installiert und konfiguriert ist.
Sobald Sie Ihren Nicht-Root-Benutzer haben, können Sie ihn für SSH in Ihren CentOS-Server verwenden und mit der Installation Ihrer Auslagerungsdatei fortfahren.
Überprüfen Sie das System auf Swap-Informationen
Bevor wir beginnen, sollten wir uns den Speicher unseres Servers ansehen, um zu sehen, ob wir bereits etwas Auslagerungsspeicher verfügbar haben. Obwohl wir mehrere Auslagerungsdateien oder Auslagerungspartitionen haben können, sollte eine im Allgemeinen ausreichen.
Wir können sehen, ob das System über einen konfigurierten Swap verfügt, indem wir, ein Allzweck-Swap-Dienstprogramm, verwenden. Mit dem -s Flag auf swapon wird eine Zusammenfassung der Swap-Nutzung und -Verfügbarkeit auf unserem Speichergerät angezeigt:
swapon -s
Wenn der Befehl nichts zurückgibt, war die Zusammenfassung leer und es existiert keine Auslagerungsdatei.
Eine andere Möglichkeit, nach Auslagerungsspeicher zu suchen, ist das free Dienstprogramm, das uns die Gesamtspeicherauslastung des Systems anzeigt. Wir können unsere aktuelle Speicher- und Auslagerungsnutzung (in Megabyte) sehen, indem wir Folgendes eingeben:
free -m
total used free shared buffers cached
Mem: 3953 315 3637 8 11 107
-/+ buffers/cache: 196 3756
Swap: 0 0 4095
Wie Sie sehen können, ist unser gesamter Auslagerungsbereich im System 0. Dies stimmt mit dem überein, was wir bei gesehen haben swapon.
Überprüfen Sie den verfügbaren Speicherplatz
Die typische Art, Speicherplatz für Swaps zuzuweisen, besteht darin, eine separate Partition zu verwenden, die der Aufgabe gewidmet ist. Das Ändern des Partitionsschemas ist jedoch aufgrund von Hardware- oder Softwareeinschränkungen nicht immer möglich. Glücklicherweise können wir genauso einfach eine Auslagerungsdatei erstellen, die sich auf einer vorhandenen Partition befindet.
Bevor wir dies tun, sollten wir uns unserer aktuellen Laufwerksnutzung bewusst sein. Wir können diese Informationen erhalten, indem wir Folgendes eingeben:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 59G 1.5G 55G 3% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 8.3M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
Hinweis: Das -h Flag weist einfach dh darauf hin, Laufwerksinformationen in einem menschenfreundlichen Leseformat auszugeben. Anstatt beispielsweise die rohe Anzahl von Speicherblöcken in einer Partition auszugeben, df -h wird uns die Speicherplatznutzung und -verfügbarkeit in M (für Megabyte) oder G (für Gigabyte) mitgeteilt.
Wie Sie in der ersten Zeile sehen können, hat unsere Speicherpartition 59 Gigabyte zur Verfügung, also haben wir ziemlich viel Platz zum Arbeiten. Denken Sie daran, dass dies auf einer neuen, mittelgroßen VPS-Instanz ist, sodass Ihre tatsächliche Nutzung sehr unterschiedlich sein kann.
Obwohl es viele Meinungen über die angemessene Größe eines Swap Space gibt, hängt es wirklich von Ihren Anwendungsanforderungen und Ihren persönlichen Vorlieben ab. Im Allgemeinen ist eine Menge, die gleich oder doppelt so groß ist wie die Menge an Arbeitsspeicher auf Ihrem System, ein guter Ausgangspunkt.
Da mein System über 4 Gigabyte Arbeitsspeicher verfügt und eine Verdopplung einen größeren Teil meines Speicherplatzes beanspruchen würde, als ich bereit bin, mich davon zu trennen, werde ich einen Auslagerungsspeicher von 4 Gigabyte erstellen, der dem Arbeitsspeicher meines Systems entspricht.
Erstellen Sie eine Auslagerungsdatei
Jetzt, da wir unseren verfügbaren Speicherplatz kennen, können wir eine Auslagerungsdatei in unserem Dateisystem erstellen. Wir erstellen eine Datei mit dem Namen swapfile in unserem Stammverzeichnis ( /), obwohl Sie die Datei auch anders benennen können, wenn Sie dies bevorzugen. Die Datei muss die Menge an Speicherplatz zuweisen, die wir für unsere Auslagerungsdatei benötigen, und sie sollte in einem zusammenhängenden Block erstellt werden.
Der beste Weg, dies zu tun, ist die Verwendung des dd Dienstprogramms. Dieser Befehl erstellt eine 4-Gigabyte-Datei:
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
Nachdem Sie Ihr Passwort eingegeben haben, um sudo Privilegien zu autorisieren, wird die Auslagerungsdatei erstellt. Dies kann einen Moment dauern, dann wird Ihnen die Eingabeaufforderung zurückgegeben. Wir können überprüfen, ob die richtige Menge an Speicherplatz für den Austausch reserviert wurde, indem wir Folgendes verwenden ls:
ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Dez 12 22:00 /swapfile
Wie Sie sehen können, wurde unsere Auslagerungsdatei mit der richtigen Menge an reserviertem Speicherplatz erstellt.
Aktivieren Sie eine Auslagerungsdatei
Im Moment wird unsere Datei erstellt, aber unser System weiß nicht, dass diese für den Austausch verwendet werden soll. Wir müssen unserem System sagen, dass es diese Datei als Swap formatieren und dann aktivieren soll.
Bevor wir das tun, sollten wir die Berechtigungen für unsere Auslagerungsdatei so anpassen, dass sie von niemandem außer dem Root-Konto gelesen werden kann. Anderen Benutzern zu erlauben, diese Datei zu lesen oder zu schreiben, wäre ein großes Sicherheitsrisiko. Wir können die Berechtigungen sperren mit chmod:
sudo chmod 600 /swapfile
Dadurch werden sowohl Lese- als auch Schreibberechtigungen nur auf das Root-Konto beschränkt. Wir können überprüfen, ob die Auslagerungsdatei die richtigen Berechtigungen hat, indem wir ls -lh erneut Folgendes verwenden:
ls -lh /swapfile
-rw------- 1 root root 4.0G Dez 12 22:00 /swapfile
Jetzt, da unsere Auslagerungsdatei sicherer ist, können wir unser System anweisen, den Auslagerungsbereich für die Verwendung einzurichten, indem wir Folgendes eingeben:
sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf
Unsere Auslagerungsdatei kann nun als Auslagerungsbereich verwendet werden. Wir können mit der Verwendung beginnen, indem wir Folgendes eingeben:
sudo swapon /swapfile
Um zu überprüfen, ob der Vorgang erfolgreich war, können wir überprüfen, ob unser System jetzt Auslagerungsspeicher meldet:
swapon -s
Filename Type Size Used Priority
/swapfile file 4194300 0 -1
Diese Ausgabe bestätigt, dass wir eine neue Auslagerungsdatei haben. Wir können das Dienstprogramm erneut verwenden free, um unsere Ergebnisse zu bestätigen:
free -m
total used free shared buffers cached
Mem: 3953 315 3637 8 11 107
-/+ buffers/cache: 196 3756
Swap: 4095 0 4095
Unser Swap wurde erfolgreich eingerichtet und unser Betriebssystem wird ihn nach Bedarf verwenden.
Machen Sie die Auslagerungsdatei dauerhaft
Unsere Auslagerungsdatei ist im Moment aktiviert, aber wenn wir neu starten, wird der Server die Datei nicht automatisch für die Verwendung aktivieren. Wir können das ändern, indem wir die fstab Datei ändern, bei der es sich um eine Tabelle handelt, die Dateisysteme und Partitionen verwaltet.
Bearbeiten Sie die Datei mit sudo Berechtigungen in Ihrem Texteditor:
sudo nano /etc/fstab
Am Ende der Datei müssen Sie eine Zeile hinzufügen, die das Betriebssystem anweist, automatisch die von Ihnen erstellte Auslagerungsdatei zu verwenden:
/swapfile swap swap sw 0 0
Wenn Sie mit dem Hinzufügen der Zeile fertig sind, können Sie die Datei speichern und schließen. Der Server überprüft diese Datei bei jedem Start, sodass die Auslagerungsdatei von nun an einsatzbereit ist.
Optimieren Sie Ihre Swap-Einstellungen (optional)
Es gibt einige Optionen, die Sie konfigurieren können, die sich auf die Leistung Ihres Systems beim Umgang mit Swaps auswirken. Diese Konfigurationen sind in den meisten Fällen optional, und die Änderungen, die Sie vornehmen, hängen von Ihren Anwendungsanforderungen und Ihren persönlichen Vorlieben ab.
Austauschbarkeit
Der swappiness Parameter bestimmt, wie oft Ihr System Daten aus dem Arbeitsspeicher in den Auslagerungsbereich auslagert. Dies ist ein Wert zwischen 0 und 100, der den Prozentsatz der Speichernutzung darstellt, der die Verwendung von Swap auslöst.
Bei Werten nahe Null tauscht das System keine Daten auf das Laufwerk aus, es sei denn, dies ist unbedingt erforderlich. Denken Sie daran, dass Interaktionen mit der Auslagerungsdatei „teuer“ sind, da sie viel langsamer sind als Interaktionen mit dem Speicher, und dieser Unterschied in der Lese- und Schreibgeschwindigkeit kann zu einer erheblichen Verringerung der Leistung einer Anwendung führen. Wenn Sie dem System sagen, dass es sich nicht so sehr auf den Austausch verlassen soll, wird Ihr System im Allgemeinen schneller.
Werte, die näher an 100 liegen, versuchen, mehr Daten in den Swap zu stecken, um mehr Speicher freizuhalten. Je nach Speicherprofil Ihrer Anwendungen oder wofür Sie Ihren Server verwenden, kann dies in manchen Fällen die bessere Wahl sein.
Wir können den aktuellen Swappiness-Wert sehen, indem wir die swappiness Konfigurationsdatei lesen:
cat /proc/sys/vm/swappiness
30
CentOS 7 verwendet standardmäßig eine Swap-Einstellung von 30, was für die meisten Desktops und lokalen Server ein fairer Mittelweg ist. Für ein VPS-System würden wir es wahrscheinlich näher an 0 heranrücken wollen.
Wir können die Auslagerung mithilfe des sysctl Befehls auf einen anderen Wert setzen. Um beispielsweise die Auslagerung auf 10 zu setzen, könnten wir Folgendes eingeben:
sudo sysctl vm.swappiness=10
vm.swappiness = 10
Diese Einstellung bleibt bis zum nächsten Neustart bestehen. Damit die Einstellung zwischen Neustarts bestehen bleibt, können wir die ausgegebene Zeile zu unserer sysctl Konfigurationsdatei hinzufügen:
sudo nano /etc/sysctl.conf
Fügen Sie Ihre Swapiness-Einstellung am Ende der Datei hinzu:
vm.swappiness = 10
Wenn Sie mit dem Hinzufügen der Zeile fertig sind, können Sie die Datei speichern und schließen. Der Server setzt nun die Auslagerung automatisch auf den Wert, den Sie bei jedem Start angegeben haben.
Cache-Druck
Ein weiterer verwandter Wert, den Sie möglicherweise ändern möchten, ist die vfs_cache_pressure. Diese Einstellung wirkt sich auf die Speicherung spezieller Dateisystem-Metadateneinträge aus. Das ständige Lesen und Aktualisieren dieser Informationen ist im Allgemeinen sehr kostspielig, daher ist das längere Speichern im Cache für die Leistung Ihres Systems hervorragend.
Sie können den aktuellen Wert dieses Cache-Drucks sehen, indem Sie das proc Dateisystem erneut abfragen:
cat /proc/sys/vm/vfs_cache_pressure
100
In der aktuellen Konfiguration entfernt unser System Inode-Informationen viel zu schnell aus dem Cache. Wir können dies auf eine konservativere Einstellung wie 50 setzen, indem wir Folgendes verwenden sysctl:
sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50
Auch dies gilt nur für unsere aktuelle Sitzung. Wir können das ändern, indem wir es zu unserer Konfigurationsdatei hinzufügen, wie wir es mit unserer Swappiness-Einstellung getan haben:
sudo nano /etc/sysctl.conf
Fügen Sie unten die Zeile hinzu, die Ihren neuen Wert angibt:
vm.vfs_cache_pressure = 50
Wenn Sie mit dem Hinzufügen der Zeile fertig sind, können Sie die Datei speichern und schließen. Der Server setzt den Cache-Druck nun automatisch auf den Wert, den Sie bei jedem Start angegeben haben.
Fazit
Indem Sie die Schritte in diesem Handbuch befolgen, haben Sie Ihrem Server in Bezug auf die Speichernutzung etwas Luft zum Atmen gegeben. Swap Space ist unglaublich nützlich, um einige häufige Probleme zu vermeiden.
Wenn OOM-Fehler (Speichermangel) auftreten oder Sie feststellen, dass Ihr System die benötigten Anwendungen nicht verwenden kann, besteht die beste Lösung darin, Ihre Anwendungskonfigurationen zu optimieren oder Ihren Server zu aktualisieren. Das Konfigurieren von Auslagerungsspeicher kann Ihnen jedoch mehr Flexibilität geben und Ihnen helfen, Zeit auf einem weniger leistungsstarken Server zu gewinnen.