Come disabilito lo scambio?


83

Ho alcuni dati sensibili in ram che preferisco non essere su disco. Come disabilito lo scambio? Ho più di abbastanza RAM. Se la RAM diventa troppo alta non ho problemi con la chiusura dei processi. Come disabilito lo scambio?

Nota: non ho una partizione di swap e questo è in esecuzione in una VM (VMWare)

swap 

2
Anche se hai molta RAM, non è l'idea migliore di lavorare completamente senza scambio (vedi ad esempio alexonlinux.com/swap-vs-no-swap ). A seconda delle tue esigenze potresti prendere in considerazione l'idea di collocare la partizione di swap su un dispositivo sicuro dm-crypt, in modo che tutto ciò che è scritto su di esso sia crittografato. In tal caso, devi assicurarti che lo scambio sia abilitato dopo che i volumi crittografati sono disponibili e disabilitato prima che la mappatura del dispositivo sia disabilitata, ovviamente (penso che sia predefinito su Ubuntu, ma non ne sono sicuro). Cerca nel web "scambio criptato" per trovare numerose guide.
Fonte d'anima

1
A proposito: askubuntu.com/questions/248158/… Non è necessario lo scambio fino a quando non è necessario. E poi ne hai davvero bisogno.

Che dire di un cryptswap? / dev / mapper / cryptswap1

Risposte:


121

utilizzando

sudo swapoff -a  

è il solito modo per disattivare lo scambio, con il swapon -acomando usato per riattivarlo. Per man swapoff ulteriori informazioni sulla disattivazione dello scambio per dispositivi espliciti, consultare .


7
Questo non sembra persistere durante un riavvio?
ebyrob,

19
Le modifiche permanenti allo scambio sono di solito fatte in / etc / fstab.
ubfan1,

Copiamo questo in / etc / fstab
Max

6
No. Invece, commentate la riga di scambio in / etc / fstab.
Torsten Bronger,

Puoi leggere in altre risposte come commentarlo.
Carolus,

25

