LA FORET ROUGE

Linux에서 Swap Space 사용/확장하기

⏱ 4m | Categories: OS | Tags: LINUX , OS , SWAP SPACE , MEMORY

Linux에서 Swap Space 또는 Swap Memory란 부족한 물리 메모리 크기를 보완해주는 가상 메모리입니다. 내 리눅스 머신이 스왑을 사용 중인지 확인해보고 사용하도록 설정해봅시다. 이미 사용 중이라면 swapfile과 LVM 중 어떤 방법으로 구성되어 있는지 확인하고 스왑 공간 크기를 늘려봅시다. 실습에는 Rocky Linux 9버전을 사용합니다.

{/* asDisclosure */}

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를 사용하고 있는지, 사용한다면 어떤 방식으로 구성되어 있는지를 확인해보겠습니다.

 1# 설정 안 된 경우
 2> swapon --show
 3> 
 4
 5# 파일로 설정 된 경우
 6> swapon --show
 7NAME      TYPE SIZE USED PRIO
 8/swapfile file   4G   0B   -2
 9
10# LV로 설정 된 경우
11> swapon --show
12NAME      TYPE      SIZE USED PRIO
13/dev/dm-1 partition   4G   0B   -2

Swap Space 사용하기

Swap Space를 설정하는 방법에는 크게 파일로 설정하는 방법과 LV(Logical Volume)로 설정하는 방법 두 가지가 있습니다.

swapfile으로 구성

swapfile을 사용하는 방법은 설정이 간단하고 크기 조정도 상대적으로 쉽습니다. 하지만 파일 시스템 기반이므로 크기가 클수록 성능이 떨어질 수 있습니다. 개인 PC에서 수 GB 이내로 사용하는 경우라면 간단하게 이 방법을 사용하는 것도 괜찮습니다. swapfile로 Swap Space를 사용해봅시다.

 1# 2GB(1MB * 2048) 사용
 2> dd if=/dev/zero of=/swapfile bs=1M count=2048
 32048+0 records in
 42048+0 records out
 52147483648 bytes (2.1 GB, 2.0 GiB) copied, 2.48993 s, 862 MB/s
 6
 7# 권한 설정
 8> chmod 600 /swapfile
 9
10# Swap Space 사용하도록 설정
11> mkswap /swapfile
12Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
13no label, UUID=a154535d-f970-4da8-aed8-29d516be64e0
14> swapon /swapfile
15> swapon --show
16NAME      TYPE      SIZE USED PRIO
17/swapfile file        2G   0B   -2
18
19# 재부팅 후에도 Swap Space를 사용하도록 구성
20> vi /etc/fstab
21/swapfile swap swap defaults 0 0

LV로 구성

서버에서 쓸 예정이라면 LV를 사용해 구성하는 것이 좋을 수 있습니다. 구성 변경 작업이 상대적으로 복잡하고 LVM에 대한 이해가 필요하지만 파일 시스템이 아니라 디스크의 연속된 블록 공간을 할당받는 방법이므로 성능 면에서는 조금 더 낫습니다.

 1# PV, VG 준비가 선행되어야 합니다.
 2# 예시는 `rl`이라는 VG에 2GB 여유 공간이 있는 상태입니다.
 3> vgs
 4  VG #PV #LV #SN Attr   VSize  VFree 
 5  rl   2   1   0 wz--n- 50.99g <2.00g
 6
 7# LV 준비
 8> lvcreate -n swap -l 100%FREE rl
 9  Logical volume "swap" created.
10> lvs
11  LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
12  root rl -wi-ao---- <49.00g                                                    
13  swap rl -wi-a-----  <2.00g 
14
15# Swap Space 사용하도록 설정
16> mkswap /dev/rl/swap 
17Setting up swapspace version 1, size = 2 GiB (2143285248 bytes)
18no label, UUID=9d035ea7-96d0-4c6d-be0f-794dbba3fab1
19> swapon /dev/rl/swap
20> swapon --show
21NAME      TYPE      SIZE USED PRIO
22/dev/dm-1 partition   2G   0B   -2
23
24# 재부팅 후에도 Swap Space를 사용하도록 구성
25> sudo vi /etc/fstab
26/dev/mapper/rl-swap     none                    swap    defaults        0 0

