AWS EC2를 이용해 배포해보자 (6) - Swap area 설정하기

Suntory·2022년 4월 27일
1

AWS로 배포하기

목록 보기
6/6

우리의 프로젝트를 성공적으로 배포했지만, 프리티어의 메모리 1기가로는 벅찬 느낌이 있습니다. 부족한 메모리를 커버해보기 위해 가상 메모리 기법을 떠올려봅니다. 우리의 하드 디스크 일부를 swap area로 쓰면서 메모리 문제를 보완해보겠습니다.


EC2 볼륨 추가하기(선택)

먼저 ec2 프리티어는 최대 30GB의 디스크 영역을 제공합니다. ec2 인스턴스 생성 당시에는 default로 8기가로 생성됩니다. 물론 8기가도 swap area를 할당하고도 충분한 공간이지만 이왕 쓰는거 넉넉히 쓰기 위해 먼저 ec2의 볼륨을 올려줍니다.

볼륨 수정을 위해 [EC2 대시보드] - [볼륨]에 들어가서 우리가 사용중인 ec2의 볼륨 ID를 클릭합니다.

위와 같은 화면이 나오고, 저는 생성 당시 아무런 설정을 건드리지 않았기 때문에 용량은 default인 8기가임을 알 수 있습니다.

여기서 우측 상단의 수정을 누릅니다.

볼륨의 크기를 최대 30기가 한도에서 자유롭게 늘려줍니다. 저는 25기가로 늘렸습니다. 그리고 수정을 누르면 볼륨이 늘어납니다. 적용을 위해 ec2 인스턴스를 재부팅합니다.

정상적으로 볼륨이 늘어났는 지 아래 명령어를 입력합니다.

$ df -h

위와 같이 정상적으로 볼륨이 25기가로 늘어났습니다.

Swap area 설정

이제 디스크 공간의 일부를 swap area로 설정해봅시다.
우선 aws 공식 매뉴얼에도 관련 글이 있습니다.
스왑 파일을 사용하여 Amazon EC2 인스턴스에서 스왑 공간으로 사용할 메모리를 할당하는 방법은 무엇입니까?

해당 글을 잘 따라가봅시다. 먼저 아래 명령어를 입력합니다.

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=16

dd 명령어는 convert and copy a file을 수행하는 명령어입니다.

if는 File을 읽어오는 명령어(아마도 input file)인데, /dev/zero라는 엄청나게 큰 0으로 채워진 가상의 유닉스 특수파일을 지정해줍니다. 일반적으로 데이터 스토리지를 초기화하기 위해 문자 스트림을 제공한다고 합니다.

of는 File을 쓰는 명령어입니다.(아마도 write file) 즉, /dev/zero로부터 읽어 /swapfile에 file을 쓰는 명령입니다. 이 때 각 블록의 크기를 128M로 잡고 16개의 블록을 만듭니다. 즉, swapfile의 크기는 128M * 16 = 2GB가 됩니다.

AWS에서는 일반적으로 메모리 2배 크기의 swap area를 권장하고 있기 때문에 2GB를 할당했습니다.

그리고 아래 명령어로 할당한 스왑파일의 권한을 업데이트합니다.

$ sudo chmod 600 /swapfile

이로써 스왑파일을 읽고 쓸 수 있게 됩니다. 그리고 swapfile 설정을 위해 다음 명령어를 입력합니다.

$ sudo mkswap /swapfile

2기가의 swap 영역이 생겼습니다. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있도록 합니다.

$ sudo swapon /swapfile

그리고 정상적으로 되었는지 확인합니다.

$ sudo swapon -s

그리고 마지막으로 부팅 시 스왑파일을 시작할 수 있도록 설정해주어야 합니다.

$ sudo vi /etc/fstab

위와 같이 파일의 끝에 /swapfile swap swap defaults 0 0 을 추가하고 저장합니다.

이로써 2기가의 스왑 공간을 확보하였습니다.
원래는 메모리가 부족해 빌드가 잘 안됐는데 서버에서 빌드를 시도해봅니다.

아주 빌드가 잘 됩니다.
스왑 영역 설정을 해서 얻은 가상 메모리를 통해 빌드도 가능해지고 우리의 ec2가 죽는 일이 더 적어질 것이라고 기대합니다!!

profile
천천히, 하지만 꾸준히 그리고 열심히

1개의 댓글

comment-user-thumbnail
2024년 1월 4일

좋은 정보 잘 보고 갑니다.
감사합니다.

답글 달기