리눅스 서버를 사용하다보면 할당받은 메모리가 부족한 경우가 많다. 할당된 메모리를 초과할 경우 서버가 다운 될 수 있다는 치명적인 문제를 가지고 있다. 이는 Swap Memory로 어느정도 해결할 수 있다.
Swap Memory 은 시스템의 RAM이 부족할 때 하드디스크의 공간을 가상 메모리로 대체하여 사용하는 것을 말한다. 실제 메모리보다는 속도가 느리지만, 시스템이 다운되거나 장애를 유발을 방지할 수 있다는 장점이 있다.
일반적으로 기본 할당받은 메모리의 1.5 ~ 2배까지 설정 하는 것을 권장한다.
Swap Memory를 사용하자
1. 서버의 기본 메모리 공간을 확인한다.
$ df -h
2. free 명령어를 통해 현재 Swap Memory를 사용하고 있는지 확인한다.
$ free
위 이미지 맨 아래 'Swap' 부분이 보이지 않거나 0이라면 사용하고 있지 않다는 것을 의미한다.
3. 'Swapfile'이라는 이름으로 Swap Memory를 생성한다.
‼️‼️ 기본 할당받은 메모리의 1.5 ~ 2배 설정 권장 ‼️‼️
fallocate -l 4G /swapfile
4. 파일의 권한을 600으로 수정한다.
chmod 600 /swapfile
위에서 생성된 swapfile의 권한을 수정해준다. 참고로 600은 root 계정만 Read/Write가 가능하다는 뜻이다.
5. 생성한 swapfile로 Swap Memory를 활성화 한다.
# /swapfile을 스왑 영역으로 사용하기 위해 필요한 메타데이터와 구조를 설정한다.
$ mkswap /swapfile
# /swapfile을 시스템 메모리 관리 시스템이 스왑 공간으로 사용할 수 있도록 한다.
$ swapon /swapfile
위 명령어를 통해 Swap Memory를 활성화 하면 된다.
하지만 $swapon 명령어 부분에서 에러가 발생했다. 인자가 부족하다는 에러 메시지를 확인할 수 있는데, CentOS의 경우 fallocate 대신 dd 명령어를 사용해야 된다고 한다.
6. dd 명령어를 통해 Swap Memory를 재생성한다. (선택사항)
# count = (1,024 * 4) = 4GB
$ dd if=/dev/zero of=/swapfile count=4096 bs=1MiB
위처럼 재 생성 후 5번 과정을 다시 진행하면 정상적으로 Swap Memory가 활성화 된다.
7. 서버 재부팅 되어도 Swap Memory가 유지 되도록 설정한다.
# 아래 경로의 파일에 접근 후 vi 실행
$ vi /etc/fstab
위 명령어를 통해 /etc/fstab에 접근한다.
# 맨 마지막 라인에 추가
/swapfile swap swap defaults 0 0
이후 파일의 맨 마지막 라인에 위 내용을 추가해준다.
추가 되었다면 이제 서버가 재부팅 되어도 Swap Memory가 유지될 수 있게끔 설정이 완료되었다.
8. free 명령어를 통한 적용된 결과 확인
위처럼 4GB의 가상 메모리가 생성된 것을 확인할 수 있다.