SW/리눅스

Linux : Ubuntu 22.04 : 스왑 공간을 추가 방법, 예제, 명령어

얇은생각 2024. 1. 23. 07:30
반응형

스왑은 물리적 RAM 메모리의 양이 가득 차 있을 때 사용되는 디스크 드라이브의 공간입니다. Linux 시스템은 RAM이 부족하면 비활성 페이지를 RAM에서 스왑 공간으로 이동합니다.

스왑 공간은 전용 스왑 파티션, 스왑 파일 또는 파티션과 파일의 조합 형태를 취할 수 있습니다. 일반적으로 가상 머신에서 Ubuntu를 실행할 때 스왑 파티션은 존재하지 않으며 유일한 옵션은 스왑 파일을 생성하는 것입니다.

이 문서에서는 Ubuntu 22.04 시스템에서 스왑 파일을 추가하는 단계를 안내합니다.

 

 

Linux : Ubuntu 22.04 : 스왑 공간을 추가 방법, 예제, 명령어

 

 

시작하기 전에

스왑은 물리적 메모리를 대체하는 것이 아닙니다. 스왑 공간은 드라이브의 일부이므로 물리적 메모리보다 액세스 시간이 느립니다. 시스템의 메모리가 지속적으로 부족하면 RAM을 더 추가해야 합니다.

대부분의 경우 스왑 파일의 크기는 Linux 시스템의 물리적 RAM에 따라 달라집니다:

 

RAM 2GB 미만인 시스템 - RAM 양의 2배입니다.

RAM 크기가 2 ~ 8GB인 시스템 - RAM 크기와 동일합니다.

RAM 8GB 이상인 시스템 - 4GB 이상의 스왑.

sudo 권한을 가진 루트 또는 사용자만 스왑 파일을 활성화할 수 있습니다.

 

시작하기 전에 이미 시스템에 스왑이 있는지 확인하는 것이 좋습니다. 다음 명령을 사용하여 이를 수행할 수 있습니다:

sudo swapon --show

 

 

출력이 비어 있으면 시스템에 스왑 공간이 구성되어 있지 않음을 의미합니다. 그렇지 않으면 명령에 구성된 스왑 공간 목록이 표시됩니다.

또 다른 옵션은 free 명령을 사용하는 것입니다:

이 명령은 시스템의 메모리 사용량과 스왑 공간에 대한 정보를 인쇄합니다:

free -h

# The command will print the information about the system’s memory usage, as well as the swap space:
# 
#                total        used        free      shared  buff/cache   available
# Mem:           3.8Gi       563Mi       2.8Gi       0.0Ki       516Mi       3.1Gi
# Swap:             0B          0B          0B

 

 

스왑 파일 생성

이 가이드에서는 4GB 스왑 파일을 생성합니다. 스왑을 더하거나 더 적게 추가해야 할 경우 4G를 필요한 스왑 공간 크기로 교체합니다.

파일을 만들기 전에 이 프로세스를 성공적으로 완료하기에 충분한 디스크 공간이 있는지 확인하십시오. df 명령을 사용하여 시스템의 디스크 공간 사용량에 대한 자세한 보고서를 얻을 수 있습니다:

여기서 루트 파일 시스템(/)은 파일을 생성하기에 충분한 여유 공간(53G)을 가집니다.

df -h

# Here, the root filesystem (/) has enough free space (53G) to create the file.
# 
# Filesystem                         Size  Used Avail Use% Mounted on
# tmpfs                              197M  948K  196M   1% /run
# /dev/mapper/ubuntu--vg-ubuntu--lv   62G  6.3G   53G  11% /
# tmpfs                              982M     0  982M   0% /dev/shm
# tmpfs                              5.0M     0  5.0M   0% /run/lock
# /dev/sda2                          2.0G  129M  1.7G   8% /boot
# tmpfs                              197M  4.0K  197M   1% /run/user/1000

 

 

첫 번째 단계는 실패에 대한 파일입니다.

sudo fallocate -l 4G /swap.img

 

 

fallocate 유틸리티가 시스템에 없거나 fallocate failed: 작업이 지원되지 않습니다라는 오류 메시지가 나타나면 다음 명령을 사용하여 스왑 파일을 만듭니다:

sudo dd if=/dev/zero of=/swap.img bs=1024 count=4194304

 

 

파일이 생성되면 일반 사용자가 파일을 쓰고 읽지 못하도록 파일 사용 권한을 600으로 설정합니다:

sudo chmod 600 /swap.img

 

 

그런 다음 파일에 Linux 스왑 영역을 생성합니다:

sudo mkswap /swap.img

# Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
# no label, UUID=6f66b47a-fa4a-4346-8163-dc0337066572

 

 

다음 명령을 실행하여 스왑 파일을 활성화합니다:

sudo swapon /swap.img

 

 

변경 내용을 영구적으로 변경하려면 /etc/fstab 파일을 엽니다:

sudo nano /etc/fstab

 

 

다음 행을 붙여넣습니다:

# /etc/fstab

/swap.img swap swap defaults 0 0

 

 

다음과 같이 스왑 온 또는 free 명령을 사용하여 스왑이 활성화되어 있는지 확인합니다:

sudo swapon --show

# NAME      TYPE SIZE USED PRIO
# /swap.img file   4G   0B   -2

 

sudo free -h

#                total        used        free      shared  buff/cache   available
# Mem:           3.8Gi       566Mi       2.8Gi       0.0Ki       516Mi       3.1Gi
# Swap:          4.0Gi          0B       4.0Gi

 

 

Swappiness 값 조정

스와프니스는 시스템이 스와프 공간을 얼마나 자주 사용할 것인지를 정의하는 리눅스 커널 속성입니다. 0에서 100 사이의 값을 가질 수 있습니다. 값이 작으면 커널은 가능하면 스와프 공간을 피하려고 하는 반면, 값이 높으면 커널은 스와프 공간을 더 공격적으로 사용하게 됩니다.

Ubuntu에서는 기본 swappiness 값이 60으로 설정되어 있습니다. 다음 명령을 입력하여 현재 값을 확인할 수 있습니다:

cat /proc/sys/vm/swappiness

# 60

 

 

대부분의 Linux 시스템에서는 60의 스와프니스 값이 괜찮지만 프로덕션 서버의 경우 더 낮은 값을 설정해야 할 수도 있습니다.

예를 들어 swappiness 값을 10으로 설정하려면 다음을 실행합니다:

sudo sysctl vm.swappiness=10

 

 

재부팅 시에도 이 매개 변수를 지속적으로 유지하려면 /etc/sysctl.conf 파일에 다음 행을 추가합니다:

# /etc/sysctl.conf

vm.swappiness=10

 

 

최적의 스와프니스 값은 시스템 작업량과 메모리 사용 방법에 따라 달라집니다. 최적의 값을 찾기 위해서는 이 매개변수를 작은 단위로 조정해야 합니다.

 

 

스왑 파일 제거

스왑 파일을 비활성화하고 삭제하려면 먼저 스왑 공간을 비활성화합니다:

sudo swapoff -v /swap.img

 

 

그런 다음 /etc/fstab 파일에서 스왑 파일 항목 /swap.img 스왑 기본값 0을 제거합니다.

마지막으로 rm 명령을 사용하여 실제 swap.img 파일을 제거합니다:

sudo rm /swap.img

 

 

결론

Ubuntu 22.04 시스템에서 스왑 파일을 생성하고 스왑 공간을 활성화 및 구성하는 방법을 보여드렸습니다.

반응형