Beste Möglichkeit, Swap unter Linux zu deaktivieren


53

Ich verwende einen benutzerdefinierten kompilierten 3.18.9-Kernel und frage mich, wie ich Swap auf dem System am besten deaktivieren kann. Ich benutze auch init, wenn es einen Unterschied macht.

Reicht es aus, die Swap-Zeile zu kommentieren oder zu entfernen /etc/fstab, um zu verhindern, dass Swap beim Booten funktioniert / gemountet wird, oder muss ich den Kernel neu kompilieren, ohne Support for paging of anonymous memory (swap)100% sicher zu sein, dass er nicht aktiviert wird?

Ich führe verschlüsselte Partitionen aus und möchte ein versehentliches Auslaufen auf die Festplatte verhindern. Meine Systemspezifikationen sind auch groß genug, um in einer Umgebung ohne Austausch zu überleben.


Warum ist Ihr Swap nicht verschlüsselt?
Michael Hampton

@MichaelHampton Ich sah zu diesem Zeitpunkt keinen Bedarf, bis mir klar wurde, was schließlich passieren würde. Außerdem erreicht mein System zu keinem Zeitpunkt, an dem der Swap verwendet wurde, einen Punkt, sodass ich das Gefühl habe, ihn entfernen zu können.
user283167

Ich würde das Feature dann aus dem Kernel entfernen. Andernfalls kann jemand einen USB-Stick einstecken und erneut darauf tauschen.
ott--

@ott Benötigt der Benutzer keinen Superuser-Zugriff, um die ausführbare Datei swapon / swapoff zu verwenden? Ich kann es für den Fall wieder deaktivieren, bin mir aber nicht sicher, ob ein nicht privilegierter Benutzer Auslagerungsdateien erstellen kann.
user283167

Tatsächlich benötigt er Superuser-Zugriff, den er mit einem Exploit zB. Aber beobachten Sie Ihren Server rund um die Uhr?
ott--

Antworten:


76
  1. Identifizieren Sie konfigurierte Swap-Geräte und -Dateien mit cat /proc/swaps.
  2. Schalten Sie alle Swap-Geräte und -Dateien mit aus swapoff -a.
  3. Entfernen Sie alle übereinstimmenden Verweise in /etc/fstab.
  4. Optional: Zerstören Sie alle in Schritt 1 gefundenen Auslagerungsgeräte oder -dateien, um deren Wiederverwendung zu verhindern. Aufgrund Ihrer Bedenken, dass vertrauliche Informationen verloren gehen könnten, sollten Sie eine Art sicheres Löschen in Betracht ziehen.

Mann Swapoff


Auf einigen Systemen müssen Sie auch das initrdArchiv neu erstellen , z. B. mit dracut --regenerate-all --forceoder mkinitrd, oder das System bootet nicht. Vielen Dank an JO Aho und Carlos ER weiter alt.os.linux.suse.
Ant_222

10

Wenn Sie wirklich sicher sind, dass Sie das Auslagern deaktivieren möchten (Hinweis: Dies wird nicht empfohlen, auch wenn Sie sich ziemlich sicher sind, dass der physische Arbeitsspeicher mehr als ausreichend ist), gehen Sie folgendermaßen vor:

  1. run swapoff -a: Dadurch wird der Swap sofort deaktiviert
  2. Entfernen Sie alle Swap-Einträge von /etc/fstab
  3. rebootdas System. Wenn der Swap weg ist, gut. Wenn es aus irgendeinem Grund immer noch hier ist, mussten Sie die Swap-Partition entfernen. Wiederholen Sie die Schritte 1 und 2 , und danach, verwenden fdiskoder parteddie (jetzt nicht verwendet) Swap - Partition zu entfernen. Gehen Sie hier sehr vorsichtig vor: Das Entfernen der falschen Partition hat katastrophale Folgen!
  4. reboot

1
Warum wird es nicht empfohlen, Swap zu deaktivieren, auch wenn Sie genug RAM haben?
Rolf

1
Weil Linux die Swap-Partition proaktiv verwendet, um mehr Speicher für das Caching freizugeben. Dies kann die Leistung verbessern. Wie auch immer, es ist ein einstellbarer Parameter. Weitere Informationen finden Sie hier . Darüber hinaus kann ein improvisierter Anstieg der Speicherzuweisung in einem System ohne Swap den OOM-Killer des Kernels auslösen.
Shodanshok

1
Danke, das ist vernünftig. Trotzdem dachte ich, wenn "genug RAM" (z. B. 8 oder 16 GB) voll ist, ist es wahrscheinlich eine Ausnahmesituation (Anwendung mit einem Speicherverlust oder einem anderen außer Kontrolle geratenen Problem, DDOS-Angriff usw.), in der Fall sogar Swap würde schließlich sowieso überfordert sein. Vielleicht mache ich kein sehr überzeugendes Argument, aber dies sollte nicht bei leichtem Desktop-Einsatz passieren.
Rolf

9

Früher wurden nur Swap-Partitionen /etc/fstabautomatisch verwendet, aber möglicherweise ändert sich dies geringfügig. Möglicherweise müssen Sie Folgendes tun:

systemctl mask dev-sdXX.swap

(ändere sdXX) zu deiner real formatierten Swap-Partition, was die Frage aufwirft, warum du eine Swap-Partition hast, wenn du sie nicht verwenden willst ...

Wenn Sie systemd nicht verwenden, /etc/fstabsollte es ausreichen , die Swap-Einträge von zu entfernen (soweit ich weiß).

Möglicherweise besteht die wirkliche Lösung darin, die Swap-Partitionen zu entfernen, damit sie nicht versehentlich verwendet werden. Um die Swap-Partitionen zu entfernen, würde ich fdisk verwenden, um den Partitionstyp von Swap auf etwas anderes zu ändern, und dann die Partition oder use: neu formatieren, dd if=/dev/zero of=/dev/old-swap-partitionum sie auf Null zu setzen und ihre Verwendung zu verhindern.

Siehe auch Verwendung der Swap-Partition mit systemd einrichten .


Ich benutze immer noch init via openRC und habe systemd absichtlich von der Installation entfernt. Und was die Swap-Frage angeht, ich habe eine reguläre Installation durchgeführt, bis ich die Entscheidung getroffen habe, Cryptsetup / luks zu verwenden, um verschlüsselte Dateien, die mit ext4 formatiert sind, über meinem Dateisystem zu mounten. Wenn Sie so freundlich sein könnten, den Weg zu berühren, Swap zu deaktivieren, wenn Sie init verwenden, würde ich es begrüßen.
user283167

0

Wenn ich die / etc / fstab- Datei auf Raspbian ansehe, sehe ich einen Kommentar mit der Aufschrift

a swapfile is not a swap partition, no line here
  use dphys-swapfile swap[on|off] for that

Um die vorkonfigurierte Auslagerungsdatei vollständig zu deaktivieren, funktioniert dies jedoch einwandfrei:

swapoff -a
chmod -x /etc/init.d/dphys-swapfile
reboot

Diese Lösung sieht für mich etwas schnell und schmutzig aus, Sie können sie jedoch einfach wieder aktivieren mit:

chmod +x /etc/init.d/dphys-swapfile
reboot
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.