개요
AWS EC2의 t2.micro를 사용하면 인스턴스의 메인 메모리는 1GB가 된다. 부족한 메모리로 작업을 하며 인스턴스가 다운되는 등의 메모리 문제를 겪던 중 스왑 공간(swap space)을 통해 문제를 해결하였다.
스왑 공간 (swap space)
스왑 공간을 이해하기 위해서는 우선 가상 메모리에 대해 알아야 한다.
- 가상 메모리(virtual memory)
- 메인 메모리의 추상화를 통해 컴퓨터가 사용 가능한 메모리를 확장하는 것
- RAM 상에 사용중이지 않은 콘텐츠를 디스크에 저장하는 방식
- 추후에 해당 콘텐츠를 사용하게 될 때 다시 RAM으로 불러온다.
스왑 공간 (또는 스왑 메모리)
- 가상 메모리로 사용되는 하드 디스크 영역
- 모든 스왑 메모리는 가상 메모리지만, 모든 가상 메모리가 스왑 메모리인 것은 아니다.
- 스왑 메모리는 하드 디스크의 공간만을 의미
- 가상 메모리는 메모리 매핑이나 요구 페이징 등의 기술을 포함하는 광범위한 개념
설정 방법
기존에 인스턴스에 swap 메모리가 설정되어 있는지를 확인한다.
1
sudo swapon -s
아무것도 출력되지 않는다면 아직 설정되지 않은 것이다.
원하는 크기의 swap 파일을 생성한다.
1
sudo fallocate -l [SIZE]G /swapfile
예시. 2GB로 설정하고 싶다면 다음과 같이 입력한다.
1
sudo fallocate -l 2G /swapfile
파일 권한을 600(
-rw-------
)으로 설정한다.1
sudo chmod 600 /swapfile
해당 파일을 swap 공간으로 설정한다.
1
sudo mkswap /swapfile
swap 공간을 enable한다.
1
sudo swapon /swapfile
설정된 swap 공간을 확인한다.
1
sudo swapon -s
정상적으로 설정되었다면 다음과 같은 메시지가 출력될 것이다.
1 2
Filename Type Size Used Priority /swapfile file 2097148 0 -2
swap 파일이 시스템 재부팅 후에도 계속 적용되도록 설정한다.
1
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
부팅 시에
/etc/fstab
파일에 새로운 엔트리를 추가한다./etc/fstab
: Linux 운영체제에서 부팅 시에 자동으로 파일 시스템을 마운트하는데 사용된다.
재설정 방법
기존에 설정된 swap 공간의 용량을 변경하는 방법
현재 swap 공간을 해제한다.
1
sudo swapoff /swapfile
free -h
로 확인할 수 있다.1 2 3
total used free shared buff/cache available Mem: 965Mi 333Mi 166Mi 0.0Ki 465Mi 466Mi Swap: 0B 0B 0B
현재 swap 파일을 삭제한다.
1
sudo rm /swapfile
이후의 과정은 위와 동일하다.
원하는 용량으로 swap 파일을 생성한다.
1
sudo fallocate -l [SIZE]G /swapfile
파일 권한을 600(
-rw-------
)으로 설정한다.1
sudo chmod 600 /swapfile
해당 파일을 swap 공간으로 설정한다.
1
sudo mkswap /swapfile
swap 공간을 enable한다.
1
sudo swapon /swapfile
새롭게 설정한 swap 공간을 확인한다.
1
sudo swapon -s
swap 파일이 시스템 재부팅 후에도 계속 적용되도록 설정한다.
1
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
참고
- contents
- The Difference Between Virtual Memory and Swap Space | Baeldung on Computer Science
- operating system - What’s the difference between “virtual memory” and “swap space”? - Stack Overflow
- Use swap file to allocate memory as swap space in Amazon EC2 instance | AWS re:Post
- amazon web services - How do you add swap to an EC2 instance? - Stack Overflow
- How To Add Swap Space on Ubuntu 20.04 | DigitalOcean
- images