Linux에서 Swap Space 사용/확장하기
- Published on
- Published on
- Authors
- Name
- 신주용
Swap Space란?
리눅스 운영체제에서 Swap Space(스왑 공간, 또는 Swap Memory)란 물리 메모리(RAM) 부족 시 사용되는 가상 메모리입니다1. 디스크 공간 일부를 스왑 공간으로 설정하면 물리 메모리에 공간이 부족할 때 사용하지 않는 데이터(페이지)를 스왑 메모리로 보내고(Swap out) 필요해지면 가져올 수 있어(Swap in) 더 큰 메모리를 사용하는 것과 비슷한 효과를 낼 수 있습니다.
디스크를 사용하기 때문에 아무리 빠른 NVMe SSD를 사용하더라도 RAM보다는 느리다는 근본적인 한계가 있습니다. 하지만 물리 메모리가 넉넉하지 않은 시스템이라면 도움이 될 수도 있는 기능입니다.
이번 글에서는 내 리눅스 시스템에서 (1) Swap Space를 사용 중인지 확인하고 (2) 사용하도록 설정하고 (3) 이미 사용 중이라면 공간을 늘려보겠습니다. 실습에는 Rocky Linux 9 버전을 사용했습니다.
Swap Space 확인
먼저 Swap Space를 사용하고 있는지, 사용한다면 어떤 방식으로 구성되어 있는지를 확인해보겠습니다.
# 설정 안 된 경우
> swapon --show
>
# 파일로 설정 된 경우
> swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
# LV로 설정 된 경우
> swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 4G 0B -2
Swap Space 사용하기
Swap Space를 설정하는 방법에는 크게 파일로 설정하는 방법과 LV(Logical Volume)로 설정하는 방법 두 가지가 있습니다.
swapfile으로 구성
swapfile
을 사용하는 방법은 설정이 간단하고 크기 조정도 상대적으로 쉽습니다. 하지만 파일 시스템 기반이므로 크기가 클수록 성능이 떨어질 수 있습니다. 개인 PC에서 수 GB 이내로 사용하는 경우라면 간단하게 이 방법을 사용하는 것도 괜찮습니다. swapfile
로 Swap Space를 사용해봅시다.
# 2GB(1MB * 2048) 사용
> dd if=/dev/zero of=/swapfile bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 2.48993 s, 862 MB/s
# 권한 설정
> chmod 600 /swapfile
# Swap Space 사용하도록 설정
> mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=a154535d-f970-4da8-aed8-29d516be64e0
> swapon /swapfile
> swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
# 재부팅 후에도 Swap Space를 사용하도록 구성
> vi /etc/fstab
/swapfile swap swap defaults 0 0
LV로 구성
서버에서 쓸 예정이라면 LV를 사용해 구성하는 것이 좋을 수 있습니다. 구성 변경 작업이 상대적으로 복잡하고 LVM에 대한 이해가 필요하지만 파일 시스템이 아니라 디스크의 연속된 블록 공간을 할당받는 방법이므로 성능 면에서는 조금 더 낫습니다.
# PV, VG 준비가 선행되어야 합니다.
# 예시는 `rl`이라는 VG에 2GB 여유 공간이 있는 상태입니다.
> vgs
VG #PV #LV #SN Attr VSize VFree
rl 2 1 0 wz--n- 50.99g <2.00g
# LV 준비
> lvcreate -n swap -l 100%FREE rl
Logical volume "swap" created.
> lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root rl -wi-ao---- <49.00g
swap rl -wi-a----- <2.00g
# Swap Space 사용하도록 설정
> mkswap /dev/rl/swap
Setting up swapspace version 1, size = 2 GiB (2143285248 bytes)
no label, UUID=9d035ea7-96d0-4c6d-be0f-794dbba3fab1
> swapon /dev/rl/swap
> swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 0B -2
# 재부팅 후에도 Swap Space를 사용하도록 구성
> sudo vi /etc/fstab
/dev/mapper/rl-swap none swap defaults 0 0
확장하기
swapfile을 사용하든, LVM을 사용하든 (1) Swap Space 사용을 비활성화하고 (2) 공간을 확장해서 (3) 다시 스왑으로 만들고 (4) 활성화하는 과정을 거칩니다.
다만 여기서 ⚠️ 주의 ⚠️ 할 점은 swapoff
로 비활성화 하기 전 현재 swap이 사용하는 공간만큼 물리 메모리에 여유가 있어야 한다는 점입니다. 아래 예시에서는 Swap이 545M를 사용 중인데 물리 메모리에 723M 만큼의 여유 공간이 있으므로 확장 과정을 진행하는 데 문제가 없습니다. 꼭 확인해보고 진행하시기 바랍니다.
> free -m
total used free shared buff/cache available
Mem: 1773 709 723 4 493 1064
Swap: 2083 545 1538
swapfile로 사용 중인 경우
앞서 swapfile
로 사용할 때의 장점이 설정이 간단하고 크기 조절도 상대적으로 쉽다고 소개했습니다. 2GB로 설정했던 /swapfile
을 4GB로 늘려봅시다.
# 사용 중인 스왑 파일 비활성화, 삭제
> swapoff /swapfile
> rm /swapfile
# 기존보다 더 크게 공간 잡기
> dd if=/dev/zero of=/swapfile bs=1M count=4096
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 4.35435 s, 986 MB/s
# 권한 설정
> chmod 600 /swapfile
# Swap Space 사용하도록 설정
> mkswap /swapfile
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=82d8c29e-b519-4cdc-b57c-268bb2760d2a
> swapon /swapfile
> swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 4G 0B -2
LV로 구성된 경우
LV로 구성된 경우도 크기를 확장하는 과정은 비슷합니다. 하지만 LVM에 대한 지식이 조금 더 필요합니다.
# 사용 중인 스왑 파일 비활성화
> swapoff /dev/rl/swap
# VG에 여유 공간 있는지 확인
> vgs
VG #PV #LV #SN Attr VSize VFree
rl 3 2 0 wz--n- <52.99g <2.00g
# LV 확장
> lvresize /dev/rl/swap -l +100%FREE
Size of logical volume rl/swap changed from <2.00 GiB (511 extents) to 3.99 GiB (1022 extents).
Logical volume rl/swap successfully resized.
# Swap Space 사용하도록 설정
> mkswap /dev/rl/swap
mkswap: /dev/rl/swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 4 GiB (4286574592 bytes)
no label, UUID=cf2422f7-b9d4-46e2-a660-27cc5e0a3554
> swapon /dev/rl/swap
> swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 4G 0B -2
이렇게 부족한 물리 메모리 공간을 도와줄 Swap Space를 사용하고 확장할 수 있습니다.
참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.
- LVM(Logical Volume Manager)
Footnotes
Red Hat. "15장. Swap Space." Red Hat Documentation. https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-swapspace (accessed Dec. 25, 2024). ↩