Como criar um arquivo de troca no Linux

Adicione espaço de troca a um computador Linux ou aumente o espaço de troca que já está presente, sem mexer nas partições. Mostramos a maneira fácil de personalizar seu espaço de troca.

Trocar arquivos x trocar partições

Existem vários cenários em que você pode querer aumentar o espaço de troca existente ou adicionar novo ao seu computador Linux.

Talvez seu espaço de troca esteja freqüentemente em execução no máximo ou próximo ao máximo.
É fácil clicar na opção errada durante o processo de instalação e recusar adicionar swap ao seu sistema inadvertidamente.
Talvez você tenha decidido anteriormente que tinha tanto memória de acesso aleatório (RAM) você não precisou de nenhuma troca e mudou de ideia.
Às vezes, você herda a administração de um sistema que não tem swap, por motivos que nunca será capaz de descobrir.

A solução simples para tudo isso é adicionar um trocar arquivo para o seu computador. Este é um arquivo especial, pré-alocado e reservado para uso como espaço de troca. Um arquivo de swap funcionará em conjunto com qualquer swap existente que você possa ter, seja um arquivo de swap ou uma partição de swap.

Ao mesmo tempo, houve uma queda de desempenho ao usar um arquivo de troca em comparação com uma partição de troca. Isso não é mais o caso com melhorias no desempenho de discos rígidos mecânicos (giratórios) e mais eficiência nas funções de troca dentro do sistema operacional Linux. Na verdade, algumas distribuições Linux agora têm como padrão a criação de arquivos de troca em vez de partições de troca.

A troca não é usada apenas como um meio de liberar RAM quando você está com pouca memória. É uma parte importante de um sistema que funciona bem. Sem qualquer troca, o gerenciamento lógico de memória se torna muito difícil para o kernel. Vejamos a maneira fácil de adicionar algum espaço de troca.

Antes de começarmos: Btrfs e SSDs

Há dois pontos que gostaríamos de discutir rapidamente.

O Sistema de arquivos Btrfs tem certas ressalvas sobre os arquivos de troca. Ao mesmo tempo, houve um conflito entre o cópia na escrita natureza do Btrfs, que queria operar de uma maneira e trocar arquivos que precisavam operar de outra. Algumas funções das quais os arquivos de troca dependem não foram implementadas e algumas suposições feitas sobre a numeração de blocos dentro dos arquivos de troca não foram verdadeiras com o Btrfs. Portanto, os arquivos de troca não eram suportados.

Desde o kernel 5.0, você pode ter arquivos de troca em sistemas de arquivos Btrfs se forem configurados com os seguintes requisitos:

Nenhum arquivo copy-on-write (NOCOW).
Eles não estão comprimidos.
Eles não ocupam discos rígidos diferentes.

A maioria dos leitores usará o sistema de arquivos ext4 padrão, portanto, isso não será uma preocupação para eles.

Quando os Solid-State Drives (SSDs) foram disponibilizados pela primeira vez, houve uma preocupação em usá-los em situações que tinham gravações frequentes do sistema de arquivos. As pessoas foram avisadas de colocar espaço de troca em SSDs e até mesmo evitar o registro do sistema em SSDs.

Isso é muito menos preocupante hoje em dia, e muitos SSDs que estão à venda têm uma expectativa de vida que vai durar mais que a maioria dos PCs. Um arquivo de troca em um SSD terá um desempenho muito melhor do que uma partição de troca em um disco rígido mecânico.

Verificando o Espaço de Troca Existente

Olhe antes de pular. Vamos verificar qual espaço de troca está disponível em seu computador. Você pode fazer isso de duas maneiras e usaremos as duas. O comando free exibirá a memória usada e livre. A opção -h (legível por humanos) deixará livre o uso de unidades sensíveis ao exibir os valores de memória.

free -h

A saída do free mostra que não há espaço de troca configurado nesta máquina.

A troca nunca é discutida sem RAM e RAM livre aparecendo. Portanto, é importante notar que a RAM livre é fornecida como 237 MB. Não confunda isso com o total de RAM disponível para uso. Esse valor é fornecido pela figura “disponível”, que é 881 MB.

