Linux

[Linux] Swap memory

TTOII 2022. 2. 25. 11:49
728x90

✅ Swap Memory란 ?

  • 물리적 디스크 공간을 메모리 공간처럼 사용하는 방식
  • 메모리에 발생하는 부하를 줄여주는 방법이다. 
  • 시스템 RAM + 스왑 공간 => 가상 메모리

 

✅ 원리

  • 현재 메모리에 P1, P2, P3 사용 중이고 메모리는 모두 사용 중이며 새로운 P4를 메모리에 올려야 한다고 가정하자
  1. 기존 프로세스 중 가장 오래되고 가장 중요도가 적은 프로세스를 swap 영역으로 전환한다.
  2. 기존 메모리에 여유 공간이 생긴다.
  3. 남는 메모리 영역에 새로운 P4를 올려서 사용한다.
  4. 작업이 끝나고 메모리에 공간이 나게되면 스왑 영역에 있던 프로세스를 다시 M영역으로 올린다.

 

✅ 특징

  • swap은 디렉토리 구조로 접근하지 않기 때문에 마운트포인트를 swap으로 지정한다.
  • 스왑 공간은 백업 및 파일 시스템 점검이 필요없다.

 

✅ swap 관련 명령어

  • free : 스왑 공간 확인
  • mkswap 파티션명 : 스왑 메모리 생성
  • swapon  파티션명 : 스왑 메모리 활성화
  • swapon  파티션명 : 수동 스왑 마운트
  • swapoff 파티션명 : 수동 스왑 마운트 해제
  • swapon -a : 설정된 스왑 마운트 확인
  • swapoff -a : 모든 스왑 마운트 해제

 

✅ swap memory 사용 예시

  • free 명령어로 사용 스왑 공간 확인
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      371324     1328456        9592      347920     1487688
Swap:       4194300           0     4194300

Swap 영역의 total이 4G로 설정되어 있으며 사용되고 있는 용량은 0임을 알 수 있다.

 

  • 새로 만든 파티션을 스왑 영역으로 저장
[root@localhost ~]# mkswap -c /dev/sdb3
0 bad pages
Setting up swapspace version 1, size = 6291452 KiB
no label, UUID=bc89c813-68d6-4ad2-be70-cb224f349af7

파티셔닝을 통해 만든 /dev/sdb3를 스왑 영역으로 사용하기위해 스왑 메모리로 지정한다. 

 

  • free 명령어로 스왑 영역 재확인 
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      356828     1533372        9584      157500     1515204
Swap:      10485752           0    10485752

새롭게 스왑 영역으로 만든 /dev/sdb3의 용량이 6G로 설정되어 있기 때문에 free를 입력했을 때 Swap 영역이 4194300에서 10485752로 늘어나 있는 것을 확인할 수 있다.

 

  • swapon 명령어로 활성화
[root@localhost ~]# swapon /dev/sdb3

[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      356828     1533372        9584      157500     1515204
Swap:      10485752           0    10485752

[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sdb3                               partition       6291452 0       -1

swapon 명령어를 통해 /dev/sdb3를 스왑 메모리로 활성화 시킨다. swapon -s 명령을 통해 /dev/sdb3가 스왑 영역으로 사용되고 있음을 확인할 수 있다. 

 

  • swapoff 명령어로 비활성화
[root@localhost ~]# swapoff /dev/sdb3
[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda1                               partition       4194300 0       -1
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      410888     1354076        9584      282736     1429908
Swap:       4194300           0     4194300

swapoff 명령을 통해 /dev/sdb3을 스왑 영역에서 해제한다. 

 

  • /etc/fstab으로 영구적 활성화 

스왑 메모리 추가를 완료한 후 시스템을 재부팅하면 추가한 메모리에 대해 다시 sawpon 명령어를 적용해야한다.

따라서 /etc/fstab 파일에 swap 파티션을 추가한 뒤 /etc/rc.d/rc.local 파일에 "swapon /dev/sdb3" 이라고 입력해두면 부팅시마다 해당 스왑 메모리를 활성화할 것이다.

 

방법 1) UUID를 이용하여 스왑 마운트 설정 

[root@localhost ~]# blkid
/dev/sda1: UUID="88f82736-89b0-49e6-88c5-165c88bcc5bf" TYPE="swap"
/dev/sda2: UUID="231c776b-3197-4e9f-a142-6b80be0ca930" TYPE="xfs"
/dev/sdb3: UUID="bc89c813-68d6-4ad2-be70-cb224f349af7" TYPE="swap"

blkid로 마운트하고자 하는 파티션의 UUID를 복사한다. 

vi /etc/fstab

파일 시스템 장치명 마운트 포인트 파일 시스템 종류 옵션 덤프 여부 파일 체크 옵션

vi 편집기를 열어 순서대로 UUID, swap, swap, defaults, 0, 0을 입력한다. 

 

2) 파티션 명으로 자동 스왑 마운트 설정

UUID 대신에 파티션 명을 기입

 

  • 모든 스왑 마운트 해제
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      410912     1347164        9588      289624     1429820
Swap:       4194300           0     4194300

[root@localhost ~]# swapon /dev/sdb3
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      415756     1342316        9588      289628     1424976
Swap:      10485752           0    10485752

[root@localhost ~]# swapoff -a
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      410860     1348252        9588      288588     1429876
Swap:             0           0           0

[root@localhost ~]# swapon -s
[root@localhost ~]# swapon -a
[root@localhost ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2047700      410968     1348140        9588      288592     1429768
Swap:       4194300           0     4194300

[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda1                               partition       4194300 0       -1

/dev/sdb1 의 스왑은 수동으로 마운트 한 것이기 때문에 마운트가 안된다.

728x90