본문 바로가기
컴퓨터/Linux

Linux Mint에서 스왑 파일을 이용하여 디스크 스왑 사용하기

by Spring13 2023. 11. 30.

리눅스에서의 디스크 스왑이란, 물리적인 메모리, 즉 RAM의 용량이 부족한 경우, 보조기억장치(SSD, HDD 등)를 메모리 대용으로 사용하는 메모리 관리 기술을 말한다. Windows에서는 가상 메모리페이징 파일 기술이 이와 비슷한 역할을 한다.

물론 Linux의 디스크 스왑과 Windows의 가상 메모리 및 페이징 파일은 완벽히 동일한 역할을 하지는 않는다.

Windows에서는 가상 메모리와 페이징 파일이 비슷한 역할을 한다.

 

 

이들의 존재로 인하여 운영체제는 실제로 장착된 메모리의 용량이 부족해도, 디스크 스왑의 힘을 빌려 프로그램을 실행할 수 있다. 모든 메모리 용량 문제를 해결해 주는 것은 아니지만, 디스크 스왑을 이용하는 것과 그렇지 않은 경우를 비교하면 당연히 디스크 스왑 기능을 적극적으로 사용하는 편이 좋다. 프로그램의 퍼포먼스가 떨어지지만, 어쨌든 프로그램을 실행할 는 있기 때문이다. 디스크 스왑을 사용하지 않는 경우, 가용 RAM이 부족하면 그대로 프로그램이 충돌한다.

디스크 스왑이 활성화되어 있지 않았다면 그대로 프로그램이 충돌하였을 것이다.

가용 메모리가 부족하자 시스템에서 디스크 스왑을 사용하는 것을 알 수 있다.


이렇게 편리한 디스크 스왑 기능이지만, 어떠한 이유로 인하여 디스크 스왑 기능이 비활성화되어 있을 때가 있다.

특히 Windows보다도 더욱 많은 권한을 주는 Linux의 경우, 사용자의 실수 한 번에 스왑 기능이 비활성화될 수 있다.

이러한 경우, 사용자가 직접 디스크 스왑 기능을 활성화해야 한다.


리눅스에서 디스크 스왑은 두 가지 방법으로 구현된다.

첫번째는 디스크에 스왑 파티션을 구성하고, 스왑 파티션을 이용하여 디스크 스왑을 구현하는 방법이다.

두 번째는 스왑 파일을 생성하고, 스왑 파일을 이용하여 디스크 스왑을 구현하는 방법이다.

각각 장단점이 있다.

 

스왑 파티션을 구성하는 방법의 경우, 사용자가 사용하는 파티션과 스왑 파티션이 논리적으로 분리되므로, 사용자나 프로그램에 의해 스왑 기능에 문제가 생길 확률이 적다. 그러나, 따로 파티션을 구성해야 하므로, 구성 난이도가 올라가고, 이를 구성하는 과정에서 기존 파티션에 문제가 생겨 데이터 손실이 발생할 수도 있다.

 

스왑 파일을 생성하는 방법의 경우, 단순이 스왑 파일을 만들고 그것을 시스템에 등록하면 되기 때문에 난이도가 쉽고, 파티션을 건드리지 않기 때문에, 이에 따른 문제점도 적다. 그러나, 스왑 파일이 사용자 데이터 파티션에 존재하기 때문에, 이에 따른 문제가 생길 수 있다.


이 글에서는 Linux Mint에서, 보다 난이도가 쉬운 스왑 파일을 이용하여 디스크 스왑을 사용할 것이다.


시스템에서 디스크 스왑 기능이 사용되는지 여부 확인하기


일단 디스크 스왑 기능이 사용되는지 확인할 필요가 있다.

 

가장 먼저 터미널을 연다. 

 

디스크 스왑 기능이 사용되는지 여부를 확인해야 한다. 아래의 명령줄을 입력하거나, 시스템 감시를 연다.

free -m

그러면 다음과 같은 정보가 뜰 것이다.

"free" 명령에 "-m" 옵션을 주면 메가바이트 단위로 정보를 출력한다. 명령어에 대해 자세히 알고 싶다면 "free -help"를 입력하면 된다.

free 명령어는 리눅스 시스템에서 현재 메모리 사용량을 보여주는 명령어이다. 사용 가능한 메모리와 사용 중인 메모리, 버퍼, 캐시 등의 정보를 알 수 있다. 기본값은 킬로바이트 단위이다.

"free -m"은 free 명령어에 -m 옵션을 붙인 것으로, 결과를 메가바이트 단위로 표시하도록 한다. 오늘날의 컴퓨터의 메모리 용량은 대부분 기가바이트 단위이기 때문에, 메가바이트 단위로 결과를 표시하게 하면 보다 편리하게 정보를 읽을 수 있다.

 

Swap 부분이 0으로 표기되므로, 운영체제가 디스크 스왑 기능을 사용하고 있지 않다는 것을 의미한다.

다음 명령줄 또한 입력한다.

swapon -s

이 명령줄은 스왑 파일이 지정되어 있는지를 확인하는 명령줄로, 아무런 메시지가 출력되지 않는다면 스왑 파일이 존재하지 않는다는 의미(=디스크 스왑 기능이 사용되지 않는다는 의미)이다.

 

