Como adicionar espaço swap no Ubuntu 18.04

author
8 minutes, 31 seconds Read

Uma versão anterior deste tutorial foi escrita por Justin Ellingwood

Introduction

Uma das maneiras mais fáceis de se proteger contra erros fora da memória em aplicações é adicionar algum espaço swap ao seu servidor. Neste guia, vamos cobrir como adicionar um arquivo swap a um servidor Ubuntu 18.04.

Aviso: Embora a swap seja geralmente recomendada para sistemas que utilizam discos rígidos tradicionais, usar swap com SSDs pode causar problemas com a degradação do hardware ao longo do tempo. Devido a essa consideração, não recomendamos habilitar swap na DigitalOcean ou em qualquer outro provedor que utilize armazenamento SSD. Fazer isso pode afetar a confiabilidade do hardware subjacente para você e seus vizinhos. Este guia é fornecido como referência para usuários que podem ter sistemas de disco giratório em outros lugares.

Se você precisar melhorar o desempenho do seu servidor na DigitalOcean, recomendamos atualizar seu Droplet. Isso levará a melhores resultados em geral e diminuirá a probabilidade de contribuir com problemas de hardware que podem afetar seu serviço.

O que é Swap?

Swap é uma área em um disco rígido que foi designada como um local onde o sistema operacional pode armazenar temporariamente dados que não pode mais manter na RAM. Basicamente, isso lhe dá a capacidade de aumentar a quantidade de informação que seu servidor pode manter em sua “memória” funcional, com algumas advertências. O espaço swap no disco rígido será usado principalmente quando não houver mais espaço suficiente na RAM para armazenar dados da aplicação em uso.

A informação escrita no disco será significativamente mais lenta do que a informação mantida na RAM, mas o sistema operacional preferirá manter os dados da aplicação em execução na memória e usar swap para os dados mais antigos. Em geral, ter espaço de swap como um fallback para quando a RAM do seu sistema estiver esgotada pode ser uma boa rede de segurança contra exceções fora da memória em sistemas com armazenamento não-SSD disponível.

Passo 1 – Verificando o sistema para informações de swap

Antes de começarmos, podemos verificar se o sistema já tem algum espaço de swap disponível. É possível ter vários arquivos swap ou partições swap, mas geralmente um deve ser suficiente.

Pode ver se o sistema tem algum swap configurado digitando:

  • sudo swapon --show

Se você não recuperar nenhum output, isto significa que seu sistema não tem espaço swap disponível atualmente.

Você pode verificar se não há nenhuma swap ativa usando o utilitário free

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Como você pode ver na linha Swap da saída, nenhuma swap está ativa no sistema.

Passo 2 – Verificando o espaço disponível na partição do disco rígido

Antes de criarmos nosso arquivo swap, vamos verificar o uso atual do disco para ter certeza de que temos espaço suficiente. Faça isso digitando:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

O dispositivo com / na coluna Mounted on é o nosso disco neste caso. Temos bastante espaço disponível neste exemplo (apenas 1.4G usado). Seu uso provavelmente será diferente.

Embora haja muitas opiniões sobre o tamanho apropriado de um espaço swap, ele realmente depende de suas preferências pessoais e dos requisitos de sua aplicação. Geralmente, uma quantidade igual ou o dobro da quantidade de RAM no seu sistema é um bom ponto de partida. Outra boa regra geral é que qualquer coisa acima de 4G de swap é provavelmente desnecessária se você estiver usando apenas como um fallback de RAM.

Passo 3 – Criando um arquivo swap

Agora que conhecemos nosso espaço disponível no disco rígido, podemos criar um arquivo swap em nosso sistema de arquivos. Vamos alocar um arquivo do tamanho swap que queremos chamado swapfile em nosso diretório raiz (/).

A melhor maneira de criar um arquivo swap é com o programa fallocate. Este comando cria instantaneamente um ficheiro do tamanho especificado.

Desde que o servidor no nosso exemplo tenha 1G de RAM, iremos criar um ficheiro 1G neste guia. Ajuste isto para satisfazer as necessidades do seu próprio servidor:

  • sudo fallocate -l 1G /swapfile

Podemos verificar se a quantidade correta de espaço foi reservada digitando:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

O nosso arquivo foi criado com a quantidade correta de espaço reservada.

Passo 4 – Habilitando o arquivo swap

Agora que temos um arquivo do tamanho correto disponível, precisamos realmente transformar este em espaço swap.

Primeiro, precisamos bloquear as permissões do arquivo para que somente os usuários com privilégios de root possam ler o conteúdo. Isso impede que usuários normais possam acessar o arquivo, o que teria implicações significativas de segurança.

