Como criar e habilitar um arquivo de troca na linha de comando do Linux

Conteúdo

O Linux usa um arquivo de troca quando os processos ficam sem memória. Em vez de falhar, o procedimento poderá usar uma parte do disco, que é significativamente mais lento, mas evita falhas de memória inadvertidas que podem prejudicar a disponibilidade do serviço.

O que é um arquivo de troca?

Vamos começar com uma pergunta retórica: O que acontece quando o computador fica sem memória?

En Linux, um procedimento especial de monitoramento, o procedimento assassino / Monitoramento OOM, irá monitorar se um sistema está ficando sem memória, a menos que o OOM killer esteja desabilitado ou configurado de forma diferente.

Quando isso acontecer, este procedimento irá matar um dos processos em execução no sistema para liberar memória. Isso pode levar a resultados dolorosos, como corrupção de dados ou serviços indisponíveis.. El acrónimo OOM significaOut of Memory

Uma solução é comprar memória adicional ou reduzir o número de programas ou serviços executados simultaneamente no computador ou servidor.. Mas, E se pudéssemos usar parte do nosso espaço em disco (geralmente barato) O que “memoria extra”?

Isso é exatamente o que é e faz um arquivo de troca: um arquivo especial criado em seu dispositivo de armazenamento que mais tarde se torna parte da memória principal. Não diretamente, e há uma sobrecarga de processamento, mas indiretamente e com um impacto considerável na velocidade de processamento.

Vantagens e desvantagens do arquivo de troca

A memória principal costuma ser extremamente rápida em comparação com unidades mais lentas. Incluindo SSD (drives de estado sólido) são quase sempre mais lentos do que os chips de memória principal de alta velocidade. Para discos rígidos (discos rígidos mecânicos tradicionais, rotativo), a diferença de velocidade é ainda maior.

Por isso, é uma vantagem clara, na maioria das configurações, use um disco mais lento (SDD e especialmente HDD) como uma fonte de memória. O atraso na gravação de dados entre a memória principal e o disco (Em outras palavras, usar disco como memória) É chamado de 'troca’ (troca de memória com espaço em disco)

Tendo dito isto, é sempre uma boa ideia ter um arquivo de troca lateral razoável em seu sistema. O motivo é simples; digamos que só precisamos 1 Gigabyte adicional de memória por um período de alguns minutos para garantir que nosso sistema não invoque o assassino OOM e elimine alguns processos. Um arquivo de troca é melhor nesta circunstância porque mesmo se um procedimento ficar sem RAM utilizável, não vai bater, só vai funcionar um pouco mais lento até que sua tarefa seja concluída.

Apesar disto, se o sistema começar a negociar muito, quase definitivamente vai desacelerar (leitura: muito mais lento). Isso será muito perceptível.

Em resumo, existe um equilíbrio fino e delicado, que é um tanto arbitrário e depende de muitas coisas diferentes dentro de uma determinada situação; o número de processos em execução em um sistema e seus tamanhos de trabalho de memória, memória total em uso, a memória disponível no arquivo de troca, a configuração específica do arquivo de troca do sistema, etc.

Algumas considerações sobre arquivos de troca

Em muitas configurações do Linux no mundo de hoje, existe uma partição swap atribuída a um dos discos do sistema. Esta é uma área especial, geralmente (mas não exclusivamente; pode ser adicionado mais tarde) reservado durante a instalação do sistema operacional Linux. Ele tem a mesma funcionalidade de destino que é a mesma de um arquivo de troca. Para verificar se o seu sistema possui algum tipo de troca habilitada hoje, apenas execute o seguinte em seu terminal:

sudo apt -y install htop
htop

E localize a próxima saída:

saída htop da memória principal e espaço de troca

Observe como neste sistema, há 62,7 G de memória principal e 11,0 G de espaço de troca. Você também pode ver como apenas uma pequena quantidade (23,5 milhões) está em uso hoje. Se você suspeita que seu sistema está mudando, verifique a aparência desses dois contadores.

Se ambos estiverem quase cheios, é muito provável que seu sistema mude muito e funcione significativamente mais lento. A razão é que agora há uma grande carga de E / S ligada (Em outras palavras, ligado ao disco), constantemente trocando a memória principal com a memória baseada em disco.

Como uma regra geral, algumas pessoas preferem usar uma certa porcentagem da memória do sistema como o tamanho a ser alocado para um arquivo de troca. Pessoalmente, Eu pego outro caminho, e é considerar quanta memória adicional posso precisar. Se o tamanho for considerável, como um exemplo, um servidor com 8 GB provavelmente acabará usando 14 GB para um caso de uso específico, então faz muito mais sentido aumentar a memória do servidor 8 GB a 16 GB.

Apesar disto, se o sistema for de 8 GB e o uso normal for de 6-7 GB com um pico ocasional se eu iniciar muitos programas ao mesmo tempo, Posso considerar um espaço de troca adicional de 8 GB, ou um pouco mais. O espaço em disco geralmente é bem barato, tão grande isso um pouco, contanto que eu tenha espaço, não vai doer.

