Como aumentar o espaço de troca?

128

Eu tenho, por padrão, 250 MB de espaço de troca no Ubuntu e quero expandi-lo para um tamanho maior. Preciso de 800 MB, o que acho que será suficiente para abrir vários aplicativos sem precisar atingir o limite atual de troca. Espero que alguém possa me ajudar.

Bruno
fonte
2
Abra o Gparted e poste uma captura de tela do que você vê aqui.
Aaron Hill
Se sua partição de troca puder ser expandida para um espaço não alocado adjacente, use gparted. Se esse espaço não estiver disponível, talvez porque sua partição ativa (inicializada) esteja usando todo o espaço não permutável, gpartednão permitirá que você diminua o tamanho da partição ativa para criar espaço não alocado. Nesse caso, você pode reinstalar o Ubuntu para criar um espaço de troca maior.
H2ONaCl 04/04

Respostas:

172

Você sempre pode criar um arquivo de troca

para adicionar mais espaço de troca. Isso não é o mesmo (em todos os aspectos) da partição swap, mas será fácil e dinâmico.

Mude /media/fasthdd/swapfile.imgpara o que quiser, por exemplo, também pode ser /swap.img. /media/fasthdd/swapfile.imgé apenas um exemplo de nome de arquivo, se você estiver usando este, é claro que deve haver diretório /media/fasthdd/com espaço livre suficiente para o seu novo arquivo de troca.

Use qualquer um dos aplicativos de terminal para executar comandos. Todos os comandos devem ser executados com privilégios de root . Para isso, você pode adicionar sudoao início de cada comando ou executar sudo bashantes de executar os comandos.

1. Crie um arquivo vazio:
este arquivo conterá o conteúdo da memória virtual, portanto, torne o arquivo grande o suficiente para suas necessidades. Este criará um arquivo de 1 Gb, o que significa + 1 Gb de espaço de troca para o seu sistema:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Se você deseja criar um arquivo 3Gb, altere o valor da contagem para count=3M. Veja man ddpara mais informações.

2. Bake swap file: O
comando a seguir fará o "swap filesystem" dentro do seu novo arquivo swap.

mkswap /media/fasthdd/swapfile.img

3. Ative a inicialização:
para garantir que seu novo espaço de troca seja ativado durante a inicialização do computador, adicione-o ao arquivo de configuração do sistema de arquivos /etc/fstab. Adicione-o ao final do arquivo; isso é recomendado, porque outros sistemas de arquivos ( pelo menos um que contém arquivo de troca ) devem ser montados no modo de leitura e gravação antes que possamos acessar qualquer arquivo.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Ativar:
Você pode reiniciar o computador ou ativar o novo arquivo de permuta manualmente, com o seguinte comando:

swapon /media/fasthdd/swapfile.img


Se tudo correr bem

você deve ver que mais espaço de troca está disponível para uso. Você pode usar os seguintes comandos para verificar sua nova troca e confirmar se está ativa:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
Sampo Sarrala
fonte
5
Para editar, /etc/fstabtente isso na linha de comando:sudo gedit /etc/fstab
Ben
Isso me ajudou tremendamente, muito obrigado, senhor.
R16:
como desativar o arquivo de swap recém-criado?
Rika 26/01
11
entendi sua troca!
Rika
2
use o comando "swapon -s" para ver o status em vez de "cat / proc / swaps". então o comando "free" também fornece informações de uso de swap.
Paul M
40

Método da GUI para aumentar o tamanho da partição de troca

Outra maneira de aumentar o tamanho da troca é usar o Editor de partições GParted . Resumindo, você redimensiona a partição swap, clica com o botão direito do mouse nela e escolhe "Swapon".

É mais fácil inicializar o gparted-live-disk ou um disco do Ubuntu (para que todas as /dev/sdapartições sejam desmontadas). Se você executar o Ubuntu live disk, precisará instalar o gparted executando os comandos abaixo:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Você deve poder aumentar o tamanho da partição de troca apenas se houver um espaço não alocado presente antes ou depois da partição de troca. Se não havia espaço não alocado (o espaço que estamos tentando adicionar com a partição swap) abaixo ou acima da partição swap, precisamos redimensionar as partições e obter esse espaço não alocado.

Caso 1 - espaço não alocado presente antes ou depois da partição de troca

Partições GParted

Na captura de tela acima, eu tinha 11,4 GB de espaço não alocado antes da troca do linux e 12,8 GB após a partição de troca.

  • Para redimensionar, clique com o botão direito do mouse na partição swap (/ dev / sda9 aqui) e clique na opção Redimensionar / Mover. Isso parecerá assim:

    insira a descrição da imagem aqui

  • Arrastando as setas do controle deslizante para a esquerda ou direita, clique no botão Redimensionar / Mover. Sua partição de troca será redimensionada.


Caso 2 - o espaço não alocado está entre as partições

insira a descrição da imagem aqui

Na captura de tela acima, o espaço não alocado que queremos adicionar à partição de troca estava entre dev/sda7e /dev/sda8.

  • Clique com o botão direito do mouse na partição / dev / sda8 e clique na opção Redimensionar / Mover .

    insira a descrição da imagem aqui

  • clique e mova o controle deslizante para a extrema esquerda, para que o espaço não alocado que estava logo acima da /dev/sda8partição /dev/sda8fique abaixo. Depois disso, clique no botão Redimensionar / Mover.

  • E agora o espaço não alocado estava logo acima da partição swap, que era como o Caso 1. Agora, siga o Caso 1.


Caso 3 - se o espaço não alocado estivesse presente fora da partição estendida)

insira a descrição da imagem aqui

