스왑 메모리(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

  • [Linux] localectl 명령어

    CentOS 7 버전부터 많은 명령어들이 통합되어 제공됩니다. 로케일 및 키보드 관련 부문은 localectl 명령어에서 제공합니다. locale은 원래 지역이나 장소를 의미하지만, IT 환경에서는 언어 및 지역 설정을 지칭합니다. 리눅스에서는 문자 인코딩, 언어, 날짜/시간, 숫자 등의 지역화 설정을 locale 문자열로 정의합니다. 대부분의 유닉스 및 리눅스 배포판은 POSIX 기반이며, 이는 Red Hat 및 Debian 계열도 포함됩니다….

  • 리눅스 파일 시스템(File System)과 스토리지

    리눅스 파일 시스템File System은 모든 파일 및 디렉토리를 큰 트리 구조 하나로 관리합니다. 리눅스는 Ext(Extended File System)를 사용합니다. OS는 파일 스토리지에 있는 파일을 효율적으로 관리하기 위해 파일 시스템을 구축하게 됩니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑 메모리(Linux Swap…

  • opcache 설치 및 설정

    목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑 메모리(Linux Swap Memory) 만들기: 파티션1. 스왑 메모리(Swap Memory) 영역 설정2. /etc/fstab 설정✅ 스왑 파일 생성✅ 스왑 파티션 & 파일 삭제1. 스왑 파티션 삭제2. 스왑 파일 삭제▧ opcache 설치 및 설정 opcache…

  • [Linux] 쉘(Shell)과 커널&쉘 스크립트 및 프롬프트

    리눅스에 대해 공부하면서 터미널 창에서 명령어를 입력해서 관리를 하지만 시스템 자체에 대한 공부가 리눅스 서버를 운영하는데 많은 도움이 되기 때문에 기초와 개념에 대해 알아야 할 필요성을 가지게 되었습니다. 리눅스 쉘(Shell)과 쉘 스크립트(Shell Script) 그리고 프롬프트(Prompt)의 기본 개념에 대해 알아 보겠습니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본…

  • 리눅스 dd 명령어

    리눅스 시스템에서 사용하는 명령어 중 하나인 dd 명령어는 디스크, 파티션의 복사, 이미지 파일 생성, 디스크 작업 등 주로 데이터를 복사하거나 변환하는데 사용되는 명령어입니다. 목차✅ Swap 파일 시스템✅ mkswap 명령어1. 기본 옵션2. mkswap 옵션✅ swapon 명령어1. 기본 사용 방법2. swapon 옵션 사용✅ swapoff 명령어✅ 리눅스 스왑 메모리(Linux Swap Memory) 만들기: 파티션1. 스왑 메모리(Swap Memory)…

  • 리눅스 touch 명령어

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

답글 남기기

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

Prove your humanity: 8   +   7   =