본문 바로가기
Linux Unix

리눅스 (AWS) - 스왑 메모리 설정 방법

by softserve 2022. 8. 3.
반응형

AWS ec2에서 프리티어(무료) 사용자에게 제공하는 기본 메모리는 1기가입니다. 이것도 감지덕지이지만 웹서버와 DB 등 여러 프로그램을 구동하기에는 가혹한 용량입니다. 그래서 스왑 메모리를 설정해줄 필요가 있습니다.

실제 물리 메모리가 부족할 때 HDD 또는 SSD 등 디스크의 일부 공간을 메모리처럼 사용하는 것을 가상 메모리라고 합니다. 윈도우즈에서도 가상 메모리가 사용되며, 컴퓨터에 대해서 공부해본 사람에게는 매우 익숙한 개념입니다.
리눅스의 스왑 메모리는 이런 가상 메모리를 말합니다. 디스크 공간을 메모리로 대체한다는 의미에서 스왑이라고 이름지은 것이겠죠?

스왑 메모리를 사용하기 위해 스왑 파일을 생성한 다음 스왑 공간에 추가해주도록 하겠습니다. AWS 뿐 아니라 일반 리눅스 운영체제에서도 다음과 같은 방법으로 스왑 메모리를 설정할 수 있습니다.

 

1. 스왑 파일 생성

 

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

dd 는 블록 단위로 파일 복사, 변환 시 사용합니다.
if= 입력 파일입니다.
of= 출력 파일입니다.
bs byte단위로 블록 크기를 설정합니다.
count 블록의 개수입니다.

/dev/zero라는 파일로부터 swapfile을 생성하며 블록 크기는 128M, 개수는 32로 합니다.
따라서 총 용량은 128 * 32 = 4GB입니다.

/dev/zero는 리눅스 운영체제에 있는 특수 파일로서 수많은 null 문자를 가지고 있습니다. 데이터 스토리지를 초기화하기 위해 zero의 문자 스트림을 이용하는 것입니다. 블록의 크기와 개수를 설정한 다음 zero에 있는 null 문자들을 블록 단위로 swapfile에 옮겨줍니다. 그 결과 우리는 null 문자로 가득 찬 4기가짜리 swapfile을 얻게 됩니다.

 

2. 권한 부여

 

$ sudo chmod 600 /swapfile  

chmod는 파일의 권한을 설정하는 명령어입니다.

"600"은 8진수 형태로 권한을 표현한 것으로서,

6은 User(Owner) 에게 rw- 즉 읽고 쓰기 권한을 부여한다는 의미입니다.

00에 해당하는 부분은 Owner 외의 Group이나 Others에게 읽기 r 쓰기 w 실행 x 중 어떤 권한도 주지 않겠다는 것입니다.

그 결과는 다음과 같습니다.

 

3. swap area 설정

 

스왑 영역을 구성하는 방법은 스왑 파티션과 스왑 파일 두 가지가 있습니다.

파티션 방식의 경우 디스크를 파티셔닝한 뒤 해당 공간을 스왑 영역으로 사용합니다.

파일 시스템을 거치지 않아 성능상 유리합니다. 대신 공간이 낭비될 염려가 있습니다.

우리는 스왑 파일 방식을 사용하려고 합니다. 왜냐하면 AWS와 같은 가상 서버 환경에서는 파티션 설정이 용이치 않기 때문입니다.

파일 방식은 파일 시스템을 통해서 스왑 파일을 생성한 뒤 해당 파일을 스왑 영역으로 사용합니다.

$ sudo mkswap /swapfile  

$ sudo swapon /swapfile  

스왑 영역을 생성하고 활성화해주었습니다. 다음을 입력하여 스왑 파일이 제대로 생성되었는지 확인합니다.

$ sudo swapon -s  

 

4. 부팅 시 스왑 파일을 활성화

 

fstab 파일은 부팅시 마운트 정보를 비롯한 파일 시스템에 관한 정보를 가지고 있습니다.

이 파일을 편집기로 실행한 뒤,

$ sudo vi /etc/fstab  

아랫부분에 다음을 추가해줍니다.

/swapfile swap swap defaults 0 0

[장치명] /swapfile [마운트 포인트] swap [파일 시스템] swap [옵션] defaults [덤프] 0 [파일 체크] 0

마운트 포인트는 마운트 시킬 위치를 설정합니다.

다만, 파일 시스템을 swap으로 설정했을 경우에는 마운트 포인트를 참조하지 않기 때문에 이곳에 무엇이 들어가도 상관이 없다고 합니다.

https://serverfault.com/questions/967852/swapfile-mount-etc-fstab-swap-swap-or-none-swap

 

5. 메모리 확인

 

$ free -h  

다음과 같이 swap 메모리가 4G로 설정된 것을 확인할 수 있습니다.

 

참고 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-memory-swap-file/

반응형

댓글