Como criar um ficheiro de troca no Linux

O interior de um disco rígido mecânico.
zentilia / Shutterstock.com

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

Trocar ficheiros x trocar partições

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

  • Talvez o seu espaço de troca esteja freqüentemente em execução no máximo ou perto do máximo.
  • É fácil clicar na opção errada durante o processo de instalação e recusar adicionar swap ao seu sistema inadvertidamente.
  • Talvez tu tenha decidido anteriormente que tinha tanta memória de acesso aleatório (RAM) que não precisava de nenhuma troca e mudou de ideia.
  • Às vezes, tu 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 isto é adicionar um ficheiro de troca ao seu computador . Este é um ficheiro especial, pré-alocado e reservado para uso como espaço de troca. Um ficheiro swap funcionará em conjunto com qualquer swap existente que tu possa ter, seja um ficheiro swap ou uma partição swap.

Ao mesmo tempo, houve uma queda de desempenho por usar um ficheiro de troca em comparação com uma partição de troca. isto 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 ficheiros de troca em vez de partições de troca.

A troca não é usada apenas como um meio de liberar RAM quando tu 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 ficheiros Btrfs tem certas ressalvas sobre os ficheiros de troca. Ao mesmo tempo, havia um conflito entre a   natureza de cópia na gravação do Btrfs, que queria operar de uma maneira e trocar ficheiros que precisavam operar de outra. Algumas funções das quais os ficheiros de troca dependem não foram implementadas e algumas suposições feitas sobre a numeração de blocos dentro dos ficheiros de troca não foram verdadeiras com o Btrfs. Portanto, os ficheiros de troca não eram suportados.

Desde o kernel 5.0, tu pode ter ficheiros de troca em sistemas de ficheiros Btrfs  se eles forem configurados com os seguintes requisitos:

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

A maioria dos leitores usará o sistema de ficheiros ext4 padrão , então isto 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 no sistema de ficheiros. As pessoas foram avisadas de colocar espaço de troca em SSDs e até mesmo evitar o registro do sistema em SSDs.

Recomendado:  Como alterar o nome dos seus AirPods

isto é 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 ficheiro 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. tu pode fazer isto de duas maneiras, e usaremos ambas. O freecomando exibirá a memória usada e livre . A opção -h(legível por humanos) fará com que freesejam usadas unidades sensíveis ao exibir os valores de memória.

livre -h

fre -h em uma janela de terminal

A saída de freemostra 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 isto com o total de RAM disponível para uso. este valor é fornecido pela figura “disponível”, que é 881 MB.

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

Outra forma de verificar se o espaço de troca está disponível é usar o swaponcomando. A --showopção não faz nenhuma alteração na troca em seu computador . Ele apenas fornece estatísticas.

swapon --show

swapon --show em uma janela de terminal

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 levado em consideração nas decisões relacionadas ao tamanho do ficheiro de troca que tu criará.

De quanto espaço de troca eu preciso?

A resposta tradicional era “duas vezes a quantidade de RAM que tu tem”. Mas isto foi cunhado quando os computadores costumavam ter RAM muito limitada. Como a RAM se tornou 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 tu 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. isto é claramente excessivo.

A quantidade de swap que tu 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 tu hiberna o computador ou não.

Recomendado:  Como tornar a barra de tarefas do Windows 10 mais transparente

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

Escolha um tamanho de ficheiro de troca na tabela e 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 ficheiros de troca, é um trabalho de dois minutos. Compare isto com o ajuste de partições em um computador Linux ativo.

Criando o ficheiro de troca

tu não deve usar o fallocatecomando para criar seu ficheiro de swap . Isto é da página de manual de swapon:

A implementação do ficheiro de troca no kernel espera ser capaz de escrever para
o ficheiro diretamente, sem a ajuda do sistema de ficheiros. 

Este é um problema em ficheiros com falhas ou em ficheiros copy-on-write no ficheiro 
sistemas como Btrfs. Comandos como cp (1) ou truncate (1) criam ficheiros com
furos. Esses ficheiros serão rejeitados por swapon. 

