다음과 같은 에러가 뜨고 있다.
OSError: [Errno 28] No space left on device: '/home/ubuntu/news_crawler/failure_report/2022-01-16.txt'
인스턴스의 남은 스토리지 공간을 확인해보자.
aws 공식문서를 보면 다음 명령어로 알 수 있다.
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-describing-volumes.html
df -hT /dev/xvda1
100% 사용 중이고, 남은 공간이 없다.
지금은 ebs의 어느 부분이 큰 공간을 차지하고 있는지 알 수가 없다.
du -hal | sort -r 에서 No space left on device 에러가 나기 때문이다.
아래 명령어를 수행한다.
sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
그래도 du -hal | sort -r 에서 에러가 난다.
블로그를 참고하여 ebs 사이즈를 10기가로 늘렸다.
https://velog.io/@hyeonseop/ec2-용량-full일-때-대처법
sudo growpart /dev/xvda 1
명령을 통해 파티션의 크기를 늘린 후,
sudo resize2fs <파티션>
명령을 통해 file system 크기를 늘린다.
/ (root directory)에서 어떤 파일이 용량을 크게 차지하고 있는지 확인했다.
// root directory에서 실행
du -hs */
usr이 4.,7G로 매우 큰 용량을 차지하고 있다.
usr은 linux-aws-header가 저장되는데, 옛날 버전은 수동으로 삭제해 주어야 한다고 한다.
https://ubuntuhandbook.org/index.php/2016/05/remove-old-kernels-ubuntu-16-04/
https://askubuntu.com/questions/1141630/why-is-usr-src-linux-aws-headers-growing
sudo apt --fix-broken install
sudo apt autoremove --purge
위 명령어를 사용하여 삭제했다.
usr의 크기가 4.7G → 1.4 G로 크게 줄었다.