So erstellen Sie eine Auslagerungsdatei unter Linux

Fügen Sie einem Linux-Computer Swap-Speicher hinzu oder vergrößern Sie den bereits vorhandenen Swap-Speicher, ohne sich mit Partitionen herumschlagen zu müssen. Wir zeigen Ihnen, wie Sie Ihren Swap Space ganz einfach anpassen.

Swap-Dateien vs. Swap-Partitionen

Es gibt mehrere Szenarien, in denen Sie Ihren Linux-Computer möglicherweise vergrößern oder neuen Swap-Speicher hinzufügen möchten.

Vielleicht läuft Ihr Auslagerungsspeicher häufig auf Maximum oder fast auf Maximum.
Es ist leicht, während des Installationsprozesses auf die falsche Option zu klicken und das Hinzufügen von Swap zu Ihrem System versehentlich abzulehnen.
Vielleicht hast du vorher entschieden, dass du so viel hast Arbeitsspeicher (RAM) Sie brauchten keinen Swap und haben Ihre Meinung geändert.
Manchmal erben Sie die Verwaltung eines Systems, das keinen Swap hat, aus Gründen, die Sie nie herausfinden können.

Die einfache Lösung für all dies besteht darin, a . hinzuzufügen Datei auf Ihren Computer auslagern. Dies ist eine spezielle Datei, die vorab zugewiesen und für die Verwendung als Auslagerungsbereich reserviert ist. Eine Auslagerungsdatei funktioniert zusammen mit allen vorhandenen Auslagerungen, die Sie möglicherweise haben, sei es eine Auslagerungsdatei oder eine Auslagerungspartition.

Es gab einmal einen Leistungseinbruch bei der Verwendung einer Auslagerungsdatei im Vergleich zu einer Auslagerungspartition. Mit Leistungssteigerungen mechanischer (spinnender) Festplatten und mehr Effizienz bei den Swap-Funktionen innerhalb des Linux-Betriebssystems ist dies nicht mehr der Fall. Tatsächlich erstellen einige Linux-Distributionen jetzt standardmäßig Auslagerungsdateien anstelle von Auslagerungspartitionen.

Swap wird nicht nur verwendet, um RAM freizugeben, wenn der Speicher knapp wird. Es ist ein wichtiger Bestandteil eines gut funktionierenden Systems. Ohne Swap wird es für den Kernel sehr schwierig, eine vernünftige Speicherverwaltung zu erreichen. Sehen wir uns die einfache Möglichkeit an, etwas Swap-Speicher hinzuzufügen.

Bevor wir eintauchen: Btrfs und SSDs

Zwei Punkte möchten wir kurz besprechen.

Der Btrfs-Dateisystem hat bestimmte Vorbehalte in Bezug auf Auslagerungsdateien. Es gab einmal einen Konflikt zwischen den Copy-on-Write Wesen von Btrfs, das auf eine Weise arbeiten und Dateien austauschen wollte, die auf eine andere funktionieren mussten. Einige Funktionen, von denen Auslagerungsdateien abhängen, wurden nicht implementiert, und einige Annahmen, die über die Blocknummerierung innerhalb der Auslagerungsdateien gemacht wurden, trafen auf Btrfs nicht zu. Auslagerungsdateien wurden daher nicht unterstützt.

Seit Kernel 5.0 haben Sie kann Auslagerungsdateien in Btrfs-Dateisystemen haben wenn sie mit den folgenden Anforderungen eingerichtet sind:

Keine Copy-on-Write (NOCOW)-Dateien.
Sie sind nicht komprimiert.
Sie überspannen nicht verschiedene Festplatten.

Die meisten Leser werden das standardmäßige ext4-Dateisystem verwenden, daher wird dies für sie kein Problem darstellen.

Als Solid-State-Laufwerke (SSDs) zum ersten Mal verfügbar waren, gab es Bedenken, sie in Situationen zu verwenden, in denen häufig auf das Dateisystem geschrieben wurde. Die Leute wurden davor gewarnt, Swap-Speicher auf SSDs zu legen und sogar die Systemprotokollierung auf SSDs zu vermeiden.

