리눅스2023. 8. 2. 14:50

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/602209 (2017.7.26)

제목처럼, 리눅스에서 디스크에 충분한 용량이 있음에도 불구하고 새로 파일을 쓰려니까 공간이 없다는 오류 메시지(no space left on device) 메시지가 발생하는 경우가 있다.

사실 거의 없긴 하다. 개인적으로는 최근에 딱 한번 있었다. --;

디스크 용량이 충분한데도 새로 파일을 쓰지 못하는 이유는 바로 아이노드(inode) 고갈 때문이었다. 아이노드는 유닉스/리눅스 파일 시스템에서 파일 또는 디렉토리의 속성과 데이터 위치 등을 가지고 있다. 즉, 디렉토리나 파일은 각각 그에 상응하는 아이노드가 존재하게 된다.

아이노드의 수는 유한하기 때문에, 작은 크기의 파일이 무수히 많은 상황이 되면 사용 가능한 아이노드가 더 이상 없게 되어서 디스크의 남은 공간과 무관하게 파일/디렉토리 생성이 불가능하게 될 수 있다.

아이노드의 개수와 현재까지의 사용률은 df 명령에서 -i 옵션을 활용하면 확인 가능하다. (df에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로)

 

# inode 개수 및 사용률 확인
df -i

각 파티션별로 아이노드의 총 개수(Inodes), 사용한 아이노드의 수(IUsed), 남은 아이노드의 수(IFree) 등이 표시된다. 좀 더 보기 편하게 킬로(K), 메가(M) 단위로 표시하고 싶다면 -h 옵션을 추가.

df -ih

아이노드 고갈 때문에 더 이상 파일을 만들 수 없게 되었음을 확인했다면, 필요 없는 파일들을 삭제하거나 또는 여유가 있는 다른 파티션으로 파일들을 옮긴다거나 하는 식으로 수습할 수 있다. 일단 이런 식으로 빈 아이노드를 만든 후에 잘 쓰지 않는 자잘한 파일이 있다면 압축해 두는 것도 한 방법이다. 

아이노드의 수가 꽤나 많기 때문에 일반적인 사용환경에서는 고갈될 일이 거의 없을 것이나, 작은 파일을 무수히 많이 만드는 좀 극단적인 상황이라면 아이노드의 사용률도 생각해 볼 필요가 있겠다.

728x90
Posted by 반달가면