Wie man Swap-Speicher in Linux erstellt

Um eine Swap-Datei in Linux zu erstellen, bereiten Sie eine Datei auf Ihrem Speicher vor, initialisieren Sie sie mit mkswap und aktivieren Sie sie dann mit swapon. Swap hilft, den Speicherdruck zu reduzieren, ist jedoch langsamer als RAM und löst nicht alle Speicherknappheitsprobleme oder garantiert den ordnungsgemäßen Betrieb von Programmen.

Was ist Swap?

Swap ist ein Bereich, der es ermöglicht, Teile der im Gebrauch befindlichen Speicherseiten auf den Speicher zu verschieben. Sie können eine Festplattendatei oder eine separate Partition verwenden. Dieser Artikel erklärt, wie man eine Datei hinzufügt, und die 2 GiB im Beispiel dienen zu Übungszwecken. Die erforderliche Größe sollte unter Berücksichtigung des RAM, der Arbeitslast, des verfügbaren Speicherplatzes und der Nutzung des Ruhezustands bestimmt werden.

Das System kann bereits Swap verwenden. Überprüfen Sie die aktuell aktivierten Elemente und den Speicherstatus mit folgendem Befehl.

swapon --show
free -h

Überprüfen Sie den Namen, die Größe und die Nutzung in swapon --show und schauen Sie sich die Gesamtverwendung in der Zeile Swap von free -h an. Selbst wenn Sie den Swap erhöhen, kann die Leistung abnehmen, wenn häufig auf den Datenträger zugegriffen wird. Wenn der Speicher ständig unzureichend ist, sollten Sie auch die Arbeitslast und eine RAM-Erweiterung in Betracht ziehen.

Zu überprüfende Punkte vor dem Start

Das folgende Verfahren ist ein Beispiel für Linux unter Verwendung von GNU-Tools und util-linux, wobei das Root-Dateisystem das übliche ext4 ist und über genügend freien Speicherplatz verfügt. Administratorrechte sind erforderlich. Container oder verwaltete Server können die Swap-Aktivierung einschränken, daher sollten zunächst die Betriebsvorschriften geprüft werden.

findmnt -T / -o TARGET,FSTYPE,SOURCE,OPTIONS
df -h /

Überprüfen Sie den Dateisystemtyp und den verfügbaren Speicherplatz. Neben der 2 GiB großen Swap-Datei sollte genügend freier Speicher für den normalen Betrieb verbleiben. Verwenden Sie nicht den Beispielpfad /swap-manualfactory, wenn dort bereits eine Datei oder ein symbolischer Link existiert. Das Neuinitialisieren oder Überschreiben einer vorhandenen Swap-Datei kann Datenverlust und Probleme auf einem laufenden System verursachen.

Btrfs hat separate Einschränkungen im Zusammenhang mit Copy-on-Write und Snapshots, daher wenden Sie das unten stehende ext4-Verfahren nicht direkt an. Für Btrfs-spezifische Erstellungsarten und Bedingungen lesen Sie das Btrfs Swap-Datei-Dokument . Netzwerkdateisysteme oder andere Dateisysteme können ebenfalls unterschiedliche Unterstützungsvoraussetzungen haben.

Erstellen und Aktivieren einer Swap-Datei

Das Folgende ist ein Beispiel zum Erstellen einer 2GiB-Datei, wenn /swap-manualfactory nicht existiert. Das conv=excl in GNU dd wird fehlschlagen, wenn das Ziel bereits existiert, wodurch ein Überschreiben verhindert wird. Wenn es fehlschlägt oder unterbrochen wird, fahren Sie nicht mit dem nächsten Schritt fort; prüfen Sie die Ursache und die erzeugte Datei.

sudo dd if=/dev/zero of=/swap-manualfactory bs=1M count=2048 conv=excl status=progress

Wenn der Befehl erfolgreich ist, überprüfen Sie die Dateigröße und den Pfad, setzen Sie ihn so, dass nur der Administrator lesen und schreiben kann, und initialisieren Sie ihn dann als Swap-Bereich. mkswap ändert die angegebene Datei, daher stellen Sie sicher, dass der Pfad die Datei ist, die Sie gerade erstellt haben.