Dies ist heutzutage viel weniger besorgniserregend, und viele SSDs, die zum Verkauf angeboten werden, haben eine Lebenserwartung, die die meisten PCs überdauert. Eine Auslagerungsdatei auf einer SSD hat eine weitaus bessere Leistung als eine Auslagerungspartition auf einer mechanischen Festplatte.

Vorhandenen Swap Space prüfen

Schauen Sie vor dem Sprung. Sehen wir uns an, welcher Auslagerungsspeicher auf Ihrem Computer verfügbar ist. Sie können dies auf zwei Arten tun, und wir werden beide verwenden. Der Befehl free zeigt den belegten und freien Speicher an. Die Option -h (menschlich lesbar) bewirkt, dass bei der Anzeige der Speicherwerte sinnvolle Einheiten frei verwendet werden.

free -h

Die Ausgabe von free zeigt, dass auf dieser Maschine kein Swap Space konfiguriert ist.

  Die 5 besten Gentoo Linux-Derivate zum Ausprobieren

Swap wird nie diskutiert, ohne dass RAM und freier RAM auftaucht. Es ist also erwähnenswert, dass der freie Arbeitsspeicher mit 237 MB angegeben wird. Verwechseln Sie dies nicht mit der Gesamtzahl des verfügbaren Arbeitsspeichers. Dieser Wert wird durch die „verfügbare“ Zahl bereitgestellt, die 881 MB beträgt.

Linux verwendet freien RAM für seine eigenen Zwecke, wie zum Beispiel Datei-Caching und Kernel-Puffer. Die dafür vorgesehene Menge an RAM ist die Zahl „Buff/Cache“, die 871 MB beträgt. Aber dieser Speicher wird immer noch als „verfügbar“ betrachtet und gezählt. Der Inhalt des „buf/cache“-RAMs kann sofort verworfen und von jeder Anwendung verwendet werden, die etwas Speicher benötigt.

Eine andere Möglichkeit, zu überprüfen, ob Swap-Speicherplatz verfügbar ist, besteht darin, den Befehl swapon zu verwenden. Die Option –show macht keine Änderungen am Swap auf Ihrem Computer. Es liefert nur Statistiken.

swapon --show

Wenn von diesem Befehl keine Ausgabe erfolgt, ist kein Swap konfiguriert.

Wenn diese Befehle ergeben haben, dass bereits ein Auslagerungsraum konfiguriert ist, sollte die Größe des vorhandenen Auslagerungsraums bei Entscheidungen über die Größe der zu erstellenden Auslagerungsdatei berücksichtigt werden.

Wie viel Swap-Speicherplatz benötige ich?

Die traditionelle Antwort lautete „doppelt so viel RAM wie du hast“. Dies wurde jedoch geprägt, als Computer einen sehr begrenzten Arbeitsspeicher hatten. Da RAM billiger geworden ist und Programme und Spiele mehr Speicher verlangen, haben sich die PC-Spezifikationen entsprechend angepasst. Heim-PCs mit 32 GB RAM sind heutzutage keine Seltenheit. Und Sie werden nicht 64 GB Festplattenspeicher für den Swap-Speicher zuweisen, wenn Sie 32 GB RAM haben. Das ist eindeutig übertrieben.

Die Menge an Swap, die Sie benötigen, ist als Brandthema vergleichbar mit „Wer ist der beste Editor“. Eine der vernünftigsten Diskussionen, die wir zu diesem Thema gesehen haben, ist in der Häufig gestellte Fragen zum Ubuntu-Swap. Es ist ein kurzer und vernünftiger Ansatz (obwohl sie wie viele Leute falsch verstehen, wie Swappiness unter Linux funktioniert). Es gibt eine praktische Tabelle, die eine empfohlene Menge an Swap-Speicherplatz für die Menge an RAM Ihres Systems zeigt und ob Sie Ihren Computer in den Ruhezustand versetzen oder nicht.

