메모리 스왑이란?
리눅스를 설치할 때 기본적으로 메모리에 대한 스왑 파티션을 설정하여 생성된 스왑을 이용하게 됩니다.
메모리 스왑에는 가상 메모리 공간으로 실제 물리적인 메모리에 사용할 공간이 부족한 경우, 메모리 스왑으로 예전 데이터를 옮겨 물리적 메모리의 공간을 확보하여 여러 애플리케이션을 동시에 실행할 수 있도록 해줍니다.
시스템을 운영하다보면, 메모리 스왑도 부족하여 시스템이 불안정해질 수 있는데, 이를 방지하기 위해서는 메모리 스왑을 동적으로 늘려주어야 하는데, 본 문서에서 스왑을 늘리는 방법에 대하여 정리합니다.
메모리 스왑 용량 확인하기
메모리 스왑의 용량 확인은 swapon, free, top 등 여러 가지 명령을 이용하여 확인할 수 있습니다.
swapon
swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 2029188 -2
/home/swapfile file 1999996 1542252 -3
free
free -h
total used free shared buff/cache available
Mem: 15G 9.7G 173M 126M 5.6G 4.1G
Swap: 3.9G 3.9G 0B
top
top - 13:38:28 up 263 days, 21:09, 3 users, load average: 1.09, 0.76, 0.61
Tasks: 2285 total, 1 running, 2284 sleeping, 0 stopped, 0 zombie
%Cpu(s): 5.5 us, 9.2 sy, 0.0 ni, 85.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16230504 total, 217784 free, 11227200 used, 4785520 buff/cache
KiB Swap: 34097144 total, 31999476 free, 2097668 used. 3152500 avail Mem
메모리 스왑 동적 추가하기
메모리 스왑을 파티션이 아닌 파일로 늘려주는 방법은 다음과 같습니다.
먼저, 메몰 스왑을 사용할 파일을 생성하여 주고, 접근 권한을 "600"으로 설정합니다.
dd if=/dev/zero of=/home/swapfile bs=1024 count=32000000
32000000+0 records in
32000000+0 records out
32768000000 bytes (33 GB) copied, 120.656 s, 272 MB/s
chmod 0600 /home/swapfile
메모리 스왑으로 사용할 파일을 스왑에서 이용할 수 있도록 초기화를 수행합니다.
mkswap /home/swapfile
Setting up swapspace version 1, size = 31999996 KiB
no label, UUID=acb3927e-9363-430c-9994-9831ef661f96
스왑으로 이용할 파일을 메모리 스왑에 추가합니다.
swapon /home/swapfile
위와 같이 동적으로 메모리 스왑을 추가한 이후 스왑의 상태는 다음과 같습니다.
swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2097148 2097148 -2
/home/swapfile file 1999996 7168 -3
/home/swapfile2 file 31999996 0 -4
메모리 스왑 파일 설정 변경
"/etc/fstab" 파일에 메모리 스왑 파일 설정을 다음과 같이 추가합니다. 그러면 재부팅 이후에도 동적으로 추가한 메모리 스왑 파일을 그대로 사용합니다.
/swapfile swap swap defaults 0 0
Ubuntu-16.04 이전 버전에서는 "fstab"을 수정하지 않고, "/etc/rc.d/rc.local" 파일에 다음과 같은 내용을 추가하여, 서버를 재시작하여도 메모리 스왑 파일에 대한 설정이 그대로 적용되도록 할 수도 있습니다.
swapon /home/swapfile
참고자료
- "리눅스 스왑(SWAP) 메모리 추가 설정 방법":https://extrememanual.net/12975
- "Swap 메모리 늘리기":http://faq.hostway.co.kr/Linux_ETC/1443
'Linux,Unix,BSD' 카테고리의 다른 글
[bind] bad owner name (check-names) 오류 해결 방법 (0) | 2020.08.25 |
---|---|
ubuntu 16.04에 nvidia driver 및 cuda 10.x 설치하기 (0) | 2020.08.16 |
[PHP] 쉘 스크립트 실행 실패 문제(SELinux) (0) | 2020.01.16 |
[PHP] CentOS SELinux 활성화 서버에서 PHP로 MariaDB 접속시, "Permission denied" 발생 문제 (0) | 2020.01.15 |
[Linux] Nginx + PHP7 설치 on CentOS 7 (0) | 2019.12.28 |