☀️ 테스트 환경
- CentOS 8
- WSL (Windows 10 Pro)
✋ 들어가며
로컬에서 개발된 소스를 리눅스 환경에 배포할때 메모리에 관련된 에러 메시지를 자주 만날 수 있다. JVM이나 node 환경에서는 Heap memory를 늘려주는 방법으로도 메모리 관련 에러로부터 자유로울 수 있지만, 물리 메모리가 절대적으로 부족한 상황이라면 디스크의 일부분을 메모리처럼 활용할 수 있는 Swap memory 설정이 해결책이 될 수 있다.
Swap Memory란?
메모리가 가든찬 경우에도 디스크의 일부분을 활용하여 메모리를 대체할 수 있도록 할당한 공간이다.
Swap Memory의 권장 크기
Red Hat Enterprise Linux 권장 Swap 크기↗를 참고하면 Swap 공간을 얼마나 할당해서 사용해야 할지에 대한 답을 찾을 수 있지만 디스크의 일부분을 사용하기 때문에 여유 디스크의 사이즈도 고려해서 할당해야 한다.
✅ Swap Memory 할당
메모리 확인
할당 전 메모리를 확인해보면 Swap 영역이 '0B'로 잡혀있는 것을 확인 할 수 있다.
free -h
✔
total used free shared buff/cache available
Mem: 15G 0B 0B 0B 0B 0B
Swap: 0B 0B 0B
Swap File 생성 및 권한 설정
할당할 용량의 파일을 루트 경로에 생성하고 권한을 설정한다.
fallocate -l 8G /swapfile
chmod 600 /swapfile
cd /
ls -alh
✔
dr-xr-xr-x 22 root root 314 Dec 5 04:53 .
dr-xr-xr-x 22 root root 314 Dec 5 04:53 ..
-rw------- 1 root root 8.0G Dec 5 05:45 swapfile
Swap 파티션 생성 및 활성화
- 스왑 파티션 생성
-
재기동 후에도 파티션이 유지되도록 설정하기 위해서 출력되는 UUID는 복사해둔다.
mkswap /swapfile
✔ Setting up swapspace version 1, size = 8 GiB (8589934592 bytes) no label, UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
-
스왑 영역 활성화 및 확인
swapon /swapfile free -h
✔ total used free shared buff/cache available Mem: 15G 0B 0B 0B 0B 0B Swap: 8G 0B 0B
-
fstab에 파티션 추가
-
복사해두었던 UUID를 Tab 문자열이나 공백으로 구분해서 '/etc/fstab' 하단에 작성하면 재기동 후에도 유지된다.
vi /etc/fstab
✔ ... UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /swapfile swap defaults 0 0
-
❎ Swap Memory 해제
Swap 영역 비활성화
스왑을 비활성화 해주고 생성했던 '/swapfile'을 삭제하면 다시 '0B'로 변한걸 확인할 수 있다.
swapoff /swapfile
rm -rf /swapfile
free -h
✔
total used free shared buff/cache available
Mem: 15G 0B 0B 0B 0B 0B
Swap: 0B 0B 0B
fstab 파티션 삭제
추가했던 UUID를 제거하면 Swap Memory 해제가 완료된다.
vi /etc/fstab
👋 마치며
Windows 10 Pro 환경에서 WSL을 활성화하고 CentOS 8을 설치해봤는데 생각보다 안정적이지 못한 느낌이 든다. 연습장으로 사용할 다른 대안을 찾아봐야겠다.