Und die gute Nachricht ist, es spielt keine Rolle, welchen Wert Sie wählen. Wir können eine Auslagerungsdatei jederzeit entfernen und durch eine größere oder eine kleinere ersetzen. Oder Sie könnten einfach eine weitere Auslagerungsdatei hinzufügen.

Wählen eine Auslagerungsdateigröße aus der Tabelle, und führen Sie es eine Weile aus. Überwachen Sie die Nutzung des Auslagerungsbereichs durch Ihr System. Wenn eine Feinabstimmung erforderlich ist, können Änderungen leicht vorgenommen werden. Bei Auslagerungsdateien dauert es zwei Minuten. Vergleichen Sie das mit dem Anpassen von Partitionen auf einem Live-Linux-Computer.

  So steuern Sie den sudo-Zugriff unter Linux

Erstellen der Auslagerungsdatei

Sie sollten den fallocate-Befehl nicht verwenden um deine Auslagerungsdatei zu erstellen. Dies ist von der Manpage für swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Obwohl Fallocate schneller ist, verwenden wir dd to Swap-Datei erstellen. Der Computer, mit dem dieser Artikel recherchiert wurde, verfügt über zwei GB RAM. Wir werden eine Ein-GB-Auslagerungsdatei erstellen.

Die Optionen sind:

if: Die Eingabedatei. In diesem Beispiel verwenden wir /dev/zero, das einen Strom von null Bytes bereitstellt.
of: Die Ausgabedatei. Wir werden im Stammverzeichnis eine Datei namens swapfile erstellen.
bs: Die Blockgröße in Byte. Dies gibt an, wie viele Bytes gleichzeitig aus der Eingabedatei gelesen und in die Ausgabedatei geschrieben werden sollen.
count: Wie viele Blöcke gelesen und geschrieben werden sollen. Multiplizieren Sie diese Zahl mit dem bs-Wert, um die Dateigröße zu erhalten.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

Beim Erstellen der Datei werden einige Statistiken bereitgestellt.

Wir sehen die Anzahl der Blöcke (Datensätze), die in die Datei geschrieben wurden, die Größe der Datei, die Zeit zum Erstellen der Datei und die effektive Datenübertragungsrate.

Verwenden Sie den Befehl ls, um die Datei im Stammverzeichnis anzuzeigen:

ls /

Vorbereiten der Auslagerungsdatei

Wir müssen Bereiten Sie die Auslagerungsdatei vor mit dem mkswap-Befehl, bevor er verwendet werden kann. Wir müssen mkswap keine anderen Parameter als den Pfad und den Namen der Datei angeben:

sudo mkswap /swapfile

Die Datei ist für die Verwendung als Auslagerungsdatei vorbereitet. Beachten Sie die Warnung zu Dateiberechtigungen. Wir müssen diese ändern, damit der Root-Benutzer der einzige ist, der die Auslagerungsdatei lesen und schreiben kann.

Verwenden der Auslagerungsdatei

Die Standardberechtigungen sind zu großzügig, wir müssen sie einschränken, damit nur root die Auslagerungsdatei verwenden kann. Verwenden Sie chmod, um die Dateiberechtigungen zu ändern:

sudo chmod 600 /swapfile

Dadurch werden alle Berechtigungen von den Dateigruppenmitgliedern und anderen entfernt, aber der Dateibesitzer root kann die Datei lesen und schreiben.

Wir müssen den Befehl swapon verwenden, um Linux mitzuteilen, dass eine neue Auslagerungsdatei verfügbar ist. Wir müssen nur den Pfad und den Dateinamen angeben:

sudo swapon /swapfile

Die Auslagerungsdatei ist jetzt aktiv.

Hinzufügen der Auslagerungsdatei zu fstab

Um sicherzustellen, dass Ihre Auslagerungsdatei nach einem Neustart verfügbar ist, fügen Sie sie der Datei /etc/fstab hinzu. Sie können jeden beliebigen Texteditor verwenden, aber wir zeigen den Vorgang mit dem grafischen Gedit-Texteditor.

