Wie kann ich Swap dauerhaft sicher ausschalten und den Speicherplatz zurückfordern? (auf Debian Jessie)

48

Ich habe Debian Jessie mit der Standardpartitionierung auf meinem SSD-Laufwerk installiert. Meine aktuelle Festplattenpartitionierung sieht folgendermaßen aus:

Meine aktuelle Festplattenpartitionierung sieht so aus

Da ich 16 GB RAM habe, gehe ich davon aus, dass ich keinen Swap brauche . Da ich jedoch andere Festplattenlaufwerke habe, kann ich stattdessen beispielsweise eine Auslagerungsdatei auf einem der anderen Laufwerke erstellen .

Können Sie mir sagen, welche Schritte ich unternehmen sollte, um die Auslagerungspartition korrekt und dauerhaft zu entfernen, damit sie keinen Speicherplatz belegt ? Ich möchte die Swap-Partition löschen, da ich derzeit nur 128 GB SSD habe.

Folgendes habe ich jedes Mal versucht und neu gestartet: Jeder dieser Schritte ist nicht permanent oder hat nichts getan :

  1. Verwenden des swapoffDienstprogramms:

    swapoff --all
    
  2. Verwenden des GParted- Dienstprogramms:

    Klicken Sie mit der rechten Maustaste auf die Swap- Partition und klicken Sie auf Swapoff.

  3. Auskommentieren der UUID der Swap- Partition in der folgenden Datei:

    /etc/fstab
    
  4. Auskommentieren der UUID der Swap- Partition in der folgenden Datei:

    /etc/initramfs-tools/conf.d/resume
    
  5. Führen Sie diese Befehle am Ende aus (sowohl in dieser als auch in der entgegengesetzten Reihenfolge):

    update-grub
    
    update-initramfs -u
    
LinuxSecurityFreak
quelle
1
Swapoff deaktiviert Swap nur für das aktuell ausgeführte System. Um es dauerhaft zu machen, sollten Sie es mit dem Entfernen des entsprechenden Eintrags aus kombinieren /etc/fstab. Sobald dies erledigt ist, sollte Swap deaktiviert sein und beim nächsten Start nicht mehr zurückkehren. Jetzt sollten Sie die Partitionstabelle ändern und Ihr Hauptdateisystem erweitern, wenn Sie den nicht verwendeten Speicherplatz zurückfordern möchten. Siehe meine Antwort für detaillierte Anweisungen.
André Borie
@ burian.vlastimil kannst du dein gesamtes posten /etc/fstab?
André Borie
@ burian.vlastimil Bitte bearbeiten Sie es in Ihrer Frage, da Kommentare keine Zeilenumbrüche enthalten. Behalten Ihre Änderungen in der fstab nach dem Neustart bei oder wird die Auslagerungszeile nicht kommentiert?
André Borie
1
Wenn ich auf diese Frage eingehen darf, besteht der Zweck von swap darin, nicht verwendete Seiten zu entfernen und das System vor Speichermangel zu schützen. Wie SnakeDoc vorschlug, sind daher 512 MB Swap immer gut. Persönlich habe ich eine SSD ohne Swap-Partition, sondern eine Swap-Datei in meinem / -Verzeichnis. Wenn Sie sich dazu entscheiden, verwenden Sie dieses Lernprogramm , um die Datei zu erstellen. Bei der Swap-Partition können Sie Live-USB booten und gparted verwenden, um diese Partition zu entfernen. Stellen Sie jedoch sicher, dass Sie grub aktualisieren.
Sergiy Kolodyazhnyy
4
@SnakeDoc - In der Regel kommt es nicht zu einer Kernel-Panik. Der OOM-Handler greift ein und beendet Prozesse, um Speicher freizugeben größere und neuere Prozesse zu töten). Ich verwalte eine große Anzahl von Servern ohne Swap, die in OOM in Panik geraten, anstatt Prozesse zu beenden, da die Server so konfiguriert sind, dass ihnen normalerweise nie der Arbeitsspeicher ausgeht. In diesem Fall sollen sie in Panik geraten und neu starten, anstatt zu tauschen und verlangsamen (oder lassen Sie den OOM-Handler entscheiden, welche Prozesse zu beenden sind)
Johnny

Antworten:

46

Als root ausführen:

# swapoff -a

Und um diese Änderung dauerhaft zu machen, müssen Sie /etc/fstabden Swap-Eintrag bearbeiten und entfernen oder auskommentieren.

