나는 inode가 무엇인지 이해하지만 고아 inode의 정확한 정의는 무엇입니까? 나는 그것이 의미하는 바를 실제로 얻지 못한다.
최신 정보
내가 관리하고있는 서버에 inode가 부족한 시간이 있었지만 df -h를 할 때 서버에 60 %의 공간이 사용되었다는 것을 알 수있었습니다. 나는 이것이 고아 inodes 때문이라고 생각합니다. 모든 inode를 어떻게 사용할 수 있지만 여전히 서버에 “공간”이 남아 있습니까? 당신은 당신의 대답에서 이것을 해결할 수 있습니까?
답변
분리 된 inode는 파일 시스템의 디렉토리 항목에 연결되지 않은 inode이므로 도달 할 수 없습니다.
고아 inode는 여러 가지 이유로 나타날 수 있습니다.
- 삭제되었지만 열려있는 임시 파일 (일반적인 관행)은 파일 시스템에서 inode를 점유합니다. 시스템을 올바르게 종료하지 않고 재부팅하면 이러한 inode가 남아 있고 분리됩니다.
- 파일 시스템 손상은 디렉토리에 포함 된 파일의 inode에 영향을주지 않고 디렉토리를 손상시킬 수 있습니다. 이 아이 노드는 고아가된다
fsck
의 고아 inode에 대한 새 디렉토리 항목을 만듭니다 lost+found
.
답변
분리 된 inode는 “반 삭제 된”파일입니다. 더 이상 디렉토리 항목이 없지만 일부 프로세스에서 여전히 열려 있으므로 데이터는 여전히 디스크에 있습니다. 이 파일을 연 마지막 프로세스가 파일을 닫으면 파일이 완전히 삭제되고 고아 inode가 사라집니다.
고아 아이 노드가 사용하는 아이 노드 및 파일을 저장할 모두 그렇게 할 수있는 디스크 공간을 모두 df
와 df -i
사용을 계산합니다. 따라서 디스크가 꽉 찼다 고보고되었지만 df
일부 공간이 남아 있으면 분리 된 inode와 관련 될 수 없습니다. 고아 inode는보고 된 파일 시스템 사용량과보고 된 df
총 파일 크기 가 다른 이유 중 하나입니다 du
. 디스크 사용량을 측정하는 방법이 여러 가지 인 이유를 참조하십시오 . 이 주제에 대한 자세한 내용은.
많은 파일 시스템은 파일 시스템이 생성 될 때 고정 된 수의 inode를 예약하므로 파일 시스템에 최대 수의 파일을 가질 수 있습니다. 아이 노드의 수는 아이 노드가 사용하는 공간과 많은 파일을 생성하는 능력 사이의 절충입니다. 파일 시스템에 더 이상 공간이 없으면 기존 파일을 늘리거나 새 파일을 만들 수 없습니다 (아마도 부분적으로 사용되는 블록 만 채우고있는 한 기존 디렉토리에 빈 파일을 만들 수 있습니다) 새 블록을 할당해야 함). 사용 가능한 inode가 더 이상 없으면 기존 파일을 늘릴 수 있지만 새 파일을 만들 수는 없습니다.
커널은 데이터 공간 부족 또는 inode 부족으로 인해 파일 시스템이 가득 찼는 지 여부에 관계없이 응용 프로그램에 동일한 오류를보고합니다. 따라서 작업에 새 inode가 필요하고 inode 테이블이 가득 찬 경우 일부 데이터 공간이 남아 있어도 “디스크 가득 참”오류가 발생할 수 있습니다. df -i
사용 된 inode 수와 남은 수를 알기 위해 실행하십시오 .
답변
-
고아 inode는 연결이 해제되었지만 여전히 다른 프로세스에서 열려있는 inode입니다. 예를 들어
tail -f {file}
한 쉘에서 실행 되고 다른 쉘에서 실행 됩니다rm {file}
. 파일 시스템은 프로세스를 종료 할 때 정리할 수 있도록 이들을 추적합니다. -
부정한 분리가있을 때마다 완벽하게 정상입니다. 그것들은 단순히 삭제되었지만 fs가 읽기 전용으로 다시 마운트되었을 때 여전히 열린 파일입니다. 원인이 아니라 증상 일뿐입니다.
inode 문제의 경우이 쿼리를 실행하여 모든 디렉토리에서 얼마나 많은 inode가 사용되는지 목록을 가져옵니다.
for i in `find . -type d `; do echo `ls -a $i | wc -l` $i; done | sort -n