Proxmox VE 스왑 공간 늘리기
Proxmox로 이런저런 서비스들을 구축해서 돌리고 있었는데, 가끔씩 가상머신이 종료되어 특정 서비스가 먹통이 되는 문제가 생겼다.
문제를 살펴보니 OOM(Out Of Memory)로 서버에 더 이상 할당 가능한 메모리가 없어서 서버 전체가 멈추기 전에 운영체제가 메모리 점유율이 높은 가상머신을 강제종료시켜 메모리 점유율이 높은 클러스터만 자꾸 종료되었던 것이다.
일반적으로 주 기억장치인 메모리의 저장공간이 부족해 교착상태가 되는것을 막기 위해 보조 기억장치에 주 메모리처럼 작동하는 스왑 공간을 만들어 메모리를 관리하지만, 스왑 역시 용량이 한정되어 있어서 메모리와 스왑 모두가 가득 차서 문제가 발생했다.
이 상황에서 가장 좋은 해결방법은 렘을 추가로 설치하는 것이지만... 당장 자금도 부족한데다, 렘을 주문하더라도 육군 현역 복무중이라 휴가 나가기 전까진 설치가 불가능해서 그 대안을 찾았다.
Proxmox는 Debian 운영체제 위에서 돌아가는데, 이 말인 즉슨 Proxmox에서 가상머신에 나눠주는 스왑 역시 리눅스 다루듯 늘려주면 되는 것 아닐까? 싶어서 바로 시도해보았다.
Proxmox 콘솔에 접속하기
먼저, Proxmox 웹UI나 SSH를 통해서 스왑 공간을 늘리고자 하는 노드로 접속한다.
이때, 꼭 루트 계정으로 접속해서 권한을 확보해주어야 한다.
스왑 파일 생성하기
스왑 파티션을 만드는 것은 파일 시스템을 수정해야 하는데, Proxmox의 파일 시스템이 어떻게 구성되어 있는지 확실하지 않기도 하거니와 파일 시스템을 잘못 수정했다간 서버를 날려먹는 수 있기 때문에 스왑 파일을 사용하는 방식으로 진행했다.
스왑 파일을 만들기 위해 먼저 아래 명령어를 원하는 용량에 맞추어 수정한 후 입력해주자. 예시는 2GB의 빈 파일을 생성한다. (1024 * 2048MB(2GB) = 2097152)
dd if=/dev/zero of=/swapfile bs=1024 count=2097152
if=/dev/zero
➜ /dev/zero로 부터 파일을 읽어온다는 뜻이에요.(/dev/zero는 null로 가득 차 있는 특별한 파일이에요.)
of=/swapfile
➜ /swapfile에 읽어들인 파일 쓰겠다는 뜻이에요.bs=1024
➜ 한번에 최대 1024바이트를 읽고 쓰겠다는 뜻이에요.count=2097152
➜ 총 2097152 블록을 복사해요.스왑 파일에 권한 부여하기
스왑 파일의 내용은 메모리와 다름 없기 때문에 이 파일을 다른 누군가 읽게되면 상당히 큰 위협이 될 것이다. 그러니 루트 계정만 사용할 수 있도록 방금 만든 파일에 권한을 올바르게 지정하자.
chown root:root /swapfile
chmod 0600 /swapfile
스왑 파일로 지정해주기
이제 null로 가득찬 빈 파일을 리눅스에서 스왑 파일로 사용하도록 설정해주자.
mkswap /swapfile
swapon /swapfile
이제 free -h
명령어를 통해 리눅스에서 할당된 스왑 파일을 인식하고 사용하고 있는 모습을 확인할 수 있다.
재부팅시에도 스왑 파일을 사용하도록 설정하기
하지만 이번 세션에서만 사용하도록 설정된 것이므로 재부팅 할 경우 스왑 공간을 다시 지정해 주어야 한다. 그러니 부팅시마다 자동으로 스왑 파일을 인식하고 구성하도록 설정해주자.
먼저 텍스트 에디터로 /etc/fstab
을 열어주자
nano /etc/fstab
/etc/fstab
은 리눅스가 부팅하며 읽는 파일 시스템 구성을 담고 있는 설정 파일이에요./etc/fstab
마지막 줄에 다음 내용을 추가하고 저장하자.
/swapfile none swap sw 0 0
마지막으로 저장한 구성대로 부팅시에 자동으로 스왑 파일이 사용되는지 확인하기 위해 재부팅하고 메모리를 확인해보자.
reboot
free -h
문제 없이 구성되었다면 재부팅 이후에도 스왑 공간이 늘어난 것을 확인할 수 있으며, Proxmox 웹 UI 에서도 늘어난 스왑 공간을 확인할 수 있을 것이다.