Linux: não há espaço no erro do dispositivo com 50% de espaço livre

8

Depois de passar um dia esmagando minha cabeça na mesa, eu gostaria de receber ajuda.

Estou executando um Squid-Proxy no Fedora 14. Mesmo se eu tentar touch /tmp/foo , eu receberei o erro "não há espaço disponível no dispositivo". Eu já corri fsck . Se eu excluir um arquivo de 1MB, por exemplo, posso armazenar 1 MB de dados novamente, mas não mais do que isso. É importante notar que tenho muito espaço livre:

df output:

Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3             16311208   7614872   7867768  50% /
tmpfs                  1028548         0   1028548   0% /dev/shm
/dev/sda1               198337     55345    132752  30% /boot
/dev/sdb1             25803036  19407324   5084996  80% /mnt/squid-cache

Alguém tem uma ideia do que eu posso tentar "recuperar" o espaço livre?

    
por Layticia 13.07.2011 / 15:33

3 respostas

15

Suponhamos que você tenha inodes ao invés de blocos de disco - ou seja, você tem o limite do número de arquivos que o sistema de arquivos pode armazenar, em vez do limite da quantidade total de dados.

Você pode usar df -i para verificar isso.

    
por 13.07.2011 / 15:38
0

O Linux reserva uma porcentagem de blocos para o superusuário. É normalmente definido em 5%. 50% é excepcionalmente alto. Com tune2fs -m você pode mudar isso.

    
por 13.07.2011 / 15:39
0

Isso pode acontecer se você estiver usando o btrfs e, nesse caso, esses remédios não funcionarão.

Depois de seguir vários caminhos falsos, finalmente cheguei ao caminho certo depois de começar a pesquisa com

btrfs no

e obtivemos

btrfs no space left on device

como a primeira conclusão. Isso levou ao wiki do problema BTRFS. Aparentemente, é um problema comum.

Mas mesmo assim, não foi tão fácil resolver o meu problema. Consegui executar os utilitários corretos iniciando no modo de recuperação, fazendo a seleção que monta meus sistemas de arquivos e, em seguida, descendo para o root.

O artigo da wiki dizia executar o equilíbrio do btrfs, mas isso não funcionaria para todos os sistemas de arquivos, e eventualmente eu encontrei meu caminho aqui (que também é o segundo resultado da pesquisa.)

Se o seu sistema de arquivos estiver realmente cheio, o equilíbrio não será executado. Ou será executado apenas para valores pequenos de -dusage.

A receita, neste caso, está na parte inferior do post. Achei confuso e o rejeitei como uma solução no início porque o pôster remove os instantâneos, que eu assumi serem essenciais, e como eu não estava tirando os instantâneos, achei que não era aplicável. Mas aconteceu. O passo do instantâneo pode ser importante para alguns, mas não foi para mim.

O remédio, na visão geral, é:

  1. Crie um arquivo grande
  2. Crie um dispositivo de loop
  3. Anexe o dispositivo aos fs que não conseguem equilibrar
  4. Executar saldo
  5. Desanexar o dispositivo
  6. Nuke o arquivo para recuperar esse espaço

A postagem referenciada fornece as etapas da linha de comando.

    
por 02.08.2015 / 17:53