maxschlepzig
quelle
@ burian.vlastimil, was meinst du mit gesperrt? Sie können überprüfen, ob kein Swap-Gerät verwendet wird, indem Sie in der ersten Zeile oben nachsehen, dass "KiB Swap: 0 total" angezeigt wird. Sie können auch cat /proc/swaps- was nur eine Kopfzeile melden sollte. Wenn dies der Fall ist, können Sie die Auslagerungspartition sicher entfernen - und eine andere Partition vergrößern -, um diesen Speicherplatz zurückzugewinnen - wenn Sie dies wünschen.
Maxschlepzig
@ burian.vlastimil, der Swap wird möglicherweise von Ihrem initramfs aktiviert. Möglicherweise müssen Sie die Kerneloption resume(die auf die UUID Ihres Swaps verweist) entfernen , dh grub aktualisieren und die initramfs neu generieren (im Grunde das Gegenteil von einigen Schritten in ausführen) SwapFaq ).
Maxschlepzig
@ burian.vlastimil, Sie können auch Ihre Grub-Konfiguration (unter /boot) für diese UUID abrufen und Sie können Ihre initramsfs entpacken und deren Inhalt abrufen, um die Ursache dafür zu ermitteln. Stellen Sie sicher, dass Sie ein Grep ausführen, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird.
Maxschlepzig
2
nur setzen swapoff -ain /etc/rc.local. mit Swap auf ein paar Millisekunden , wenn Sie booten ist kein Problem. mit 16GB RAM wird dort lange nichts geschrieben. Lass einfach den Swap-Platz dort (der Speicherplatz ist billig) und ändere ihn nicht /etc/fstab .
Skaperen
Wenn
40
  1. Wenn Sie GParted geöffnet haben, schließen Sie es. Die Swapoff-Funktion scheint nicht permanent zu sein.

  2. Öffne das Terminal und werde root( su); Wenn Sie sudoaktiviert haben, können Sie dies beispielsweise auch tun sudo -i. siehe man sudofür alle Optionen):

    sudo -i
    
  3. Deaktivieren Sie die bestimmte Swap- Partition und / oder alle Swap- S:

    swapoff --all
    
  4. Stellen Sie zu 100% sicher, dass die jeweilige Swap- Partition deaktiviert ist:

    cat /proc/swaps
    
  5. Öffnen Sie einen Texteditor, mit dem Sie vertraut sind, zB nanowenn Sie sich nicht sicher sind:

    nano /etc/fstab
    
  6. Auskommentieren / Entfernen der UUID der Swap- Partition , zB:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Öffnen Sie einen Texteditor, mit dem Sie vertraut sind, zB nanowenn Sie sich nicht sicher sind:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Kommentieren Sie die UUID der zuvor identifizierten Swap- Partition aus bzw. entfernen Sie sie , z.

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. Schließen Sie das Terminal nicht, da Sie es später sowieso benötigen.

Hinweis: Die nächsten Schritte hängen davon ab, ob Sie sich auf die CLI oder die GUI verlassen .


GUI :

  1. Öffnen Sie GParted entweder über das Menü oder bequemer über das Terminal, das wir geöffnet haben:

    gparted
    
  2. Wenn Sie es nicht installiert haben, können Sie dies tun. Führen Sie anschließend den vorherigen Befehl erneut aus:

    apt-get install gparted
    
  3. Wählen Sie Ihr Laufwerk aus dem Menü oben rechts.

  4. Da GParted die Swap- Partition beim Start reaktiviert , müssen Sie mit der rechten Maustaste auf die jeweilige Swap- Partition klicken und auf Swapoff -> Dies wird sofort angewendet.

  5. Löschen Sie die Swap- Partition mit der rechten Maustaste -> Löschen. Sie müssen die Änderung jetzt anwenden.

  6. Ändern Sie die Größe Ihrer Haupt- / anderen Partition mit einem Rechtsklick -> Größe ändern / verschieben. Sie müssen die Änderung jetzt anwenden.

  7. Zurück zum Terminal erstellen wir die Boot-Images neu :

    update-initramfs -u -k all
    
  8. Update GRUB :

    update-grub
    
  9. Sie können jetzt einen Neustart durchführen, wenn Sie testen möchten, ob der Computer startet.


CLI :

Ich werde nicht in Anspruch VM s , wenn meine Lösung funktioniert, dann werde ich es teilen. In der Zwischenzeit finden Sie diese Antwort .

