Nous avons un montage NFS sur une machine virtuelle RHEL6 qui prend en charge notre serveur de contrôle de version - récemment, l'un des référentiels est devenu un peu fou et voici ce que j'ai trouvé sur le serveur:
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 ..
Lorsque je cours tree
contre le répertoire, il semble être infiniment récursif - par exemple:
repo.git/refs/heads/
├──
│ ├──
│ │ ├──
│ │ │ ├──
│ │ │ │ ├──
│ │ │ │ │ ├──
│ │ │ │ │ │ ├──
│ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
J'ai tenté de supprimer le référentiel via sa référence d'inode:
[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
Je ne sais pas trop quoi faire ici - les informations d'inode sur la ls -latri
commande semblent indiquer qu'il y a 2 répertoires dans le répertoire «têtes» qui sont des liens physiques vers le répertoire têtes?
Toutes les idées sur la façon de nettoyer cela seraient les bienvenues - pensez que j'ai résolu le problème d'application qu'il causait, mais le plus gros problème avec le système de fichiers doit être trié.
Je vous remercie!
Edit: bit de sortie supplémentaire:
pas de caractères cachés:
[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 ..
mais voici une sortie amusante quand je suis en fait dans le répertoire des têtes:
[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
sortie est étrange car le nombre de liens pour l'inode 5551210 est impair s'il y a ces deux répertoires supplémentaires. Pourriez-vous essayerls -latrib
? Quel est le type de système de fichiers sous-jacent?ls
sortie me sont suspects. Avez-vous exécuté fsck sur le serveur NFS?Réponses:
Premièrement: Git ne peut être ni la cause ni la solution d'un problème qui se manifeste par une sortie absurde
ls
. Arrêtez d'utiliser Git ou d'autres outils sur le système de fichiers et démontez-le pour éviter tout dommage.Cela ressemble à un système de fichiers cassé ou à un support cassé. Essayez de démonter et de remonter le système de fichiers sur le client. Essayez de redémarrer complètement le client. Essayez de faire le même montage sur un autre client. À chaque fois, vérifiez cette
ls
sortie pour voir si elle devient normale. Cela vous aidera à diagnostiquer si le problème est du côté serveur NFS. Si lals
sortie continue de ressembler, une enquête et une réparation du système de fichiers (fsck
ou autre) et / ou du service NFS (redémarrage des démons liés à NFS; redémarrage si nfsd est dans le noyau) doivent avoir lieu côté serveur.la source