A unidade raiz está ficando sem espaço em disco. Como posso liberar espaço?

35

Estou usando o Ubuntu 11.04 e quero liberar espaço no meu diretório raiz, que está sobrecarregado. Eu quero especialmente alterar o caminho usado para instalar aplicativos (eles estão sendo instalados diretamente na unidade raiz).

Outra consideração é que estou trabalhando em um servidor de banco de dados MySQL. O servidor está instalado no próprio diretório raiz, por isso não quero arriscar perder nenhum dado.

Por favor, me dê algumas dicas para ajudar a resolver esse problema.

rihan
fonte

Respostas:

36

Recentemente eu enfrentei situação semelhante. Muitos aplicativos foram instalados e começaram a usar meu espaço de montagem raiz. Estou listando algumas etapas que segui e esperando que você também possa usar o mesmo.

  1. Limpe o cache apt-get. O comando a seguir removerá todos os arquivos deb baixados do diretório apt-get cache.

    Execute este comando: sudo apt-get clean

  2. Mover / ponto de montagem inicial para uma unidade diferente . Anteriormente, minha pasta pessoal estava situada na unidade raiz. Então mudei minha pasta pessoal para separar a unidade. Isso me ajudou a liberar muito estresse da montagem raiz, porque a maioria dos aplicativos armazena seus dados na pasta / home / user_name /. Leia como mover a pasta pessoal para a unidade separada.

  3. Aumentar o tamanho da partição raiz Eu sei que é uma resposta muito óbvia. Mas acredite, nossos dados precisam de alterações ao longo do tempo. Eu pensei que 20 GB / montagem raiz seria suficiente, mas dentro de um ano redimensionei minha montagem raiz e aumentei para 50 GB.

Amey Jah
fonte
8
sudo apt-get clean liberou mais espaço do que o esperado, +1
btk
Cuidado que apt-get cleanremove até os pacotes instalados. Você pode mantê-las caso uma atualização falhe.
timss 12/07/2015
Limpei meu cache e ele limpou 10 Gb! +1
Numeri diz Restabelecer Monica
28

Limpei com êxito 3,5 GB removendo cabeçalhos e imagens antigos, usando o seguinte comando:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Você pode verificar quais pacotes serão eliminados executando a primeira parte do comando:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Referência

homebrand
fonte
Outras dicas não ajudaram, mas isso me salvou em torno de 5G. Obrigado.
baltasvejas
A opção -yno comando apt-get não é realmente necessária. Se você o omitir, o apt-get perguntará (apenas uma vez) se todos os pacotes canalizados devem ser removidos. Como é melhor não usar -y, você tem mais uma possibilidade de verificar (além do segundo comando mencionado acima). Para mim, isso liberou 15 GB na partição raiz!
Boris Däppen
2
O comando dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge tentou remover a versão do kernel atualmente instalada no meu sistema. Cuidado para não tornar seu sistema não inicializável.
Antony
@Antony yaikes! Eu estava prestes a tentar isso. como posso verificar quais estão bem para excluir?
Sonic Soul
2
@SonicSoul Acabei fazendo o que uma das respostas abaixo ( askubuntu.com/a/778442/333806 ) sugere. Basicamente, correu uname -rpara encontrar o kernel atual e teve o cuidado de não removê-lo. Se o comando fornecido por homebrandpara verificar quais pacotes serão eliminados não mostra o kernel atual, você deve estar seguro executando o comando de limpeza mencionado por ele.
Antony
22

Use dpkg-querypara encontrar os maiores pacotes e remover os que você não precisa mais ( fonte ):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'
michaeljoseph
fonte
1
Agora, este é um one-liner realmente útil. Perfeito para um resumo rápido dos maiores pacotes de instalação. Venha aos meus dotfiles!
Arainone
Você pode obter isso comwajig sizes
Pablo A
13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.
shantanu
fonte
19
Você não fornece explicações. Se alguém apenas copiar / colar seu código, o sistema será desligado sem aviso, possivelmente causando perda de dados. Por favor, não forneça comandos sem nenhuma explicação do que eles fazem. -1
Jo-Erlend Schinstad
9
Por que a necessidade de verificar o sistema de arquivos?
Nathan Osman
10

