Ubuntu에서 Swap Memory 설정하기

개요

AWS 프리티어에서 EC2를 사용하는데, Jenkins 에서 gradle 빌드 시 EC2 인스턴스가 완전 먹통이 되어버리는 문제가 발생했다.
로그를 살펴보고 구글링을 하다보니 원인이 램 용량 부족때문인 것 같아 Swap Memory 설정을 하였다.

Swap Memory 설정하기

df -h

a1.png

  • 위 명령어로 하드디스크 용량을 확인한다.
  • 여기서는 /dev/root가 하드디스크를 나타낸다.
free

a2.png

  • 위 명령어로 현재 사용하고 있는 메모리와 Swap 메모리를 확인할 수 있다.
  • 0이므로 Swap 메모리가 설정되지 않은 상태이다.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile

a3.png

  • Ubuntu에서는 Swapfile을 이용하여 Swap 메모리를 설정할 수 있다.
  • 프리티어 EC2 인스턴스의 램은 1GB이기 때문에 Swap 메모리 최대치(2배)인 2GB로 설정한다.
  • 그리고 swapfile의 권한을 수정해준다.
sudo mkswap /swapfile
sudo swapon /swapfile

a4.png

  • mkswap /swapfile: 해당 파일을 스왑 공간으로 사용할 수 있도록 준비한다.
    • 출력에는 스왑 파일을 크기와 UUID가 표시된다.
  • swapon /swapfile: 스왑 공간을 활성화한다.
sudo vim /etc/fstab
  • 위 명령어는 Linux 시스템의 파일 시스템 테이블을 설정하는 파일이다.
    • 부팅 시에 시스템이 어떤 디스크를 마운트할지, 어떤 옵션으로 마운트할지 등을 지정한다.
  • 위 명령어로 vim 에디터가 열리면 다음의 문장을 삽입한다.
    • a5.png
    • /swapfile swap swap defaults 0 0
      • /swapfile: 스왑 파일의 경로
      • swap: 파일 시스템 유형
      • swap: 마운트 지점
      • defaults: 마운트할 때 사용할 옵션
      • 0: 파일 시스템이 백업되어야 하는지 여부
      • 0: 파일 시스템 검사 순서
free

a6.png

  • 마지막으로 다시 free 명령어로 Swap 메모리가 잘 할당되었는지 확인한다.

Swap Memory 사용시 주의사항

Swap 메모리는 제한된 메모리 내에서 확장성을 제공하고 응용 프로그램의 용량을 증가시킬 수 있지만,

추가적인 디스크 IO작업으로 인해 성능이 떨어지고 응답시간이 지연될 수 있다. 또, 저장장치의 수명을 단축시킬 수 있다.