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 alguma ajuda.

Estou executando um Squid-Proxy no Fedora 14. Mesmo se eu tentar, touch /tmp/fooreceberei o erro "sem espaço restante no dispositivo". Eu já corri fsck. Se eu excluir um arquivo com, digamos, 1 MB, posso armazenar 1 MB de dados novamente, mas não mais do que isso. Digno de nota é que tenho bastante espaço livre:

df resultado:

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 idéia do que eu posso tentar "recuperar" o espaço livre?

Layticia
fonte

Respostas:

16

Suponho que você ficou sem inodes em vez de blocos de disco - ou seja, você tem o limite do número de arquivos que o sistema de arquivos pode conter, em vez do limite da quantidade total de dados.

Você pode usar df -ipara verificar isso.

TomH
fonte
É estranho que ele fique sem inodes em um bom espaço de disco redondo de 50% ... mas vale a pena examinar; O Squid cria muitos arquivos.
LawrenceC
TomH você acertou em cheio. É exatamente o caso ... "iFree = 0" Muito obrigado por esta dica!
Layticia
@ultrasawblade o squid-cache-dir está em outro disco (sdb), o problema está no disco do sistema (sda). Estou gerando relatórios "sarg" e isso significa muitos arquivos dos últimos 12 meses.
Layticia
Por meu disco estar cheio .. e precisar de mais espaço, parece que forums.fedoraforum.org/showthread.php?t=246302 diz que preciso reformatar. Ao reformatar, escolherá o XFS - parece que me permitirá escalar.
jedierikb
0

O Linux reserva uma porcentagem de blocos para o superusuário. Normalmente é fixado em 5%. 50% é extraordinariamente alto. Com tune2fs -mvocê pode mudar isso.

LawrenceC
fonte
0

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

Depois de seguir muitas trilhas falsas, finalmente cheguei ao caminho certo depois de iniciar a pesquisa com

btrfs no

e pegou

btrfs não há espaço no dispositivo

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

Mas mesmo a partir daí não foi tão fácil resolver meu problema. Consegui executar os utilitários corretos, inicializando no modo de recuperação, fazendo a seleção que monta meus sistemas de arquivos e passando para o root.

O artigo da wiki dizia executar btrfs balance, mas isso não funcionaria para todos os sistemas de arquivos e, eventualmente, encontrei meu caminho até 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 pequenos valores de -dusage.

A receita, neste caso, é na parte inferior do post. Achei isso confuso e o rejeitei como solução, a princípio, porque o pôster remove instantâneos, o que eu supus que era essencial e, como não estava tirando os instantâneos, achei que não se aplicava. Mas sim. A etapa 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. Torná-lo um dispositivo de loop
  3. Conecte o dispositivo ao fs que não consegue equilibrar
  4. Executar equilíbrio
  5. Desconecte o dispositivo
  6. Nuke o arquivo para recuperar esse espaço

A publicação mencionada fornece as etapas da linha de comando.

WolfReporter
fonte