LinuxSecurityFreak
quelle
1
am vollständigsten, gut erklärt.
Benzkji
Wenn anschließend ein langsamer Systemstart mit der Meldung " gave up waiting for suspend/resume deviceIn Datei" /etc/initramfs-tools/conf.d/resumeauftritt, deaktivieren Sie nicht nur die Zeile, sondern ersetzen Sie sie durch RESUME=none. ( Quelle )
Tanius
17

Kommentieren / entfernen Sie den entsprechenden Eintrag in /etc/fstab, um zu verhindern, dass er beim nächsten Start wieder aktiviert wird. Starten Sie dann neu oder führen Sie ihn aus swapoff -a, um die Verwendung der Swap-Partition für das derzeit ausgeführte System zu deaktivieren.

Löschen Sie nun die Swap-Partition, erweitern Sie Ihre Systempartition über diesen nicht genutzten Speicherplatz und erweitern Sie das eigentliche Dateisystem. Ich weiß nicht, ob Ihr grafischer Partitionsmanager all das kann, aber wenn dies nicht möglich ist, verwenden Sie fdiskund resize2fs:

# fdisk /dev/sdX

# Display current partition table, copy/paste this output somewhere to be able to go back in case you screw up

Command (m for help): p
Device       Boot  Start    End Sectors Size Id Type
/dev/sda1        2048  22527   20480  10M ef EFI (FAT-12/16/32)
/dev/sda2       22528 186367  163840  80M 83 Linux
/dev/sda3      186368 204799   18432   9M 82 Linux swap / Solaris

# Delete the swap partition

Command (m for help): d
Partition number (1-3, default 3): 3
Partition 3 has been deleted.

# Delete the system partition

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.

# Create a new system partition starting the same as the old one but ending a bit farther, at the end of the (now deleted) swap partition

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
# Enter the same start sector as the old part.
First sector (22528-204799, default 22528): 22528
# Enter the end sector of the old swap partition
Last sector, +sectors or +size{K,M,G,T,P} (22528-204799, default 204799): 204799

Created a new partition 2 of type 'Linux' and of size 89 MiB.

# Save the changes
Command (m for help): w
The partition table has been altered.

Schließlich erweitern wir das aktuelle Dateisystem, um den neuen freien Speicherplatz zu nutzen (bis jetzt war dem tatsächlichen Dateisystem nicht bekannt, dass wir der zugrunde liegenden Partition etwas mehr Speicherplatz hinzugefügt haben). Standardmäßig resize2fswird die gesamte Partition verwendet, es sei denn, eine feste Größe ist angegeben, sodass nur das Partitionsblock-Gerät angegeben werden muss. Das Erweitern eines Dateisystems (im Gegensatz zum Verkleinern) kann online erfolgen, wenn die Partition angehängt ist:

# resize2fs /dev/sda2

Jetzt haben Sie Swap erfolgreich deaktiviert und den ungenutzten Speicherplatz zurückgefordert, ohne einen Neustart durchzuführen.

Beachten Sie, dass das Verfahren für Debian etwas anders ist und das Bearbeiten einiger weiterer Dateien erfordert. Lesen Sie diese Antwort, um weitere Informationen zu erhalten.

André Borie
quelle
Das funktioniert bei mir nicht. Ich hatte 3 Partitionen. eine für / boot, eine für / und den Swap. Wenn ich versuche, die neue Partition zu erstellen, kann ich nur eine 16-GB-Partition erstellen: /
Freedo
Zusätzlich, zumindest für Debian 9-basierte Distributionen: Es muss partprobevor dem resize2fsBefehl ausgeführt werden, da der Kernel sonst nichts über die neue Partitionstabelle weiß und die Größe nicht geändert wird.
Tanius
2

Klicken Sie mit der rechten Maustaste auf die Swap-Partition in GParted und klicken Sie auf Swapoff. Löschen Sie dann Ihre Swap-Partition, entfernen Sie sie aus /etc/fstabund generieren Sie Ihr initramfsund grub(möglicherweise nicht erforderlich) neu.

Die Swap-Partition sollte initramfsvom initramfsUpdate-Skript nicht hinzugefügt werden, wenn die Swap-Partition nicht vorhanden ist.

Nach diesem Beitrag ist das Folgende der richtige Weg, um sich zu regenerieren initramfsund grub:

update-initramfs -c -k <kernel>

update-grub
BenjiWiebe
quelle
-2

Sie können in Gparted mit der rechten Maustaste auf Swap-Partition klicken und die Swap-Off- Option auswählen . Das ist eine schnelle Möglichkeit, dasselbe zu erreichen, was Sie gefragt haben.

Charlie
quelle