확장하기

swapfile을 사용하든, LVM을 사용하든 (1) Swap Space 사용을 비활성화하고 (2) 공간을 확장해서 (3) 다시 스왑으로 만들고 (4) 활성화하는 과정을 거칩니다.

다만 여기서 ⚠️ 주의 ⚠️ 할 점은 swapoff로 비활성화 하기 전 현재 swap이 사용하는 공간만큼 물리 메모리에 여유가 있어야 한다는 점입니다. 아래 예시에서는 Swap이 545M를 사용 중인데 물리 메모리에 723M 만큼의 여유 공간이 있으므로 확장 과정을 진행하는 데 문제가 없습니다. 꼭 확인해보고 진행하시기 바랍니다.

1> free -m
2               total        used        free      shared  buff/cache   available
3Mem:            1773         709         723           4         493        1064
4Swap:           2083         545        1538

swapfile로 사용 중인 경우

앞서 swapfile로 사용할 때의 장점이 설정이 간단하고 크기 조절도 상대적으로 쉽다고 소개했습니다. 2GB로 설정했던 /swapfile을 4GB로 늘려봅시다.

 1# 사용 중인 스왑 파일 비활성화, 삭제
 2> swapoff /swapfile
 3> rm /swapfile
 4
 5# 기존보다 더 크게 공간 잡기
 6> dd if=/dev/zero of=/swapfile bs=1M count=4096
 74096+0 records in
 84096+0 records out
 94294967296 bytes (4.3 GB, 4.0 GiB) copied, 4.35435 s, 986 MB/s
10
11# 권한 설정
12> chmod 600 /swapfile
13
14# Swap Space 사용하도록 설정
15> mkswap /swapfile
16Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
17no label, UUID=82d8c29e-b519-4cdc-b57c-268bb2760d2a
18> swapon /swapfile
19> swapon --show
20NAME      TYPE      SIZE USED PRIO
21/swapfile file        4G   0B   -2

LV로 구성된 경우

LV로 구성된 경우도 크기를 확장하는 과정은 비슷합니다. 하지만 LVM에 대한 지식이 조금 더 필요합니다.

 1# 사용 중인 스왑 파일 비활성화
 2> swapoff /dev/rl/swap
 3
 4# VG에 여유 공간 있는지 확인
 5> vgs
 6  VG #PV #LV #SN Attr   VSize   VFree 
 7  rl   3   2   0 wz--n- <52.99g <2.00g
 8
 9# LV 확장
10> lvresize /dev/rl/swap -l +100%FREE
11  Size of logical volume rl/swap changed from <2.00 GiB (511 extents) to 3.99 GiB (1022 extents).
12  Logical volume rl/swap successfully resized.
13
14# Swap Space 사용하도록 설정
15> mkswap /dev/rl/swap
16mkswap: /dev/rl/swap: warning: wiping old swap signature.
17Setting up swapspace version 1, size = 4 GiB (4286574592 bytes)
18no label, UUID=cf2422f7-b9d4-46e2-a660-27cc5e0a3554
19> swapon /dev/rl/swap
20> swapon --show
21NAME      TYPE      SIZE USED PRIO
22/dev/dm-1 partition   4G   0B   -2

이렇게 부족한 물리 메모리 공간을 도와줄 Swap Space를 사용하고 확장할 수 있습니다.

참고: 이 글에서 언급되었으나 깊게 설명하지 않은 내용입니다.

  • LVM(Logical Volume Manager)

  1. 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). ↩︎

Comments

Link copied to clipboard!