시스템(Linux)

리눅스에서 사용되는 SWAP 메모리 추가하는 방법에 대해 알아보겠습니다.

forward error correction Circle 2025. 11. 24. 08:54
반응형

Ⅰ. 리눅스에서 사용되는 SWAP 메모리 란?

스왑(SWAP)은 컴퓨터가 메모리가 부족할 때, 하드디스크나 SSD의 일부 공간을 ‘임시 메모리’처럼 사용하는 기술입니다.
컴퓨터는 여러 프로그램을 동시에 실행하면 RAM(실제 메모리)이 꽉 찰 수 있습니다. 이때 당장 사용하지 않는 데이터를 하드디스크 공간으로 잠시 옮겨두고, RAM에 빈자리를 만드는 과정이 일어납니다.

이렇게 “데이터를 잠깐 옮겨두는 공간”이 바로 SWAP 메모리(가상 메모리)입니다. SWAP이 있으면 RAM이 부족해도 컴퓨터가 갑자기 멈추거나 프로그램이 꺼지는 일을 줄여줍니다. 즉, 비상시에만 사용하는 백업 공간이라고 보면 됩니다.

 

Ⅱ. 리눅스에서 Swap 메모리가 없었을 때의 영향도

 ⅰ. Swap 메모리가 없을 때 발생할 수 있는 영향
   1) Swap은 물리 메모리가 부족할 때 디스크 공간을 임시로 메모리처럼 사용하는 영역이다.
   2) Swap이 아예 없는 상태에서는 다음과 같은 문제가 발생할 수 있다.
 ⅱ. 메모리 부족(Out of Memory, OOM) 발생 가능성 증가
   1) RAM이 가득 차면 커널의 OOM Killer가 동작하여 프로세스를 강제로 종료한다.
   2) 종료 기준은 프로세스의 메모리 점유율, 중요도(OOM Score), 우선순위 등을 기반으로 선정된다.
   3) 웹서비스, DB, 애플리케이션 등이 예고 없이 종료될 위험 존재.
 ⅲ. 시스템 전체의 안정성 저하
   1) Swap이 없으면 순간적인 메모리 spike에 대응하지 못해 서비스 요청이 몰릴 때 장애 가능성이 커진다.
   2) 특히 JVM 기반 애플리케이션(예: Tomcat, Elasticsearch)은 GC 구간에서 메모리 급증 시 OOM이 발생하기 쉽다.
  ⅳ. 캐시 활용 능력 저하
   1) Linux는 free RAM을 페이지 캐시·버퍼로 활용하여 파일 I/O 성능을 높임
   2) Swap이 없으면 캐시를 줄일 여유가 없어 성능 최적화가 제한된다.
  ⅴ. 컨테이너·가상화 환경 불안정
   1) Docker, Kubernetes는 cgroup으로 메모리를 분리 관리
    2) host swap이 없으면 "memory" 제한 설정 시 컨테이너 종료(OOMKilled)가 더 자주 발생한다.

Ⅲ. SWAP 메모리가 없는 경우 추가하는 방법

Swap 파일 또는 Swap 파티션 두 가지 방식이 있습니다.

RAM 용량 과거 권장(2배) 최근 권장(1~1.5배) 최대 절전(2배/1.5배)
8GB 16GB ​ 8GB​ 16GB​
16GB 32GB ​ 8~16GB​ 24GB​

※ 8GB 이상의 시스템에서는 실제로 2배까지 스왑을 할당하지 않고, 사용 패턴에 맞춰 8GB~16GB 정도로 설정하는 것이 일반적.
    최대절전, 대규모 데이터 작업, 특별한 용도(예: SAP 등)가 아니라면 과도하게 큰 스왑은 불필요합니다.

 

ⅰ. Swap 파일을 생성하여 추가하는 방법(일반적으로 가장 많이 사용)
  1) swap 파일 생성

[root@localhost ~]# fallocate -l 8G /swapfile
※ fallocate이 안 되는 파일시스템일 경우
dd if=/dev/zero of=/swapfile bs=1M count=4096

  2) 권한 변경

[root@localhost ~]# chmod 600 /swapfile

  3)  swap 설정

[root@localhost ~]# mkswap /swapfile
[root@localhost ~]# swapon /swapfile

  4) 영구 적용

[root@localhost ~]# echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

 

 

ⅱ. Swap 파티션을 새로 만들어 추가하는 방법
  1) 빈 디스크 또는 남는 파티션 확인

[root@localhost ~]# lsblk

  2) 파티션 생성(fdisk or parted)

swap 영역 설정
[root@localhost ~]# mkswap /dev/sdXn

  3) 활성화

[root@localhost ~]# swapon /dev/sdXn

  4) fstab 등록

[root@localhost ~]# echo '/dev/sdXn swap swap defaults 0 0' | sudo tee -a /etc/fstab




반응형