Faça o arquivo acessível apenas ao root digitando:

  • sudo chmod 600 /swapfile

Verifique as permissões mudando digitando:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Como você pode ver, apenas o usuário root tem as flags de leitura e escrita ativadas.

Agora podemos marcar o arquivo como espaço swap digitando:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Após marcar o arquivo, podemos habilitar o arquivo swap, permitindo que nosso sistema comece a utilizá-lo:

  • sudo swapon /swapfile

Verifiquem se a swap está disponível digitando:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

Podemos verificar a saída do utilitário free novamente para corroborar os nossos resultados:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

A nossa swap foi configurada com sucesso e o nosso sistema operacional começará a utilizá-la conforme necessário.

Passo 5 – Tornando o arquivo swap permanente

As nossas alterações recentes habilitaram o arquivo swap para a sessão atual. Entretanto, se reinicializarmos, o servidor não irá manter as configurações de swap automaticamente. Podemos alterar isso adicionando o arquivo swap ao nosso arquivo /etc/fstab file.

Back up the /etc/fstab file in case anything goes wrong:

  • sudo cp /etc/fstab /etc/fstab.bak

Adicionar a informação do arquivo swap ao final do seu arquivo /etc/fstab digitando:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Próximo vamos rever algumas configurações que podemos atualizar para ajustar o nosso espaço swap.

Passo 6 – Ajustando suas configurações de swap

Existem algumas opções que você pode configurar que terão um impacto no desempenho do seu sistema ao lidar com swap.

Ajustando a propriedade swap

O parâmetro swappiness configura a frequência com que o seu sistema troca os dados da RAM para o espaço swap. Este é um valor entre 0 e 100 que representa uma percentagem.

Com valores próximos de zero, o kernel não irá trocar dados para o disco, a menos que seja absolutamente necessário. Lembre-se, as interações com o arquivo swap são “caras”, pois levam muito mais tempo do que as interações com a RAM e podem causar uma redução significativa na performance. Dizer ao sistema para não confiar muito na swap geralmente tornará seu sistema mais rápido.

Valores que estão mais próximos de 100 tentarão colocar mais dados em swap num esforço para manter mais espaço de RAM livre. Dependendo do perfil de memória de suas aplicações ou para o que você está usando seu servidor, isto pode ser melhor em alguns casos.

Vemos o valor de swap atual digitando:

  • cat /proc/sys/vm/swappiness
Output
60

Para um Desktop, uma configuração de swap de 60 não é um valor ruim. Para um servidor, você pode querer aproximá-lo de 0.

Podemos definir o valor swap para um valor diferente usando o comando sysctl>

Por exemplo, para definir o valor swap para 10, podemos digitar:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Esta configuração irá persistir até a próxima reinicialização. Podemos definir este valor automaticamente no reinício, adicionando a linha ao nosso /etc/sysctl.conf arquivo:

  • sudo nano /etc/sysctl.conf

No final, você pode adicionar:

/etc/sysctl.conf
vm.swappiness=10

Guardar e fechar o arquivo quando você terminar.

Ajustando a configuração da pressão de cache

Outro valor relacionado que você pode querer modificar é o vfs_cache_pressure. Esta configuração configura o quanto o sistema irá escolher para armazenar informações inode e dentry sobre outros dados.

Basicamente, isto é dados de acesso sobre o sistema de arquivos. Isto é geralmente muito caro para procurar e muito frequentemente solicitado, por isso é uma coisa excelente para o seu sistema fazer cache. Você pode ver o valor atual consultando o sistema de arquivos proc novamente:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

Como ele está configurado atualmente, nosso sistema remove informações inode do cache muito rapidamente. Podemos definir isto para uma configuração mais conservadora como 50 digitando:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Again, isto só é válido para a nossa sessão actual. Podemos alterar isso adicionando-o ao nosso ficheiro de configuração como fizemos com a nossa configuração swappiness:

  • sudo nano /etc/sysctl.conf

No fundo, adicione a linha que especifica o seu novo valor:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Guardar e fechar o ficheiro quando tiver terminado.

Conclusão

Seguir os passos deste guia dar-lhe-á algum espaço para respirar em casos que de outra forma levariam a excepções fora da memória. O espaço de troca pode ser incrivelmente útil para evitar alguns destes problemas comuns.

Se estiver a correr para erros OOM (fora da memória), ou se verificar que o seu sistema não consegue utilizar as aplicações de que necessita, a melhor solução é optimizar as configurações das suas aplicações ou actualizar o seu servidor.

Similar Posts

Deixe uma resposta

O seu endereço de email não será publicado.