ficheiros pré-alocados criados por fallocate (1) podem ser interpretados como ficheiros 
com buracos também dependendo do sistema de ficheiros. ficheiros de troca pré-alocados são
suportado em XFS desde Linux 4.18. 

A solução mais portátil para criar um ficheiro de troca é usar dd (1) e 
/ dev / zero.

Portanto, embora fallocateseja mais rápido, usaremos ddpara criar o ficheiro de troca . A máquina usada para pesquisar este artigo tem dois GB de RAM. Vamos criar um ficheiro de troca de um GB.

As opções são:

  • if : O ficheiro de entrada. Neste exemplo, estamos usando o /dev/zeroqual fornecerá um fluxo de zero bytes.
  • of : O ficheiro de saída. Vamos criar um ficheiro no diretório raiz, chamado swapfile.
  • bs : o tamanho do bloco em bytes. isto especifica quantos bytes ler do ficheiro de entrada e gravar no ficheiro de saída de cada vez.
  • contagem : quantos blocos ler e escrever. Multiplique este número pelo bsvalor para obter o tamanho do ficheiro.
sudo dd if = / dev / zero of = / swapfile bs = 1024 contagem = 1048576

sudo dd if = / dev / zero of = / swapfile bs = 1024 contagem = 1048576 em uma janela de terminal

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

saída de sudo dd if = / dev / zero de = / swapfile bs = 1024 contagem = 1048576 em uma janela de terminal

Podemos ver o número de blocos (registros) que foram gravados no ficheiro, o tamanho do ficheiro, o tempo necessário para criar o ficheiro e a taxa efetiva de transferência de dados.

Use o lscomando para ver o ficheiro no diretório raiz:

ls /

ls / em uma janela de terminal

Preparando o ficheiro de troca

Precisamos preparar o ficheiro de troca com o mkswapcomando antes que ele possa ser usado. Não precisamos fornecer nenhum parâmetro para mkswapalém do caminho e nome do ficheiro:

sudo mkswap / swapfile

sudo mkswap / swapfile em uma janela de terminal

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

Usando o ficheiro de troca

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

sudo chmod 600 / swapfile

sudo chmod 600 / swapfile em uma janela de terminal

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

Recomendado:  Como tornar o Android Auto mais confiável com Wi-Fi fraco (como em sua garagem)

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

sudo swapon / swapfile

sudo swapon / swapfile em uma janela de terminal

O ficheiro de troca agora está ativo.

Adicionando o ficheiro de troca ao fstab

Para certificar-se de que seu ficheiro de troca esteja disponível após uma reinicialização, adicione-o ao /etc/fstabficheiro . tu 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

sudo gedt / etc / fstab em uma janela de terminal

A linha que precisamos adicionar ao final do ficheiro é:

/ swapfile nenhum swap sw 0 0

/ etc / fstab com a entrada swapfile destacada

Os campos são:

  • Sistema de ficheiros : o caminho e o nome do ficheiro de troca.
  • Ponto de montagem : o ficheiro não é montado como um sistema de ficheiros, então a entrada é “nenhum”.
  • Tipo : isto é “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 swapon -acomando. É comum ver “padrões” usados ​​aqui porque há uma crença equivocada entre alguns utilizadores do Linux de que este campo é ignorado. Como veremos, não é este o caso. Portanto, faz sentido usar a opção correta.
  • Dump : isto 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 swaponcomando com a --showopção:

swapon --show

swapon --show em uma janela de terminal

As colunas são:

  • Nome : o nome da partição ou ficheiro 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 tu 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 tu tiver apenas um único espaço de troca, a prioridade é irrelevante, é claro. Mas mudaremos a prioridade do ficheiro de swap que criamos para demonstrar como fazer isto.

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

/ swapfile nenhum swap sw, pri = 10 0 0

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

swapon - mostrar

swapon - mostra em uma janela de terminal

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

Espaço de troca facilitado

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

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

E vamos verificar se funcionou:

swapon --show

sudo dd if = / dev / zero / of = / swapfile2 bs = 1024 contagem = 104857 em uma janela de terminal

Se tu quiser fazer isto permanentemente, coloque-o em seu /etc/fstabficheiro.

Estrondo. Tarefa concluída.