A remoção de versões antigas do kernel (como já sugerido pelo homebrand ) pode liberar uma quantidade razoável de espaço, se você ainda não conseguiu fazer isso.

Existem várias maneiras de remover as versões antigas do kernel e uma variedade de opções diferentes pode ser encontrada nas respostas postadas em: Como faço para remover versões antigas do kernel para limpar o menu de inicialização?

Meu método preferido é principalmente a resposta de retornos repetidos em etapas compreensíveis bastante simples:

Abra o terminal e verifique seu kernel atual:

uname -r

NÃO REMOVA ESTE KERNEL!

Em seguida, digite o comando abaixo para visualizar / listar todos os kernels instalados no seu sistema.

dpkg --list | grep linux-image

Encontre todos os kernels inferiores ao seu kernel atual. Quando você souber qual kernel remover, continue abaixo para removê-lo.

Execute o comando abaixo para remover o kernel selecionado.

sudo apt-get purge linux-image-x.x.x.x-generic

A resposta então diz 'update-grub2' quando você terminar de limpar, o que provavelmente está desatualizado agora: sudo update-grubdeve ser suficiente para o Ubuntu 14.04 em diante. Eles também dizem 'Reinicialize seu sistema' (que parece ser para que você possa ver o menu de inicialização limpo), portanto, neste caso, não é necessário.

O menu do gerenciador de inicialização grub costumava mostrar todas as versões mais antigas do kernel na página principal, mas agora elas são colocadas fora do caminho por trás de um submenu. É muito melhor, mas um iniciante no Ubuntu / Linux pode não estar ciente de que eles estão lá ocupando espaço.

Como sugerido, não remova o kernel atual e também é recomendável manter a versão anterior do kernel também, caso você precise reverter para essa versão.

Existem maneiras mais rápidas de fazer isso, mas prefiro a simplicidade desse método, principalmente porque consigo entender cada comando ao longo do caminho:

"Qual versão do kernel eu estou usando? Quais versões do kernel eu tenho? Ok, limpe essa ."

Enxágue, repita, admire o espaço que você liberou.

É bastante fácil copiar o nome do kernel antigo específico que você deseja remover dos resultados que dpkg --list | grep linux-imagevocê fornece no terminal e, em seguida, usar sudo apt-get purgee colar o nome copiado.

A remoção de 3 ou 4 kernels antigos geralmente liberará cerca de um GB de espaço em sua unidade raiz.

pHeLiOn
fonte
1
Além disso linux-image, você também pode também pesquisar por e purga linux-headers
kdopen
8

Quando preciso liberar mais espaço nos servidores, uso este comando:

find / -type f -size +50M -exec du -h {} \; | sort -n

Ele encontra todos os arquivos com mais de 50 MB e " du -h" faz uma lista melhor de arquivos e "sort -n"" depois da lista de marcações ordenada numericamente por tamanho de arquivo.

zorbon.cz
fonte
Dependendo do tamanho do seu sistema, isso pode levar algum tempo. Demorei 15 minutos por cerca de 500 GB em um disco rígido
Gabriel Fair
7

Seguindo as instruções na documentação da comunidade Ubuntu, descobri um arquivo de lixo enorme - parecia um backup de /var/log/syslog.1, presumivelmente algo estava enviando cargas de saída para o syslog ...

O comando que encontrou foi:

sudo find / -size +1G

E então qualquer arquivo grande em uma pasta chamada .Trashprovavelmente é bom para excluir ...

hwjp
fonte
5

