Erhöhen Sie den Swap-Speicher Ihres Linux-Systems oder fügen Sie neuen hinzu, ohne sich mit der Komplexität von Partitionen auseinandersetzen zu müssen. Wir zeigen Ihnen einen einfachen Weg, Ihren Swap-Speicherplatz anzupassen.
Swap-Dateien versus Swap-Partitionen
Es gibt verschiedene Situationen, in denen Sie den Swap-Speicher Ihres Linux-Rechners erweitern oder neuen hinzufügen möchten.
Möglicherweise ist Ihr Auslagerungsspeicher oft fast oder vollständig ausgelastet. Oder vielleicht haben Sie während der Installation versehentlich die falsche Option gewählt und die Erstellung von Swap auf Ihrem System abgelehnt. Es könnte auch sein, dass Sie früher dachten, Sie hätten genügend RAM und keinen Swap benötigen, aber nun Ihre Meinung geändert haben. Manchmal übernehmen Sie auch die Betreuung eines Systems ohne Swap-Speicher, ohne den Grund dafür zu kennen.
Die einfache Lösung all dieser Probleme ist das Hinzufügen einer Swap-Datei. Dies ist eine speziell vorbereitete Datei, die als Swap-Speicher reserviert ist. Eine Swap-Datei arbeitet mit jedem bestehenden Swap-Speicher, sei es eine Swap-Datei oder eine Swap-Partition, zusammen.
Früher gab es einen Leistungsunterschied zwischen Swap-Dateien und Swap-Partitionen. Durch die Verbesserung der Geschwindigkeit von Festplatten und die Effizienz von Swap-Funktionen innerhalb des Linux-Betriebssystems ist dieser Unterschied heute nicht mehr relevant. Tatsächlich setzen einige Linux-Distributionen nun standardmäßig auf Swap-Dateien anstelle von Swap-Partitionen.
Swap-Speicher wird nicht nur zur Entlastung des RAM bei Speichermangel verwendet. Er ist ein kritischer Bestandteil eines stabilen Systems. Ohne Swap-Speicher wird es für den Kernel sehr schwer, eine angemessene Speicherverwaltung zu erreichen. Sehen wir uns an, wie wir einfach Swap-Speicher hinzufügen können.
Wichtige Vorbemerkungen: Btrfs und SSDs
Zwei Punkte sollten wir kurz ansprechen.
Das Btrfs-Dateisystem hat bestimmte Einschränkungen bei der Verwendung von Swap-Dateien. Früher gab es Konflikte mit der Copy-on-Write-Funktion von Btrfs. Einige Funktionen, die Swap-Dateien benötigten, waren nicht implementiert, und Annahmen über die Blocknummerierung in Swap-Dateien trafen auf Btrfs nicht zu. Daher wurden Swap-Dateien nicht unterstützt.
Seit Kernel 5.0 ist es möglich, Swap-Dateien auf Btrfs-Dateisystemen zu verwenden, wenn sie die folgenden Kriterien erfüllen:
- Keine Copy-on-Write (NOCOW)-Dateien.
- Sie dürfen nicht komprimiert sein.
- Sie dürfen sich nicht über verschiedene Festplatten erstrecken.
Die meisten Nutzer werden jedoch das Standard-Dateisystem ext4 verwenden, was diese Einschränkungen für sie irrelevant macht.
Als SSDs zum ersten Mal auf den Markt kamen, gab es Bedenken hinsichtlich ihrer Nutzung in Szenarien mit häufigen Schreibvorgängen. Man riet davon ab, Swap-Speicher auf SSDs zu legen und sogar die Systemprotokollierung auf SSDs zu vermeiden.
Heutzutage ist das weniger besorgniserregend, und viele SSDs haben eine Lebensdauer, die die meisten PCs überdauert. Eine Swap-Datei auf einer SSD hat eine deutlich bessere Leistung als eine Swap-Partition auf einer herkömmlichen Festplatte.
Prüfen des vorhandenen Swap-Speichers
Bevor wir beginnen, schauen wir uns den bereits verfügbaren Swap-Speicher an. Dies kann auf zwei Arten erfolgen, die wir beide nutzen werden. Der Befehl `free` zeigt den belegten und freien Speicher an. Mit der Option `-h` (human-readable) werden die Speicherwerte in leicht verständlichen Einheiten ausgegeben.
free -h
Die Ausgabe von `free` zeigt, dass auf diesem System kein Swap-Speicher konfiguriert ist.
Die Diskussion über Swap-Speicher geht oft Hand in Hand mit RAM und freiem RAM. Es ist also wichtig zu erwähnen, dass der freie Arbeitsspeicher mit 237 MB angezeigt wird. Verwechseln Sie dies nicht mit der Gesamtmenge des verfügbaren Arbeitsspeichers. Dieser Wert wird durch die Zahl „verfügbar“, die 881 MB beträgt, repräsentiert.
Linux verwendet freien RAM für eigene Zwecke, wie zum Beispiel Datei-Caching und Kernel-Puffer. Die dafür vorgesehene Menge an RAM ist der Wert „Buff/Cache“, der 871 MB beträgt. Dieser Speicher wird jedoch immer noch als „verfügbar“ betrachtet und dazu gezählt. Der Inhalt des „buf/cache“-RAM kann sofort verworfen und von jeder Anwendung verwendet werden, die Speicher benötigt.
Eine andere Möglichkeit, die Verfügbarkeit von Swap-Speicher zu überprüfen, ist der Befehl `swapon`. Die Option `–show` nimmt keine Änderungen am Swap Ihres Systems vor. Sie zeigt lediglich die entsprechenden Statistiken an.
swapon --show
Wenn dieser Befehl keine Ausgabe liefert, ist kein Swap-Speicher konfiguriert.
Falls diese Befehle ergeben haben, dass bereits ein Swap-Speicher konfiguriert ist, sollte dessen Größe bei der Entscheidung über die Größe der zu erstellenden Swap-Datei berücksichtigt werden.
Wie viel Swap-Speicher wird benötigt?
Die traditionelle Antwort war „doppelt so viel wie der RAM“. Das wurde jedoch zu einer Zeit geprägt, als Computer sehr begrenzten Arbeitsspeicher hatten. Da RAM günstiger geworden ist und Programme und Spiele mehr Speicher benötigen, haben sich die PC-Spezifikationen entsprechend angepasst. PCs mit 32 GB RAM sind heutzutage keine Seltenheit mehr. Niemand würde 64 GB Festplattenspeicher für Swap-Speicher reservieren, wenn 32 GB RAM vorhanden sind. Das wäre schlichtweg übertrieben.
Die benötigte Menge an Swap-Speicher ist ein heiß diskutiertes Thema, ähnlich wie die Frage nach dem „besten Editor“. Eine der vernünftigsten Diskussionen zu diesem Thema finden wir in den Ubuntu Swap FAQs. Es wird eine kurze und vernünftige Herangehensweise empfohlen (auch wenn viele Leute den Mechanismus von „Swappiness“ unter Linux falsch verstehen). Es gibt eine praktische Tabelle mit empfohlenen Swap-Speichergrößen, abhängig von der RAM-Größe Ihres Systems und der Frage, ob Sie Ihren Computer in den Ruhezustand versetzen möchten oder nicht.
Die gute Nachricht ist: Die gewählte Größe spielt keine entscheidende Rolle. Wir können eine Swap-Datei jederzeit löschen und durch eine größere oder kleinere ersetzen. Oder wir können einfach eine weitere Swap-Datei hinzufügen.
Wählen Sie eine Swap-Dateigröße aus der Tabelle und beobachten Sie die Nutzung Ihres Systems. Wenn eine Feinabstimmung erforderlich ist, können die Änderungen problemlos vorgenommen werden. Bei Swap-Dateien dauert es nur wenige Minuten. Im Vergleich dazu ist das Anpassen von Partitionen auf einem laufenden Linux-System deutlich komplizierter.
Erstellen der Swap-Datei
Sie sollten nicht den Befehl `fallocate` zur Erstellung Ihrer Swap-Datei verwenden. Dies geht aus der Handbuchseite von `swapon` hervor:
Die Swap-Datei-Implementierung im Kernel erwartet, dass sie direkt in die Datei schreiben kann, ohne die Unterstützung des Dateisystems. Dies ist ein Problem bei Dateien mit Löchern oder Copy-on-Write-Dateien auf Dateisystemen wie Btrfs. Befehle wie cp(1) oder truncate(1) erzeugen Dateien mit Löchern. Diese Dateien werden von swapon abgelehnt. Durch fallocate(1) vorab erstellte Dateien können abhängig vom Dateisystem ebenfalls als Dateien mit Löchern interpretiert werden. Auf XFS werden vorab zugewiesene Swap-Dateien seit Linux 4.18 unterstützt. Die portabelste Lösung zur Erstellung einer Swap-Datei ist die Verwendung von dd(1) und /dev/zero.
Obwohl `fallocate` schneller ist, verwenden wir `dd` zur Erstellung der Swap-Datei. Der Rechner, der für die Recherche zu diesem Artikel verwendet wurde, hat 2 GB RAM. Wir werden eine 1 GB Swap-Datei 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 erstellen eine Datei namens `swapfile` im Root-Verzeichnis.
- `bs`: Die Blockgröße in Byte. Dies gibt an, wie viele Bytes gleichzeitig aus der Eingabedatei gelesen und in die Ausgabedatei geschrieben werden.
- `count`: Die Anzahl der zu lesenden und zu schreibenden Blöcke. 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
Während der Erstellung der Datei werden einige Statistiken angezeigt.
Wir sehen die Anzahl der in die Datei geschriebenen Blöcke (Datensätze), die Größe der Datei, die Zeit für die Erstellung der Datei und die effektive Datenübertragungsrate.
Verwenden Sie den Befehl `ls`, um die Datei im Root-Verzeichnis anzuzeigen:
ls /
Vorbereiten der Swap-Datei
Wir müssen die Swap-Datei mit dem Befehl `mkswap` vorbereiten, bevor sie verwendet werden kann. Wir müssen `mkswap` keine weiteren Parameter als den Pfad und den Namen der Datei übergeben:
sudo mkswap /swapfile
Die Datei ist nun für die Verwendung als Swap-Datei vorbereitet. Beachten Sie den Warnhinweis zu den Dateiberechtigungen. Diese müssen geändert werden, damit nur der Root-Benutzer die Swap-Datei lesen und schreiben kann.
Verwenden der Swap-Datei
Die Standardberechtigungen sind zu weit gefasst, daher müssen wir sie einschränken, damit nur `root` die Swap-Datei verwenden kann. Verwenden Sie `chmod`, um die Dateiberechtigungen zu ändern:
sudo chmod 600 /swapfile
Dadurch werden alle Berechtigungen der Dateigruppenmitglieder und anderer Benutzer entfernt, aber der Dateibesitzer `root` kann die Datei lesen und schreiben.
Wir müssen den Befehl `swapon` verwenden, um Linux über die neue Swap-Datei zu informieren. Wir müssen nur den Pfad und den Dateinamen angeben:
sudo swapon /swapfile
Die Swap-Datei ist nun aktiv.
Hinzufügen der Swap-Datei zu `fstab`
Um sicherzustellen, dass Ihre Swap-Datei nach einem Neustart verfügbar ist, fügen Sie sie der Datei `/etc/fstab` hinzu. Sie können jeden beliebigen Texteditor verwenden, wir demonstrieren den Vorgang aber mit dem grafischen Texteditor Gedit.
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 haben folgende Bedeutung:
- Dateisystem: Pfad und Name der Swap-Datei.
- Einhängepunkt: Die Datei wird nicht wie ein Dateisystem eingehängt, daher lautet der Eintrag „none“.
- Typ: Dies ist „swap“.
- Optionen: Beim Booten wird `swapon -a` (alle Geräte, die als Swap markiert sind, starten) von einem der Boot-Skripte aufgerufen. Diese Option weist Linux an, diesen Eintrag als eine Swap-Ressource zu behandeln, die von dem Befehl `swapon -a` kontrolliert werden soll. Es ist üblich, dass hier „defaults“ angegeben wird, da einige Linux-Benutzer fälschlicherweise glauben, dass dieses Feld ignoriert wird. Wie wir sehen werden, ist dies jedoch nicht der Fall. Daher ist es sinnvoll, die richtige Option zu verwenden.
- Dump: Dies kann auf Null gesetzt werden. Es ist in diesem Fall irrelevant.
- Pass: Dies kann auf Null gesetzt werden. Es ist in diesem Fall irrelevant.
Speichern Sie die Änderungen und schließen Sie den Editor.
Überprüfung der Swap-Nutzung
Um zu sehen, ob Ihr Swap-Speicher verwendet wird, verwenden Sie den Befehl `swapon` mit der Option `–show`:
swapon --show
Die Spalten bedeuten:
- Name: Der Name der Swap-Partition oder der Swap-Datei.
- Typ: Der Typ des Swap-Geräts.
- Größe: Die Größe der Swap-Ressource.
- Verwendet: Die Menge des verwendeten Swap-Speichers.
- Prio: Die Priorität dieses Swap-Speicherbereichs.
Die Swap-Speicher-Priorität
Jeder Swap-Bereich wird mit einer Priorität versehen. Wenn Sie keine angeben, wird automatisch eine zugewiesen. Automatisch zugewiesene Prioritäten sind immer negativ. Der manuell zuweisbare Prioritätsbereich reicht von 0 bis 32767. Swap-Ressourcen mit höheren Prioritäten werden zuerst verwendet.
Wenn mehrere Swap-Bereiche die gleiche Priorität haben, werden sie abwechselnd verwendet, bis beide voll sind. Dann sucht das System nach dem Swap-Bereich mit der nächstniedrigeren Priorität. Wenn Sie nur einen einzigen Swap-Bereich haben, ist die Priorität irrelevant. Wir werden aber die Priorität der von uns erstellten Swap-Datei ändern, um zu zeigen, wie es geht.
Um eine Priorität festzulegen, fügen Sie die Option `pri=` (Priorität) zum Eintrag in `/etc/fstab` hinzu. Bearbeiten Sie die Zeile, die Sie in `/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 „sw“, dem Komma und „pri=10“. Starten Sie Ihren Computer neu und verwenden Sie den Befehl `swapon –show`:
swapon -- show
Die Priorität dieses Swap-Bereichs wurde auf 10 erhöht. Dies ist ein Beweis dafür, dass das Optionsfeld im `/etc/fstab`-Eintrag nicht ignoriert wird.
Swap-Speicher leicht gemacht
Nachdem wir die Details geklärt haben, können wir schnell und einfach eine neue Swap-Datei erstellen:
sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2
Und überprüfen, ob es funktioniert hat:
swapon --show
Wenn Sie dies dauerhaft machen möchten, fügen Sie es zu Ihrer Datei `/etc/fstab` hinzu.
Fertig!