btrfs ERROR: erro durante o balanceamento - Não há espaço no dispositivo

15

Meu sistema Kubuntu 12.04 ficou sem espaço na partição raiz e não inicializa. O comando df -hmostra muito espaço disponível (com apenas 37% usado):

/dev/sda2        45G   17G   29G  37%

A página a seguir indica que eu devo executar o comando balance:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_get_.22No_space_left_on_device.22_errors.2C_but_df_says_I.27ve_got_lots_of_space

$ sudo btrfs fi balance start -dusage=5 /mount/point

Não estou totalmente confiante de que essa seja a melhor abordagem, mas é a única que encontrei. No entanto, quando executo esse comando, recebo este erro:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Eu recebo o mesmo erro com:

$ sudo btrfs fi balance start -dusage=1 /mount/point

Qual é a solução certa?

MountainX-for-Monica
fonte

Respostas:

15

Existem maneiras balancede rodar nessa situação.

sudo btrfs fi show
sudo btrfs fi df /mount/point
sudo btrfs fi balance start -dusage=10 /mount/point

Se o comando de balanceamento terminar com "Concluído, foi necessário realocar 0 de XX blocos", será necessário aumentar o parâmetro de porcentagem "dusage" até que pelo menos um bloco seja realocado.

se o comando balance falhar com:

ERROR: error during balancing '/blah/blah/blah' - No space left on device

Você pode realmente precisar excluir arquivos do dispositivo para liberar espaço. Em seguida, execute o comando balance novamente.

No entanto, graças ao Blog de Marc: btrfs - Corrigindo problemas completos do sistema de arquivos Btrfs, aqui está outra opção:

Um truque para contornar isso é adicionar um dispositivo (até mesmo uma chave USB) ao seu sistema de arquivos btrfs. Isso deve permitir o início do saldo e, em seguida, você pode remover o dispositivo com a exclusão do dispositivo btrfs quando o saldo estiver concluído. Também foi dito na lista que o kernel 3.14 pode corrigir alguns problemas de balanceamento que os kernels mais antigos não conseguem, então tente isso se o kernel for antigo.

MountainX-for-Monica
fonte
7
Descobri que, ocasionalmente, eu também precisava mount -oremount,clear_cache /mountpointcorrigir os cálculos de espaço livre. (Eles se corrompido ...)
rrauenza
1
@rrauenza, obrigado! Você deve adicionar isso como uma resposta :)
mwfearnley
0

Eu tentei de tudo na resposta aceita e o blog de Marc, incluindo o aumento do -dusageparâmetro e a adição de outro dispositivo de bloco, tudo sem sucesso. Mesmo depois de excluir alguns arquivos e liberar um pouco de espaço no disco que estava cheio, balancenão foi possível concluir. Por alguma razão, sempre parecia estar movendo dados para o disco quase cheio. No final, o que funcionou para mim foi restringir o balanceamento para o dispositivo completo:

btrfs balance start -ddevid=<dev_id> <path>

onde o dev_idpode ser encontrado com:

btrfs fi show 
z7sg
fonte
Nenhuma delas funcionou
Met
Isso travou meu sistema e o volume ficou indisponível até eu reiniciei o sistema. Instalei um volume com EXT4 e agora espero poder me livrar do sistema BTRFS muito sensível que considero uma falha com muitos problemas de design.
Al Bundy
0

sudo apt-btrfs-snapshot delete-old-than-3d Exclui snapshots com mais de 3 dias. À medida que você move os dados, os dados da captura instantânea ficam fora do lugar e os dados reais precisam ser gravados em vários locais na unidade. Isso remove instantâneos pertencentes a dados antigos em locais antigos e libera esses setores para uso novamente. Também recomendo o duperemove para deduplicar dados e extensões no sistema de arquivos btrfs.

D337z
fonte