no space left on device, write 에러

Dongwon Ahn·2023년 4월 16일
0

에러 회고

목록 보기
6/6
post-custom-banner

에러

사내에서 크롤링을 해야하는 일이 있었는데, 아래와 같은 에러가 발생했습니다.

에러: ENOSPC: no space left on device, mkdtemp '/tmp/puppeteer_dev_chrome_profile-lG14NO'

확인 결과 해당 에러는 현재 서버에 여유공간이 없을 때 발생하는 에러라고 판단했습니다.

크롤링 진행 시 결과 값을 log에 저장을 하는데, 해당 로그파일이 용량이 높아져서 발생한 에러로 추측됩니다.

서버에 접속해서 남아있는 용량을 확인해보니, 서버에 여유 공간이 없어서 발생한 에러였습니다.

리눅스에서 df 명령어를 통해 남아있는 용량을 확인할 수 있습니다.

  • df -k KB 단위로 용량 표시
  • df -m MB 단위로 용량 표시
  • df -h 용량에 따라 보기 편하게 표시
  • df . 현재 디렉토리가 포함된 파티션의 용량의 표시

위 사진과 같이 Available이 0이기 때문에 서버 내 용량 부족으로 해당 에러가 발생했습니다.

해결방안

용량이 부족하기 때문에 발생한 에러이기 때문에, 2가지의 해결책이 있을꺼 같습니다.

  • 서버의 용량의 올린다.
  • 서버 배 불필요하게 차지하는 용량을 정리한다.

이번에 발생했던 서버는 크롤링을 돌리고 있는 서버이며, 해당 기능을 계속 이용할지 확정이 안났기 때문에, 2번째 방법인 log를 정리하는 방법으로 문제를 해결했습니다.

PM2로 서비스를 돌리고 있었기 때문에, pm2 의 log를 확인했습니다.

로그의 용량을 확인하는 방법은 아래 명령어를 통해 확인이 가능합니다.

  • ls -alh ls의 -h 옵션을 이용하면 KB/MB/GB 단위로 파일 사이즈 확인이 가능합니다.

서버 내 가용 용량이 없기 때문에 발생한 에러이기 때문에, 간단하게 pm2의 log파일들의 정리하면 해결가능합니다.

  • pm2 flush 현재 사용중인 로그들을 삭제할 수 있습니다.

하지만 이 경우 단기적인 해결방안입니다.

서비스가 지속적으로 돌아가게 된다면 로그가 쌓여 에러가 발생할 수 있습니다.

해당 문서에서 작성은 하지 않지만 아래의 pm2-logrotate를 통해 로그 관리를 진행하는 방법도 있습니다.

npm: pm2-logrotate

profile
Typescript를 통해 풀스택 개발을 진행하고 있습니다.
post-custom-banner

0개의 댓글