我们在支持版本控制服务器的 RHEL6 VM 上有一个 NFS 挂载 - 最近,其中一个存储库有点疯狂,这是我在服务器上发现的:
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 ..
当我运行tree
该目录时,它似乎是无限递归的 - 例如:
repo.git/refs/heads/
├──
│ ├──
│ │ ├──
│ │ │ ├──
│ │ │ │ ├──
│ │ │ │ │ ├──
│ │ │ │ │ │ ├──
│ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├──
我尝试通过其 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
我有点不知道该做什么——ls -latri
命令上的 inode 信息似乎表明“heads”目录中有 2 个目录是指向 heads 目录的硬链接?
关于如何清理这个问题的任何想法都会受到欢迎——我想我已经解决了它引起的应用程序问题,但文件系统的更大问题需要解决。
谢谢你!
编辑:一些额外的输出:
无隐藏字符:
[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 ..
但实际上,这是一些有趣的输出在主管目录:
[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 ..
答案1
首先:Git 既不是导致问题的原因,也不是解决问题的方法,因为 .gist.txt 输出毫无意义ls
。停止在文件系统上使用 Git 或其他工具并将其卸载,以避免造成损害。
这看起来像是文件系统损坏或挂载损坏。尝试在客户端上卸载并重新挂载文件系统。尝试完全重新启动客户端。尝试在另一个客户端上执行相同的挂载。每次都检查输出ls
以查看它是否正常。这将帮助您诊断问题是否在 NFS 服务器端。如果输出ls
仍然相同,则需要在服务器端调查和修复文件系统(fsck
或其他)和/或 NFS 服务(重新启动与 NFS 相关的守护进程;如果 nfsd 在内核中,则重新启动)。