1. 개요
- carryduo 서비스를 지속적으로 운영하는 과정에서 "no space for device"에러가 발생했다.
- 서버 용량을 확인해보니, CodeDeploy Agent에서 ubuntu에 저장하는 배포본의 용량이 가장 많았다.
- 이에, 다음과 같은 과정을 통해 CodeDeploy Agent에서 ubuntu에 저장하는 배포본의 수를 줄여주었다.
2. 서버 용량 확인하기
- 서버 용량을 확인하는 linux 명령어는 다음과 같다.
df -h // 파일 시스템별 용량/사용량/남은 용량/파일 시스템이 사용중인 경로 확인
for i in [경로]; do echo $i; find $i | wc -l; done // 특정 경로의 하위 경로에서 각각 차지하는 용량 확인
- 필자의 경우, df -h를 실행했을 떄, " / " 경로를 사용하는 파일시스템의 사용량이 100%였다.
- 이에, for i in /*; do echo $i; find $i | wc -l; done 명령어를 실행해서 / 경로에서 어떤 경로가 가장 용량을 많이 차지하는지 확인하였다.
- 결과는 /opt 경로였다.
- /opt 경로는 AWS CodeDeploy에서 자동 배포 시, 배포본 이력을 저장하는 경로였다.
- /opt 경로를 확인하니, 다음처럼 배포본에 해당하는 프로젝트 폴더들이 저장되어 있는 것을 확인할 수 있었다.
- 위 이미지를 설명하자면, AWS CodeDeploy에서 최근 5개 배포본 이력을 계속 저장한 것을 보여주는 것이다.
3. AWS CodeDeploy 배포본 수 조정하기
- AWS CodeDeploy에 대한 AWS 공식문서에 따르면, /etc/codedeploy-agent/conf 경로의 codedeployagent.yml이 사용중인 AWS CodeDeploy와 관련한 config를 설정하는 파일이라고 한다.
- config의 설정은 여러가지가 있는데, 이 중 배포본 개수에 대한 설정은 :max_revisions 이다.
- :max_revisions는 default 값이 5개로 설정되어있다.
- 필자는 이를 2개로 수정하여 배포본에 따라 서버 용량이 부족한 문제를 해결했다.
* 배포본 떄문에 서버 용량 부족 이슈가 발생한 까닭은 아무래도 프로젝트에 추가되는 feature나 패키지가 많아졌기 떄문인 것으로 추측된다.
- codedeployagent.yml 파일을 수정한 이후에는 sudo service codedeploy-agent restart 명령어로 agent를 재실행해 주어야 한다.
4. 참고 자료
'Carryduo' 카테고리의 다른 글
Carryduo | 계층 분리를 위한 DTO, Entity 리팩토링 (0) | 2023.03.13 |
---|---|
Carryduo | 비동기와 try, catch 에러 핸들링 (0) | 2023.01.27 |
Carryduo | [nodeJS] child-process를 이용한 데이터 분석 자동화 (0) | 2023.01.26 |
Carryduo | ubuntu crontab을 이용한 pm2 로그 관리 스케줄링 (1) | 2023.01.25 |
Carryduo | AWS S3를 이용해 롤 챔피언 이미지 버전 관리 (1) | 2023.01.13 |