리눅스 스왑 swap 설정 방법(+AWS 프리티어 멈춤 해결)
2022.04.03 - AWS(아마존 웹서비스) EC2 프리티어 CPU사용량 100% 이슈
문제
이번에 작성하는 리눅스 스왑(Swap) 설정은, 이전에 작성한 AWS EC2 프리티어 및 리눅스 서버 멈춤, SSH 접속 불가 현상 등 정상적으로 작동하지 않는 것을 해결할 수 있는 방법이기도 하다.
CPU 사용량이 100% 이슈는 성능이 부족한 것도 있겠으나, Swap 설정 이후 이용을 해본 뒤로 문제가 발생하지 않았기에 메모리가 부족하여 발생하는 것으로 추측된다.
해결, 리눅스 Swap 설정
먼저 Swap을 만드는 것은 메모리 대신 하드디스크의 용량을 사용하여 메모리처럼 사용하도록 하는 것이기에, 만들려고 하는 Swap 크기만큼 하드디스크 용량이 충분한지 확인해야 한다.(윈도에 있는 가상 메모리와 비슷하다.)
fallocate는 대용량 더미 파일을 만드는 명령어인데, 우리는 이를 이용해 swap에 사용될 공간을 만든다. 그리고 명령어 중 '1G'은 1GB 용량의 파일을 만든다는 의미로 목적에 맞게 용량을 조절하면 된다.
만약 fallocate가 설치되어 있지 않으면 오류가 발생할 것이다. 그때는 아래 괄호의 명렁어를 입력하면 된다.
아래 명령어 중 bs의 '1024'은 byte(바이트) 단위로, 1KB를 의미한다. 그렇게 1KB에 *1048576 하면 1,073,741,824B인 1GB가 된다. 2GB를 설정하고 싶다면 1048576*2=2,097,152를 적어도 되고, 좀 더 간단하게 128MB *16을 해서 2GB를 만들어도 된다.
sudo fallocate -l 1G /swapfile
(sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576)
(sudo dd if=/dev/zero of=/swapfile bs=128M count=16)
그리고 생성된 swapfile 파일의 권한을 600으로 변경해 준다. 나중에 다른 글로 다루려 하는데, 600(rw- --- ---)의 의미는 소유자에게만 접근 권한을 읽기, 쓰기만 허용한다는 의미이다.
sudo chmod 600 /swapfile
권한 설정을 마쳤으니 Swap 설정을 하고, Swap 기능을 활성화한다.
sudo mkswap /swapfile
sudo swapon /swapfile
마지막으로 재부팅을 하더라도 스왑 Swap 설정이 사라지지 않도록 하기 위해서는 etc 폴더의 fstab 파일을 연 뒤 '/swapfile swap swap defaults 0 0'을 입력하면 된다.
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
vi 편집기의 간단한 사용 방법은 아래 가상환경 설정에서 언급한 적이 있으니 참고하시기 바랍니다.
스왑 Swap 확인
설정한 스왑 Swap이 정상적으로 적용됐는지 확인하기 위해서는 'free -h' 명령어를 입력하면 된다. 'swapon -s' 명령어를 통해 확인도 가능하다.(아래 사진은 2GB로 설정해서 Size의 숫자가 다르다.)
스왑 Swap 삭제 및 재설정(용량 늘리기&줄이기)
스왑 Swap을 삭제하거나 재설정을 하여 용량 늘리기, 줄이기를 하는 방법은 모두 비슷하다.
'Swap 삭제 → Swap 재생성' 하는 과정을 거친다. 용량을 늘릴 때는 굳이 삭제를 하지 않고 파일을 늘리면 되지만 깔끔하게 하기 위해선 같은 과정이 나은 듯하다.
먼저 스왑 Swap 기능을 끈 뒤, free -h 명렁어를 입력해 Swap 항목이 사라졌는지 확인한다.
sudo swapoff -v /swapfile
free -h
파일을 삭제하는 rm 명령어를 통해 생성했던 Swap 파일을 삭제한다.
sudo rm /swapfile
위 /etc/fstab에 작성했던 '/swapfile swap swap defaults 0 0' 내용을 삭제한다.
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
다시 용량을 늘리거나 줄이려는 경우, 다시 처음으로 돌아가 과정을 진행하면 된다.