[Trouble Shooting] no space left on device. 해결
문제 상황
docker-compose up -d
커맨드를 이용해 도커 컨테이너를 실행하려고 하는데 no space left on device
에러가 발생하는 상황이다.
문제 원인
말 그대로 공간이 부족해 생긴 문제이다.
해결 방법
우분투에 접속해서 진행한다.
공간을 확인해보자.
# 사용 가능한 공간 확인
$ df -h
시도1 - docker 이미지 저장 경로 수정 (해결 안됨)
# 기존 저장 경로 확인
$ sudo docker info | grep Root
# 출력: /var/lib/docker
# 새로 이미지 저장할 경로 생성
$ mkdir /home/docker-images
# 설정파일 편집
$ sudo vi /lib/systemd/system/docker.service
# 기존: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
# 변경: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/home/docker-images/
# 도커 재시작
$ sudo service docker stop
$ sudo service docker status
$ sudo service docker start
$ sudo service docker status
# 변경된 저장 경로 확인
$ sudo docker info | grep Root
# 출력: /home/docker-images
만약 적용이 안된다면?
$ sudo su # 슈퍼유저로 승격하지 않으면 아래에서 permission denied 에러가 발생한다.
$ systemctl daemon-reload
$ exit
시도2 - EC2 인스턴스에서 볼륨의 크기를 키운 후, 파일시스템 확장 (해결!!!!!)
이 글을 참고했다.
- AWS EC2 인스턴스 볼륨 확장 (기존 8 -> 16 으로 확장했다.)
- Linux에 들어가서 /dev/root 용량과 EC2 인스턴스에서 확장시킨 볼륨 연동하기
$ df -hT
$ lsblk
$ sudo growpart /dev/xvda 1
$ lsblk
$ sudo apt install xfsprogs
$ sudo resize2fs /dev/root
$ df -h
-> 보면 알다시피, 지금 /dev/root
의 용량은 7.6G 이다.
-> 여기서 xvda -> xvda1의 용량이 7.9G 인것을 알 수 있다. (아직 파티션 분할이 안된 것을 알 수 있음)
-> 위 명령어를 사용하여, 파티션을 분할 해준다.
-> 여기서 xvda -> xvda1의 용량이 7.9G -> 15.9G 된 것을 알 수 있음(파티션 분할 완료)
-> 🌟🌟🌟해당 명령어를 통해 aws ec2에서 볼륨을 확장 한 것을 /dev/root
용량 확장🌟🌟🌟
-> /dev/root
의 사용량(Use%
)이 95% -> 47% 가 되었다!!
이제 도커 컴포즈 명령이 잘 실행되는지 확인해보자.
/dev/root
용량 확장 전 안되던게
용량 확장 후 된다!!!
만약 sudo growpart /dev/xvda 1
과정에서 아래와 같은 에러가 발생한다면?
mkdir: cannot create directory ‘/tmp/growpart.433221’: No space left on device
FAILED: failed to make temp dir
용량이 너어어어무 없어서 아예 명령어 작동도 안되는 거라고 한다…
어느정도 공간 확보가 꼭 필요하다..!
# no space left on device 오류를 방지하려면 임시 파일 시스템 tmpfs를 /tmp 탑재 지점에 탑재합니다. 그러면 /tmp에 탑재된 10M tmpfs가 생성됩니다.
$ sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
위 명령어 실행 이후에 나머지 단계를 마저 실행한다.
$ sudo growpart /dev/xvda 1
$ lsblk
$ sudo apt install xfsprogs
$ sudo resize2fs /dev/root
$ df -h
이후에 아래 명령어를 통해 공간을 조금 더 확보할 수 있다.
(이전에는 아래 명령어마저 no space 오류로 실행되지 않았다..ㅜ)
# 더 이상 설치되어 있지 않은 패키지들의 .deb를 제거함
$ sudo apt-get autoclean
# 다른 패키지 설치 시 의존성 때문에 설치된 패키지가 더이상 사용되지 않을 때 자동으로 삭제함
$ sudo apt-get autoremove
💛 개인 공부 기록용 블로그입니다. 👻