2018. 11. 2. 23:52

"Swap Memory"

 



 

리눅스의 메모리 부족할 경우 OOM(Out Of Memory) or Cannot allocate memory 문제가 발생 있습니다.

리눅스는 이런 메모리 부족을 대비 하여 일종에 보조 역활을 수행 하기 위한 방법으로 스왑(Swap)메모리를 사용합니다.

스왑(Swap) 물리적인 메모리가 완전히 활용되었을 운영 체제에서 사용하기 위한 가상 메모리 입니다.

이것은 디스크 파티션이나 파일 있습니다. (리눅스는 파티션, 파일 모두 파일로 인지 합니다)

 

 

일반적으로  리눅스 서버를 운영하게 되면 스왑 파티션을 기본적으로 사용하게 되지만

AWS 프리티어를 사용하기 위해 EC2 t2.micro 이용해 리눅스로 서비스를 경우

"Cannot allocate memory" 나타날 있다.  이런 다양한 케이스를 대비 하여 Swap 생성하는 방법을 알아 봅시다.

 

 

 

    스왑(Swap) 확인

 

[방법 1] swapon -s : 스왑이 잡혀 있지 않으면 아무런 결과가 출력되지 않음

 

# swapon -s

 

 

[방법 2] free -m : Swap : 항목에 모든 결과가 "0"으로 출력

# free -m

             total       used       free     shared    buffers     cached

Mem:           999        883        115          8          3         62

-/+ buffers/cache:        817        181

Swap:          0           0          0

 

 

    스왑(Swap) 설정

 

  1. 스왑메모리로 사용할 파일을 생성 합니다.

단계에서는 아무런 기능도 하지 않는 단순 디스크 공간을 할당 하는 파일을 생성 한다.

 

[방법 1] dd 이용해 파일 생성 (블럭 1M * 2048 = 2GB )

 

# dd if=/dev/zero of=/swapfile bs=1M count=2048

 

 

[방법 2] fallocate 이용해 파일 생성

 

# fallocate --length 2G /swapfile

 

 

[ 참고 ]

실제로 file명령을 통해 파일의형을 확인해 보면 단순 data 파일임을 있다.

# file  /swapfile

/swapfile: data

 

 

  1. 파일 사용 권한 설정

퍼미션 설정은 파일 소유자(root)로 제한 한다.

 

# chmod  600  /swapfile

 

# ls -al swapfile 

-rw------- 1 root root 2147483648 Oct 31 06:25 swapfile

 

  1. 스왑 파일 설정

단계에서는 단순 data 파일을 swap 파일로 초기화 한다.

# mkswap /swapfile 

Setting up swapspace version 1, size = 2097148 KiB

no label, UUID=79411347-40af-4680-a31e-657700076ce8

 

File명령을 통해 파일 Type 확인해 보면 swap file문구를 출력 한다.

# file /swapfile 

/swapfile: Linux/i386 swap file (new style) …

 

  1. 스왑 파일 장착

[ swap 활성화 ] : 스왑(swap)파일을 시스템이 사용할 있도록 swap 영역 으로 활성화 한다.

 

# swapon  /swapfile

 

 

[ swap 비활성화 ] : 반대로 swap 영역 비활성화

swap 크기를 변경 하고자 경우 swapoff 명령을 통해 비활성화 1 과정을 되풀이 한다.

 

# swapoff  /swapfile

 

 

[ 참고 ]

미션이 0600 아니면 아래와 같이 0600 제안하는 메시지를 출력 하며, swap 영역으로 활성화는 된다.

 

# swapon /swapfile

swapon: /swapfile: insecure permissions 0644, 0600 suggested.

 

 

 

    /etc/fstab 등록

시스템이 재부팅 되면왑영역이 비활성화 되어 있어 수동으로 swapon명령을 통해 스왑 영으로 활성화 해줘야

하는 번거로움이 있다. 재부팅시에 자동으로 스왑 영역을 활성화 되도록 /etc/fstab 등록 한다.

 

  1. 스왑 파일 UUID 확인

 

# blkid /swapfile 

/swapfile: UUID="79411347-40af-4680-a31e-657700076ce8" TYPE="swap"

 

 

  1. /etc/fstab 등록

해당 파일 하단에 아래와 같이 swap 설정 추가 한다.

 

UUID=79411347-40af-4680-a31e-657700076ce8 swap swap defaults 0 0

 

 

  • UUD – device /file name, UUID
  • swap – defines device mount point
  • swap – specifies the file-system type
  • defaults – describes the mount options
  • 0 – specifies the option to be used by the dump program
  • 0 – specifies the fsck command option

 

 

[ 참고 ]

/etc/fstab 등록되어 있다면  "swapon -a"옵션을 통해 자동 활성화 한다.

아래와 같이 swapoff 통해 스왑영역 비활성화 swapon -a 통해 자동 등록 되는 것을 있다.

 

# swapoff /swapfile 

# swapon -s

# swapon -a

# swapon -s

Filename Type Size Used Priority

/swapfile                              file    2097148 0 -1

 


Posted by devanix