Aqui está um script que eu corro para liberar espaço na partição raiz

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}
cmak.fr
fonte
Edit: New 2 lines old kernels cleaner
cmak.fr
Obrigado! "Girar e excluir registros antigos" limpa vários shows no meu disco.
SaTa 30/09
Agradável. Os desenvolvedores também podem querer remover suas imagens não usadas do docker :docker system prune
Pablo A
@ Pablo A eles podem procurar /var/crash/*.crashtambém
cmak.fr
Como você precisa sudochamar a função, ela sudoparece redundante. Também vacuum-time=1spode nem sempre funcionar, mas não tenho certeza porque, em vez disso, uso o tamanho do vácuo: forum.manjaro.org/t/…
WinEunuuchs2Unix 23/11
2

No Ubuntu, cada pasta pode ter seu próprio sistema de arquivos. Isso significa que você pode mover qualquer pasta para sua própria partição, outro disco ou mesmo em uma rede remota. Isso é particularmente popular para diretórios pessoais, pois isso significa que você pode reinstalar o Ubuntu sem alterar suas configurações pessoais ou perder arquivos. Também é popular em redes nas quais os usuários devem poder fazer login em máquinas diferentes e ainda obter suas configurações e arquivos pessoais. Mas é útil em muitos casos diferentes, como o seu.

Os aplicativos não estão instalados em uma pasta específica, como você sugere. Diferentes partes do aplicativo são colocadas em diferentes partes do sistema de arquivos. O programa principal geralmente é colocado em / usr / bin, enquanto os arquivos de configuração são colocados em / etc, por exemplo. No seu caso, MySQL, os próprios bancos de dados são colocados em algum lugar em / var. Eu acho / var / mysql.

Como / usr e / var são os dois diretórios no sistema de arquivos raiz, eles usarão o espaço do sistema de arquivos raiz. Mas como eu disse, você pode movê-los para diferentes sistemas de arquivos. No caso do MySQL, você pode configurar onde os bancos de dados são armazenados. Você pode mover bancos de dados facilmente para /home/username/.mysql/databases, por exemplo.

Jo-Erlend Schinstad
fonte
1

Você não pode alterar o caminho em que o gerenciador de pacotes instala aplicativos. A maioria dos arquivos de aplicativos é salva em /usr. Se você deseja recuperar espaço na partição raiz, mudar /usrpara uma partição diferente é uma solução possível.

Dos comentários:

  • Preserve as permissões ao copiar, ou seja, melhor use a linha de comando se não tiver certeza do que seu gerenciador de arquivos fará.

  • O caminho certo para isso é montar um novo sistema de arquivos em / usr ou usar mount --bind. Não está claro como um link simbólico funcionaria.

Jan
fonte
cuidado com a mudança / usr. use o comando cp para copiar a pasta usr com a mesma permissão. exclua a pasta original / usr e crie um link da pasta usr em /.
Shantanu
1
Deve ter um ponto de montagem. Não é um link.
Jo-Erlend Schinstad
Nota pequena: muitos aplicativos também instalam binários e dados do aplicativo /opt.
Nathan Osman
@ george-edison Bem, alguns aplicativos instalam coisas /optcontra "as regras".
Jan
1

Se você tiver muitos sistemas de arquivos separados, o seguinte truque pode ser útil: Montar / outra vez, mas desta vez em / mnt. Agora toda a sua pesquisa por arquivos grandes ou muitos pode ser feita, sem percorrer sistemas de arquivos errados.

Também pode ajudar a encontrar os arquivos ocultos sob outra montagem.

steviethecat
fonte
0

Se você tiver o servidor de banco de dados mssql instalado, isso poderá consumir sua memória. Executar uso de disco do NCurses

$ sudo ncdu / 

Para verificar quais pastas e arquivos estão usando o armazenamento máximo. Os dados do mssql são geralmente armazenados em

/var/opt/mssql/backup/
Yogesh
fonte
A pergunta afirma que o banco de dados precisa permanecer.
Stephen Rauch
A pergunta mencionou o banco de dados MySql, portanto, se ele remover os dados do banco de dados MsSQL, acho que parece uma resposta bastante justa.
Yogesh
Pode ser útil a -xopção
Pablo A