entrada de diretório sem inode

0

Eu tenho um diretório e há duas entradas misteriosas, elas não mostram o número do inode nem qualquer outro metadado. Quando digito ls -li na linha de comando, obtenho:

$ ls -li
ls: no s’ha pogut accedir a 'clementine.db-journal': El fitxer o directori no existeix
ls: no s’ha pogut accedir a 'clementine.db-journal': El fitxer o directori no existeix
total 1356072
# Some normal files
  ? -????????? ? ?     ?             ?            ? clementine.db-journal
  ? -????????? ? ?     ?             ?            ? clementine.db-journal
# more normal files

O primeiro ? está no lugar do inode, o grupo a seguir são as permissões, uma não sei, usuário e grupo, tamanho do arquivo e data, finalmente o nome do arquivo.

rm -f clementine.db-journal não parece ajudar.

Existem ferramentas para analisar diretórios em um nível inferior ao de ls? O diretório está quebrado? Posso consertar isso? Eu tenho que substituir o diretório inteiro? (com mkdir, cp, rm, rmdir )

Informações de contexto:

Eu uso o Clementine para ouvir música. Clementine usa um banco de dados sqlite para armazenar informações. O banco de dados Clementine está localizado em ~/.config/Clementine/clementine.db . Essas entradas apareceram quando eu inicializei após uma perda de energia (eu sei que preciso de um no-break). O sistema de arquivos em que isso está sentado é btrfs .

Editar:

Como @DopeGhoti mencionado, eu corro uma verificação do sistema de arquivos (o equivalente do btrfs). A saída segue:

$ sudo btrfs check /dev/sda6
Checking filesystem on /dev/sda6
UUID: 5ea692ab-c7b1-4618-be39-d82eaf5c6b34
checking extents
checking free space cache
checking fs roots
root 5 inode 2119729 errors 200, dir isize wrong
root 5 inode 2178458 errors 1, no inode item
        unresolved ref dir 2119729 index 541 namelen 21 name clementine.db-journal filetype 1 errors 5, no dir item, no inode ref
root 5 inode 2219774 errors 1, no inode item
        unresolved ref dir 2119729 index 1822 namelen 21 name clementine.db-journal filetype 1 errors 5, no dir item, no inode ref
root 5591 inode 1491275 errors 200, dir isize wrong
root 5591 inode 2076115 errors 1, no inode item
        unresolved ref dir 1491275 index 984 namelen 21 name clementine.db-journal filetype 1 errors 5, no dir item, no inode ref
root 5591 inode 2119729 errors 200, dir isize wrong
root 5591 inode 2178458 errors 1, no inode item
        unresolved ref dir 2119729 index 541 namelen 21 name clementine.db-journal filetype 1 errors 5, no dir item, no inode ref
ERROR: errors found in fs roots
found 810099113984 bytes used, error(s) found
total csum bytes: 789379208
total tree bytes: 1426243584
total fs tree bytes: 368427008
total extent tree bytes: 84656128
btree space waste bytes: 283686669
file data blocks allocated: 1116310724608
 referenced 821686456320

É claro que essas inscrições estão fazendo alguns problemas, elas ainda permanecem.

    
por Falk 10.04.2018 / 00:41

2 respostas

1

btrfs check mostrará apenas os problemas. Você precisa usar btrfs check --repair para (tentar) consertar os problemas que encontrar. No entanto , a maioria vocal da documentação aconselha contra usando --repair . No entanto, como o btrfsck expõe os inodes dos arquivos quebrados, eles podem ser excluídos com e. g. find / -inum XXXX -delete (substitua XXXX pelo inode quebrado real).

Se você quiser realmente tentar recuperar os arquivos, isso é um pouco acima da minha nota salarial com o btrfs, mas o autor de esta resposta pode indicar-lhe a direção certa.

    
por 10.04.2018 / 17:59
0

Eu tive exatamente este mesmo problema com um arquivo diferente, prefs.js do .mozilla.

Este era o Fedora 28, o 4.tribs-progs 4.15.1

Acabei de usar uma única estação de trabalho, garantindo que o sistema de arquivos foi desmontado e executando btrfs check --repair no sistema de arquivos. Por sorte, essa era uma VM, então consegui capturar o sistema de arquivos primeiro.

O reparo funcionou como pretendido e acabou excluindo vários milhões de inodes erroneamente anexados à mesma entrada de arquivo. Não sei o que causou esse problema, mas o processo de reparo funcionou para esse erro específico.

    
por 10.05.2018 / 01:09