swap memory file

agnusdei·2024년 11월 17일

💻 리눅스 스왑 파일 (Swap File) 설정 완벽 정리

목표: 물리적 **Random Access Memory (RAM)**가 부족할 때 사용할 보조 메모리 공간인 8GB 크기의 스왑 파일을 생성하고, 재부팅 후에도 자동으로 활성화되도록 설정합니다.

1단계: 현재 스왑 상태 및 메모리 확인 (점검)

가장 먼저 현재 시스템에 스왑 영역이 얼마나 할당되어 있고 사용 중인지 확인합니다.

# 1. 활성화된 스왑 영역 목록 및 크기 확인
sudo swapon --show

# 2. 시스템 메모리 및 스왑 사용량 확인
free -h

2단계: 스왑 파일 생성 및 크기 할당

fallocate 명령어를 사용하여 디스크에 8GB 크기의 파일을 생성합니다. 이 파일이 스왑 공간이 됩니다.

# 8GB 크기의 /swapfile 파일을 생성합니다.
sudo fallocate -l 8G /swapfile

💡 참고: 파일 크기(8G)는 시스템 RAM 크기나 용도에 따라 적절히 설정합니다.


3단계: 스왑 파일 권한 설정 (보안 필수)

스왑 파일은 민감한 메모리 데이터가 저장되므로, 루트(root) 사용자만 읽고 쓸 수 있도록 권한을 설정하는 것이 필수 보안 조치입니다.

# 소유자(root)에게만 읽기(4) 및 쓰기(2) 권한을 부여합니다.
sudo chmod 600 /swapfile

4단계: 스왑 영역으로 초기화 (포맷)

생성된 일반 파일을 리눅스 커널이 스왑 공간으로 인식할 수 있도록 포맷하고 필요한 스왑 시그니처를 작성합니다.

# /swapfile을 스왑 영역으로 설정합니다.
sudo mkswap /swapfile

5단계: 스왑 파일 즉시 활성화

시스템을 재부팅하지 않고 현재 세션에서 스왑 파일을 사용하도록 활성화합니다.

# 스왑 파일을 활성화합니다.
sudo swapon /swapfile

6단계: 활성화 성공 여부 최종 확인

스왑 파일이 시스템에 성공적으로 추가되었고 활성화 상태인지 다시 확인합니다.

# /swapfile이 목록에 있는지, Type이 file인지 확인합니다.
sudo swapon --show

# Swap 항목의 Total 크기가 증가했는지 확인합니다.
free -h

🔁 영구 설정: 재부팅 후 자동 활성화 설정

스왑 파일을 영구적으로 사용하려면, 시스템 부팅 설정 파일인 **/etc/fstab**에 등록해야 합니다.

7단계: /etc/fstab 파일 수정

편집기(nano 권장)를 사용하여 /etc/fstab 파일을 열고, 파일의 맨 마지막 줄에 스왑 파일 정보를 추가합니다.

sudo nano /etc/fstab

파일 끝에 다음 한 줄을 정확히 추가합니다.

/swapfile none swap sw 0 0

필드 의미: /swapfile (경로) - none (마운트 지점) - swap (유형) - sw (옵션) - 0 (Dump) - 0 (Pass)

8단계: 변경 사항 즉시 적용 (선택 사항)

재부팅하지 않고 /etc/fstab에 추가한 내용이 즉시 적용되도록 시스템을 업데이트합니다.

# systemd 설정을 다시 불러옵니다.
sudo systemctl daemon-reload

# /etc/fstab에 등록된 모든 스왑 영역을 활성화합니다.
sudo swapon -a

⚙️ 추가 최적화: Swappiness 값 조정

Swappiness 값은 리눅스가 RAM 대신 **스왑(디스크)**을 얼마나 적극적으로 사용할지 결정하는 설정입니다. 이 값을 낮추면 디스크 I/O를 줄여 성능 향상에 도움이 될 수 있습니다.

9단계: Swappiness 값 영구 설정

  1. 현재 값 확인: (대부분 6060이 기본값)
    cat /proc/sys/vm/swappiness
  2. sysctl.conf 파일 수정: /etc/sysctl.conf 파일을 열어 다음 한 줄을 추가합니다. (1010은 RAM 사용을 최대한 선호한다는 의미)
    sudo nano /etc/sysctl.conf
    # 파일에 다음 줄을 추가:
    vm.swappiness=10
  3. 값 적용:
    # sysctl 설정을 즉시 적용합니다.
    sudo sysctl -p
profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글