도커(Docker) 볼륨 용량 초과 이슈
Docker를 사용하면서, 볼륨에서 실제 사용하고 있는 크기보다 더 용량을 많이 잡아먹는 경우가 있다.
이러한 경우에 가장 우선적으로 확인해야하는 사항에 대해 알아보았다.
용량 현황 확인
docker info | grep "Docker Root Dir"
위 명령어를 사용하면, Docker의 루트 디렉터리를 알 수 있다.
해당 디렉터리로 접근한 뒤,
du -sh *을 사용하여 어떤 파일의 용량이 가장 큰지 확인해야한다.
Overlay2가 가장 용량이 클 경우
일반적으로 overlay2의 용량이 가장 큰 경우,
가장 먼저 의심해 볼 사항은 백업과 같은 역할을 수행하기 위해서, 컨테이너 내부 파일 구조의 변경 사항을 기록하는 /diff/tmp 폴더에 용량이 매우 큰 파일들이 존재하는 경우가 많다.
du -sh */diff/tmp |sort -nr
위 명령어를 통해,
용량을 가장 많이 차지하고 있는 컨테이너 디렉터리를 찾은 후,
내부에 있는 diff/tmp 파일에서 비정상적으로 용량이 큰 파일을 삭제하는 방법을 취할 수 있다.
일반적으로 삭제했을 때, 동작에 문제가 생기지는 않았으나
만약의 경우를 대비해서 우선은 백업을 해둔 뒤, 삭제 후 정상작동 여부를 살피는 것을 추천한다.
Image와 컨테이너의 용량이 클 경우
docker image prune -all
위 명령어를 통해 사용하지 않는 컨테이너와 이미지 정보를 정리할 수 있다.
대부분의 경우 이를 통해 용량이 줄어드는 것을 확인할 수 있다.
Volumes의 용량이 클 경우
docker Volume은 일반적으로 컨테이너 내부에서 사용되는 파일들이 그대로 저장되어있는 장소이다.
이 때, 대부분의 유저들이 잘 모르고 있는 사항이 있는데,
리눅스와는 별도로, docker volume은 자체적으로 "휴지통"개념을 가지고 있어서,
파일을 삭제 했을 때 자동으로 Volumes 디렉터리 내부에 있는 .Trash 디렉터리로 옮기게 된다.
숨김파일이라서 확인이 어렵지만,
삭제한 파일들의 용량이 그대로 저 안에서 차지되고 있어서 실제로 내가 사용하는 파일의 용량은 700GB인데
볼륨의 용량은 1.4TB가 넘어가는 상황이 발생할 수 있다.
이를 방지하기 위해서, .Trash 파일을 삭제해주어야 한다.
Volumes 폴더 내부의 모습, .Trash-0라는 파일이 존재한다.
du -h --max-depth=1
위 명령어를 통해 숨김파일을 포함한 모든 파일의 용량을 확인할 수 있는데,
.Trash-0 파일안에 무려 505G나 되는 용량의 파일이 존재함을 확인할 수 있다.
내부를 보게 되면, 삭제된 원본 파일이 저장된 files 디렉토리와 메타데이터를 담고있는 info 디렉터리가 있는데, files 내부를 보면 여태까지 삭제했던 온갖 데이터들이 그대로 저장되어 있는 것을 확인할 수 있다.
필자는 머신러닝 학습용 데이터를 삭제하는 일이 빈번하였으므로, 용량을 많이 차지할 수 밖에 없다.
rm -rf .Trash*
위 명령어를 통해 모든 .Trash 디렉터리를 삭제할 수 있고, 용량을 확보할 수 있다.
'각종 Tips > Ubuntu' 카테고리의 다른 글
[Ubuntu / 우분투] 모든 압축파일 해제하기, unzip * (0) | 2021.07.10 |
---|---|
[Docker / Linux] 도커 볼륨에서 실수로 파일을 삭제했을 때 (0) | 2021.07.03 |
[Ubuntu / 우분투] 쉘 스크립트 숫자연산하기 (0) | 2021.06.28 |
[Ubuntu / 우분투] 하위 디렉토리별로 파일 개수 세기 (1) | 2021.06.28 |
[Ubuntu / 우분투] 메모리 사용량 조회하는 방법 (0) | 2020.11.15 |