사용하고 있는 t3.micro 인스턴스에서 docker image를 추가하다가 오류를 마주했다.
말 그대로 인스턴스 내 공간이 없는 문제였고, 다음과 같은 방법들을 사용해서 결과적으로 문제를 해결했다.
리눅스 파일 시스템의 사용 공간을 확인하기 위해 다음과 같은 명령어를 사용하여 확인했다.
df -h

일부 용량을 정리한 상태이지만, 이전에는 사용률이 99%로 나타났다.
용량 문제를 해소하기 위해서는 사용하지 않는 파일 삭제, 인스턴스 볼륨 변경 등과 같은 방법이 있다.

EC2의 인스턴스 스토리지 상세 페이지에서 볼륨을 수정하여 용량을 추가할 수 있다고 했다.
그런데 내가 사용하는 인스턴스에는 불가능한 것 같다.
아마 인스턴스의 종류 문제가 아니라, 이미 사용하고 있는 볼륨으로 인해 제한된 것으로 보인다.
다시 터미널로 돌아가서 사용하지 않는 파일을 정리하는 방법을 선택했다.
다음의 명령어를 사용하여 파일 및 디렉토리 디스크 크기를 확인한다.
du -h --max-depth=1

df는 disk free, du는 disk usage
df 명령어는 파일시스템의 상태를 기초로 사용률을 보여주는 것
du 명령어는 실제 디렉토리와 파일을 확인하고 크기를 보여주는 것
sudo du -ah . | sort -rh
a: 파일도 포함하기sort -rh: 크기 내림차순위의 명령어에 | head -n 100를 추가하면 같은 방법으로 상위 100개만 볼 수 있다.
개별적으로는 큰 용량이 아니지만, 수가 많아서 용량 차지를 하고 있던 npm 캐시를 삭제하기로 했다.
npm 캐시를 삭제하기 위해 다음과 같은 명령어를 사용했다.
npm cache clean --force
하지만 오류가 발생하여 다른 명령어를 사용했다.
npm cache verify
clean 명령어를 사용할 때는 권한과 관련된 오류가 발생해서 또 다른 명령어를 찾아보다가 verify를 알게 되었다. verify를 사용하여 문제없이 cache 데이터를 삭제할 수 있었다.
verify는 npm cache에 불필요한 데이터가 있는지 확인하고 처리하는 방법
clean은 캐시 폴더 내 모든 데이터를 삭제하는 방법
service-name:
...
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
사용하고 있는 docker container의 로그 파일을 정리하고, logging 설정을 추가했다.
로그 파일의 최대 사이즈는 10mb이며, 최대 5개의 파일만 유지한다.
또한 파일을 순환 관리하므로 최대 용량의 파일이 최대로 생성된 경우, 가장 오래된 로그 데이터부터 삭제한다.
일반적으로 사용하지 않는 데이터라고 하면, 사용하지 않는 docker image나 container가 있다. 하지만 나의 경우에는 이것들은 이미 정리된 상황이어서 다른 방법으로 문제 해결이 필요했다.
그래서 npm 캐시를 삭제하는 방법을 선택했고, 이를 통해 수행하던 업무에서의 no space left on device 문제를 해결할 수 있었다.
이후에는 캐시 생성 경로를 변경하여 캐시가 쌓이지 않게 수정했다.
급하게 플랫폼 오류를 수정하면서 docker image 배포와 용량 문제가 충돌하면서 수습하는 시간이 오래 걸렸는데, 이번 기회에 용량 파악과 로그 순환 관리의 중요성에 대해 다시 한번 깨닫게 되었다.