스왑 메모리(Swap Memory) 설정: 파티션&파일 2가지 방식 | swapon, mkswap 명령어

ℹ️이 콘텐츠에는 광고가 포함되어,판매 발생 시 수익이 발생합니다.(네이버 쇼핑 커넥트, 아마존 어필리에이트, 애드센스 등)

리눅스 스왑 메모리(Swap Memory)는 실제 디스크 공간을 메모리처럼 사용하는 개념이기 때문에 물리 메모리인 RAM보다 처리 속도가 느리지만 물리 메모리가 가득 찬 경우를 대비해 디스크 공간에서 할당 된 스왑 메모리를 생성해서 관리할 수 있어 한정된 리소스를 효율적으로 사용할 수 있습니다.

✅ Swap 파일 시스템

Swap 파일 시스템은 리눅스의 가상 메모리를 사용하기 위한 파일 시스템이며, 여기서 가상 메모리란 실제 메모리(RAM)보다 더 많은 메모리를 사용하기 위한 기술입니다. 물리적인 메모리가 부족하여 하드 디스크에서 메모리를 옴겨오는 방식을 스와핑(Swaping)라고 합니다.

Swap 메모리는 물리 서버와 클라우드 서버 관계 없이 서버의 갑작스러운 메모리 사용량 증가에 안정적으로 대응할 수 있는 장점을 가지고 있습니다. AWS 서비스를 사용하더라도 무조건 EC2 인스턴스에서 높은 메모리 사양의 서비스를 사용하기에는 가격 부담이 있을 수 밖에 없습니다.

  • 스왑 메모리란?
  • RAM 용량이 부족할 경우 프로세스가 임시 저장되는 공간으로 디스크 공간을 사용하는 시스템
  • 일시적인 서버의 과부하가 발생하여 메모리 부족으로 발생하는 문제를 미연에 방지
  • 하드 디스크 공간을 사용하기 때문에 메모리에 비해 속도가 떨어짐.
  • 스왑 메모리 크기는 보통 RAM의 두 배를 권장합니다.

Swap 파일 시스템을 이용해 스왑 영역을 구성하는 방법은 스왑 파티션 생성과 스왑 파일로 두 가지 방법이 있습니다.

✅ mkswap 명령어

mkswap 명령어는 “MaKe Swap”의 약자이며, 리눅스의 스왑 영역을 지정하는 명령어입니다.

1. 기본 옵션

mkswap -[옵션] [스왑 파일 or 파티션]

2. mkswap 옵션

# 스왑 파티션 생성 전에 배드 블록(Basd Block)을 검사해 줍니다.
mkswap -c  /dev/xvdf1

✅ swapon 명령어

말 그대로 설정된 스왑 디스크 or 스왑 을 실행(on) 시킨다는 뜻을 가지고 있습니다.

1. 기본 사용 방법

swapon 명령어를 사용해서 파티션을 연결합니다.

swapon [/dev/파티션 or 파일]
# 예시
swapon /dev/xvdf1

2. swapon 옵션 사용

swapon -[옵션] [/dev/파티션 or 파일]
# -옵션 사용 사용 예시 [-s]
swapon -s
Filename				Type		Size		Used		Priority
/dev/xvdf1                              partition	4194300		0		-2

✅ swapoff 명령어

swapoff 는 말 그대로 실행 중인 스왑 파일을 끈다는 뜻을 가지고 있습니다.

swapoff -[옵션] [/dev/파티션 or 스왑파일]
# 사용 예시
swapon -v
NAME       TYPE      SIZE USED PRIO
/dev/xvdf2 partition   4G 768K   -2
/dev/xvdf3 partition   4G   0B   -3
/swapfile  file        4G   0B   -4

swapoff /dev/xvdf3
swapoff /swapfile
swapoff 옵션설명
-a모든 스왑 영역 중지. 스왑 영역이 1개일 때는 -a 옵션이 필요 없습니다.
2개 이상의 스왑 영역이 동작 중일 때 사용하는 옵션입니다.

✅ 리눅스 스왑 메모리(Linux Swap Memory) 만들기: 파티션

gdisk 명령어로 Swap 파티션을 생성합니다. 기존 파티션의 변경도 동일한 방법으로 진행이 가능합니다.

스왑 메모리(Swap Memoney) 파티션 생성
  • mkswap 명령어를 사용했을 때 파티션이 리눅스 파일 시스템 파일 시스템으로 생성했더라도 스왑 파티션으로 포맷이 되면서 연결되면서 사용 가능하지만 gdisk 명령어 등으로 확인했을 때 파일 시스템으로 인식하기 때문에 파티션은 8200으로 설정하겠습니다.

1. 스왑 메모리(Swap Memory) 영역 설정

이제 Swap 메모리를 추가 해 보겠습니다.

mkswap /dev/xvdf3
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=84bbe826-c750-4a58-a299-92db8b584337

이제 스왑 메모리를 마운트 해서 활성화합니다.

재부팅 테스트 결과 swapon -a 옵션은 일시적인 활성화이므로 /etc/fstab에서 재 부팅 했을 때 자동으로 설정되도록 적용합니다.

2. /etc/fstab 설정

✅ 스왑 파일 생성

  • dd 명령어 사용 예시(기본적인 예시임)
dd if=/dev/zero of=/swapfile bs=1MB count=2048


3+0 records in
2+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 77.5708 s, 27.7 MB/s
# /dev/zero에서 1M 씩 2천 번 스왑 파일을 읽어서 저장한다는 의미입니다. 2M * 2000 = 2G의 파일이 생성 되었음을 알 수 있습니다. 블록 단위 차이를 만들 수 있는 점을 확인할 수 있으며, 총 용량의 큰 차이는 없겠지만 count를 2048로 맞추면 정확한 2G가 됩니다.