O Linux usa RAM livre para seus próprios fins, como cache de arquivos e buffers de kernel. A quantidade de RAM dedicada a isso é a figura “buff / cache”, que é de 871 MB. Mas essa memória ainda é considerada – e contada como – “disponível”. O conteúdo da RAM “buf / cache” pode ser descartado imediatamente e usado por qualquer aplicativo que precise de alguma memória.

Outra maneira de verificar se o espaço de troca está disponível é usar o comando swapon. A opção –show não torna nenhum mudanças na troca em seu computador. Ele apenas fornece estatísticas.

swapon --show

Se não houver saída desse comando, não há troca configurada.

Se esses comandos revelaram que algum espaço de troca já está configurado, o tamanho do espaço de troca existente deve ser considerado nas decisões sobre o tamanho do arquivo de troca que você vai criar.

Quanto espaço de troca eu preciso?

A resposta tradicional era “duas vezes a quantidade de RAM que você tem”. Mas isso foi cunhado quando os computadores costumavam ter memória RAM muito limitada. Como a RAM ficou mais barata e os programas e jogos exigiram mais memória, as especificações do PC foram ajustadas de acordo. PCs domésticos com 32 GB de RAM não são incomuns hoje em dia. E você não vai alocar 64 GB de espaço no disco rígido para o espaço de troca se tiver 32 GB de RAM. Isso é claramente excessivo.

A quantidade de swap que você precisa é como um assunto incendiário, comparável a “qual é o melhor editor”. Uma das discussões mais sensatas que vimos sobre este tópico está no FAQ de troca do Ubuntu. É uma abordagem curta e de bom senso (embora, como muitas pessoas, eles entendam mal como a troca funciona no Linux). Há uma tabela útil que mostra a quantidade recomendada de espaço de troca para a quantidade de RAM do seu sistema e se você hiberna o computador ou não.

E a boa notícia é que realmente não importa o valor que você escolhe. Sempre podemos remover um arquivo de troca e substituí-lo por um maior ou, nesse caso, por um menor. Ou você pode apenas adicionar outro arquivo de troca.

Escolher um tamanho de arquivo de troca da tabelae execute-o por um tempo. Monitore o uso do espaço de troca pelo seu sistema. Se o ajuste fino for necessário, as alterações serão feitas facilmente. Com arquivos de troca, é um trabalho de dois minutos. Compare isso com o ajuste de partições em um computador Linux ativo.

Criando o arquivo de troca

Você não deve usar o comando fallocate para criar seu arquivo de swap. Esta é a página do manual para swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system. 

This is a problem on files with holes or on copy-on-write files on file 
systems like Btrfs. Commands like cp(1) or truncate(1) create files with 
holes. These files will be rejected by swapon. 

Preallocated files created by fallocate(1) may be interpreted as files 
with holes too depending of the filesystem. Preallocated swap files are 
supported on XFS since Linux 4.18. 

The most portable solution to create a swap file is to use dd(1) and 
/dev/zero.

Portanto, embora o fallocate seja mais rápido, usaremos o dd para crie o arquivo de troca. A máquina usada para pesquisar este artigo tem dois GB de RAM. Vamos criar um arquivo de troca de um GB.

As opções são:

if: O arquivo de entrada. Neste exemplo, estamos usando / dev / zero, que fornecerá um fluxo de zero bytes.
of: O arquivo de saída. Vamos criar um arquivo no diretório raiz, chamado swapfile.
bs: o tamanho do bloco em bytes. Isso especifica quantos bytes ler do arquivo de entrada e gravar no arquivo de saída de cada vez.
contagem: quantos blocos ler e escrever. Multiplique esse número pelo valor bs para obter o tamanho do arquivo.

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

Algumas estatísticas são fornecidas quando o arquivo é criado.

Podemos ver o número de blocos (registros) que foram gravados no arquivo, o tamanho do arquivo, o tempo gasto para criá-lo e a taxa efetiva de transferência de dados.

Use o comando ls para ver o arquivo no diretório raiz:

ls /

Preparando o arquivo de troca

Precisamos prepare o arquivo de troca com o comando mkswap antes de poder ser usado. Não precisamos fornecer nenhum parâmetro para mkswap além do caminho e nome do arquivo:

sudo mkswap /swapfile

O arquivo é preparado para uso como um arquivo de troca. Observe o aviso sobre as permissões do arquivo. Precisamos alterá-los para que o usuário root seja o único que possa ler e gravar no arquivo de troca.

