안녕하세요! 리눅스 서버를 관리하다 보면 "Memory exhausted" 또는 "Out of Memory" 같은 무서운 메시지를 만나거나, 서버가 갑자기 느려지는 경험을 해보신 적 있나요? 😨 이런 문제의 대부분은 바로 RAM(메모리) 부족 때문입니다.
애플리케이션이 필요로 하는 메모리가 실제 물리적인 RAM 용량을 초과할 때 문제가 발생하는데요, 이럴 때 우리를 구해줄 친구가 바로 스왑(Swap) 입니다!
오늘은 서버의 하드 디스크(또는 SSD) 공간의 일부를 빌려와 가상 메모리로 사용하는 방법, 즉 스왑 파일을 생성하고 시스템에 적용하는 방법을 아주 상세하게 알아보겠습니다. 자, 그럼 시작해볼까요? 🚀

🤔 잠깐, 스왑(Swap)이 뭔가요?
스왑은 간단히 말해 'RAM의 확장 공간' 이라고 생각하시면 쉬워요.
- RAM (책상 📚): CPU가 현재 작업하는 데 사용하는 빠르고 비싼 메모리입니다.
- Swap (책상 옆 보조 서랍 🗄️): RAM이 꽉 찼을 때, 당장 사용하지 않는 데이터를 임시로 옮겨두는 하드 디스크의 공간입니다.
물론 하드 디스크는 RAM보다 훨씬 느리기 때문에 스왑을 너무 많이 사용하는 것은 좋지 않아요. 하지만 메모리가 부족해서 서비스가 아예 중단되는 것보다는 훨씬 낫겠죠? 비상시에 시스템의 안정성을 크게 높여주는 중요한 역할을 합니다.
✅ 1단계: 스왑 파일 만들기 📂
가장 먼저 스왑 공간으로 사용할 파일을 만들어야 합니다. 하드 디스크에 "이만큼은 스왑으로 쓸 거야!"라고 예약하는 과정이에요. 여기서는 /swfile이라는 이름으로 1024MB(1GB) 크기의 파일을 만들어 보겠습니다.
1. dd 명령어로 파일 생성하기
터미널을 열고 아래 명령어를 입력해주세요. (root 권한이 필요하니 sudo를 붙여주세요!)
sudo dd if=/dev/zero of=/swfile bs=1M count=1024
명령어가 조금 복잡해 보이죠? 하나씩 살펴볼게요.
- sudo: 관리자 권한으로 명령을 실행해요.
- dd: 디스크나 파일을 다루는 강력한 명령어예요.
- if=/dev/zero: 0으로 가득 찬 데이터를 입력 소스로 사용해요. 즉, 속이 텅 빈 파일을 만드는 거죠.
- of=/swfile: / (최상위 경로)에 swfile이라는 이름으로 파일을 생성해요.
- bs=1M: 데이터를 한 번에 1MB 크기(블록)로 옮겨요.
- count=1024: 위에서 설정한 1MB 크기의 블록을 1024번 반복해요.
- 결과: 1MB * 1024 = 1024MB = 1GB 크기의 파일이 생성됩니다! 🎉
2. 보안 설정은 필수! 🔐
스왑 파일에는 메모리에서 내려온 민감한 정보가 저장될 수 있어요. (예: 비밀번호, 개인정보 등) 따라서 오직 시스템(root 사용자)만 이 파일을 읽고 쓸 수 있도록 권한을 제한해야 합니다.
sudo chmod 600 /swfile
- chmod 600: 파일의 권한을 변경하는 명령어예요. 600은 '소유자(root)만 읽고 쓸 수 있고, 다른 사용자는 아무것도 할 수 없음'을 의미합니다. 보안을 위한 아주 중요한 단계이니 꼭 실행해주세요!
✨ 2단계: 파일을 스왑 공간으로 변신!
지금 /swfile은 그저 0으로 채워진 평범한 파일일 뿐입니다. 리눅스 커널이 이 파일을 "아, 이건 스왑 공간이구나!"라고 인식하게끔 포맷을 해줘야 해요.
sudo mkswap /swfile
- mkswap: "Make Swap"의 줄임말로, 지정된 파일이나 파티션을 스왑 영역으로 초기화해주는 명령어입니다. 이제 시스템은 /swfile을 스왑으로 사용할 준비를 마쳤습니다.
🚀 3단계: 스왑 즉시 활성화하고 확인하기
준비는 끝났습니다! 이제 시스템에 "지금 바로 이 스왑 파일을 사용해!"라고 명령을 내릴 차례입니다.
1. 스왑 활성화
sudo swapon /swfile
- swapon: 스왑 장치를 활성화하는 명령어입니다. 이 명령을 실행하는 즉시 시스템은 /swfile을 가상 메모리로 사용하기 시작합니다.
2. 잘 적용되었는지 확인해볼까요? ✅
정말로 스왑이 잘 적용되었는지 확인해봐야겠죠? 아래 명령어로 확인할 수 있습니다.
sudo swapon --show
결과가 아래와 같이 나온다면 성공입니다!
NAME TYPE SIZE USED PRIO
/swfile file 1G 0B -2
free -h 명령어로도 전체 메모리 상황을 한눈에 볼 수 있어요.
free -h
total used free shared buff/cache available
Mem: 3.8Gi 1.1Gi 2.1Gi 2.0Mi 634Mi 2.5Gi
Swap: 1.0Gi 0B 1.0Gi
Swap 항목에 1.0Gi가 보인다면 완벽하게 적용된 것입니다!
💾 4단계: 재부팅해도 괜찮아! 영구적으로 설정하기
축하합니다! 스왑 파일이 활성화되었습니다. 하지만 이 설정은 일시적이라서 서버를 재부팅하면 스왑이 비활성화됩니다. 😱
재부팅할 때마다 시스템이 자동으로 스왑 파일을 불러오도록 설정 파일을 수정해야 합니다. 이 설정은 /etc/fstab 파일이 담당합니다.
/etc/fstab 파일에 스왑 정보 추가하기
아래 명령어를 실행하면 파일의 가장 마지막 줄에 스왑 설정이 자동으로 추가됩니다.
echo '/swfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
- 이 한 줄의 의미는 다음과 같아요: "시스템아, 부팅할 때마다 /swfile을 swap 타입으로, 기본(defaults) 옵션을 사용해서 활성화해줘!"
이제 서버를 재부팅해도 스왑 파일은 자동으로 활성화될 것입니다. 정말 간단하죠?
맺음말
오늘은 리눅스 서버의 안정성을 한 단계 높여주는 스왑 파일을 생성하고 적용하는 방법에 대해 알아보았습니다.
- dd로 파일 생성 📂
- chmod로 보안 설정 🔐
- mkswap으로 스왑 포맷 ✨
- swapon으로 즉시 활성화 🚀
- /etc/fstab에 등록하여 영구 적용 💾
이제 메모리 부족으로 인한 갑작스러운 서비스 중단 걱정을 조금은 덜 수 있게 되었습니다. 🥳 이 가이드가 여러분의 서버 관리에 큰 도움이 되셨기를 바랍니다!
태그: 리눅스, 스왑, Swap, 가상메모리, 서버관리, 우분투, CentOS, 메모리부족, Linux
'일반IT > 리눅스' 카테고리의 다른 글
| 🕵️♂️ 리눅스 디스크 I/O 병목 현상, 범인부터 장비까지 추적하기! (0) | 2025.10.12 |
|---|---|
| 리눅스 서버 용량 부족? 😱 가장 큰 파일 찾아 삭제하는 초간단 해결법 (0) | 2025.10.11 |
| 리눅스 하드 디스크 추가? 💾 파티션부터 fstab 자동 마운트까지 완벽 가이드 (0) | 2025.10.11 |
| 리눅스 네트워크 3대장 정복하기 🛠️ (IP, Gateway, DNS 설정 기초) (0) | 2025.10.11 |
| 리눅스 서버 탐정 되기 🕵️♂️ 포트 번호로 프로세스 추적하고 마스터 프로세스 찾는 법 (0) | 2025.10.11 |