Como desativar a troca permanentemente e recuperar o espaço com segurança? (no Debian Jessie)

48

Eu instalei o Debian Jessie com particionamento padrão na minha unidade SSD. Meu particionamento de disco atual é assim:

Meu particionamento de disco atual se parece com isso

Como tenho 16 GB de RAM, presumo que não preciso de troca . Mas como tenho outras unidades de disco, posso criar um arquivo de troca, por exemplo, em uma das outras unidades.

Você pode me dizer quais etapas devo seguir para remover a partição de swap corretamente e permanentemente para não ocupar espaço em disco ? Desejo excluir a partição de swap, pois atualmente tenho apenas 128GB SSD.

Aqui está o que eu tentei e reiniciei cada vez; cada uma dessas etapas não é permanente ou não fez nada :

  1. Usando o swapoffutilitário:

    swapoff --all
    
  2. Usando o utilitário GParted :

    Clique com o botão direito do mouse na partição de troca e clique em Trocar.

  3. Comentando o UUID da partição de troca no seguinte arquivo:

    /etc/fstab
    
  4. Comentando o UUID da partição de troca no seguinte arquivo:

    /etc/initramfs-tools/conf.d/resume
    
  5. Executando estes comandos no final (nesta ordem e na ordem oposta):

    update-grub
    
    update-initramfs -u
    
LinuxSecurityFreak
fonte
1
A troca apenas desativa a troca do sistema em execução no momento. Para torná-lo permanente, você deve combiná-lo com a remoção da entrada relevante de /etc/fstab. Feito isso, a troca deve ser desativada e não voltar na próxima inicialização. Agora você deve modificar a tabela de partições e estender seu sistema de arquivos principal, se desejar recuperar o espaço não utilizado. Veja minha resposta para instruções detalhadas.
André Borie
@ burian.vlastimil você pode postar todo o seu /etc/fstab?
André Borie
@ burian.vlastimil Edite-o na sua pergunta, pois os comentários não preservam as quebras de linha. Suas alterações no fstab persistem após a reinicialização ou a linha de troca não é comentada?
André Borie
1
Se eu puder entrar nessa questão, o objetivo do swap é remover páginas não utilizadas e proteger o sistema contra a falta de memória. Assim, como sugeriu o SnakeDoc, ter 512 MB de swap é sempre bom. Pessoalmente, eu tenho SSD sem partição swap, mas um arquivo swap no meu diretório /. Se você optar por fazer isso, use este tutorial para criar o arquivo. Quanto à partição swap, você pode inicializar o live usb e usar o gparted para remover essa partição. Certifique-se de atualizar o grub, no entanto.
Sergiy Kolodyazhnyy
4
@SnakeDoc - você normalmente não entra em pânico do kernel, o manipulador do OOM inicia e mata processos para liberar memória (e geralmente faz um bom trabalho ao decidir qual deles matar, geralmente dando preferência matar processos maiores e mais novos). Eu mantenho um grande número de servidores sem troca que estão definidos para entrar em pânico no OOM em vez de interromper os processos porque os servidores estão configurados de modo que eles normalmente nunca ficam sem memória e, se o fizerem, quero que entrem em pânico e reinicializem em vez de trocar e abrandar (ou deixar que o manipulador OOM decidir o que processa para matar)
Johnny

Respostas:

47

Executar como root:

# swapoff -a

E para tornar essa alteração permanente, edite /etc/fstabe remova ou comente a entrada de troca.

maxschlepzig
fonte
@ burian.vlastimil, o que você quer dizer com bloqueado? Você pode verificar se nenhum dispositivo de troca está em uso olhando a primeira linha da parte superior - ele deve informar 'KiB Swap: 0 total'. Você também pode cat /proc/swaps- o que deve reportar apenas uma linha de cabeçalho. Se for esse o caso, sim, você pode remover com segurança a partição swap - e ampliar outra partição - para recuperar esse espaço - se é isso que você deseja.
precisa saber é o seguinte
@ burian.vlastimil, a troca pode ser ativada pelo seu initramfs, você pode ter que remover a resumeopção do kernel (que faz referência ao UUID do seu swap), ou seja, atualizar o grub e regenerar o initramfs (basicamente faça o oposto de algumas das etapas em SwapFaq ).
maxschlepzig
@ burian.vlastimil, você também pode grep sua configuração do grub (under /boot) para esse uuid e você pode descompactar seu initramsfs e grep seu conteúdo para chegar à causa raiz disso. Certifique-se de fazer um grep que não diferencia maiúsculas de minúsculas.
maxschlepzig
2
basta colocar swapoff -ano /etc/rc.local. ter de swap em por alguns milissegundos quando você arrancar nenhum problema. com 16 GB de RAM, nada será escrito por um longo tempo. basta deixar o espaço de troca lá (o espaço em disco é barato) e não muda /etc/fstab .
Skaperen
fazer um temporário arquivo de swap, então você pode recuperar o espaço, excluindo o arquivo uma vez que você ligar de swap off
Skaperen
40
  1. Se você tiver aberto o GPart , feche-o. Seu recurso de troca não parece ser permanente.

  2. Abra o terminal e torne-se root( su); se você tiver sudoativado, você também pode fazer, por exemplo sudo -i; veja man sudotodas as opções):

    sudo -i
    
  3. Desative a partição swap específica e / ou todos os swap s:

    swapoff --all
    
  4. Certifique-se de 100% de que a partição de partição swap específica está desativada:

    cat /proc/swaps
    
  5. Abra um editor de texto com o qual você tenha experiência neste arquivo, por exemplo, nanose não tiver certeza:

    nano /etc/fstab
    
  6. Comente / remova o UUID da partição de swap , por exemplo:

    # UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d    none    swap    sw    0    0
    
  7. Abra um editor de texto com o qual você tenha experiência neste arquivo, por exemplo, nanose não tiver certeza:

    nano /etc/initramfs-tools/conf.d/resume
    
  8. Comente / remova o UUID da partição swap identificada anteriormente , por exemplo:

    # RESUME=UUID=1d3c29bb-d730-4ad0-a659-45b25f60c37d
    
  9. Não feche o terminal, pois você precisará dele mais tarde.

