리눅스 / 스왑 메모리(Swap Memory) 만드는 방법
Linux에서 스왑 파일을 만들려면 저장 공간에 파일을 준비하고 mkswap으로 초기화한 다음 swapon으로 활성화합니다. 스왑은 메모리 압박을 완화하는 데 도움이 되지만 RAM보다 느리고, 메모리 부족 문제를 모두 해결하거나 프로그램의 정상 동작을 보장하지는 않습니다.
스왑이란 무엇인가요?
스왑(swap)은 사용 중인 메모리 페이지 일부를 저장 장치에 둘 수 있도록 마련한 공간입니다. 디스크의 파일이나 별도 파티션을 사용할 수 있습니다. 이 글은 파일을 추가하는 방법을 설명하며, 예제의 2GiB는 실습용 크기입니다. 필요한 크기는 RAM, 작업량, 여유 공간과 최대 절전 모드 사용 여부 등을 고려해 결정하세요.
시스템이 이미 스왑을 사용하고 있을 수 있습니다. 다음 명령으로 현재 활성화된 항목과 메모리 상태를 확인합니다.
swapon --show
free -h
swapon --show에서 이름과 크기, 사용량을 확인하고, free -h의 Swap 행에서 전체 사용량을 살펴봅니다. 스왑을 늘려도 저장 장치 접근이 많아지면 성능이 떨어질 수 있습니다. 지속적으로 메모리가 부족하다면 작업량과 RAM 증설도 함께 검토하세요.
시작하기 전에 확인하기
아래 절차는 GNU 도구와 util-linux를 사용하는 Linux에서, 루트 파일 시스템이 일반적인 ext4이고 충분한 여유 공간이 있는 경우를 예로 듭니다. 관리자 권한이 필요합니다. 컨테이너나 관리형 서버는 스왑 활성화를 제한할 수 있으므로 운영 정책을 먼저 확인하세요.
findmnt -T / -o TARGET,FSTYPE,SOURCE,OPTIONS
df -h /
파일 시스템 종류와 사용 가능한 공간을 확인합니다. 2GiB 스왑 파일 외에 운영에 필요한 여유 공간도 남겨야 합니다. 예제 경로 /swap-manualfactory에 이미 파일이나 심볼릭 링크가 있으면 사용하지 마세요. 기존 스왑 파일을 다시 초기화하거나 덮어쓰면 데이터와 실행 중인 시스템에 문제가 생길 수 있습니다.
Btrfs는 복사 시 쓰기(Copy-on-Write)와 스냅샷 등에 관한 별도 제약이 있으므로 아래 ext4 절차를 그대로 적용하지 마세요. Btrfs 전용 생성 방법과 조건은 Btrfs 스왑 파일 문서를 확인합니다. 네트워크 파일 시스템이나 다른 파일 시스템도 지원 조건이 다를 수 있습니다.
스왑 파일 만들고 활성화하기
다음은 /swap-manualfactory가 존재하지 않을 때 2GiB 파일을 만드는 예제입니다. GNU dd의 conv=excl은 대상이 이미 존재하면 실패하여 덮어쓰기를 방지합니다. 실패하거나 중단되면 다음 단계로 넘어가지 말고 원인과 생성된 파일을 확인하세요.
sudo dd if=/dev/zero of=/swap-manualfactory bs=1M count=2048 conv=excl status=progress
명령이 성공하면 파일 크기와 경로를 확인하고, 관리자만 읽고 쓸 수 있도록 설정한 다음 스왑 영역으로 초기화합니다. mkswap은 지정한 파일을 변경하므로 경로가 방금 만든 파일인지 반드시 확인하세요.
sudo ls -lh /swap-manualfactory
sudo chmod 600 /swap-manualfactory
sudo mkswap /swap-manualfactory
각 단계가 성공했을 때만 다음 단계를 실행합니다. 아래 명령으로 활성화한 뒤 새 경로가 목록에 나타나는지 확인합니다.
sudo swapon /swap-manualfactory
swapon --show
free -h
파일의 표시 크기는 스왑 헤더 등에 따라 생성한 파일 크기와 정확히 같지 않을 수 있습니다. swapon이 실패하면 오류를 확인하고 부팅 설정에 추가하지 마세요. 스왑 파일에는 구멍이 없어야 하며, 파일 시스템에 따라 fallocate로 만든 파일이 적합하지 않을 수 있습니다. util-linux swapon 설명서는 파일 시스템별 제약을 설명합니다.
부팅 후에도 활성화하기
현재 활성화에 성공한 뒤에만 /etc/fstab에 항목을 추가합니다. 이 파일은 다른 마운트 설정도 담고 있으므로 편집 전에 백업하고, 기존 스왑 항목과 같은 경로가 중복되지 않는지 확인하세요. 아래 백업 경로가 이미 있으면 다른 새 이름을 선택합니다.
sudo cp -a -n /etc/fstab /etc/fstab.before-swap
sudo nano /etc/fstab
편집기에서 기존 내용을 유지하고 아래 한 줄을 추가한 뒤 저장합니다. 예제 경로를 다른 이름으로 만들었다면 실제 경로를 사용하세요.
/swap-manualfactory none swap defaults 0 0
저장 후 파일 내용을 다시 확인하고, 사용할 수 있는 시스템에서는 다음 명령으로 설정을 검토합니다. 이 검사는 실제 재부팅 성공을 보장하지 않습니다.
sudo findmnt --verify --verbose
sudo systemctl daemon-reload
daemon-reload는 systemd를 사용하는 시스템에서 변경된 설정을 다시 읽게 합니다. 검증 오류가 있으면 수정하고, 다른 항목을 무심코 바꾸지 않았는지 확인하세요. 유지보수에 적합한 시점에 재부팅한 뒤 swapon --show로 해당 파일이 다시 활성화됐는지 확인합니다. Red Hat 스왑 관리 문서에서도 등록 및 검증 절차를 확인할 수 있습니다.
비활성화하고 되돌리기
스왑을 끄기 전 swapon --show와 free -h로 사용량과 여유 메모리를 확인하세요. 사용 중인 페이지를 다른 메모리나 스왑으로 옮길 공간이 부족하면 비활성화가 실패하거나 시스템에 부담을 줄 수 있습니다. 운영 중인 시스템에서는 여유 용량과 유지보수 시간을 확보한 뒤 진행합니다.
sudo swapoff /swap-manualfactory
swapon --show
대상 항목이 더 이상 활성 목록에 없는지 확인합니다. 부팅 시 다시 활성화하지 않으려면 /etc/fstab에서 이 작업으로 추가한 줄만 제거하고, systemd 환경에서는 sudo systemctl daemon-reload를 실행합니다. 파일을 삭제하려면 비활성화 성공과 설정 제거를 다시 확인한 뒤 해당 파일만 삭제하세요. 다른 스왑 항목이나 기존 설정은 그대로 둡니다.




