Como aumentar o espaço de troca?

108

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

    
por Bruno 21.08.2012 / 22:20

5 respostas

141

Você sempre pode criar um arquivo de troca

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

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

Use qualquer um dos aplicativos do terminal para executar comandos. Todo o comando deve ser executado com privilégios de root , para isso você pode adicionar sudo ao início de cada comando ou executar sudo bash antes de executar comandos.

1. Criar arquivo vazio:
Este arquivo conterá conteúdo de memória virtual para que o arquivo seja grande o suficiente para as suas necessidades. Este irá criar um arquivo de 1Gb, o que significa + 1Gb 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 dd para mais informações.

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

mkswap /media/fasthdd/swapfile.img

3. Ativar a inicialização:
Para certificar-se de que seu novo espaço de troca está ativado durante a inicialização do computador, você deve adicioná-lo ao arquivo de configuração do sistema de arquivos /etc/fstab . Adicioná-lo 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 de podermos acessar quaisquer arquivos.

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

4. Ativar:
Você pode reinicializar seu computador ou ativar o novo arquivo de troca 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 ela 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
    
por Sampo Sarrala 21.08.2012 / 22:59
30

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

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

É mais fácil inicializar o gparted-live-disk ou um live disk do Ubuntu (para que todas as partições /dev/sda sejam desmontadas). Se você roda o Ubuntu live disk, então você precisa instalar o gparted executando os comandos abaixo:

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

Você deve ser capaz de aumentar o tamanho da partição de troca somente se houver um espaço não alocado presente antes ou depois da partição de troca. Se não houvesse espaço não alocado (o espaço que estamos tentando adicionar com a partição swap) abaixo ou acima da partição swap, então temos que redimensionar as partições e obter aquele espaço não alocado.

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

Naimagemacima,eutinha11,4GBdeespaçonãoalocadoantesdoLinux-swape12,8GBapósapartiçãoswap.

  • Pararedimensionar,cliquecomobotãodireitodomousenapartiçãoswap(/dev/sda9aqui)ecliquenaopçãoRedimensionar/Mover.Seráassim:

  • Arraste as setas deslizantes para a esquerda ou para a direita e clique no botão Redimensionar / Mover. Sua partição swap será redimensionada.

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

Nacapturadetelaacima,oespaçonãoalocadoquequeremosadicionaràpartiçãodetrocaestavaentredev/sda7e/dev/sda8.Paramoveroespaçonãoalocadodaqueleparalogoacimadapartiçãoswap,temosqueseguirasetapassimplesdadoabaixo,

  • Cliquecomobotãodireitodomousenapartição/dev/sda8ecliquenaopçãoRedimensionar/Mover.

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

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

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

Eutinhaumespaçonãoalocadode18GBlogoabaixodapartiçãoestendida.Paraadicionaresseespaçoàpartiçãolinux-swap(queestavapresentedentrodapartiçãoestendida),temosqueseguiroabaixoetapas,

  • CliquecomobotãodireitodomousenapartiçãoestendidaeselecioneaopçãoRedimensionar/Mover,queserácomoaimagemabaixo

  • 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 virá na parte inferior da partição estendida.Eu tinha 14,80 GB de espaço não alocado já presente na parte inferior e agora a 18,34 GB combina com isso para criar espaço não alocado de (18,34 + 14,80 GB) na parte inferior da a partição estendida.

  • Agora havia um espaço não alocado logo abaixo da partição de troca, seria como Caso 1 e depois seguiria o caso 1.

OBSERVAÇÃO: não se esqueça de fazer backup de todos os seus dados importantes antes de prosseguir com as operações acima.

    
por Avinash Raj 11.12.2013 / 07:11
21

Você também pode usar fallocate se quiser reservar espaço para seu arquivo de swap, sem a necessidade de preencher o arquivo com 0 a dd .

da página MAN :

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á tem um swap definido, você pode removê-lo ou mantê-lo, e seu * nix irá gerenciá-lo (melhor ainda definindo uma swapon de prioridade). Isso pode ser útil, caso você queira distribuir sua troca entre dispositivos diferentes, unidade (com base em sua velocidade ou outras necessidades personalizadas, consulte Qual é o propósito de múltiplos arquivos de troca no StackExchange ).

Uso simples de fallocate para adicionar um segundo arquivo de permuta

Verifique a situação de troca:

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

Crie um arquivo de troca 4G

Modo 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 seu swap permanente

Adicione uma linha no arquivo /etc/fstab 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 atualizamos a prioridade do arquivo de troca antigo

# in your /ets/fstab file
/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

Remover um dos espaços de troca (por exemplo, o original de 256Mb)

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:

por Jean-Christophe Meillaud 09.10.2014 / 15:24
4

No meu caso eu já tinha um arquivo de troca que eu achava que era 1GB, mas quando eu olhei mais de perto ele tinha apenas 256 MB e quando pré-compilava meus recursos de trilhos o servidor ficava sem memória

Errno::ENOMEM: Cannot allocate memory - nodejs

Eu criei meu arquivo de troca conforme descrito aqui: link

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 swap, eu tive que fazer estes passos 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 
% bl0ck_qu0te%

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

    
por Besi 27.04.2016 / 14:03
3

como adicionar um arquivo de troca

  1. arquivo creat .img

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

nota !: bs = contagem de 1M = 1000 == > 1 GB

(bs * count = tamanho em megabytes)

outro exemplo:

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

  1. formato arquivo .img

    sudo mkswap /swap.img

  2. ativar o arquivo de troca

    sudo swapon /swap.img

  3. adicione o arquivo de troca ao fstab

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

/swap.img   none            swap    sw              0       0
    
por Jonas 03.10.2015 / 13:13