Upgrade no ambiente de desenvolvimento LINUX: Gestão de recursos – Espaço em HD
Esta é a segunda parte da nossa série sobre upgrade no ambiente de desenvolvimento LINUX, você pode conferir o primeiro artigo antes de continuar com essa leitura se quiser, lá eu falei um pouco sobre a produtividade. Neste artigo, vou mostrar algumas dicas de como você pode monitorar e gerenciar o espaço em HD da sua máquina!
Pré requisitos:
- Utilizar linux
- Ter vontade de aprender mais sobre shell script e seu sistema operacional
E um aviso importante:
DISCLAIMER
Fonte: Wikimedia
Neste post estou ensinando alguns truques rápidos e é importante que você entenda e saiba o que está fazendo em sua máquina antes de apertar o enter. Sinalizei todos os riscos que conheço, mas a máquina é sua e não assumo responsabilidade sob quaisquer danos causados à sua máquina ou dados.
Tenha critério e não tenha muito medo de ser feliz porque é fazendo cagada que se aduba a vida, mas não mande seu adubo pra mim que a terra aqui já está bem fértil xD. Boa sorte! Agora sem mais delongas…
Analisando seu espaço em disco
Para avaliar como está seu espaço em disco você pode utilizar o comando df com alguns parâmetros:
df -t ext4 -B G
Esse comando lista os dispositivos com o sistema de arquivos do tipo ext4 e mostra seu espaço em Gigas.
Fonte: Produzida pelo autor
É importante notar se você tiver uma partição /root pequena como é nesse caso, você pode rapidamente ficar sem espaço em disco.
Vale a pena dizer que existem diversas aplicações de análise de disco, inclusive nativas das principais distribuições LINUX.
Algumas ferramentas de análise que podem te interessar:
https://www.ubuntupit.com/best-disk-analyzer-tools-for-linux-system/
Erro de pouco espaço em /root ou em memória /temp
Dependendo de como está seu disco você pode acabar recebendo um aviso desses:
Fonte: Produzida pelo autor
E enquanto você não resolver esse problema não vai conseguir fazer muita coisa, já que sua máquina precisa escrever registros no disco o tempo todo, com logs, atualizações e as próprias alterações de arquivo que você precisa fazer em seu trabalho.
Para lidar com isso, segue uma lista de dicas que podem te ajudar:
Remover kernels antigos
Fonte: Produzida pelo autor
No fedora você pode rodar rpm -qa kernel\* |sort -V
para ver quais kernels estão instalados na máquina. Nesse caso tenho 3 kernels, o 5.9.13, 5.9.14 e 5.9.16
Para manter apenas os últimos 2 posso utilizar o comando:
dnf remove $(dnf repoquery --installonly --latest-limit=-2 -q)
Fonte: Produzida pelo autor
Fonte: Produzida pelo autor
Fonte: Produzida pelo autor
Já no ubuntu você pode utilizar o comando: sudo apt-get autoremove --purge
que irá remover todos os kernels não utilizados.
OBS: Os Kernels são leves e é bom você ter alguns de reserva caso tenha problemas com o kernel que esteja utilizando. Faça isso apenas se realmente precisar de espaço.
Pacotes
DNF
sudo dnf clean cache all
Fonte: Produzida pelo autor
APT
No apt:
Limpar cache:
sudo apt-get clean
Limpar pacotes não utilizados:
sudo apt-get autoclean
Limpar pacotes órfãos:
sudo apt-get –purge autoremove
Atualizar pacotes
Utilize o gerenciador de pacotes para atualizar seus pacotes sempre que possível, isso também irá liberar espaço pois os pacotes no linux tendem a reduzir de tamanho conforme são otimizados em suas atualizações.
sudo apt-get update
sudo dnf update
Remover versões antigas no SNAP
O Snap também é um “gerenciador de pacotes” e pode ser que você já tenha usado ele para instalar uma ou mais aplicações. Ele possui um histórico de versões instaladas que às vezes pode ocupar um tamanho considerável no seu HD.
Para remover versões obsoletas, você deve fazer um script. Crie um arquivo chamado remove-old-snaps e insira o código abaixo dentro dele:
#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
Agora dê permissão de execução para poder rodar o script, e rode com o super usuário:
chmod +x remove-old-snaps
sudo ./remove-old-snaps
Pronto!
Agora você pode aproveitar que está aqui e orientar seu snap a manter apenas as 2 últimas versões. Dessa forma, se precisar fazer rollback você ainda tem a última.
Para manter apenas as 2 últimas versões de cada pacote:
sudo snap set system refresh.retain=2
Logs
Limitar logs do journalctl com –vacuum-time ou –vacuum-size
Os logs de sua máquina são outra fonte de consumo de espaço em disco. Normalmente em servers os logs são um pouco mais críticos, mas na sua máquina muitas vezes você não vai precisar deles. Dificilmente irá precisar de logs antigos, então pode ser uma boa reduzir o tamanho de log. Defina um tamanho que seja grande o suficiente para você e manda brasa!
Fonte: Produzida pelo autor
Fonte: Produzida pelo autor
Um comando que pode ser útil é o ls -ls --block-size=1M /var/log
Esse comando irá listar dentro da sua pasta de logs (/var/log) todos os arquivos com seu tamanho em MBs.
Fonte: Produzida pelo autor
Como é possível observar, não tem nenhum grande arquivo de log, mas pode ser diferente no seu caso, e os arquivos com datas passadas são logs antigos, que você pode deletar se não tiver interesse em manter. Tente observar principalmente logs de serviços que utiliza bastante ou servidores de aplicação como apache/nginx, que tendem a acumular mais logs.
Docker
docker system prune
Se você trabalha com docker pode fazer uso desse comando que tende a liberar bastante espaço no HD. Ele irá remover todos containers não utilizados, networks, imagens e volumes.
docker system prune
Se você ainda não estiver satisfeito, pode passar a option -a, ou -all. Isso fará com que o docker também remova containers que estão em estado de stop e todas as imagens não utilizadas.
docker system prune -a
Cuidado para não remover containers/imagens que você sabe que utilizará em breve, principalmente se forem imagens grandes, pois precisará baixar tudo novamente. Utilize esse comando quando quiser fazer uma limpa geral ou quando tiver certeza que não terá problemas para repor seus containers/imagens.
Se você precisar escolher entre containers/imagens você pode utilizar comandos especificando quais deseja remover, a documentação do docker pode te ajudar com isso.
Até mais
Com essas dicas para gerenciar seu espaço em disco, espero que você tenha conseguido liberar espaço suficiente para trabalhar em sua máquina, na próxima parte irei dar algumas dicas sobre como gerenciar a memória.
Referências
YUM/DNF Remove Old Kernels on Fedora/CentOS/RHEL – If Not True Then False
Essential Guide: 5 Simple Ways To Free Up Space on Ubuntu
Freeing disk space on your Linux server
How to clear journalctl – Unix & Linux Stack Exchange
How To Remove Old Snap Versions To Free Up Disk Space
What command can I use to clear the ‘yum’ cache, on Fedora 23 system? – Unix & Linux Stack Exchange