Como desativo a troca?


83

Eu tenho alguns dados sensíveis em ram que eu prefiro não estar no disco. Como desativo a troca? Eu tenho mais do que suficiente ram. Se o ram ficar muito alto, não tenho problemas com os processos sendo finalizados. Como desativo a troca?

Nota: Eu não tenho uma partição de troca e esta está sendo executada em uma VM (VMWare)

swap 

2
Mesmo se você tiver muita memória RAM, não é a melhor ideia trabalhar completamente sem troca (veja, por exemplo, alexonlinux.com/swap-vs-no-swap ). Dependendo dos seus requisitos, você pode considerar colocar a partição swap em um dispositivo protegido por dm-crypt, para que tudo que estiver escrito nela seja criptografado. Nesse caso, é necessário garantir que a troca seja ativada após a disponibilização dos volumes criptografados e desativada antes que o mapeamento do dispositivo seja desativado, é claro (acho que isso é padrão no Ubuntu, mas não tenho certeza). Basta pesquisar na web por "swap criptografado" para encontrar vários guias.
soulsource

11
A propósito: askubuntu.com/questions/248158/… Você não precisa trocar até precisar. E então você realmente precisa disso.

Que tal um cryptswap? / dev / mapper / cryptswap1

Respostas:


121

Usando

sudo swapoff -a  

é a maneira usual de desativar o swap, com o swapon -acomando usado para ativá-lo novamente. Consulte man swapoff para obter mais informações sobre como desativar a troca de dispositivos explícitos.


7
Isso não parece persistir durante uma reinicialização?
ebyrob

19
Alterações permanentes na troca geralmente são feitas no / etc / fstab.
ubfan1

Será que basta copiar este em / etc / fstab
Max

6
Não. Em vez disso, você comenta a linha de troca em / etc / fstab.
Torsten Bronger

Você pode ler em outras respostas como comentar.
309 Carolus

25