시스템 감시를 열어서 확인하는 경우 다음과 같은 화면이 나타날 것이다.

스왑 항목이 사용 불가능 상태이므로, 운영체제가 디스크 스왑 기능을 사용하고 있지 않다는 것을 의미한다.


스왑 파일 생성 및 사용


운영체제에서 디스크 스왑 기능이 사용되지 않는다는 것을 알았으니, 이제 스왑 파일을 생성해야 한다.

아래의 예문을 참고하여 명령줄을 입력한다.

sudo fallocate -l <스왑 파일의 크기> /swapfile

 

예를 들어, 2GB의 스왑 파일을 생성하고 싶다면 아래와 같이 입력한다.

sudo fallocate -l 2GB /swapfile

sudo 옵션을 주지 않으면 왼쪽 이미지와 같이 허가 거부 메시지가 뜬다. sudo 옵션은 superuser do의 줄임말로, 최고 권한으로 명령줄을 실행하라는 의미이다.

 

필요한 스왑 파일의 크기는 사용자마다 다르다.

보통의 경우, 장착되어 있는 RAM 용량의 절반~2배 사이의 크기로 설정하나, 필요한 경우 더 크게 형성하여도 된다.

그러나 장착된 RAM 용량의 절반 미만으로 생성하는 것은 꼭 필요한 상황이 아니라면 피하는 것이 좋다. 디스크 스왑 기능이 필요하다는 것은 곧 가용 메모리의 용량이 부족하다는 의미인데, RAM 크기의 절반 미만으로 스왑 파일을 생성하는 것은 별 도움이 되지 않을 가능성이 높다.

 

명령을 실행하였으면 스왑 파일이 생성되었는지 확인한다.


파일을 생성하였지만 지금 단계에서는 그저 2GB의 파일을 만들었을 뿐이며, 이 파일을 스왑 파일로 만들려면 몇 가지 작업이 필요하다.

먼저 생성된 파일에 권한을 할당한다.

 

아래의 명령줄을 입력한다.

sudo chmod 600 /swapfile

"chmod"는 파일의 권한을 변경하는 명령어로, 뒤에 붙은 600은 해당 파일의 권한 속성을 나타낸다.

600의 의미는 파일 소유자에게 읽기(4)와 쓰기(2)를 허용(4+2 = 6)하고, 그 외 그룹 및 기타 사용자에게는 어떠한 권한도 허용하지 않는다(0)는 의미이다.


생성한 스왑 파일을 시스템에서 사용할 수 있도록 스왑 포맷 형태로 변환한다.
아래의 명령줄을 입력한다.

sudo mkswap /swapfile

스왑 파일을 시스템에 등록한다.

아래의 명령줄을 입력한다.

sudo swapon /swapfile

 

운영체제에서 디스크 스왑 기능이 정상적으로 작동하고 있는지 확인한다.

아래의 명령줄을 입력하거나, 시스템 감시를 열어 디스크 스왑 기능이 정상적으로 작동하고 있는지 확인한다.

free -m


경우에 따라, 재부팅 후에 운영체제에서 사용자가 설정한 디스크 스왑 기능을 사용하지 않는 경우가 있는데, 이럴 때에는 /etc/fstab 파일을 에디터로 연 후 항목을 추가하여야 한다.

 

FSTAB 파일은 리눅스 시스템에서 파일 시스템 마운트 정보를 설정하는 파일로, 이 파일에 스왑 설정이 기록되어있지 않으면 부팅 시 자동으로 스왑 기능을 사용하지 않는다.

 

해당 파일은 텍스트 파일이므로, 텍스트 편집기를 이용하면 파일의 내용을 수정할 수 있다.

가장 편한 방법은 nano 편집기를 이용하는 것이다. 리눅스의 기본 편집기이며, 터미널에서 바로 사용할 수 있어 편리하다.

 

아래의 명령줄을 입력한다.

sudo nano /etc/fstab

 

그러면 다음과 같은 텍스트 편집기 항목이 뜰 것이다.

필자의 경우에는 스왑 파일을 지정하였더니 자동으로 항목이 추가되었다.

 

아래의 항목이 존재하면 문제가 없지만, 없다면 아래의 항목을 추가한다.

/swapfile	none	swap	sw	0	0

중간의 공백은 [Space] 키가 아니라 [Tab] 키이다.

해당 항목을 입력한 후, [Ctrl + O]를 눌러 저장한 후, [Ctrl + X]를 눌러 편집기를 닫는다.


스왑 파일 등록 해제 및 삭제


디스크 스왑 기능을 해제하거나, 스왑 파일의 구성을 변경, 삭제하고 싶을 때에는 먼저 스왑 파일을 시스템에서 등록 해제해야 한다.

 

아래의 명령줄을 입력한다.

sudo swapoff /swapfile

스왑 해제 명령을 실행하면 시스템에서 스왑 파일의 내용물을 RAM에 옮긴다.

해당 명령줄을 입력하면 시스템에서 위 이미지에서처럼 스왑 파일에 저장된 내용물을 메모리로 옮기는데, 시간이 조금 걸리므로 기다리자.

 

스왑 파일을 삭제하려면 아래의 명령줄을 입력한다.

sudo rm /swapfile

마지막으로 /etc/fstab 파일에서 위에서 추가한 항목을 제거한다.


참고 자료


728x90
반응형

댓글