[Swap] Swap Memory 할당 임시 방편
지금 현재 Wazuh 에이전트 테스트를 하기 위해서 AWS에 t2.micro Instance를 생성해서 진행중이다.
Wazuh 가이드에는 t2.large 이상을 권고하고 있는데, large는 서비스 요금이 비싸니까..
필자는 t2.micro로 테스트 중이다.
- 사실 뭐 테스트 서버가 많은것도 아니고, 로그가 많을거 같지도 않아서 저렴한 Instance를 사용한다ㅋㅋ
가이드에서 ElasticSearch를 설치하고, 실행하는 과정이 있는데 실행이 안되는 문제가 발생했다!!
systemctl status로 Elasticsearch 상태를 보니 Memory Commit 에러가 발생한 다음에 구동에 실패했다.
그리고 free -h로 보니, 사용 가능한 Memory가 400MB밖에 안된다.. Swap Memory는 없고 ㅜㅜ
아마 t2.micro로 저렴한 Instance를 사용하다보니, CPU/Memory 자원 할당량이 적고
이로 인해 Elasicsearch 구동이 안 된 것으로 보인다!!
이런 경우, 2가지 해결 방법이 있다.
1. 고용량의 Instance로 재생성하여 설치과정을 다시 한다. << 귀찮다..
2. Swap Memory 설정을 해주어, 임시로 Memory 자원량을 늘린다. << 이 방법을 해보자!!
Swap Memory란?
한마디로 시스템 Memory가 부족할 경우, HDD 일부 공간을 활용하여 Memory 처럼 사용하는것을 말한다.
Memory 공간 부족 방지를 위함 임시 방편이다.
- 프로그램을 많이 실행하여 Memory가 부족하게 되면 Memory상 적재 된 프로그램 中
지금 당장 필요하지 않는 프로그램 데이터를 하드 디스크로 옮겨 메모리 공간을 확보하는 것을 말한다.
(Linux의 경우, DB 쿼리 등에서 빈번이 일어난다.)
즉, 물리적인 Memory 공간이 가득찰 경우, HDD 일부를 Memory처럼 교환(Swap) 하는것이다.
그렇다면, Swap Memory를 일반적인 Memory처럼 생각해도 될까?
그렇지 않다. Swap Memory는 HDD상에 위치하기 때문에 물리적인 Memory보다 데이터 접근 속도가 매우 느리다.
장점 | 단점 | |
Swap Memory | 1. Memory가 가득찰 경우, 보조 공간을 제공해준다. 2. 가성비.. - 일반적으로 HDD보다 Memory가 비싸다. |
1. Swap Memory는 유동할당이 불가하기 때문에 할당 크기만큼 HDD 공간을 차지한다. 2. 데이터 교환이 빈번하므로 HDD 수명이 짧아질 수 있다. 3. 물리적인 Memory보다 접근속도가 느리다. |
Swap 메모리 할당 방법
1. Swap Memory로 할당한 HDD 공간을 만든다.
2. dd 명령어를 통해 Swap memory 공간을 만든다.
dd 명령어를 통해 /dev/zero의 내용을 읽고, /var/spool/swap/swapfile 파일에 2048000 byte 크기를 쓴다.
> 이 과정에서 Swap Memory가 만들어지는거 같다. 아마도..
그럼 최종적으로 하단에 2.1GB의 Swap Memory가 할당되어 있음 알 수 있다.
3. Swap Memory를 할당한다.
mkswap은 [옵션][파티션] 명령어는 [파티션]을 Swap Memory로 사용하겠다는 명령어이다.
즉, 비로소 3의 과정에서 Swap Memory가 생성된다고 볼 수 있다.
4. Swap Memory 확인
이전에는 Swap 부분이 다 0으로 표시되었었는데, 이제 2.0G가 할당되어 있다.
Swap Memory 할당 이후, 다시 Elasitcsearch를 구동해보았다!!
이제 Error가 발생하지 않는다.
그리고 구동 전/후 Free 명령어를 통해 Memory를 확인한 결과, 0.6GB Memory가 사용되었음을 알 수 있다.
Swap 할당 전, Free가 61M밖에 없는데 이러니 당연히 안되지 ㅜㅜ
systemctl로 상태를 봤을 때도 정상적으로 Start한것으로 보인다.
결론은, 처음부터 큰 Instance를 사용하는것이 좋다!!
만약 나와같이 Memory 부족 현상이 발생하는 사용자가 있다면, Swap Memory를 사용해보면된다.
끝!