dd if=/dev/zero of=/swapfile bs=128M count=16
#128 *16 = 2048 fh 2의 스왑 파일이 생성 되었음을 알 수 있습니다. 
# 스왑 파일을 루트 폴더에 만들 경우 시스템의 성능 저하가 있을 수 있습니다.
# (특히 SSD가 아닌 HDD일 경우 체감도가 클 수 있습니다.) 
  • 스왑 파일 생성 및 활성화 하기(스왑 파일 생성 작업 진행)
dd if=/dev/zero of=/swapfile bs=1MB count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 32.614 s, 65.8 MB/s
# 스왑 메모리 영역 설정
mkswap /swapfile 
mkswap: /swapfile: insecure permissions 0644, fix with: chmod 0600 /swapfile
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=311e95bc-f5ce-4404-86f6-750a79457da3
# 퍼미션 600으로 설정
chmod 600 /swapfile
# 활성화
swapon /swapfile
# 확인(기존에 생성된 [스왑 파티션 xvdf1], [스왑 파일]이 함꼐 구동됨을 확인할 수 있습니다.)
---생략--- 
swapon -v
NAME       TYPE      SIZE USED PRIO
/dev/xvdf1 partition   4G 256K   -2
/swapfile  file        2G   0B   -3

✅ 스왑 파티션 & 파일 삭제

스왑 파일을 삭제 할 때 먼저 진행할 사항은 실행 중인 스왑 파티션 or 파일을 swapoff 명령어로 중지 후 진행하는 것입니다.

1. 스왑 파티션 삭제

파티션의 삭제는 먼저 swapoff 진행 후 gdisk 명령어로 파티션의 삭제를 순차적으로 진행할 수 있습니다. 리눅스 파일 시스템이나

lsblk
---생략---
xvdf    202:80   0   33G  0 disk 
├─xvdf1 202:81   0    5G  0 part 
├─xvdf2 202:82   0    4G  0 part [SWAP]
└─xvdf3 202:83   0    4G  0 part [SWAP]
swapoff /dev/xvdf2
gdisk
Command (? for help): p
Disk /dev/xvdf: 69206016 sectors, 33.0 GiB
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 186D383F-9869-4A75-9742-969E83CD7FA5
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 69205982
Partitions will be aligned on 2048-sector boundaries
Total free space is 41942973 sectors (20.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048        10487807   5.0 GiB     8300  Linux filesystem
   2        10487808        18876415   4.0 GiB     8200  Linux swap
   3        18876416        27265023   4.0 GiB     8300  Linux swap
Command (? for help): d
Partition number (1-3): 2
Command (? for help): w
Do you want to proceed? (Y/N): y

2. 스왑 파일 삭제

디스크 블록으로 설정된 스왑 파일을 삭제합니다.

swapoff /swapfile
rf /swapoff

Similar Posts

  • [Shell 특수문자] 리눅스 와일드카드(메타문자)

    리눅스 와일드카드는 Shell 특수문자로 메타 문자로 불리기도 합니다. Shell 특수 기호 중 와일드카드(글로빙으로 부르기도 함)는 문자 패턴에 따라 파일명을 선택할 수 있습니다. 특수 문자에는 인용(따옴표) 기호, 리눅스 다중 명령어, 리눅스 히스토리 기호, 리눅스 디렉토리 기호, 리눅스 괄호 기호 및 입출력 리다이렉션 등 다양하게 있습니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap…

  • [우분투] AH00558: apache2: Could not reliably .. server’s fully qualified domain name , using 127.0.1.1. Set

    우분투 서버에서 APM까지 설치 후 서버에서 apache2ctl -t 무결성 및 apache2ctl graceful 명령어 입력 중 server’s fully qualified domain name 오류 메시지를 확인할 수 있습니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑 메모리(Linux Swap Memory) 만들기: 파티션1. 스왑…

  • 리눅스 blkid 명령어 | UUID와 GUID 차이

    리눅스 blkid 명령어는 블록 디바이스의 파일 시스템 유형 or 속성을 출력하는 명령어입니다. 주 목적은 리눅스 서버를 다시 시작하는 경우 /etc/fstab 파일에 자동 마운트 정보를 설정할 때 UUID를 확인하기 위해 사용되는 명령어입니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑…

  • 리눅스 cat 명령어

    리눅스에서 텍스트 파일을 출력하는 간단한 ‘cat 명령어’는 명령어 뒤에 파일명을 적어 표준 출력(Standard Output)을 할 수 있습니다. cat은 “연결시키다”, “연관시키다” 등의 뜻을 가지고 있는 영어단어 “concatenate”에서 유래되었습니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑 메모리(Linux Swap Memory) 만들기:…

  • 리눅스 touch 명령어

    touch 명령어는 파일의 날짜 시간 정보를 변경하는 명령어입니다. 아무 옵션 없이 사용할 경우 파일의 최근 사용 시간, 변경 시간이 서버의 현재 시간으로 변경됩니다. 파일이 없는 파일명을 입력할 경우 새로운 크기가 0인 빈 파일이 생성됩니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff…

  • 리눅스 리다이렉션(Redirection)

    웹 상에서 리다이렉션(Redirection)은 웹 브라우저가 특정 URL을 요청했을 때, 미리 지정된 다른 URL로 재요청하게 하는 것을 말합니다. 재 연결의 사전적인 의미를 가진 Redirection은 리눅스에서 입력과 출력을 다루는 방식으로, 데이터를 파일로 보내거나 파일에서 읽어오는 작업을 수행할 수 있게 해줍니다. 리눅스 리다이렉션은은 키보드로 입력, 화면으로 출력을 하는 것이 아니라 파일로 출력하는 것을 의미합니다. 리다이렉션에는 표준…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 5   +   10   =