반응형
Notice
Recent Posts
Recent Comments

07-19 20:53
관리 메뉴

SaevOps

[리눅스] Swap Partition & Swap File 본문

리눅스

[리눅스] Swap Partition & Swap File

세브웁스 2025. 5. 21. 10:00
반응형

스왑 공간, 파티션이냐 파일이냐? 당신의 선택은? (feat. 리눅스 스왑 설정 완벽 가이드) 💾

리눅스 시스템에서 RAM이 부족할 때, 하드 디스크의 일부를 메모리처럼 활용하는 스왑(Swap) 공간은 시스템 안정성에 중요한 역할을 합니다. 이 스왑 공간을 설정하는 방법에는 크게 스왑 파티션스왑 파일 두 가지 방식이 있습니다. 각각 어떤 특징을 가지고 있으며, 어떤 상황에 더 적합할까요? 함께 자세히 알아보겠습니다.

🧐 스왑 파티션 vs 스왑 파일, 핵심 비교

특징스왑 파티션 (Swap Partition)스왑 파일 (Swap File)
구조 스왑 전용의 독립적인 하드 디스크 영역 파일 시스템 내에 존재하는 특수한 파일
활성화 시스템 부팅 시 자동 활성화, 물리 파티션으로 설정 필수 필요 시 생성 및 활성화/비활성화 가능
유연성 파티션 크기 변경 어려움 파일 크기 조절 용이
생성 용이성 디스크 파티션 재분할 필요 빈 공간만 있다면 간편하게 생성 가능
사용 편의성 시스템 관리 관점에서 직관적 파일 시스템 관리와 함께 고려 필요
성능 일반적으로 약간 더 빠를 수 있음 (디스크 단편화 영향 적음) 파일 시스템을 거치므로 약간의 성능 저하 가능성 존재
 

📏 RAM 용량별 권장 스왑 공간

시스템의 RAM 용량에 따라 적절한 스왑 공간 크기를 설정하는 것이 중요합니다. 일반적으로 다음과 같은 가이드라인을 따릅니다.

RAM 용량 (GB)권장 스왑 용량
2GB 이하 RAM의 2배
2 ~ 8 GB RAM과 동일한 크기
8 ~ 64 GB 4GB ~ RAM 용량의 1/2배
64GB 초과 최소 4GB
 

주의: 위 권장 용량은 일반적인 가이드라인이며, 실제 워크로드에 따라 스왑 공간 요구량이 달라질 수 있습니다.

🛠️ 스왑 파티션에서 스왑 파일로 전환하기

기존에 스왑 파티션을 사용하던 시스템에서 스왑 파일로 전환하는 방법을 알아봅니다. 아래 예시는 5GB 크기의 스왑 파일을 설정하는 과정을 보여줍니다.

Bash
 
# 1. 5GB 크기의 스왑 파일 생성
sudo fallocate -l 5G /swapfile5G

# 2. 스왑 파일의 권한을 루트만 읽고 쓸 수 있도록 설정 (보안 중요!)
sudo chmod 600 /swapfile5G

# 3. 스왑 영역으로 포맷
sudo mkswap /swapfile5G
Setting up swapspace version 1, size = 5 GiB (5368705024 bytes)
no label, UUID=a60f2f93-17eb-48a4-a92c-07b9cdfcb5c0

# 4. 스왑 파일 활성화
sudo swapon /swapfile5G

# 5. 현재 활성화된 스왑 공간 확인
sudo swapon --show
NAME        TYPE      SIZE  USED PRIO
/dev/xvda3  partition   2G 34.5M   -2
/swapfile5G file        5G    0B   -3

# 6. 시스템의 전체 메모리 및 스왑 정보 확인
free -h
              total        used        free      shared  buff/cache   available
Mem:          763Mi       121Mi       431Mi       3.0Mi       210Mi       525Mi
Swap:         7.0Gi        34Mi       7.0Gi

# 7. 스왑 메모리를 사용하는 프로세스 확인 (사용량 기준 내림차순 정렬)
grep VmSwap /proc/*/status | sort -k 2 -nr
*/