Como habilitar um arquivo de troca

Pronto para adicionar um arquivo de troca? Isso pode ser feito em trânsito. Este método funcionará tanto no Debian (Ubuntu, hortelã,…) como em sistemas baseados em RedHat (Chapéu vermelho, Centos,…).

Vamos criar um arquivo de troca de 1 Gigabyte, 1000 Megabyte o 1024000 Blocos (calculado como o número de megabytes x 1024) neste exemplo.

Vamos chamá-lo de arquivo de swap123, localizado no diretório raiz (/), e demos a ele esse nome para evitar sobrescrever quaisquer arquivos que você já tenha. Se você tem certeza de que não possui um arquivo chamado / swapfile, você pode usá-lo se quiser, tomando cuidado para renomear o arquivo em todos os lugares corretamente.

Certifique-se de digitar qualquer comando, e especialmente o dd comando, com cuidado para não sobrescrever quaisquer dados em seu sistema. Nós usamos sudo su para entrar no modo superusuário (Está) através de sudo. É muito parecido com a execução de cada comando usando sudo, embora seja mais fácil não escrever todos os prefixos de comando sudo desta forma.

sudo su
if [ -r /swapfile123 ]; then echo "Stop please! /swapfile123 already exists!"; fi
dd if=/dev/zero of=/swapfile123 bs=1024 count=1024000
chmod 0600 /swapfile123
mkswap /swapfile123
swapon /swapfile123

Você deve ver uma saída semelhante à seguinte:

Ativando arquivos de troca no Linux

Sim é assim, Parabéns! Você acabou de habilitar seu primeiro arquivo de troca!, dinamicamente (sobre a marcha), na linha de comando do Linux!

Primeiro usamos o dd ferramenta para criar nosso espaço de troca, usando o /dev/zero dispositivo (um dispositivo virtual que só gera zeros quando chamado, por dd ou qualquer outra ferramenta). A seguir, nós definimos alguns privilégios de segurança adequados.

A seguir, dissemos ao sistema operacional que o arquivo seria convertido em um arquivo de troca usando o mkswap comando. Finalmente, ativamos o espaço de troca, dinamicamente na linha de comando, sem ter que reiniciar nosso sistema.

Além disso, podemos facilmente verificar se nosso espaço de troca aumentou usando free -m:

free -m que mostra como o espaço de troca diminui quando o desativamos

Genial, você pode ver como passamos de 12.215 milhões para 11215 milhões (-1000M como esperado) quando desativamos o arquivo de troca recém-criado. Você também pode ver como usamos swapoff para desativar dinamicamente a troca na linha de comando.

É bom saber que se a qualquer momento vermos que nosso sistema tem problemas de memória e podemos escrever rápido o suficiente, podemos fornecer-lhe memória adicional rapidamente 🙂 Na prática, é melhor fazer isso com antecedência antes que os problemas ocorram.

Agora só temos um pequeno problema para resolver. Se reiniciarmos agora, enquanto nosso arquivo de troca permaneceria no disco, o sistema não estaria usando isso. Até agora, nenhuma alteração de configuração foi feita, que irá garantir que o espaço de swap seja recarregado na reinicialização do sistema.

Habilitando nossa nova troca no momento da inicialização

Para habilitar o novo espaço de troca no momento da inicialização, apenas adicione a próxima linha (como linha) uma / etc / fstab:

/swapfile123  swap  swap  defaults  0  0

Você pode fazer isso enquanto ainda está em sudo su caminho (como indicado pelo #) começando o editor nano para / etc / fstab:

nano /etc/fstab
cat /etc/fstab

Depois de, basta adicionar a linha acima ao arquivo no final e salvá-lo (CTRL + X> Y> entrar). Não modifique ou exclua quaisquer outras linhas, pois isso pode fazer com que seu sistema não inicialize mais adequadamente. Certifique-se também de verificar o conteúdo do seu arquivo / etc / fstab antes de reiniciar executando o cat /etc/fstab acima de.

Agora você pode reiniciar o sistema e confirmar se o espaço de troca adicional ainda está habilitado usando free -m de novo.

Eliminação do nosso novo espaço de troca

Se você deseja remover o novo espaço de troca, ou talvez crie algo maior, você pode fazer isso editando o arquivo novamente / etc / fstab primeiro e removendo a linha que carrega o arquivo de troca em sua totalidade. Não modifique ou exclua quaisquer outras linhas, pois isso pode fazer com que seu sistema não inicialize mais adequadamente. Então você pode correr:

sudo swapoff /swapfile123
rm /swapfile123

Tudo pronto! Não há necessidade de reinicializar também, uma vez que esta mudança foi feita dinamicamente. Na próxima reinicialização, o arquivo de troca não será mais acionado quando removemos a linha correspondente do arquivo / etc / fstab.

Desfrute de arquivos de troca!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.