Você pode desativar a troca após a reinicialização apenas comentando (adicione # na frente da linha) a entrada de troca no /etc/fstabarquivo. Isso impedirá que a partição de troca seja montada automaticamente após uma reinicialização. Para fazer isso em um único comando:

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

ou simplesmente:

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

Agora sua entrada de troca /etc/fstabserá semelhante a esta:

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

Com seus próprios números específicos e letras minúsculas em vez das letras "x".


2
Por que o seu UUID citado tem alguns dígitos concretos? Eles devem ser idênticos para todos os UUIDs? Os UUIDs das minhas partições não coincidem com os dígitos especificados.
Ruslan

Seus comandos sed não funcionam no caso de os campos serem separados por tabulações (não espaços). É melhor escrito como sed -ri '/\sswap\s/s/^#?/#/' /etc/fstabPS: eu também adicionei #?para evitar alterações adicionais no / etc / fstab quando a linha já estiver desativada.
Alek_A

4

Se você está preocupado com o conteúdo da troca, você sempre pode desativá-lo conforme especificado da maneira usual sudo swapoff -ae, em seguida, preencher o dispositivo de troca com zeros ou dados aleatórios usando o dd.

Primeiro, use o conteúdo do fstab para encontrar seu arquivo ou dispositivo de troca ( less /etc/fstab)

Após localizá-lo e verificar dupla e triplamente sua localização, digamos sda5 ou /swapfile (as partições de troca foram substituídas por padrão por um arquivo de troca no 17.04 e posterior) .

No caso de uma partição ou unidade de troca: (precedida por / dev) emita o comando "disk destroyer" (não deve ser usado levianamente)

sudo dd if=/dev/zero of=swapsubstituindo a palavra swap pelo dispositivo ou arquivo de troca localizado em/etc/fstab

para explodi-lo cheio de zeros ou

sudo dd if=/dev/random of=swapsubstituindo novamente a palavra swap pelo dispositivo ou arquivo de troca localizado em/etc/fstab

para explodi-lo cheio de dados aleatórios.

No caso de um arquivo de troca (precedido apenas de um caminho): você pode simplesmente excluir o arquivo comrm /path/to/swapfile

A próxima vez que você ativar a troca com

swapon -a

O sistema o utilizará novamente com prazer. Se você possui bastante RAM, pode não precisar trocar. Emita o comando

free quando o sistema estiver sob carga pesada e ver quanto está sendo usado para fazer essa determinação.

Se você determinar que permanentemente não precisa de swap (para hibernação ou qualquer outra coisa), basta comentar essa linha no fstab, conforme sugerido aqui

livre


3

Pode ser uma solução idiota, mas eu a usei com frequência. Você pode simplesmente digitar

sudo -s
crontab -e

E adicione

@reboot sudo swapoff -a  

Portanto, ele será desativado automaticamente na inicialização.


4
Espero que seja desnecessário dizer que este é um método muito ruim. Por que criar uma tarefa em tempo de inicialização para desligar outra opção, quando há outro arquivo que pode ser editado para impedi-lo de ser ligado em primeiro lugar
underscore_d

Talvez não seja tão esteticamente agradável, mas não há nada de ruim nisso. Se você já está acostumado a usar o crontab, esta solução facilita a rolagem dos dedos e faz mais sentido do que simplesmente copiar cegamente o que outro usuário do SE disse para você fazer no / etc / fstab. E você ainda se lembrará de como fazer isso em um novo computador sem precisar executar o google novamente. Por acaso nem sei o que é o crontab e estou muito mais familiarizado com as partições de disco, mas a lógica ainda permanece.
Nicholas Pipitone

Na verdade, essa pode ser a melhor solução. Porque as sugestões do / etc / fstab funcionam apenas para partições de troca. Esta solução se aplica às configurações do Linux, independentemente de usarem uma partição ou um arquivo de troca.
Nicholas Pipitone

2
sudo swapoff -a

O comando acima desativa o swap apenas para uma sessão atual , você precisa comentar a partição swap no arquivo / etc / fstab . Para fazer isso, basta adicionar "#" (linha de comentário) ao início da linha de troca. Os passos são os seguintes:

  1. Abra o arquivo fstab, digite o sudo gedit /etc/fstabterminal.

O conteúdo do arquivo ficaria assim:

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. Basta adicionar o hash (#) ao início da linha de partição swap, para que a linha tenha a seguinte aparência:

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

  1. Reinicie seu PC

0

Vá para o terminal e executar o comando: gnome-disks. Não está instalado em todas as distribuições. Nesse caso, siga as instruções impressas para instalá-lo e tente novamente. Procure um dispositivo com a palavra 'swap' no painel esquerdo. Geralmente, tem um tamanho igual à sua memória física. Clique no botão quadrado para desativá-lo. Autentique essa alteração com sua senha root.

Captura de tela: http://imgur.com/Og6igqb

No aplicativo System Monitor (gnome-system-monitor), você verá que ele reporta a área de troca como 'não disponível'. A área de troca está desativada, mas não excluída. Você pode habilitá-lo facilmente novamente no futuro. A exclusão do espaço de troca não causou nenhum dano ao meu sistema, mas você criará mais trabalho para si mesmo se decidir que deseja recuperá-lo (hibernação) no futuro.

edit: para impedir que seja montada na inicialização, você deve ir para "Editar opções de montagem ..." nos discos gnome e desmarcar a opção "Montar na inicialização".


11
Você acha que isso responde à preocupação dos usuários em ter dados confidenciais na partição de troca? Você pode nos dizer o porquê?
Elder Geek

11
O ponto principal do usuário foi perguntar como desativar a troca. Se você possui dados confidenciais, deve usar a criptografia pré-inicialização ideal.
User170544

11
Eu discordo respeitosamente. Quando leio a pergunta, a primeira frase que encontro é "Tenho alguns dados confidenciais em memória ram que prefiro não estar no disco". Acredito que essa foi sua principal preocupação e é por isso que ele começou com ela. Independentemente disso, creio ter coberto todos os aspectos de sua pergunta na minha resposta. Considere um exemplo útil.
Elder Geek

0

Substitua defaultspor sw,noautona linha que consiste na entrada de troca no arquivo /etc/fstab:

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

(O caminho /dev/mapper/centos-swapprovavelmente é diferente para você).

Agora verifique a saída após a reinicialização, sua troca nunca é montada:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3791         100        3408           8         282        3483
**Swap:             0           0           0**
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.