Usando o arquivo de troca

As permissões padrão são muito liberais, precisamos restringi-las para que apenas o root possa usar o arquivo de swap. Use chmod para alterar as permissões do arquivo:

sudo chmod 600 /swapfile

Isso remove todas as permissões dos membros do grupo de arquivos e outros, mas permite que o proprietário do arquivo, root, leia e grave no arquivo.

Precisamos usar o comando swapon para informar ao Linux que há um novo arquivo de troca disponível para uso. Precisamos apenas fornecer o caminho e o nome do arquivo:

sudo swapon /swapfile

O arquivo de troca agora está ativo.

Adicionando o arquivo de troca ao fstab

Para certificar-se de que seu arquivo de troca esteja disponível após uma reinicialização, adicione-o ao arquivo / etc / fstab. Você pode usar qualquer editor de texto de sua preferência, mas mostraremos o processo usando o editor de texto gráfico Gedit.

sudo gedit /etc/fstab

A linha que precisamos adicionar ao final do arquivo é:

/swapfile    none    swap    sw    0    0

Os campos são:

Sistema de arquivos: o caminho e o nome do arquivo de troca.
Ponto de montagem: o arquivo não é montado como um sistema de arquivos, então a entrada é “nenhum”.
Tipo: Isso é “troca”.
Opções: No momento da inicialização, swapon -a (iniciar todos os dispositivos marcados como swap) será chamado a partir de um dos scripts de inicialização. Esta opção diz ao Linux para tratar esta entrada como um recurso de troca que deve estar sob o controle desse comando swapon -a. É comum ver “padrões” usados ​​aqui porque há uma crença equivocada entre alguns usuários do Linux de que esse campo é ignorado. Como veremos, não é esse o caso. Portanto, faz sentido usar a opção correta.
Dump: Isso pode ser definido como zero. É irrelevante neste caso.
Aprovado: pode ser definido como zero. É irrelevante neste caso.

Salve as alterações e feche o editor.

Verificando o uso de troca

Para ver se o seu espaço de troca está sendo usado, use o comando swapon com a opção –show:

swapon --show

As colunas são:

Nome: o nome da partição ou arquivo de troca.
Tipo: o tipo de dispositivo de troca.
Tamanho: o tamanho do recurso de troca.
Usado: a quantidade de espaço de troca usado.
Prio: A prioridade deste espaço de troca.

A prioridade de espaço de troca

Cada espaço de troca recebe uma prioridade. Se você não fornecer um, um será alocado automaticamente. As prioridades alocadas automaticamente são sempre negativas. O intervalo de prioridades que podem ser alocadas manualmente é de 0 a 32767. Os recursos de troca com prioridades mais altas são usados ​​primeiro.

Se mais de um espaço de troca tiver a mesma prioridade, eles serão usados ​​alternadamente até que ambos estejam cheios, então o sistema procura o espaço de troca com a próxima prioridade mais baixa. Se você tiver apenas um único espaço de troca, a prioridade é irrelevante, é claro. Mas vamos mudar a prioridade do arquivo de swap que criamos para demonstrar como fazer isso.

Para definir uma prioridade, adicione a opção pri = (prioridade) à entrada / etc / fstab. Edite a linha que você adicionou a / etc / fstab para ficar assim:

/swapfile    none    swap    sw,pri=10    0    0

Ou seja, adicione pri = 10 ao campo de opções, separado do “sw” por uma vírgula. Não deixe nenhum espaço entre “sw”, vírgula e “pri = 10”. Reinicie o seu computador e use o comando swapon –show:

swapon -- show

A prioridade desse espaço de troca foi elevada para 10. O que é uma prova positiva de que o campo de opções na entrada / etc / fstab não é ignorado.

Espaço de troca facilitado

Cortando a exposição e a explicação, podemos criar um novo arquivo de troca tão fácil e rapidamente quanto este:

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857
sudo mkswap /swapfile2
sudo chmod 600 /swapfile2
sudo swapon /swapfile2

E vamos verificar se funcionou:

swapon --show

Se você quiser fazer isso permanentemente, coloque-o em seu arquivo / etc / fstab.

Estrondo. Tarefa concluída.