Como corrigir o problema da extensão btrfs

0

Acho que fui atingido por um bug conhecido no btrfs:

link

Certamente, as mensagens de erro parecem semelhantes. Se for o mesmo problema, parece um pouco lamentável que a correção para um problema de 2 anos de idade não tenha sido portada para o kernel estável V4.9 (que é o que o Debian 9 usa)

Agora estou na situação em que um dos inodes do sistema de arquivos tem problemas de extensão (conforme relatado por btrfs check ):

root 257 inode 2607184 errors 100, file extent discount
Found file extent holes:
       start: 0, len: 81920

Parece que não há muito conselho ou documentação sobre como sair dessa situação (felizmente eu tenho backups do sistema de arquivos em questão, então o pior caso pode reformatar e restaurar)

Parece que btrfs check --repair apenas faz um loop repetindo o mesmo erro, sem realmente corrigi-lo.

Existe alguma maneira de corrigir o sistema de arquivos existente ou sou melhor recriá-lo e restaurar o backup?

    
por Michael Firth 01.10.2018 / 18:06

1 resposta

1

Acho que root 257 refere-se ao ID do subvolume e, em seguida, inode 2607184 aponta para o inode problemático. Eu tentaria remover (desvincular) todos os caminhos ligados ao inode.

  1. Monte o subvolume:

    mount /dev/sdXN -o subvolid=257 /mnt/mountpoint
    
  2. Localize todas as entradas com o número do inode correspondente:

    find /mnt/mountpoint -xdev -inum 2607184
    
  3. Investigue os objetos. Espero que você possa excluí-los.

    • (não tenho certeza se pode ser um diretório no seu caso). Se for um diretório, suspeito que sua listagem esteja incompleta.
      1. Mova seu conteúdo (se houver) para outro, novo diretório (crie-o com a mesma propriedade, permissões talvez); remova o diretório antigo; mv o novo diretório para o nome antigo.
      2. Compare ao seu backup, restaure objetos ausentes.
    • Se for um ou mais arquivos -
      1. Remova todos eles.
      2. Restaurar os arquivos do backup.
  4. Desmontar:

    umount /mnt/mountpoint
    
  5. Verifique o sistema de arquivos. O inode problemático não deve ser mais.

Como alternativa, você pode excluir todo o subvolume. Isso parece um exagero, mas deve se livrar do problema inode.

  1. Monte a raiz do sistema de arquivos:

    mount /dev/sdXN -o subvol=/ /mnt/mountpoint
    
  2. Listar subvolumes:

    btrfs subvolume list /mnt/mountpoint
    

    e localize aquele com ID 257.

  3. Exclua o subvolume:

    btrfs subvolume delete -c /mnt/mountpoint/path/to/the/subvolume/with/ID/257
    
  4. Desmontar:

    umount /mnt/mountpoint
    
  5. Verifique o sistema de arquivos. O inode problemático não deve ser mais.

  6. Restaure seus dados a partir do backup.
por 01.10.2018 / 21:20

Tags