Eu tinha um espaço não alocado de 18 GB logo abaixo na partição estendida . Para adicionar esse espaço à partição linux-swap (que estava presente dentro da partição estendida), precisamos seguir as etapas abaixo,

  • Clique com o botão direito do mouse na partição estendida e selecione a opção Redimensionar / Mover , será como a captura de tela abaixo

    insira a descrição da imagem aqui

  • Clique e arraste a seta para a extrema direita e clique em Redimensionar / Mover , para que o espaço não alocado de 18 GB fique na parte inferior da partição estendida. Eu tinha um espaço não alocado de 14,80 GB já presente na parte inferior e agora o 18.34 GB combina com isso para criar espaço não alocado de (18,34 + 14,80 GB) na parte inferior da partição estendida.

  • Agora, havia um espaço não alocado logo abaixo da partição swap, será como o Caso 1 e siga o caso 1.

NOTA: Não se esqueça de fazer backup de todos os seus dados importantes antes de prosseguir com as operações acima.

Avinash Raj
fonte
2
Ótimo guia para ferramentas GUI, merece ++ como está. No entanto, talvez deva haver algum aviso sobre possíveis riscos envolvidos na edição da partição. Um simples guia de backup da MBR ou um link para esse guia seria um ótimo complemento, os erros podem ser improváveis, mas os custos podem ficar altos + os backups da MBR não consomem muito tempo ou espaço e podem economizar muito trabalho, espaço e tempo quando feitos corretamente.
Sampo Sarrala
2
Não se esqueça de swapon, clique direito a partição swap uma swapon
user3752281
30

Você também pode usar fallocatese desejar reservar espaço para seu arquivo de troca, sem a necessidade de preencher o arquivo com 0 a dd.

Na manpágina:

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Se você já possui um swapdefinido, você pode removê-lo ou mantê-lo, e o seu * nix o gerenciará (melhor ainda, definindo uma swaponprioridade). Isso pode ser útil, caso você queira distribuir sua troca entre diferentes dispositivos, unidades (com base na velocidade ou em outras necessidades personalizadas, consulte Qual é o objetivo de vários arquivos de troca no StackExchange ).

fallocateUso simples para adicionar um segundo arquivo de troca

Verifique a situação da troca:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Crie um arquivo de troca 4G

Maneira padrão de criar e ativar um arquivo de troca.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Faça sua troca permanente

Adicione uma linha no seu /etc/fstabarquivo para que a troca seja inicializada na próxima reinicialização (também atualizamos aqui a prioridade do espaço de troca recém-criado e a prioridade do antigo arquivo de troca).

No seu arquivo / etc / fstab, observe que a prioridade da troca anterior é agora 10.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Verifique a situação de troca após a reinicialização:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Remova um dos espaços de troca (por exemplo, os 256Mb originais)

Editar /etc/fstab

Remova a linha relacionada à troca que você deseja remover.

Excluir essa troca

Exclua e remova o arquivo de troca.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Recursos:

Jean-Christophe Meillaud
fonte
3
1-up fallocate, muito melhor do que ddse o seu fs suportar. Ainda é difícil ler essas frases simples, seria mais fácil estudar se elas fossem divididas em comandos reais?
Sampo Sarrala
3
Este é um exemplo de resposta perfeita, muito simples de entender, muito simples de implementar. Funcionou como um encanto no ubuntu 18
Damián Rafael Lattenero
7

No meu caso, eu já tinha um arquivo de permuta que eu pensava ter 1 GB, mas quando o examinei mais de perto, ele tinha apenas 256 MB de tamanho e, ao pré-compilar meus ativos de trilhos, o servidor ficaria sem memória

Errno::ENOMEM: Cannot allocate memory - nodejs

Criei meu arquivo de troca conforme descrito aqui: https://stackoverflow.com/a/34885004/784318

Agora a linha que cria um arquivo vazio chamado /swapfileé a seguinte:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Agora, para redimensionar o arquivo de troca, eu tive que executar estas etapas simples:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the `/swapfile`
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

O arquivo foi criado (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Usando o free -mcomando, pude ver que o arquivo agora tem 512 MB, como esperado:

Besi
fonte
Você não deve usar o sinalizador -r perigoso com o comando rm para remover um único arquivo. rm -f deve ser mais que suficiente.
Sampo Sarrala
11
@ SampoSarrala Obrigado pelo aviso, mudei o script de acordo.
Besi
@Besi Obrigado! Era exatamente isso que eu precisava para aumentar o tamanho do arquivo de troca no meu sistema Ubuntu 18.04 LTS. Funcionou exatamente como você o escreveu. Excelente ajuda !!!
B-radical
Eu gosto dessa solução porque é uma linha de comando, não requer reparticionamento e explica o que fazer se um arquivo de troca já existir.
cxrodgers
3

como adicionar um arquivo de troca

  1. arquivo creat .img

    sudo dd se = / dev / zero de = / swap.img bs = 1M count = 1000

nota !: bs = contagem de 1 milhão = 1000 ==> 1 GB

(bs * count = tamanho em megabytes)

outro exemplo:

sudo dd se = / dev / zero de = / swap.img bs = 10M count = 100

  1. arquivo .img de formato

    sudo mkswap /swap.img

  2. ativar arquivo de troca

    sudo swapon /swap.img

  3. adicionar arquivo de troca ao fstab

adicione esta linha ao seu fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Jonah
fonte
Normalmente, defino um rótulo em swap, por exemplo, "mkswap -L SWAP2".
Paul M
Nota: Esta é a mesma resposta que a resposta aceita / mais upvoted por Sampo Sarria, mas com menos contexto e com o img troca adicionado diretamente à raiz em vez de / media / fasthdd
aço
0

Redimensionar Swap para 8GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Verifique se funcionou

grep Swap /proc/meminfo
Martin Thoma
fonte