sudo gedit /etc/fstab

Die Zeile, die wir am Ende der Datei hinzufügen müssen, lautet:

/swapfile    none    swap    sw    0    0

Die Felder sind:

  So spielt man Bungies Marathon Game Series unter Linux

Dateisystem: Pfad und Name der Auslagerungsdatei.
Einhängepunkt: Die Datei wird nicht wie ein Dateisystem gemountet, daher lautet der Eintrag „none“.
Typ: Dies ist „Swap“.
Optionen: Beim Booten wird swapon -a (alle als swap gekennzeichneten Geräte starten) von einem der Boot-Skripte aufgerufen. Diese Option weist Linux an, diesen Eintrag als eine Swap-Ressource zu behandeln, die unter die Kontrolle des Befehls swapon -a kommen sollte. Es ist üblich, dass hier „Standardwerte“ verwendet werden, da einige Linux-Benutzer fälschlicherweise glauben, dass dieses Feld ignoriert wird. Wie wir sehen werden, ist dies nicht der Fall. Daher ist es sinnvoll, die richtige Option zu verwenden.
Dump: Dies kann auf Null gesetzt werden. Es ist in diesem Fall unerheblich.
Pass: Dies kann auf Null gesetzt werden. Es ist in diesem Fall unerheblich.

Speichern Sie die Änderungen und schließen Sie den Editor.

Überprüfung der Swap-Nutzung

Um zu sehen, ob Ihr Auslagerungsbereich verwendet wird, verwenden Sie den Befehl swapon mit der Option –show:

swapon --show

Die Spalten sind:

Name: Der Name der Auslagerungspartition oder Auslagerungsdatei.
Typ: Der Typ des Swap-Geräts.
Größe: Die Größe der Swap-Ressource.
Verwendet: Die Menge des verwendeten Swap-Speicherplatzes.
Prio: Die Priorität dieses Auslagerungsbereichs.

Die Swap-Space-Priorität

Jedem Auslagerungsbereich wird eine Priorität zugewiesen. Wenn Sie keine angeben, wird automatisch eine zugewiesen. Automatisch zugewiesene Prioritäten sind immer negativ. Der Prioritätsbereich, der manuell zugewiesen werden kann, reicht von 0 bis 32767. Swap-Ressourcen mit höheren Prioritäten werden zuerst verwendet.

Wenn mehrere Swap-Spaces die gleiche Priorität haben, werden sie abwechselnd verwendet, bis beide voll sind, dann sucht das System nach dem Swap-Space mit der nächstniedrigeren Priorität. Wenn Sie nur einen einzigen Swap Space haben, ist die Priorität natürlich irrelevant. Aber wir werden die Priorität der von uns erstellten Auslagerungsdatei ändern, um zu zeigen, wie es geht.

Um eine Priorität festzulegen, fügen Sie die Option pri= (Priorität) zum Eintrag /etc/fstab hinzu. Bearbeiten Sie die Zeile, die Sie zu /etc/fstab hinzugefügt haben, so, dass sie wie folgt aussieht:

/swapfile    none    swap    sw,pri=10    0    0

Das heißt, fügen Sie pri=10 zum Optionsfeld hinzu, getrennt von „sw“ durch ein Komma. Lassen Sie keine Leerzeichen zwischen dem „sw“, dem Komma und dem „pri=10“. Starten Sie Ihren Computer neu und verwenden Sie den Befehl swapon –show:

swapon -- show

Die Priorität dieses Auslagerungsraums wurde auf 10 erhöht. Was ein positiver Beweis dafür ist, dass das Optionsfeld im /etc/fstab-Eintrag nicht ignoriert wird.

Platz tauschen leicht gemacht

Wenn wir die Exposition und Erklärung durchgehen, können wir so einfach und schnell eine neue Auslagerungsdatei erstellen:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

Und lassen Sie uns überprüfen, ob es funktioniert hat:

swapon --show

Wenn Sie das dauerhaft ablegen möchten, kopieren Sie es in Ihre Datei /etc/fstab.

Boom. Job erledigt.