아이노드와 '장치에 남은 공간이 없음'
개념ext4 및 유사 파일 시스템
아이노드는 유닉스 계열 파일 시스템이 소유자, 권한, 크기, 데이터가 위치한 곳 등 파일에 대한 정보를 저장하는 데 사용하는 데이터 구조입니다. 각 파일은 하나의 아이노드를 사용하며, 많은 파일 시스템은 아이노드 수가 고정되어 있어 수백만 개의 아주 작은 파일이 존재할 경우 df -h에서는 여유 공간이 있다고 나오더라도 '장치에 남은 공간이 없음' 오류가 발생할 수 있습니다.
1확인하는 방법
df -i는 파일 시스템별 총 아이노드, 사용 중인 아이노드, 여유 아이노드 목록을 보여줍니다. ls -i는 파일의 아이노드 번호를 보여주고, stat <file>은 아이노드 상세 정보를 보여줍니다.
2일반적인 원인
웹 애플리케이션의 세션 또는 캐시 디렉터리, 메일 대기열, 순환되지 않은 작은 로그 파일, 빌드 캐시 등으로 인해 수백만 개의 파일이 생성될 수 있습니다.
3디렉터리 찾기
GNU du로 아이노드를 셀 수 있습니다. du --inodes -x / | sort -n | tail은 항목이 가장 많은 디렉터리 목록을 보여줍니다.
아이노드 고갈 해결 방법
- 확인:
df -i(IUse%가 100%에 가까움). - 디렉터리 찾기:
sudo du --inodes -x --max-depth=3 / | sort -n | tail -20 - 무언가를 삭제하기 전에 파일을 생성하는 원인을 확인하세요.
- 해당 애플리케이션의 자체 도구를 사용하거나 find를 사용하여 오래된 파일을 삭제합니다. 예를 들어 -delete를 제외하고 미리 실행해 본 후
find /path -type f -mtime +7 -delete를 실행합니다.
주의 사항
- 항상 -delete를 제외하고 find를 먼저 실행하여 목록을 확인하세요.
- ext4의 아이노드 개수는 파일 시스템이 생성될 때 고정됩니다.
관련 문서
- df (disk free)df 출력 결과를 읽는 방법, 일반 사용자 기준에서 사용 가능한 공간(Avail)이 0이 되기 전에 사용률(Use%)이 100%에 도달할 수 있는 이유, 그리고 df -i를 통해 아이노드(inode)를 확인하는 방법을 설명합니다.
- find 명령어로 크고 오래된 파일 찾기Linux에서 find 명령어를 사용하여 크기가 크거나 오래된 파일을 나열하고, 안전하게 미리 본 후 확인된 파일만 삭제하는 방법입니다.
- du와 ncdu를 이용한 디스크 사용량 확인단일 파일 시스템에 유지되는 옵션을 사용하여 du 및 대화형 ncdu로 Linux 디스크를 채우는 요소를 찾는 방법입니다.
출처
최종 검토: