"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] 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 |
- 파일 사용 권한 설정
퍼미션 설정은 파일 소유자(root)로 제한 한다.
# chmod 600 /swapfile
# ls -al swapfile -rw------- 1 root root 2147483648 Oct 31 06:25 swapfile |
- 스왑 파일 설정
이 단계에서는 단순 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) … |
- 스왑 파일 장착
[ 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에 등록 한다.
- 스왑 파일 UUID 확인
# blkid /swapfile /swapfile: UUID="79411347-40af-4680-a31e-657700076ce8" TYPE="swap"
|
- /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
|
'Linux > System administration' 카테고리의 다른 글
Debian Package 만들기(dpkg/.deb) (2) | 2019.08.16 |
---|---|
NTP 시간 동기화 (1) | 2017.06.27 |
리눅스를 USB에 넣어 설치해 보자! :: Penvdrivelinux (4) | 2011.06.02 |
[Backtrack5] 한글 설정 하기. (0) | 2011.05.29 |
하나의 디스크에 여러 리눅스 패키지 설치. (0) | 2011.05.27 |