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.