잠깐! 위 과정에서 grep VmSwap 명령 실행 직후 메모리 사용량이 급증하는 현상이 발생할 수 있습니다. 이는 시스템이 스왑 공간을 적극적으로 사용하기 시작하면서 나타나는 일시적인 현상일 수 있지만, 예상치 못한 성능 저하를 유발할 수도 있으므로 원인 파악이 필요합니다.

Bash
 
# 8. 다시 활성화된 스왑 공간 확인
sudo swapon --show
NAME        TYPE      SIZE  USED PRIO
/dev/xvda3  partition   2G 34.5M   -2
/swapfile5G file        5G    0B   -3

# 9. 기존 스왑 파티션 비활성화
sudo swapoff /dev/xvda3

# 10. 비활성화된 스왑 파티션 확인
sudo swapon --show
NAME        TYPE SIZE USED PRIO
/swapfile5G file   5G   0B   -2

 

마지막으로, 시스템 부팅 시 스왑 파일이 자동으로 활성화되도록 /etc/fstab 파일을 수정해야 합니다.

/swapfile5G swap swap defaults 0 0

🔄 스왑 파티션을 다른 스왑 파티션으로 변경하기

기존 스왑 파티션의 크기를 변경하거나 다른 파티션을 스왑 공간으로 사용하고 싶을 때는 다음과 같은 단계를 따릅니다.

Bash
 
# 1. 파티션 정보 확인
sudo fdisk -l /dev/xvda
Disk /dev/xvda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75e5df6d

Device     Boot    Start      End  Sectors Size Id Type
/dev/xvda1 * 2048  2099199  2097152   1G 83 Linux
/dev/xvda2       2099200 37748735 35649536  17G 83 Linux
/dev/xvda3      37748736 41943039  4194304   2G 83 Linux

# 2. fdisk를 사용하여 파티션 타입 변경 (예: /dev/xvda3)
sudo fdisk /dev/xvda

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): t
Partition number (1-3, default 3): 3
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

Command (m for help): w
The partition table has been altered.
Syncing disks.

# 3. 변경된 파티션 정보 확인
sudo fdisk -l /dev/xvda
Disk /dev/xvda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x75e5df6d

Device     Boot    Start      End  Sectors Size Id Type
/dev/xvda1 * 2048  2099199  2097152   1G 83 Linux
/dev/xvda2       2099200 37748735 35649536  17G 83 Linux
/dev/xvda3      37748736 41943039  4194304   2G 82 Linux swap / Solaris

# 4. 변경된 스왑 파티션 활성화
sudo swapon /dev/xvda3

# 5. 활성화된 스왑 공간 확인
sudo swapon --show
NAME        TYPE      SIZE USED PRIO
/dev/xvda3  partition   2G   0B   -2

# 6. 메모리 및 스왑 정보 확인
free -h
              total        used        free      shared  buff/cache   available
Mem:          763Mi       149Mi       396Mi       6.0Mi       217Mi       494Mi
Swap:         2.0Gi          0B       2.0Gi

이 경우에도 /etc/fstab 파일을 수정하여 변경된 스왑 파티션이 부팅 시 자동으로 활성화되도록 설정해야 합니다.

/dev/xvda3 swap swap defaults 0 0

🤔 어떤 방식을 선택해야 할까?

  • 유연성을 중시한다면: 스왑 파일이 더 나은 선택입니다. 필요에 따라 크기를 쉽게 조절할 수 있으며, 파티션 재분할 없이 스왑 공간을 확보할 수 있습니다. 특히 클라우드 환경이나 가상 머신에서 편리합니다.
  • 성능을 조금이라도 더 중요하게 생각한다면: 스왑 파티션이 약간의 성능 우위를 가질 수 있습니다. 디스크 단편화의 영향을 덜 받고, 스왑 전용 공간으로 관리되기 때문입니다.
  • 기존 시스템 환경: 이미 스왑 파티션이 설정되어 있다면, 특별한 이유가 없는 한 그대로 사용하는 것도 괜찮습니다.

결론적으로, 대부분의 현대 리눅스 시스템에서는 스왑 파일의 편리함과 충분한 성능으로 인해 스왑 파일 방식이 널리 사용되고 있습니다. 자신의 시스템 환경과 필요에 맞춰 적절한 스왑 공간 설정 방식을 선택하시기 바랍니다. 🛠️

반응형
Comments