Oracle Cloud #5에서, 인스턴스를 처음 만들면 운영체제에서 디스크 스왑을 사용하도록 설정되어 있지 않다고 한 바 있다.
이는 운영체제가 서버 운영체제이기 때문이다. 필자가 현재 설치한 운영체제 또한 서버 운영체제이므로, 당연히 디스크 스왑을 사용하도록 설정되어 있지 않다.
따라서 스왑 설정을 해 줄 것이다.
이전 글에서 스왑 설정에 대해 자세히 설명한 바 있으니, 이 글에서는 간략히 설명하고 넘어갈 것이다.
리눅스에서의 디스크 스왑이란, 물리적인 메모리, 즉 RAM의 용량이 부족한 경우, 보조기억장치(SSD, HDD 등)를 메모리 대용으로 사용하는 메모리 관리 기술을 말한다. 이들의 존재로 인하여 운영체제는 실제로 장착된 메모리의 용량이 부족해도, 디스크 스왑의 힘을 빌려 프로그램을 실행할 수 있다. 디스크 스왑을 사용하지 않는 경우, 가용 RAM이 부족하면 그대로 프로그램이 충돌한다.
물론 라즈베리 파이에서 그렇게나 많은 가용 메모리를 요구하는 프로그램을 구동할 일은 거의 없으나, 만일을 대비하여 나쁠 것이 없는 것은 사실이므로, 적당한 크기의 스왑 파일을 만들어 두는 것은 도움이 된다.
리눅스에서 디스크 스왑은 두 가지 방법으로 구현된다.
첫 번째는 디스크에 스왑 파티션을 구성하고, 스왑 파티션을 이용하여 디스크 스왑을 구현하는 방법이다.
두 번째는 스왑 파일을 생성하고, 스왑 파일을 이용하여 디스크 스왑을 구현하는 방법이다.
스왑 파티션을 구성하는 방법의 경우, 사용자가 사용하는 파티션과 스왑 파티션이 논리적으로 분리되므로, 사용자나 프로그램에 의해 스왑 기능에 문제가 생길 확률이 적지만, 따로 파티션을 구성해야 하므로, 구성 난이도가 올라가고, 이를 구성하는 과정에서 기존 파티션에 문제가 생겨 데이터 손실이 발생할 수도 있다.
스왑 파일을 생성하는 방법의 경우, 단순히 스왑 파일을 만들고 그것을 시스템에 등록하면 되기 때문에 난이도가 쉽고, 파티션을 건드리지 않기 때문에, 이에 따른 문제점도 적다. 사용자의 접근이 쉽다는 문제가 있지만, 우리에게는 오히려 좋다.
따라서 이 글에서는 스왑 파일을 이용한다.
스왑 파일 생성 및 등록
스왑 파일의 크기를 정하기 위해 아래의 명령을 입력한다.
free -m
그러면 다음과 같이 정보가 뜰 것이다.
free 명령어는 리눅스 시스템에서 현재 메모리 사용량을 보여주는 명령으로, "free -m"은 그 결괏값을 메가바이트 단위로 표시하도록 한다. 오늘날의 컴퓨터의 메모리 용량은 대부분 기가바이트 단위이기 때문에, 메가바이트 단위로 결과를 표시하게 하면 보다 편리하게 정보를 읽을 수 있다.
Mem 값이 7937이므로, 전체 메모리 총량은 8GB이다.
이 정도면 스왑 파일이 필요 없지만, 상술하였듯 있어서 나쁠 것은 없다. 필자는 넉넉하게 4GB로 정했지만, 대부분의 경우 이 정도는 과하다. 1-2GB 정도, 더 적게는 512MB도 충분할 것이다.
어찌 되었든, 스왑 파일을 통해 디스크 스왑을 사용하기 위해서는 먼저 스왑 파일을 생성하여야 한다.
아래의 예문을 참고하여 명령을 입력한다.
sudo fallocate -l <스왑 파일의 크기> /swapfile
이 명령문은 <스왑 파일의 크기>만큼 최상위 경로인 "/"에 "swapfile"이라는 이름의 파일을 생성한다.
예를 들어, 4GB의 스왑 파일을 생성하고 싶다면 아래와 같이 입력한다.
sudo fallocate -l 4GB /swapfile
스왑 파일이 정상적으로 생성되었는지 확인하려면 "ls /" 또는 "ll /"을 입력한다.
ls /
ll /
swapfile이 정상적으로 생성된 것을 확인할 수 있다.
파일을 생성하였지만, 이는 그저 4GB의 빈 파일일 뿐이다.
이 파일을 스왑 파일로 만들려면 몇 가지 작업이 필요하다.
먼저 생성된 파일에 권한을 할당한다.
아래의 명령을 입력한다.
sudo chmod 600 /swapfile
"chmod"는 파일의 권한을 변경하는 명령어로, 뒤에 붙은 600은 해당 파일의 권한 속성을 나타낸다.
600의 의미는 파일 소유자에게 읽기(4)와 쓰기(2)를 허용(4+2 = 6)하고, 그 외 그룹 및 기타 사용자에게는 어떠한 권한도 허용하지 않는다(0)는 의미이다.
sudo 권한으로 명령을 실행하였으므로, 파일 소유자인 root 외에는 파일을 건드릴 수 없다.
권한 설정을 하였으면 파일을 스왑 파일로 사용할 수 있도록 스왑 포맷 형태로 변환한다.
아래의 명령을 입력한다.
sudo mkswap /swapfile
스왑스페이스 설정이 되면서, swapfile은 스왑 파일이 되었다.
마지막으로 스왑 파일을 활성화하기 위해 아래의 명령을 입력한다.
sudo swapon /swapfile
스왑 파일 등록이 끝나면 "free -m"과 "swapon -s" 명령을 입력하여 시스템에서 스왑 파일을 이용하여 디스크 스왑을 사용하고 있는지 확인한다.
이제 /etc/fstab 파일에 스왑 설정을 등록하여야 한다. 그러지 않으면 재부팅 이후 스왑 파일을 자동으로 사용하지 않는다.
아래의 명령을 입력한다.
sudo nano /etc/fstab
그러면 아래와 같은 화면이 뜬다.
아래의 항목을 추가한다.
/swapfile none swap sw 0 0
중간의 공백은 [Space] 키가 아니라 [Tab] 키이다.
해당 항목을 입력한 후, [Ctrl + O]를 눌러 저장한 후, [Ctrl + X]를 눌러 편집기를 닫는다.
이후 다시 재부팅하여 부팅 시 자동으로 스왑 파일을 사용하는지 확인한다.
이제 스왑 파일을 이용한 디스크 스왑을 사용할 수 있다.
스왑 파일 등록 해제 및 삭제
디스크 스왑 기능을 해제하거나, 스왑 파일의 구성을 변경 혹은 삭제하기 위해서는 먼저 시스템에서 스왑 파일을 이용한 디스크 스왑을 사용 해제해야 한다.
아래의 명령을 입력한다.
sudo swapoff /swapfile
해당 명령줄을 입력하면 시스템에서 스왑 파일에 저장된 정보를 메모리로 옮기는데, 시간이 조금 걸리므로 기다린다.
스왑 파일을 삭제하려면 먼저 FSTAB의 파일에서 추가한 내용을 삭제한 후 저장한 뒤, 편집기를 닫고 터미널에서 아래의 명령을 입력하여 파일을 삭제한다.
sudo rm /swapfile
관련 글
Linux Mint에서 스왑 파일을 이용하여 디스크 스왑 사용하기
Raspberry Pi 시리즈
'Raspberry Pi' 카테고리의 다른 글
Raspberry Pi #1 - 설치 (1) | 2025.01.01 |
---|
댓글