AWS EC2 의 1G의 물리적 메모리는 별 작업이 없더라도 금새 소모되기 마련.
swap 이라는 일종의 가상메모리를 생성하여 부족한 메모리를 확보할 수 있다.
리눅스 환경에서 스왑메모리는
- 파티션 설정 : 가상서버 환경이라 초기부터 파티션을 설정해야 하는데, 이 방법으로는 접근하기가 쉽지 않다.
- 파일 생성 : 사용하는 파티션에 스왑파일을 생성하는 방법으로 극복해보자. 과거 윈도우 시스템이 사용하던 방법이다.
정말 물리적 메모리가 필요한 상황이 아니라 가끔 오버되는 메모리로 시스템이 멈추는 상황을 막고 싶다면 가장 합리적인 방법이라고 본다.
순서는
- 원하는 크기의 파일 생성
- 스왑메모리를 파일로 지정, 활성화
- 시스템 설정
1. dd
# sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 15.6017 s, 68.8 MB/s
뭐, 그냥 공식같은 커맨드다. 빈 파일을 / 디렉토리에 swapfile 이라는 이름으로 생성하고, 블럭사이즈는 1M로 1024번 반복해서 1GB짜리 파일을 생성한다.
뭐, 성격상 / 디렉토리에 swapfile 을 생성하고 싶지 않다면, /var/swapfile 이나 /home/swap 이나 맘대로 지정해도 좋다.
2. 스왑파일로 지정
# sudo mkswap /swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=..........
# sudo swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
앞서 만든 빈 파일을 스왑파일로 생성하고, 스왑을 활성화한다. 물리적 메모리 1G + 가상메모리 1G 가 되는 순간이다.
퍼미션을 제안해준다. 퍼미션은 기본 중의 기본. 관리 잘하자.
3. 파일시스템으로 설정
# sudo vi /etc/fstab
...
/swapfile swap swap defaults 0 0
/etc/fstab 파일을 열어 맨 마지막 행에 /swapfile을 파일시스템으로 설정하여, 시스템이 재시작되더라도 활성화되도록 한다.
참고. 유용한 커맨드 소개
스왑이 활성화 된 파티션과 사이즈
# swapon -s
Filename Type Size Used Priority
/swapfile file 1048572 0 -1
메모리 용량 살펴보기
# free -k
total used free shared buffers cached
Mem: 1019444 1005012 14432 12 18288 71412
-/+ buffers/cache: 915312 104132
Swap: 1048572 203052 845520
모든 스왑 끄기/켜기
# swapoff -a
# swapon -a
서버 관리는 이렇듯 손이 많이 간다. 힘내자.