−25%

Windows 연간 결제, 10월 31일까지. 요금제 보기

EQVPS

Linux VPS에 스왑 파일을 추가하는 방법

명령 5개로 스왑 파일을 만들고, 재부팅 후에도 유지되게 하고, swappiness를 조정하세요. 스왑을 얼마나 추가할지, 진짜 해법이 RAM 증설인 경우도 정리했습니다.

작은 서버는 최악의 순간에 메모리가 바닥납니다. apt upgrade, Docker 빌드, 한밤중의 백업 같은 때입니다. 스왑이 없으면 커널의 OOM killer가 프로세스 하나를 골라 강제로 종료하는데, 그게 데이터베이스인 경우가 많습니다. 스왑 파일은 그런 급증에 빠져나갈 길을 만들어 주는 저렴한 안전벨트입니다. 명령 5개면 됩니다.

1. 현재 상태 확인

swapon --show
free -h

swapon --show가 아무것도 출력하지 않으면 아직 스왑이 없는 것입니다.

2. 스왑 파일 만들기

fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

chmod 600은 중요합니다. 스왑에는 비밀 정보를 포함해 메모리에 있던 무엇이든 조각으로 남을 수 있으므로 root만 읽을 수 있어야 합니다. fallocate가 “operation not supported” 오류로 실패하면 대신 dd를 쓰세요.

dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

3. 영구적으로 만들기

이 단계가 없으면 재부팅 시 스왑이 사라집니다.

echo '/swapfile none swap sw 0 0' >> /etc/fstab

4. swappiness 조정

커널이 RAM을 우선하고 주로 압박을 받을 때 스왑을 쓰도록 합니다.

echo 'vm.swappiness=10' > /etc/sysctl.d/99-swap.conf
sysctl --system

5. 확인

swapon --show
free -h

2 GB 스왑 장치가 보여야 하고, cat /proc/sys/vm/swappiness는 10을 출력해야 합니다.

크기는 얼마나?

스왑을 “RAM의 두 배”로 잡지 마세요. 서버에서 스왑은 짧은 급증을 흡수하기 위한 것이지, 메모리에 들어가지 않는 작업을 돌리기 위한 것이 아닙니다.

스왑이 답이 아닐 때

며칠 동안 지켜보세요.

vmstat 5

si와 so 열은 초당 스왑에서 읽어 들이고 스왑으로 써 내는 페이지 수를 보여 줍니다. 가끔 움직이는 것은 정상입니다. 계속 0이 아닌 값이 나온다면 서버에 메모리가 부족해 모든 것이 디스크를 기다리고 있다는 뜻입니다. 이때의 해법은 RAM 증설입니다. VPS에 필요한 RAM을 참고하세요. EQVPS에서는 재설치 없이 더 큰 요금제로 옮길 수 있고, 데이터는 그대로 남습니다.

관련

자주 묻는 질문

스왑은 얼마나 추가해야 하나요?

RAM이 1~2 GB인 서버라면 1~2 GB 스왑 파일이 좋은 기본값입니다. 더 큰 서버에서도 안전망으로는 1~2 GB면 충분합니다. “RAM의 두 배”라는 규칙은 256 MB 서버 시절의 이야기입니다.

스왑을 쓰면 서버가 빨라지나요?

아니요. 스왑은 패키지 업데이트, Docker 빌드, 백업처럼 메모리가 잠깐 바닥날 때의 장애만 막아 줍니다. 디스크에 있는 메모리 페이지는 RAM보다 수천 배 느립니다. 서버가 계속 스왑을 쓴다면 RAM이 더 필요한 것입니다.

swappiness는 무엇을 하나요?

커널이 사용되지 않는 메모리를 얼마나 적극적으로 스왑으로 옮길지 정합니다. 기본값 60은 꽤 일찍 옮기고, 10은 데이터를 RAM에 두고 실제로 압박을 받을 때 주로 스왑을 쓰라고 커널에 알려 줍니다. 대부분의 서버에는 이쪽이 맞습니다.

파티션 대신 스왑 파일을 쓰는 이유는?

파일은 서버를 돌리는 중에도 파티션 테이블을 건드리지 않고 몇 초 만에 만들고, 크기를 바꾸고, 지울 수 있습니다. 최신 파일 시스템에서는 성능도 같습니다.

나중에 스왑을 제거하려면?

'swapoff /swapfile'을 실행하고, /etc/fstab에서 /swapfile 줄을 지운 뒤 'rm /swapfile'을 실행하세요.

댓글

아직 댓글이 없습니다. 첫 번째가 되세요.

댓글 남기기

댓글은 표시되기 전에 검토됩니다.