Linux

No space left on device - inode 100% 사용 시

비번변경 2021. 6. 15. 22:01
inode
파일 시스템에서 사용하는 자료구조로, 정규 파일 디렉터리 등 파일 시스템에 관련된 정보를 가진다.
각 파일은 하나의 아이노드를 가지며, 소유자 그룹, 권한, 파일 형태, 아이노드 숫자(inode number) 등 파일에 관한 정보를 가진다.
아이노드에 할당된 공간은 파일 시스템 전체 공간의 1% 정도이다.

 

 아이노드에 할당된 공간이 한정되어 있기 때문에 파일 시스템이 저장할 수 있는 파일의 최대 개수도 한정되어 있다.

 아이노드 사용량은 아래 명령어로 확인할 수 있다.

df -i

df -i

 보다시피 각 파일 시스템은 아주 많은 아이노드를, 즉 아주 많은 파일을 가질 수 있다. 하지만 로그 파일 등을 주기적으로 삭제하기 않고 계속 누적시키고 있거나 하는 등의 이유로 아이노드 사용량이 100%가 되는 경우가 있다.

(참고로 아이노드 사용량이 정상이라고 보는 기준은 50% 미만이라고 한다. 참고할 것.)

 

inode 100%

 아이노드를 전부 소모하게 되면 생각보다 불편하다. 일단 TAB 키를 이용해 사용할 수 있는 명령어, 파일 등의 목록이 보이지 않기 때문이다. 당연하지만 디스크가 남아있어도 파일이 생성되지 않기도 한다.

 

 해결방법은 간단하다. 문제가 생긴 경로의 파일을 정리하면 된다. 아이노드 사용량이 많은 곳을 확인하는 명령어는 다음과 같다.

for i in /*; do echo $i; find $i/ | wc -l; done

# sudo 권한이 필요한 경우
for i in /*; do echo $i; sudo find $i/ | wc -l; done

for i in /*; do echo $i; find $i/ | wc -l; done

확인해보니 /var 경로가 아이노드를 많이 쓰고 있었다. 그러면 또 /var 아래의 어느 경로가 파일이 많은지 확인해본다.

for i in /var/*; do echo $i; sudo find $i/ | wc -l; done

차근히 확인하면서 파일을 정리한다.

728x90