Amazon Linux 2023 Swap 메모리 설정하기

linux Linux

t2.micro(Amazon Linux 2023) 환경에서는 물리적 메모리 1Giga Byte 밖에 사용할 수 없기 때문에, 동시 액세스가 많은 사이트를 세우는 경우, 일시적으로 물리 메모리가 부족하게 되어 WordPress가 이상 종료합니다. 이를 피하기 위해 실제 메모리를 추가하는 해결법이 있지만 그렇게 되면 매월 AWS의 청구 금액이 증가합니다. 이 글에서는 Swap 메모리를 사용하여 일시적으로 물리 메모리의 데이터를 저장하고, 메모리 증설과 같은 효과를 얻을 수 있는 Swap 메모리를 설정하는 순서를 정리했습니다.

[가상 Swap 메모리]
물리 메모리와 통합적으로 관리됩니다. 시스템은 더 자주 액세스되는 데이터를 물리적 메모리에 유지하고 유휴 상태의 데이터를 Swap 메모리에 배치하여 최적의 성능을 제공합니다. 이렇게 하면 메모리 사용 효율이 향상됩니다.

현재 메모리 상태 확인

다음 free 명령과 df 명령을 실행하여 swap 메모리와 디스크의 여유 공간 및 사용량을 확인합니다.

AWS가 제공하는 Amazon EC2(Elastic Compute Cloud) 초기 1년 무료 t2.micro Linux 환경을 구축하여 워드프레스를 설치, 블로그를 시작할 때의 초기 상태에서는 Swap 메모리가 Swap: 0 0 0으로 할당되지 않았음을 확인합니다.

$ free
       total   used  free shared buff/cache available
Mem:  972580 425808 98100  36628     448672    353832
Swap:      0      0     0

Linux 시스템의 df 명령을 사용하여 Swap 메모리 할당 전의 디스크 사용량을 표시합니다.

$ df
Filesystem 1K-blocks    Used Available Use% Mounted on
devtmpfs        4096       0      4096   0% /dev
tmpfs         486288       0    486288   0% /dev/shm
tmpfs         194516    2880    191636   2% /run
/dev/xvda1   8310764 2471980   5838784  30% /
tmpfs         486292       0    486292   0% /tmp
tmpfs          97256       0     97256   0% /run/user/1000

Swap메모리 할당

/swapfile이라는 파일을 만들고 내용을 0으로 채웁니다. 블록 크기 (64MB) * 32 블록 = 2GB SSD 메모리를 RAM처럼 사용하기 위해 다음 명령으로 Swap 메모리를 할당합니다.

$ sudo dd if=/dev/zero of=/swapfile bs=64M count=32
32+0 records in
32+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 31.7266 s, 67.7 MB/s

/swapfile에 대한 액세스 권한을 설정합니다.
600은 소유자에게 읽기 및 쓰기 권한을 부여하고 다른 사용자에게는 액세스 권한을 부여하지 않음을 의미합니다.

$ sudo chmod 600 /swapfile

swapfile을 Swap 영역으로 사용하기 위해 포맷합니다.

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=28aea31a-d8d6-476e-8560-40a1d5ac7b70

Swap 파일을 활성화합니다.

$ sudo swapon /swapfile

시스템에 현재 유효한 Swap 영역 목록을 표시합니다.

$ sudo swapon -s
Filename  Type Size    Used Priority
/swapfile file 2097148 0    -2

영구적으로 설정하기

/etc/fstab에 다음과 같은 /swapfile이라는 스왑 파일을 /swap 영역으로 마운트하는 엔트리를 추가합니다. 스왑 파일은 물리적인 RAM 메모리가 부족할 때 추가 메모리 공간으로 사용되는 가상 메모리의 일부입니다. 스왑 파일을 사용하여 메모리 부족 상황에서 시스템의 성능을 개선하고 안정성을 유지할 수 있습니다.

$ sudo vi /etc/fstab
### 중간 생략 ###
/swapfile swap swap defaults 0 0

각 필드의 의미

  • /swapfile: 스왑 파일의 경로입니다.
  • swap: 마운트할 파일 시스템의 유형 swap은 스왑 파일을 의미합니다.
  • swap: 마운트 지점 swap은 스왑 파일이 마운트될 디렉토리나 장치입니다.
  • defaults: 마운트 옵션을 지정합니다. 일반적인 기본 옵션입니다.
  • 0: 파일 시스템 백업 시 우선 순위를 0으로 지정하여 스왑 파일이 백업되지 않도록 합니다.
  • 0: 파일 시스템 검사 시 우선 순위를 0으로 지정하여 시스템 부팅 시 파일 시스템 검사를 생략합니다. 스왑 파일은 일반적으로 파일 시스템 검사 대상이 아니기 때문에 0을 사용합니다.

증설 Swap 메모리 확인

total:2097148 used:0 free:2097148의 Swap 메모리가 할당되었음을 확인할 수 있습니다.

$ free
        total   used    free shared buff/cache available
Mem:   972580 388120  106152  36628     478308    391628
Swap: 2097148      0 2097148

Linux 시스템의 df 명령을 사용하여 Linux 시스템의 디스크 사용량을 표시합니다. 여기에서는 SSD 메모리 2GB를 Swap 메모리로 설정했으므로 Use%(디스크 사용량)의 값이 Swap 메모리 작성 전의 30% 사용에서 55% 사용으로 바뀐 것을 확인할 수 있습니다.

$ df
Filesystem 1K-blocks    Used Available Use% Mounted on
devtmpfs        4096       0      4096   0% /dev
tmpfs         486288       0    486288   0% /dev/shm
tmpfs         194516    2880    191636   2% /run
/dev/xvda1   8310764 4569112   3741652  55% /
tmpfs         486292       0    486292   0% /tmp
tmpfs          97256       0     97256   0% /run/user/1000

댓글

제목과 URL을 복사했습니다