Come disattivare in modo permanente lo swap in modo permanente e recuperare lo spazio? (su Debian Jessie)


48

Ho installato Debian Jessie con il partizionamento predefinito sul mio disco SSD. Il mio attuale partizionamento del disco è simile al seguente:

Il mio attuale partizionamento del disco è simile al seguente

Dato che ho 16 GB di RAM, suppongo che non ho bisogno di swap . Ma poiché ho altre unità disco, ad esempio, posso creare un file di scambio su una delle altre unità.

Potete dirmi quali passi dovrei prendere per rimuovere la partizione di swap in modo corretto e permanente affinché non occupi spazio su disco ? Desidero eliminare la partizione di swap poiché attualmente ho solo SSD da 128 GB.

Ecco cosa ho provato e riavviato ogni volta; ognuno di questi passaggi non è permanente o non ha fatto nulla :

  1. Utilizzando l' swapoffutilità:

    swapoff --all
    
  2. Utilizzando l' utilità GParted :

    Fare clic con il tasto destro sulla partizione di swap e fare clic su Scambia.

  3. Commentando l' UUID della partizione di swap nel seguente file:

    /etc/fstab
    
  4. Commentando l' UUID della partizione di swap nel seguente file:

    /etc/initramfs-tools/conf.d/resume
    
  5. Eseguendo questi comandi alla fine (sia in questo che nell'ordine opposto):

    update-grub
    
    update-initramfs -u
    

1
Swapoff disabilita solo lo swap per il sistema attualmente in esecuzione, per renderlo permanente è necessario combinarlo con la rimozione della voce rilevante da /etc/fstab. Una volta fatto, lo scambio dovrebbe essere disabilitato e non tornare al prossimo avvio. Ora dovresti modificare la tabella delle partizioni ed estendere il tuo filesystem principale se vuoi recuperare lo spazio inutilizzato. Vedi la mia risposta per istruzioni dettagliate.
André Borie,

@ burian.vlastimil puoi pubblicare il tuo intero /etc/fstab?
André Borie,

@ burian.vlastimil Modificalo nella domanda poiché i commenti non mantengono le interruzioni di riga. Le tue modifiche in fstab persistono dopo il riavvio o la riga di swap viene decommentata?
André Borie,

1
Se potessi approfondire questa domanda, lo scopo di swap è quello di rimuovere le pagine inutilizzate e proteggere il sistema dalla memoria insufficiente. Pertanto, come suggerito da SnakeDoc, avere 512 MB di swap è sempre positivo. Personalmente, ho SSD senza partizione di swap ma piuttosto un file di swap nella mia directory /. Se si sceglie di farlo, utilizzare questo tutorial per creare il file. Per quanto riguarda la partizione di swap, puoi avviare live usb e usare gparted per rimuovere quella partizione. Assicurati di aggiornare grub, però.
Sergiy Kolodyazhnyy,

4
@SnakeDoc - in genere non avrai un panico nel kernel, il gestore OOM avvierà e ucciderà i processi per liberare memoria (e di solito fa un buon lavoro nel decidere quale (i) uccidere, generalmente dando la preferenza uccidere processi sempre più grandi). Mantengo un gran numero di server senza swap che sono impostati sul panico su OOM invece di uccidere i processi perché i server sono configurati in modo tale che normalmente non esauriranno mai la memoria e se lo fanno, voglio che vadano in panico e si riavviino anziché scambiare e rallenta (o lascia che il gestore OOM decida quali processi uccidere)
Johnny,

Risposte:


47

Esegui come root:

# swapoff -a

E per rendere permanente tale modifica, modificare /etc/fstabe rimuovere o commentare la voce di scambio.


@ burian.vlastimil, cosa intendi con bloccato? Puoi verificare che nessun dispositivo di swap sia in uso guardando la prima riga in alto - dovrebbe riportare "KiB Swap: 0 totale". Puoi anche cat /proc/swaps- che dovrebbe solo segnalare una riga di intestazione. In tal caso, quindi sì, puoi rimuovere in modo sicuro la partizione di swap - e ingrandire un'altra partizione - per recuperare quello spazio - se è quello che vuoi.
maxschlepzig,

@ burian.vlastimil, lo swap potrebbe essere abilitato dai tuoi initramfs, potresti dover rimuovere l' resumeopzione del kernel (che fa riferimento all'UUID del tuo swap), ovvero aggiornare grub e rigenerare gli initramfs (sostanzialmente fare l'opposto di alcuni dei passaggi in SwapFaq ).
maxschlepzig,

@ burian.vlastimil, puoi anche greppare la tua configurazione di grub (sotto /boot) per quel uuid e puoi decomprimere i tuoi initramsfs e grep il suo contenuto per arrivare alla causa principale di questo. Assicurati di fare un grep senza distinzione tra maiuscole e minuscole.
maxschlepzig,

2
appena messo swapoff -ain /etc/rc.local. avendo di swap su per alcuni millisecondi quando si avvia non è un problema. con 16 GB di RAM non verrà scritto nulla per molto tempo. basta lasciare lo spazio di swap non (lo spazio su disco è a buon mercato) e non cambiano /etc/fstab .
Skaperen,

crea un file di scambio temporaneo , quindi puoi recuperare lo spazio eliminando il file una volta disattivato lo scambio
Skaperen

40
  1. Se hai GParted aperto, chiudilo . La sua funzionalità di Swapoff non sembra essere permanente.

  2. Apri terminale e diventa root( su); se hai sudoabilitato, puoi farlo anche per esempio sudo -i; vedi man sudoper tutte le opzioni):

    sudo -i
    
  3. Disattiva la partizione di swap particolare e / o tutti gli swap :

    swapoff --all
    
  4. Assicurati al 100% che la partizione di partizione di swap particolare sia disattivata:

    cat /proc/swaps
    
  5. Apri un editor di testo con cui sei abile con questo file, ad esempio nanose non sei sicuro:

    nano /etc/fstab
    
  6. Commenta / rimuovi l' UUID della partizione di swap , ad esempio:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Apri un editor di testo con cui sei abile con questo file, ad esempio nanose non sei sicuro:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Commenta / rimuovi l' UUID della partizione di swap precedentemente identificato , ad esempio:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. Non chiudere il terminale perché ne avrai bisogno in seguito comunque.