Nota: As próximas etapas diferem dependendo se você depende da CLI ou da GUI .


GUI :

  1. Abra o GParted , a partir do menu ou, mais convenientemente, a partir do terminal que abrimos:

    gparted
    
  2. Se você não o tiver instalado, poderá fazê-lo; depois execute o comando anterior novamente:

    apt-get install gparted
    
  3. Escolha sua unidade no menu superior direito.

  4. Como o GParted reativa a partição de troca após o lançamento, você terá que clicar com o botão direito do mouse na partição de troca específica e clicar em Trocar -> Isso será aplicado imediatamente.

  5. Exclua a partição de troca com o botão direito do mouse -> Excluir. Você deve aplicar a alteração agora.

  6. Redimensione sua partição principal / outra com o botão direito -> Redimensionar / Mover. Você deve aplicar a alteração agora.

  7. De volta ao terminal, vamos recriar as imagens de inicialização :

    update-initramfs -u -k all
    
  8. Atualize o GRUB :

    update-grub
    
  9. Você pode reiniciar agora se desejar testar se a máquina inicializa.


CLI :

Vou fazer o check-in nas VMs se a minha solução funcionar, depois a compartilharei. Enquanto isso, veja esta resposta .

LinuxSecurityFreak
fonte
1
mais completo, bem explicado.
benzkji 22/01
Se você tiver uma inicialização lenta depois com a mensagem gave up waiting for suspend/resume device: No arquivo /etc/initramfs-tools/conf.d/resume, não apenas desative a linha, substitua-a por RESUME=none. ( fonte )
tanius 03/04
17

Comente / remova a entrada relevante /etc/fstabpara impedir que ela seja reativada na próxima inicialização e, em seguida, reinicie ou execute swapoff -apara desativar o uso da partição de troca no sistema atualmente em execução.

Agora exclua a partição de troca, estenda a partição do sistema sobre esse espaço não utilizado e estenda o sistema de arquivos real. Não sei se o seu gerenciador de partições gráficas pode fazer tudo isso, mas se não puder, aqui está uma maneira independente de fazer isso 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.

Finalmente, estendemos o sistema de arquivos atual para fazer uso do novo espaço livre (até agora o sistema de arquivos real não sabia que adicionamos mais espaço à partição subjacente). Por padrão, resize2fsusa a partição inteira, a menos que seja fornecido um tamanho fixo, portanto, não precisamos especificar nada além do dispositivo de bloco de partição. O crescimento de um sistema de arquivos (em vez de encolher) pode ser feito online com a partição montada:

# resize2fs /dev/sda2

Agora você desativou com êxito a troca e recuperou o espaço não utilizado sem nem mesmo reiniciar.

Note que o procedimento para o Debian é um pouco diferente e requer a edição de mais alguns arquivos. Confira esta resposta para mais informações.

André Borie
fonte
Isso não funciona para mim. Eu tive 3 partições. um para / boot, um para / e a troca. Quando tento criar a nova partição, só posso fazer uma partição de
gb
Além disso, pelo menos para as distribuições baseadas no Debian 9: é necessário executar partprobeantes do resize2fscomando, caso contrário o kernel não conhece a nova tabela de partições e nada será redimensionado.
tanius
2

Clique com o botão direito do mouse na partição swap no GParted e clique em Swapoff. Em seguida, exclua sua partição de swap, remova-a /etc/fstabe gere novamente sua initramfse grub(talvez desnecessária).

A partição swap não deve ser adicionado ao initramfspelo initramfsscript de atualização, se a partição swap não existe.

De acordo com este post , a seguinte é a maneira correta de regenerar initramfse grub:

update-initramfs -c -k <kernel>

update-grub
BenjiWiebe
fonte
-2

Você pode clicar com o botão direito do mouse na partição swap no Gparted e selecionar a opção swapoff . Essa é uma maneira rápida de realizar a mesma coisa que você pediu.

Charlie
fonte