💋 인트로
안녕하세요. 우아한테크코스 5기 깃짱이라고 합니다.
AWS에서 프리 티어로 EC2를 사용하기 시작했는데, 메모리가 모자라기 시작했습니다. 메모리를 늘리고 싶지만, 돈은 쓰기 싫다면 그 대안으로 Swap 메모리를 설정할 수 있습니다.
💋 Swap 메모리란?
리눅스에서 스왑 메모리는 주 메모리의 한계를 극복하기 위해 사용되는 보조 메모리입니다. 주 메모리(RAM)의 용량이 부족한 경우, 리눅스 운영체제는 현재 실행되지 않는 프로세스를 임시로 디스크 공간으로 쫓아내고, 빈 공간에 다른 프로세스를 적재해 실행하는 '스와핑' 방식을 사용합니다. 이렇게 해서 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행할 수 있습니다.
프로세스들이 쫓겨나는 디스크 상의 일부 영역을 스왑 영역이라고 합니다. 프로세스가 메모리로부터 디스크의 '스왑 영역'으로 쫓겨나는 것을 스왑 아웃, 반대로 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것을 스왑 인이라고 합니다.
암튼 설정하게 되면, 디스크의 일부를 메모리를 보조하는 용도로 사용하게 됩니다. 스왑 메모리의 설정도 역시 시스템 성능에 영향을 주므로, 신중하게 설정하고 관리하는 것이 중요합니다.
💋 사전 체크
메모리 용량을 확인합니다. 부족한 경우에 설정하는 것이 좋습니다.
free -h
Swap 메모리를 설정할 수 있을 지, 디스크 용량도 확인합니다.
df -h
💋 Swap 메모리 설정
일반적으로 메모리의 2배에서 4배 정도의 swap 메모리를 할당하는 것이 권장됩니다. 예를 들어, 8GB의 메모리가 있는 시스템에서는 16GB에서 32GB의 swap 메모리를 할당하는 것이 적절할 수 있습니다.
기존 RAM 용량이 1G였으므로, 2G로 설정해 보겠습니다.
✔️ 설정 명령어
스왑 메모리를 설정하기 전에, 스왑 파티션 또는 스왑 파일을 생성해야 합니다.
sudo fallocate -l 2G /swapfile
swapfile의 권한을 변경합니다.
sudo chmod 600 /swapfile
스왑 파일을 생성합니다.
sudo mkswap /swapfile
스왑 메모리를 활성화합니다.
sudo swapon /swapfile
✔️ 설정 명령어 설명
그냥 간단히 복사 붙여넣기만 해도 설정되지만, 간단히 명령어에 대해 설명하겠습니다.
swapon
: 스왑 메모리를 활성화하는 명령어입니다.- 사용법:
swapon [옵션] 스왑_디바이스
- 예시:
swapon /dev/sdb1
- 설명:
/dev/sdb1
은 스왑 파티션 또는 스왑 파일의 경로를 나타냅니다. 해당 경로의 스왑 메모리를 활성화합니다.
mkswap
: 스왑 파티션 또는 스왑 파일을 생성하는 명령어입니다.- 사용법:
mkswap [옵션] 스왑_디바이스
- 예시:
mkswap /dev/sdb1
- 설명:
/dev/sdb1
은 스왑 파티션 또는 스왑 파일의 경로를 나타냅니다. 해당 경로에 스왑 파티션 또는 스왑 파일을 생성합니다.
스왑 파티션을 생성하는 경우, 파티션을 생성한 후 mkswap
명령어로 스왑 파티션을 초기화해야 합니다. 스왑 파일을 생성하는 경우, dd
명령어로 파일을 생성한 후 mkswap
명령어로 스왑 파일을 초기화해야 합니다.
위의 명령어를 사용하여 스왑 메모리를 설정할 수 있습니다.
✔️ 설정 확인
free -h
제대로 설정되었다면, Swap에 2.0Gi가 설정된 것을 확인할 수 있습니다.
(설정 후에 286Mi를 사용하고 캡쳐했습니다. 설정 직후에는 used에 0B가 표시될거에요.)
✔️ EC2 인스턴스 재부팅시에도 동일하게 스왑 메모리 할당하도록 정하기
아래 설정 파일 안에 한 줄을 추가하면 됩니다.
sudo vi /etc/fstab
처음 파일을 열었을 때의 모습입니다.
파일 맨 아랫 줄에 아래 내용을 추가해 줍니다.
/swapfile swap swap defaults 0 0
i 누르면 insert 모드로 변경되고, 방향 키를 사용해서 파일의 끝까지 온 다음에 enter를 치고 위의 내용을 복사 붙여넣기 한 다음에 esc
:wq
누르고 파일에서 나가면 됩니다.
도움이 되었다면, 공감/댓글을 달아주면 깃짱에게 큰 힘이 됩니다!🌟
비밀댓글과 메일을 통해 오는 개인적인 질문은 받지 않고 있습니다. 꼭 공개댓글로 남겨주세요!
'Linux' 카테고리의 다른 글
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 MySQL 설치하기 (0) | 2023.11.01 |
---|---|
[Linux] 간단하게 복사 붙여넣기로 Ubuntu EC2에 Docker 설치하기 (0) | 2023.10.24 |
[Linux] EC2 key로 SCP 원격 파일 복사 Permission denied (publickey) 트러블슈팅 (해결함) (0) | 2023.08.01 |
[Linux] 리눅스 명령어: 프로젝트에서 자주 사용되는 명령어, chmod 754의 의미, vi와 nano의 차이점 (7) | 2023.05.24 |