Não é possível excluir o diretório Linux - recursão infinita

8

Temos uma montagem NFS em uma VM RHEL6 que suporta nosso servidor de controle de versão - recentemente, um dos repositórios ficou um pouco louco e foi isso que eu encontrei no servidor:

ls -latri repo.git/refs/heads/

total 28
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..

Quando executo tree no diretório, ele parece ser infinitamente recursivo - por exemplo:

repo.git/refs/heads/
├──
│   ├──
│   │   ├──
│   │   │   ├──
│   │   │   │   ├──
│   │   │   │   │   ├──
│   │   │   │   │   │   ├──
│   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──
│   │   │   │   │   │   │   │   │   │   │   │   │   │   │   │   ├──

Eu tentei deletar o repositório através do seu inode ref:

[root@node repo.git/refs]# ls -latri
total 16
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 heads

[root@node repo.git/refs]# find . -inum 5551210 -exec rm -rf {} \;
rm: cannot remove './refs/heads': Directory not empty
find: './refs/heads/': No such file or directory
find: './refs/heads/': No such file or directory

Eu estou um pouco perdido o que fazer aqui - as informações do inode no comando ls -latri parecem indicar que existem dois diretórios no diretório 'heads' que são hardlinks para o diretório heads?

Qualquer idéia sobre como limpar isso seria muito bem-vinda - acho que resolvi o problema do aplicativo que estava causando, mas o maior problema com o sistema de arquivos precisa ser classificado.

Obrigado!

Editar: bit de saída adicional:

sem caracteres ocultos:

[root@node repo.git/refs]# ls -latrib heads/
total 28
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..

mas aqui está uma saída divertida quando estou realmente em o diretório dir:

[root@node repo.git/refs/heads]# ls -latrib
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
total 12
      ? -?????????? ? ?   ?      ?            ?
      ? -?????????? ? ?   ?      ?            ?
5551210 drwxr-xr-x. 2 git git 8192 Jun  1 21:21 .
5551209 drwxr-xr-x. 3 git git 4096 Jun  1 22:09 ..
    
por oldNoakes 01.06.2017 / 14:25

1 resposta

3

Primeiro: o Git não pode ser a causa nem a solução de um problema que se manifesta como uma saída sem sentido de ls . Pare de usar o Git ou outras ferramentas no sistema de arquivos e desmonte-o para evitar danos.

Isto se parece com um sistema de arquivos quebrado ou uma montagem quebrada. Tente desmontar e remontar o sistema de arquivos no cliente. Tente reiniciar totalmente o cliente. Tente fazer a mesma montagem em outro cliente. A cada vez, verifique se ls output para ver se ele se torna normal. Isso ajudará você a diagnosticar se o problema está no lado do servidor NFS. Se a saída ls continuar parecida, a investigação e o reparo do sistema de arquivos ( fsck ou qualquer outro) e / ou do serviço NFS (reiniciando daemons relacionados a NFS; reinicialize se nfsd for in-kernel) precisam ocorrer no lado do servidor.

    
por 10.06.2017 / 17:12