Um balance Btrfs pode parecer bloqueado depois de ser adicionada uma unidade maior, porque a realocação ainda precisa de espaço de trabalho livre para chunks e pode estar a mover todo o sistema de ficheiros.
Substituir ou copiar dados para um dispositivo maior não compacta, distribui uniformemente nem torna automaticamente elegíveis para realocação todos os grupos de blocos Btrfs. Um balance funciona ao nível dos grupos de blocos, cria espaço de trabalho temporário, atualiza metadados e pode ser limitado pelo dispositivo mais lento, por instantâneos, somas de verificação ou outra operação exclusiva. A primeira tarefa é distinguir uma realocação realmente bloqueada de um balance completo lento que ainda está a progredir.
Confirme se o Balance Está em Execução, Pausado ou à Espera
Verifique o estado do balance, o número de chunks processados, o registo do kernel, o débito dos discos e a latência de cada dispositivo. Registe se o comando está a ser executado em primeiro plano, em segundo plano, pausado, cancelado ou retomado automaticamente após um reinício.
Um balance pode passar bastante tempo a realocar um grupo de blocos muito utilizado antes de o contador visível mudar. As orientações do ArchWiki sobre Btrfs mostram como utilizar o estado do balance e a utilização do sistema de ficheiros para distinguir trabalho contínuo de um comando que já parou.
Se não houver E/S, nenhuma alteração de estado e o registo do kernel indicar um erro, trate-o como parado e não como lento. Preserve a primeira mensagem de erro antes de reiniciar o balance com filtros diferentes.
Verifique se o Dispositivo Maior e o Sistema de Ficheiros Foram Redimensionados
Compare o tamanho físico do dispositivo, o tamanho da partição, o tamanho do dispositivo Btrfs e a alocação do sistema de ficheiros. Um disco de substituição maior pode continuar a expor o limite antigo da partição ou o tamanho antigo do dispositivo Btrfs.
Confirme cada camada pela seguinte ordem: capacidade do hardware, tabela de partições, dispositivo de blocos, inventário de dispositivos Btrfs e alocação do sistema de ficheiros. A SUSE documenta que o dispositivo tem de ser aumentado antes do sistema de ficheiros, pelo que um balance não pode utilizar uma capacidade que o Btrfs ainda não consiga ver.
O artigo da ZimaSpace sobre a capacidade que não aumenta após a substituição de uma unidade apresenta a verificação das camadas adjacentes antes de atribuir a culpa à realocação.
Distingua Bytes Livres de Espaço de Trabalho Livre para Chunks
Compare o tamanho total do dispositivo com a quantidade já atribuída a grupos de blocos Btrfs. Um sistema de ficheiros pode apresentar bytes livres aos utilizadores e, ainda assim, não dispor de uma região completamente não alocada suficientemente grande para criar o grupo de blocos temporário necessário à realocação.
A documentação do balance Btrfs explica que a realocação precisa de espaço de trabalho de grupos de blocos completamente não utilizado; isto é diferente do espaço livre normal ao nível dos ficheiros e pode provocar ENOSPC durante o balance.
Se o espaço de trabalho for limitado, comece por recuperar grupos de blocos completamente não utilizados com um filtro de utilização restrito, em vez de iniciar outro balance completo. Não elimine instantâneos indiscriminadamente antes de medir a sua contribuição para a alocação de chunks.
Verifique se Foi Iniciado um Balance Completo sem Filtros
Reveja o comando original. Um balance sem filtros de dados ou metadados tenta realocar todo o sistema de ficheiros, mesmo quando o objetivo real é apenas compactar chunks pouco utilizados ou afastar alocações de um dispositivo.
Um balance completo pode demorar muitas horas ou dias, porque cada grupo de blocos selecionado é reescrito. O manual btrfs-balance do Linux avisa que executar o comando sem filtros move dados e metadados por todo o sistema de ficheiros e atualiza todos os ponteiros de blocos.
Utilize o estado apresentado e o histórico anterior da shell para identificar os filtros ativos. Não cancele e reinicie repetidamente, porque os balances interrompidos podem deixar grupos de blocos parcialmente preenchidos que continuam a consumir espaço de trabalho.
Verifique Dispositivos Lentos, Erros e Operações Exclusivas Concorrentes
Inspecione os dados SMART, os erros de transporte, as reposições da ligação, os tempos limite de USB ou SATA e a latência de cada dispositivo. A velocidade do balance é limitada pelas leituras das localizações antigas, pelas escritas nas novas localizações, pela verificação das somas de verificação e pelas atualizações de metadados.
Verifique também se estão a decorrer scrub, adição ou remoção de dispositivos, redimensionamento do sistema de ficheiros, eliminação de instantâneos, send ou receive e outras operações de armazenamento. O guia de administração Btrfs da Red Hat descreve as alterações de dispositivos e o balance como operações de realocação, pelo que a manutenção sobreposta pode criar uma forte contenção mesmo quando nenhum disco falhou.
Se um dispositivo apresentar reposições repetidas ou latência extrema, pause o balance e diagnostique esse caminho antes de forçar mais realocações. Prosseguir através de um dispositivo instável pode transformar um problema de desempenho num problema de recuperação.
Utilize Filtros Restritos e Limites para um Reinício Controlado
Depois de preservar o estado atual, comece pelo filtro de menor risco que tenha como alvo grupos de blocos vazios ou pouco utilizados. Limite o número de chunks por execução para que cada resultado possa ser observado antes de aumentar o âmbito.
Aumente gradualmente o limiar de utilização e trate os dados e os metadados separadamente. A realocação de metadados pode gerar muitas atualizações adicionais e não precisa de ser compactada agressivamente apenas porque a utilização média parece baixa.
Pause, retome ou cancele através dos controlos de balance suportados, em vez de terminar o processo à força. Confirme que o grupo de blocos atual é concluído e que o estado guardado do balance corresponde à ação seguinte.
Verifique a Distribuição e a Capacidade Após o Balance
Compare a alocação por dispositivo, os perfis de dados e metadados, o espaço de trabalho não alocado, a utilização do sistema de ficheiros e o número de chunks realocados antes e depois do balance controlado.
Um resultado bem-sucedido não implica necessariamente uma utilização de bytes perfeitamente igual em todas as unidades. A visão geral do kernel Linux apresenta o suporte integrado para vários dispositivos e o redimensionamento online, pelo que o teste final deve centrar-se em perfis válidos, alocação utilizável, dispositivos saudáveis e espaço de trabalho suficiente para futuras escritas.
O problema está resolvido quando o balance é concluído ou atinge o âmbito filtrado pretendido, o dispositivo maior recebe novas alocações, o espaço de trabalho livre para chunks é restaurado e as escritas normais, os instantâneos, o scrub e o reinício funcionam sem que o balance seja reiniciado inesperadamente.
Suporte e Dicas
Mais para Ler

O Plex pode partilhar uma GPU com outro contentor Docker?
O Plex e outro contentor conseguem frequentemente aceder à mesma GPU, mas é necessário testar o suporte dos controladores, o mapeamento de dispositivos, a...

Como saber se um erro do Plex vem do cliente ou do servidor
Reproduza o mesmo item noutro cliente, compare o percurso da sessão e, em seguida, recolha provas do servidor apenas depois de o âmbito lhe...

Como configurar a cache do Plex e o armazenamento temporário de transcodificação
Proteja o estado persistente do Plex enquanto coloca os ficheiros temporários de transcodificação num armazenamento local adequado e, em seguida, verifique a limpeza, o...

