Como liberar espaço em um volume completamente cheio?

4

Estou usando o Linux. E dentro de um evento descontrolado, meu disco de sistema de 4GB está cheio.

Quando tento desinstalar algum programa por sudo apt-get purge program-name , isso me dá este erro:

/usr/bin/mandb: can't write to /var/cache/man/25843: No space left on device

Existe algum arquivo de sistema que possa ser excluído nessa situação?

    
por Santosa Sandy 20.02.2014 / 23:02

5 respostas

7

Você precisará excluir alguns arquivos para que você tenha uma quantidade mínima de espaço livre novamente. Quais deles serão deletados dependerão do mesmo que preencheu o disco em primeiro lugar. Certamente alguns arquivos desnecessários foram criados em algum lugar ao longo da linha, sua melhor aposta é encontrá-los e excluí-los!

O que às vezes pode acontecer quando um programa fica fora de controle é que ele pode produzir arquivos de log excessivamente grandes com várias mensagens repetidas. Você pode verificar o diretório /var/log para isso. Um bom comando para usar é:

 du -ah /var/log | sort -h

Isso classificará os maiores arquivos na parte inferior, para que você possa ver facilmente se algo saiu de controle. O diretório /tmp (se for parte do seu sistema de arquivos raiz) é outro bom lugar para procurar por arquivos com problemas.

Outro lugar para procurar é /var/cache/apt/archives/ , isso contém o cache de .deb pacotes baixados por apt . Os arquivos aqui podem ser removidos com segurança com apt-get clean .

Se você não encontrar nenhum outro arquivo para excluir (embora talvez o diretório inicial de outro usuário seja o local para tentar um du ), a exclusão de arquivos de log antigos provavelmente é o caminho mais seguro. Muitos dos arquivos em /var/log terão números depois deles, quanto maior o número, mais antigo será o log. Muitos também terão uma extensão .gz , isso porque eles foram compactados para economizar espaço.

Outros locais que valem a pena são /opt (alguns programas não-distro usam isso), /root (o diretório inicial do usuário root).

aptitude pode ser usado para limpar todos os arquivos de configuração dos pacotes removidos. Embora normalmente isso libere apenas alguns MBs (e não funcionará se o disco estiver tão cheio que apt-get não funcionará). A linha de comando é:

sudo aptitude purge '~c'

Geralmente, eu não recomendaria a desinstalação de software, a menos que você realmente precise, embora talvez o motivo para o disco estar cheio seja que alguém instalou muito software.

    
por 20.02.2014 / 23:41
2

Embora as outras respostas contenham bons conselhos, elas não são o caminho mais elegante. Como se constata, o ext4 na verdade manterá 5 MB (IIRC) livres para esse tipo exato de situação.

Reinicialize seu computador. Quando for iniciado, escolha a entrada do modo de recuperação no GRUB (ou adicione recuperação aos parâmetros do kernel). Quando o sistema inicializa, você deve ser capaz de usar o APT bem.

    
por 21.02.2014 / 02:12
1

Não é possível excluir alguns dados? Ou arquivos de log?

Você pode criar um ramdisk ( mount -t tmpfs tmpfs /mnt/tmpfs ), mover alguns arquivos de 100 MiB para lá, esperar que o sistema não falhe, desinstalar alguns softwares e mover os arquivos de volta do ramdisk.

    
por 20.02.2014 / 23:11
0

Você pode liberar algum espaço em disco reduzindo a porcentagem de blocos reservados para o sistema de arquivos. Esses blocos reservados são usados para evitar a fragmentação do sistema de arquivos. Por padrão, 5% é reservado. Você pode reduzi-lo para 2% ou 3% para recuperar algum espaço em disco. Não é recomendável configurá-lo para 0%, pois esses blocos reservados são usados para evitar a fragmentação.

Etapas

  # tune2fs -l /dev/sda9 | grep -i reserve
  Reserved block count:     2691366
  Reserved GDT blocks:      1011
  Reserved blocks uid:      0 (user root)
  Reserved blocks gid:      0 (group root)

  # df -l /dev/sda9
  Filesystem           1K-blocks      Used Available Use% Mounted on
  /dev/sda9            211930464 195169976   5995024  98% /web

  # tune2fs -m 3 /dev/sda9
  tune2fs 1.41.12 (17-May-2010)
  Setting reserved blocks percentage to 3% (1614819 blocks)

Depois de reduzir a porcentagem reservada de blocos para 3%, conseguimos recuperar alguns bytes

  # df -l /dev/sda9
  Filesystem           1K-blocks      Used Available Use% Mounted on
  /dev/sda9            211930464 195169976  10301212  95% /web
    
por 21.02.2014 / 11:06
0

Este é o caminho não muito recomendado, mas dará 100 - 150 MB de espaço livre em caso de emergência.

Eu excluo os arquivos libreoffice , games , gcc , gfortran em /usr/lib e /usr/share com a intenção de que eu possa reinstalá-lo novamente mais tarde.

NB: Análise da situação real.

Este computador é usado para fornecer acesso remoto a outro computador. Haverá um problema se o usuário ficar muito ocupado e fizer tantas sessões remotas. O software terminal client também precisa de algum armazenamento temporário. Neste caso, adquire até 1,4 GB devido a algumas sessões realizadas pelos usuários. Se dermos apenas 4 GB de disco rígido, a situação se torna perigosa (30% usado antes de considerar o próprio sistema de arquivos).

Apenas para mais informações, cada terminal client sessão salva o cache na pasta /root/.-terminalclient- . Você pode excluir alguns caches de sessão não usados que existem aqui e economizará muito espaço.

A conclusão é que, embora a tarefa ssh seja simples, talvez não seja permitido alocar um disco rígido tão pequeno para esse computador "gateway" .

    
por 21.02.2014 / 01:04