[Linux] 스왑 메모리 (swap memory)

스왑 메모리는 쉽게 말해서 하드디스크를 램 메모리처럼 쓰게 해주는 기술을 말한다.

원래 메모리란 것은 상대적으로 크기가 작고 비싼 편인데, 문제는 메모리 사용량이 넘치면 OS가 강제로 앱들을 죽여버린다는 것이다.
이런 문제는 당연히 서버 환경에서는 장애로까지 이어질 수 있다.

이런 상황을 해결하기 위한 절충안이 스왑 메모리다.

https://phoenixnap.com/kb/swap-memory
그냥 메모리가 꽉 차면 디스크의 공간을 임시로 메모리처럼 사용하는 것이다.

당연히 디스크니까 느리다.
속도를 포기하는 대신 안정성을 확보하는 방법론이다.

이러한 기술은 대부분의 현대 OS가 지원한다.
Linux는 스왑 메모리라고 부르고, Windows에서는 가상 메모리라고 부른다.




swap 사용 확인

linux에서 아래 2가지 명령을 사용해서 스왑 사용 상태를 체크할 수 있다.

swapon --show
free -h

이렇게 아무것도 뜨지 않으면 설정이 되어있지 않은 것이다.




swap 설정하기

swap 메모리를 할당하기 위해서는 의미없는 쓰레기 파일을 하나 만들어줄 필요가 있다.
fallocate 명령을 통해 2기가짜리 공간을 파일로 할당해준다.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile

그리고 mkswap, swapon 명령을 통해 스왑을 활성화해주면 끝이다.

sudo mkswap /swapfile
sudo swapon /swapfile

그러면 swap 설정이 활성화된 것을 확인할 수 있다.

근데 문제는, swapon 명령은 휘발성이라서 재부팅되면 증발한다는 것이다.
이걸 지속적으로 반영되게 하려면 /etc/fstab 파일에 해당 설정을 추가해줘야 한다.

저 맨 밑에 "/swapfile none swap sw 0 0" 한줄만 추가해주면 되는데


sudo echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

이 명령 한줄로 때워도 된다.




swap 해제하기

스왑을 끄려면 다음 명령을 통해 간단하게 처리할 수 있다.

sudo swapoff -a

이 명령 또한 휘발성이라서 /etc/fstab에 설정이 있으면 재부팅시에 또 켜진다.

영구적으로 해제하려면

swapfile 라인을 통째로 주석치거나 지우면 된다.