sudo ls -lh /swap-manualfactory
sudo chmod 600 /swap-manualfactory
sudo mkswap /swap-manualfactory

Führen Sie den nächsten Schritt nur aus, wenn jeder vorherige Schritt erfolgreich ist. Überprüfen Sie nach der Aktivierung mit dem untenstehenden Befehl, ob der neue Pfad in der Liste erscheint.

sudo swapon /swap-manualfactory
swapon --show
free -h

Die angezeigte Dateigröße stimmt möglicherweise nicht genau mit der Größe der erstellten Datei überein, aufgrund des Swap-Headers und anderer Faktoren. Wenn swapon fehlschlägt, überprüfen Sie den Fehler und fügen Sie ihn nicht zu den Boot-Einstellungen hinzu. Eine Swap-Datei darf keine Löcher aufweisen, und je nach Dateisystem ist eine mit fallocate erstellte Datei möglicherweise nicht geeignet. Das util-linux swapon Handbuch erklärt die Einschränkungen für jedes Dateisystem.

Aktivieren nach dem Booten

Fügen Sie Elemente nur zu /etc/fstab hinzu, nachdem sie erfolgreich aktiviert wurden. Da diese Datei auch andere Mount-Einstellungen enthält, sichern Sie sie vor dem Bearbeiten und stellen Sie sicher, dass die Pfade keine vorhandenen Swap-Einträge duplizieren. Wenn der unten angegebene Sicherungspfad bereits existiert, wählen Sie einen anderen neuen Namen.

sudo cp -a -n /etc/fstab /etc/fstab.before-swap
sudo nano /etc/fstab

Behalten Sie den vorhandenen Inhalt im Editor bei und fügen Sie die folgende Zeile hinzu, dann speichern Sie. Wenn Sie einen Beispielpfad unter einem anderen Namen erstellt haben, verwenden Sie den tatsächlichen Pfad.

/swap-manualfactory none swap defaults 0 0

Nach dem Speichern überprüfen Sie den Dateiinhalt erneut und überprüfen Sie auf Systemen, auf denen verfügbar, die Einstellungen mit dem folgenden Befehl. Diese Überprüfung garantiert keinen erfolgreichen Neustart.

sudo findmnt --verify --verbose
sudo systemctl daemon-reload

daemon-reload bewirkt, dass Systeme, die systemd verwenden, die geänderten Einstellungen neu laden. Wenn Validierungsfehler auftreten, korrigieren Sie diese und stellen Sie sicher, dass Sie nicht versehentlich andere Einträge geändert haben. Starten Sie zu einem geeigneten Wartungszeitpunkt neu und bestätigen Sie dann mit swapon --show, dass die Datei wieder aktiviert wurde. Sie können auch die Registrierungs- und Validierungsverfahren in Red Hat Swap Management Documentation überprüfen.

Deaktivieren und rückgängig machen

Bevor Sie den Swap ausschalten, überprüfen Sie die Nutzung und den verfügbaren Speicher mit swapon --show und free -h. Falls nicht genügend Platz vorhanden ist, um die aktuell verwendeten Seiten in anderen Speicher oder Swap zu verschieben, kann das Deaktivieren fehlschlagen oder das System belasten. Auf einem laufenden System gehen Sie nur vor, nachdem ausreichende Kapazität und Wartungszeit gesichert wurden.

sudo swapoff /swap-manualfactory
swapon --show

Stellen Sie sicher, dass der betroffene Eintrag nicht mehr in der aktiven Liste ist. Um zu verhindern, dass er beim Booten wieder aktiviert wird, entfernen Sie nur die durch diesen Vorgang in /etc/fstab hinzugefügte Zeile und führen Sie in einer systemd-Umgebung sudo systemctl daemon-reload aus. Um die Swap-Datei zu löschen, bestätigen Sie zuerst, dass die Deaktivierung erfolgreich war und die hinzugefügte Konfigurationszeile entfernt wurde, und löschen Sie dann nur die von Ihnen erstellte Datei. Lassen Sie andere Swap-Elemente oder vorhandene Einstellungen unverändert.