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 o que 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 corro tree
contra o dir, ele parece ser infinitamente recursivo - por exemplo:
repo.git/refs/heads/
├──
│ ├──
│ │ ├──
│ │ │ ├──
│ │ │ │ ├──
│ │ │ │ │ ├──
│ │ │ │ │ │ ├──
│ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
Eu tentei excluir o repositório através de 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
Estou um pouco sem saber o que fazer aqui - as informações do inode no ls -latri
comando parecem indicar que existem 2 diretórios no diretório 'heads' que são hardlinks para o diretório heads?
Qualquer idéia de como limpar isso seria bem-vinda - acho que resolvi o problema do aplicativo que estava causando, mas o maior problema com o sistema de arquivos precisa ser resolvido.
Obrigado!
Edit: 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 eu estou na cabeça 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 ..
ls -latri
saída é ímpar, pois a contagem de links para o inode 5551210 é ímpar se houver esses dois diretórios extras. Você poderia tentarls -latrib
? Qual é o tipo de sistema de arquivos subjacente?ls
saída são suspeitos para mim. Você já executou o fsck no servidor NFS?Respostas:
Primeiro: o Git não pode ser a causa nem a solução de um problema que se manifesta como saída sem sentido
ls
. Pare de usar o Git ou outras ferramentas no sistema de arquivos e desmonte-o para evitar danos.Parece um sistema de arquivos quebrado ou uma montagem quebrada. Tente desmontar e remontar o sistema de arquivos no cliente. Tente reiniciar completamente o cliente. Tente fazer a mesma montagem em outro cliente. Cada vez, verifique essa
ls
saída para ver se ela se torna normal. Isso ajudará você a diagnosticar se o problema está no lado do servidor NFS. Se als
saída continuar com a mesma aparência, a investigação e o reparo do sistema de arquivos (fsck
ou o que for) e / ou o serviço NFS (reiniciando daemonons relacionados ao NFS; reinicie se o nfsd estiver no kernel) precisa ocorrer no lado do servidor.fonte