Nos sistemas Linux, o diretório padrão para arquivos temporários está localizado em /tmp. Esse diretório serve como um local de armazenamento para dados de curta duração gerados por aplicativos e pelo sistema operacional. No entanto, em algumas distribuições, o /tmp é montado na memória (tmpfs), o que pode causar problemas se a RAM disponível for insuficiente, especialmente quando os aplicativos gravam muitos dados temporários de forma agressiva. Além disso, se o /tmp estiver localizado na partição raiz e ficar sem espaço, isso pode levar à instabilidade do sistema.
Para mitigar esses problemas, é recomendável realocar o diretório /tmp para um disco ou partição dedicada. Este artigo explora uma abordagem eficiente para alcançar isso, mantendo a compatibilidade do sistema e a funcionalidade dos aplicativos.
Abordagem Comum e Eficiente
O método mais simples e amplamente utilizado envolve os seguintes passos:
- Montar um novo disco em um diretório temporário
- Criar um link simbólico de /tmp para o novo local
No entanto, alguns aplicativos podem não funcionar corretamente com links simbólicos e exigir um caminho direto para /tmp. Isso pode ser particularmente problemático em cenários que envolvem aplicativos multithread que geram grandes quantidades de arquivos temporários e não fazem a limpeza após a execução. Em vez de modificar o aplicativo (o que muitas vezes é inviável em ambientes empresariais), os engenheiros geralmente implementam soluções alternativas para contornar essas restrições.
Solução Alternativa: Montando um Diretório Temporário Dedicado
Para fornecer uma solução mais robusta, podemos montar um disco ou partição dedicada para armazenamento temporário em /mnt/tmp e configurar o sistema para usá-lo como o novo local de /tmp.
Passo 1: Preparar o Diretório
sudo chmod 1777 /mnt/tmp
A configuração de permissão 1777 garante que todos os usuários possam criar arquivos em /mnt/tmp, mas apenas os proprietários dos arquivos possam excluí-los. O número 1 no início representa o sticky bit, que impõe essa restrição.
Passo 2: Configurar a Unidade de Montagem do Systemd
Crie um arquivo de unidade de montagem do systemd em /etc/systemd/system/mnt-tmp.mount com o seguinte conteúdo:
Description=Montagem de Armazenamento Temporário Dedicado
[Mount]
What=tmpfs
Where=/mnt/tmp
Type=tmpfs
Options=mode=1777,size=10G
[Install]
WantedBy=multi-user.target
- O nome do arquivo deve corresponder ao caminho do ponto de montagem. Por exemplo, se estiver montando /mnt/tmp, o arquivo deve ser chamado mnt-tmp.mount. Se estiver montando /mnt/tmp/app_data, o arquivo deve ser mnt-tmp-app_data.mount.
- O parâmetro size=10G define um limite de 10GB para esse armazenamento temporário.
Passo 3: Aplicar as Alterações
Execute os seguintes comandos para ativar a montagem:
sudo systemctl enable mnt-tmp.mount
sudo systemctl start mnt-tmp.mount
Passo 4: Atualizar Variáveis de Ambiente do Sistema
Para garantir que os processos usem o novo diretório temporário, atualize a configuração global do ambiente:
Aplique as alterações:
Passo 5: Verificar e Limpar
Verifique se a nova configuração está ativa:
df -h /mnt/tmp
Opcionalmente, limpe o antigo diretório /tmp:
FAQ (Perguntas Frequentes)
Q: Por que o sticky bit (1777) é importante para diretórios temporários?
A: O sticky bit impede que usuários excluam arquivos pertencentes a outros em diretórios compartilhados como /tmp, garantindo isolamento de dados e segurança.
Q: O que acontece se o /tmp ficar sem espaço?
A: Se o /tmp estiver cheio, os aplicativos que dependem do armazenamento temporário podem falhar, potencialmente causando problemas em todo o sistema. Mover o /tmp para um disco ou partição dedicada evita esse cenário.
Q: Posso especificar um tamanho diferente para o diretório temporário montado?
A: Sim, a opção size= no campo Options= da unidade de montagem do systemd determina o limite de armazenamento. Ajuste-o conforme necessário.
Q: Essa abordagem também funciona para diretórios de logs?
A: Sim, mas diretórios de logs podem exigir considerações adicionais, como rotação de logs e configurações de permissão.
Conclusão
Realocar o /tmp para um disco ou partição dedicada melhora a estabilidade do sistema e evita falhas relacionadas ao armazenamento. Ao utilizar o systemd para montagem automatizada, essa abordagem garante uma solução escalável e confiável para gerenciar dados temporários em ambientes Linux.