Skip to content

No space left on device

디스크에 공간이 없을 때 나타나는 에러 메시지.

No space left on device

inode ?

그러니까 inode라고 하는 것은 파일을 다루는 단위에요 파일을 다루는 단위고 자료구조입니다.

그 inode를 생성하는게 지금 현재 사용하고 있는 루트 파일 시스템에 파일 시스템 타입에 따라서 몇 개까지 되는지 지금 저희 같은 경우는 ext4고요 exd4로 포맷했을 때 btrfs로 포맷했을 때 그 파일 시스템 포맷들마다 inode의 개수, 그러니까 가용 범위내로 범주가 있는 그 inode의 개수가 있어요 그런데 그 개수를 넘어서게 된다면 실제 파일 블록이 들어갈 수 있는 물리적인 공간은 있지만 inode의 개수가 꽉 차서 no space라는 오류가 동일하게 발생할 수가 있습니다.

해결 방법

df로 확인해 보면 실제 공간이 남아 있지만 No space left on device가 계속 출력될때, df -i를 사용하여 inode를 확인해보자.

inode는 파일을 다루는 단위기 때문에 파일 개수가 너무 많아도 문제이기 때문에 find와 wc 를 조합하여 파일이 너무 많이 있는 폴더를 찾아서 제거하는 것도 도움이 된다.

디스크 확인

df -h
## 명령어를 입력해 확인해보니 디스크를 모두 사용하고 있는걸 확인할 수 있었다.

df -i
## 명령어는 inode 공간을 확인하는 명령어이다. (inode의 자세한 내용은 참고자료에 있다.)

가장 많은 공간을 사용하고 있는 폴더를 확인해 필요없는 파일들을 삭제한다.

찾기

du -sh *

## 해당 경로에서 바로 용량 확인하기
du -h --max-depth=1

## 폴더별 용량 sort해서 보기 
du -hs * | sort -rh | head -5

로그파일 비우기

## kern.log 용량 0으로 바꾸기
cat /dev/null > /var/log/kern.log 

## syslog 용량 0으로 바꾸기
cat /dev/null > /var/log/syslog

## 나머지 삭제 등등
sudo rm -rf syslog.*

휴지통 비우기

rm -rf ~/.local/share/Trash/files/*

Docker

inode 문제일 수 있다. df -i 로 확인 가능.

Docker 에서 문제 확인:

  • docker system df -v
  • docker volume prune - 미사용 볼륨 제거
  • docker container prune - 미사용 컨테이너 제거
  • docker image prune - 미사용 이미지 제거
  • docker system prune - 미사용 중인 이미지, 컨테이너, 볼륨 모두 제거

See also

Favorite site