Nota: i passaggi successivi differiscono a seconda che si faccia affidamento sulla CLI o sulla GUI .


GUI :

  1. Apri GParted , sia dal menu, sia più comodamente dal terminale che abbiamo aperto:

    gparted
    
  2. Se non lo hai installato, puoi farlo; in seguito eseguire nuovamente il comando precedente:

    apt-get install gparted
    
  3. Scegli l'unità dal menu in alto a destra.

  4. Quando GParted riattiva la partizione di swap all'avvio, dovrai fare clic con il pulsante destro del mouse sulla partizione di swap particolare e fare clic su Scambia -> Questo verrà applicato immediatamente.

  5. Elimina la partizione di swap con il tasto destro -> Elimina. È necessario applicare la modifica ora.

  6. Ridimensiona la tua partizione principale / altra con il tasto destro -> Ridimensiona / Sposta. È necessario applicare la modifica ora.

  7. Tornando al terminale, ricreamo le immagini di avvio :

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

    update-grub
    
  9. È possibile riavviare ora se si desidera verificare che la macchina si avvii.


CLI :

Controllerò le VM se la mia soluzione funziona, quindi la condividerò. Nel frattempo, vedi questa risposta .


1
il più completo, ben spiegato.
benzkji,

Se in seguito si verifica l'avvio lento con il messaggio gave up waiting for suspend/resume device: Nel file /etc/initramfs-tools/conf.d/resume, non solo disabilitare la linea, sostituirla con RESUME=none. ( fonte )
tanius

17

Commenta / rimuovi la voce pertinente in /etc/fstabper impedirne la riabilitazione all'avvio successivo, quindi riavvia o esegui swapoff -aper disabilitare l'utilizzo della partizione di swap per il sistema attualmente in esecuzione.

Ora cancella la partizione di swap, estendi la tua partizione di sistema su quello spazio inutilizzato ed estendi il filesystem reale. Non so se il tuo gestore di partizioni grafiche possa fare tutto questo, ma se non è possibile ecco un modo distro-agnostico di farlo usando fdiske 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.

Infine estendiamo il filesystem corrente per utilizzare il nuovo spazio libero (fino ad ora il filesystem reale non era a conoscenza del fatto che avremmo aggiunto più spazio alla sua partizione sottostante). Per impostazione predefinita, resize2fsutilizza l'intera partizione a meno che non venga specificata una dimensione fissa, quindi non è necessario specificare altro che il dispositivo a blocchi di partizione. La crescita di un file system (anziché la riduzione) può essere effettuata online con la partizione montata:

# resize2fs /dev/sda2

Ora hai disabilitato correttamente lo scambio e recuperato lo spazio inutilizzato senza nemmeno riavviare.

Si noti che la procedura per Debian è leggermente diversa e richiede la modifica di alcuni altri file. Dai un'occhiata a questa risposta per maggiori informazioni.


Questo non funziona per me. Ho avuto 3 partizioni. uno per / boot, uno per / e lo scambio. Quando provo a creare la nuova partizione posso solo creare una partizione da
GB

Aggiunta, almeno per le distribuzioni basate su Debian 9: è necessario eseguire partprobeprima del resize2fscomando, altrimenti il ​​kernel non è a conoscenza della nuova tabella delle partizioni e nulla verrà ridimensionato.
tanius,

2

Fare clic con il tasto destro sulla partizione di swap in GParted e fare clic su Swapoff. Quindi eliminare la partizione di swap, rimuoverla da /etc/fstabe rigenerare initramfse grub(forse non necessario).

La partizione di swap non deve essere aggiunto alla initramfsdal initramfsscript di aggiornamento, se la partizione di swap non esiste.

Secondo questo post , il seguente è il modo corretto di rigenerare initramfse grub:

update-initramfs -c -k <kernel>

update-grub

-2

È possibile fare clic con il tasto destro sulla partizione di swap in Gparted e selezionare l' opzione di swapoff . Questo è un modo rapido per realizzare la stessa cosa che hai chiesto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.