Linux 디렉토리를 삭제할 수 없습니다-무한 재귀


8

버전 제어 서버를 지원하는 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'디렉토리에 heads 디렉토리에 대한 하드 링크 인 2 개의 디렉토리가 있음을 나타냅니다?

이것을 정리하는 방법에 대한 아이디어는 가장 환영받을 것입니다. 발생한 응용 프로그램 문제를 해결했지만 파일 시스템의 더 큰 문제를 정렬해야한다고 생각합니다.

감사합니다!

편집 : 추가 출력 비트 :

숨겨진 문자 없음 :

[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 ..

그러나 실제로 heads 디렉토리 있을 때 재미있는 결과가 있습니다 .

[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두 여분의 디렉토리가있는 경우 아이 노드 5,551,210에 대한 링크의 수가 홀수로 출력이 이상하다. 당신은 시도 할 수 ls -latrib있습니까? 기본 파일 시스템 유형은 무엇입니까?
Paul Haldane 2012 년

파일 시스템 유형은 nfs4입니다. -b 플래그를 사용한 출력은없는 것과 동일합니다
.-

NFS 서버 (버전 제어 VM이 파일 시스템을 마운트하는 서버)의 문제가있는 디렉토리를 살펴 보셨습니까? 나는 당신이 생각하는 것이 무엇인지 알아야한다고 생각합니다 (그리고 그것이 내가 요청했던 NFS 서버의 파일 시스템 유형이었습니다).
Paul Haldane

2
파일 시스템이 손상되지 않았습니까? ls출력의 물음표는 나에게 의심됩니다. NFS 서버에서 fsck를 실행 했습니까?
Lacek

3
더 이상 손상이 발생하기 전에 fsck 를 수행하는 것이 좋습니다 .
Quit--Anony-Mousse를 가지고 있습니다.

답변:


3

첫째 : Git은의 무의미한 결과로 나타나는 문제의 원인이나 해결책이 될 수 없습니다 ls. 파일 시스템에서 Git 또는 기타 도구의 사용을 중지하고 손상을 방지하기 위해 마운트 해제하십시오.

파일 시스템이 손상되었거나 마운트가 손상된 것 같습니다. 클라이언트에서 파일 시스템을 마운트 해제했다가 다시 마운트하십시오. 클라이언트를 완전히 재부팅하십시오. 다른 클라이언트에서 동일한 마운트를 시도하십시오. 매번 ls출력이 정상인지 확인 하십시오. 이렇게하면 문제가 NFS 서버쪽에 있는지 진단하는 데 도움이됩니다. 는 IF ls출력은 파일 시스템 (같은, 조사 및 수리를 찾기 위해 계속 fsck또는 무엇이든) 및 / 또는 NFS 서비스 (NFS 관련 daemoons를 다시 시작;의 nfsd 인 - 커널 경우 재부팅) 서버 측에서 일어날 필요가있다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.