È possibile disabilitare lo scambio dopo il riavvio semplicemente commentando (aggiungere # davanti alla riga) la voce di scambio nel /etc/fstabfile. Impedirà il montaggio automatico della partizione di swap dopo il riavvio. Per fare questo in un singolo comando:

sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

o semplicemente:

sudo sed -i '/ swap / s/^/#/' /etc/fstab

Ora la voce di swap su /etc/fstabsarà simile a questa:

#UUID=xxxxxxxx-xxxx-xxxxx-xxx-xxxxxxxxxxx none            swap    sw              0       0

Con i tuoi numeri specifici e lettere minuscole anziché le lettere "x".


2
Perché il tuo UUID citato ha alcune cifre concrete? Dovrebbero essere identici per tutti gli UUID? Gli UUID delle mie partizioni non hanno alcuna coincidenza con le cifre specificate.
Ruslan,

I tuoi comandi sed non funzionano nel caso in cui i campi siano separati da tabulazioni (non spazi). È meglio scritto come sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: ho anche aggiunto #?per impedire ulteriori modifiche a / etc / fstab quando la linea è già disabilitata.
Alek_A

4

Se sei preoccupato per il contenuto dello scambio, puoi sempre disattivarlo come specificato nel solito modo sudo swapoff -ae quindi riempire il dispositivo di scambio con zeri o dati casuali usando dd.

Per prima cosa usa il contenuto di fstab per trovare il tuo file di swap o dispositivo ( less /etc/fstab)

Dopo averlo individuato e ricontrollato tre volte, la sua posizione è su sda5 o /swapfile (le partizioni di swap sono state sostituite di default con un file di swap in 17.04 e oltre.) .

Nel caso di una partizione o unità di scambio: (preceduto da / dev) emettere il comando "disk destroyer" (da non usare leggermente)

sudo dd if=/dev/zero of=swapsostituendo lo scambio di parole con il dispositivo o il file di scambio in cui ci si trova/etc/fstab

per farlo esplodere pieno di zeri o

sudo dd if=/dev/random of=swapsostituendo nuovamente la parola scambio con il dispositivo o il file di scambio in cui ci si trova/etc/fstab

per farlo esplodere pieno di dati casuali.

Nel caso di un file di scambio (preceduto solo da un percorso): puoi semplicemente eliminare il file conrm /path/to/swapfile

La prossima volta che si attiva lo scambio con

swapon -a

Il sistema lo utilizzerà felicemente di nuovo. Se si dispone di molta RAM, potrebbe non essere necessario scambiare affatto. Emettere il comando

free quando il sistema è sotto carico pesante e vedere quanto è in uso per effettuare questa determinazione.

Se si determina che non è necessario sostituire permanentemente (per ibernazione o altro) è possibile semplicemente commentare quella riga in fstab come suggerito qui

gratuito


3

Potrebbe essere una soluzione scadente, ma l'ho usata spesso. Puoi semplicemente digitare

sudo -s
crontab -e

E aggiungi

@reboot sudo swapoff -a  

Quindi, verrà disabilitato automaticamente all'avvio.


4
Spero sia ovvio che questo è un metodo molto scarso. Perché creare un'attività di avvio per disattivare un'altra opzione, quando c'è un altro file che può essere modificato per impedirne l' accensione in primo luogo
underscore_d

Forse non è così esteticamente piacevole, ma non c'è niente di scarso. Se sei già abituato ad usare crontab, questa soluzione farà roteare le dita un po 'più facilmente e avrà più senso che semplicemente copiare ciecamente ciò che gli altri utenti di SE ti hanno detto di fare su / etc / fstab. E ti ricorderai ancora come farlo su un nuovo computer senza dover eseguire di nuovo Google. Capita a malapena di sapere che cos'è crontab e conosco molto di più le partizioni del disco, ma la logica è ancora valida.
Nicholas Pipitone,

In realtà, questa potrebbe essere la soluzione migliore. Perché i suggerimenti / etc / fstab funzionano solo per le partizioni di swap. Questa soluzione si applica alle configurazioni di Linux indipendentemente dal fatto che utilizzino o meno una partizione o un file di scambio.
Nicholas Pipitone,

2
sudo swapoff -a

Il comando sopra disabilita lo scambio solo per una sessione corrente , è necessario commentare la partizione di scambio nel file / etc / fstab . Per fare ciò è sufficiente aggiungere "#" (riga di commento) all'inizio della riga di scambio. I passaggi sono:

  1. Apri il file fstab, digita sudo gedit /etc/fstabterminal.

Il contenuto del file sarebbe simile al seguente:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/host/ubuntu/disks/root.disk /               ext4    loop,errors=remount-ro 0       1
/host/ubuntu/disks/swap.disk none            swap    loop,sw         0       0
#/dev/sda10 /media/ASD  vfat    defaults    0   0
#/dev/sda1  /media/98   vfat    defaults    0   0
  1. Aggiungi l'hash (#) all'inizio della linea di partizione di swap, quindi la linea appare come:

#/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

  1. Riavvia il PC

0

Andate in terminale ed eseguire questo comando: gnome-disks. Non è installato in tutte le distribuzioni. In tal caso, seguire le istruzioni stampate per installarlo e riprovare. Cerca un dispositivo con la parola 'swap' nel riquadro a sinistra. Di solito ha una dimensione uguale alla tua memoria fisica. Fai clic sul pulsante quadrato per disabilitarlo. Autentica questa modifica con la tua password di root.

Screenshot: http://imgur.com/Og6igqb

Nell'applicazione System Monitor (gnome-system-monitor), vedrai l'area di scambio come 'non disponibile'. L'area di scambio è disabilitata ma non cancellata. Puoi riattivarlo facilmente in futuro. L'eliminazione dello spazio di swap non ha causato alcun danno al mio sistema, ma in futuro creerai più lavoro per te stesso se decidi di volerlo tornare (letargo).

modifica: per impedirne il montaggio all'avvio, si dovrebbe andare in "Modifica opzioni di montaggio ..." in gnome-disk e deselezionare "Monta all'avvio".


1
Ritieni che ciò risponda alle preoccupazioni degli utenti riguardo alla presenza di dati sensibili sulla partizione di swap? Ci puoi dire perché?
Elder Geek,

1
Il punto principale dell'utente era chiedere come disabilitare lo scambio. Se disponi di dati riservati, dovresti utilizzare idealmente la crittografia pre-boot.
user170544

1
Rispetto rispettosamente. Quando leggo la domanda, la prima frase che mi viene in mente è "Ho alcuni dati sensibili in RAM che preferisco non essere su disco." Credo che questa fosse la sua principale preoccupazione ed è per questo che ha iniziato con questo. Indipendentemente da ciò, credo di aver coperto ogni aspetto della sua domanda nella mia risposta. Consideralo un esempio utile.
Elder Geek,

0

Sostituisci defaultscon con sw,noautonella riga che consiste nella voce di scambio nel file /etc/fstab:

/dev/mapper/centos-swap swap  swap    sw,noauto        0 0

(Il percorso /dev/mapper/centos-swapè probabilmente diverso per te).

Ora controlla l'output dopo il riavvio, lo swap non viene mai montato:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
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.