Wir haben einen NFS-Mount auf einer RHEL6-VM, der unseren Versionskontrollserver unterstützt. Vor kurzem ist eines der Repositorys etwas verrückt geworden, und Folgendes habe ich auf dem Server gefunden:
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 ..
Wenn ich tree
gegen das Verzeichnis renne, scheint es unendlich rekursiv zu sein - zB:
repo.git/refs/heads/
├──
│ ├──
│ │ ├──
│ │ │ ├──
│ │ │ │ ├──
│ │ │ │ │ ├──
│ │ │ │ │ │ ├──
│ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
Ich habe versucht, das Repository über seine Inode-Referenz zu löschen:
[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
Ich bin etwas ratlos, was ich hier tun soll - die Inode-Informationen im ls -latri
Befehl scheinen darauf hinzudeuten, dass sich im Verzeichnis 'Heads' 2 Verzeichnisse befinden, die Hardlinks zum Heads-Verzeichnis sind.
Alle Ideen zur Bereinigung wären sehr willkommen - ich glaube, ich habe das Anwendungsproblem gelöst, das es verursacht hat, aber das größere Problem mit dem Dateisystem muss behoben werden.
Vielen Dank!
Bearbeiten: Bit der zusätzlichen Ausgabe:
keine versteckten Zeichen:
[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 ..
aber hier ist eine lustige Ausgabe, wenn ich tatsächlich in den Köpfen bin :
[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
Ausgabe ist ungerade, da die Verbindungsanzahl für Inode 5551210 ungerade ist, wenn diese zwei zusätzlichen Verzeichnisse vorhanden sind. Könnten Sie es versuchenls -latrib
? Was ist der zugrunde liegende Dateisystemtyp?ls
Ausgabe sind mir verdächtig. Haben Sie fsck auf dem NFS-Server ausgeführt?Antworten:
Erstens: Git kann weder die Ursache noch die Lösung eines Problems sein, das sich als unsinnige Ausgabe von manifestiert
ls
. Beenden Sie die Verwendung von Git oder anderen Tools im Dateisystem und entfernen Sie die Bereitstellung, um Schäden zu vermeiden.Dies sieht entweder nach einem defekten Dateisystem oder nach einem defekten Mount aus. Versuchen Sie, das Dateisystem auf dem Client zu deaktivieren und erneut bereitzustellen. Versuchen Sie, den Client vollständig neu zu starten. Versuchen Sie, dasselbe Mount auf einem anderen Client durchzuführen. Überprüfen Sie diese
ls
Ausgabe jedes Mal, um festzustellen, ob sie normal wird. Auf diese Weise können Sie feststellen, ob das Problem auf der NFS-Serverseite liegt. Wenn diels
Ausgabe weiterhin gleich aussieht, muss die Untersuchung und Reparatur des Dateisystems (fsck
oder was auch immer) und / oder des NFS-Dienstes (Neustarten von NFS-bezogenen Daemoons; Neustart, wenn nfsd im Kernel ist) auf der Serverseite erfolgen.quelle