1초 완성? 리눅스(Linux), fallocate로 스왑(Swap) 파일 만들고 적용하는 방법!

스왑(Swap)은 메모리가 꽉 차서 여유 공간이 부족할 때 메모리를 대신하여 사용하는 하드디스크 상의 파티션이나 파일 형태의 공간입니다. 리눅스 시스템의 메모리가 부족해지는 순간이 오면, 활발하게 사용하지 않는 프로그램이 메모리에서 하드디스크 상의 스왑 공간으로 이동합니다. 메모리가 부족할 때 하드 디스크의 일부 공간을 메모리처럼 활용하는 셈인데요.

 

스왑 공간은 앞서 말씀드렸듯이 전용 스왑 파티션(Swap Partition)과 스왑 파일(Swap File)의 두 종류가 있습니다. 리눅스를 처음 설치하면서 따로 스왑 파티션을 만들고 설정하지 않았다면 이후 사용 중에 스왑 파티션을 만들기가 번거로울 수 있는데요. 이럴 때 스왑 파일을 활용하면 간편하게 스왑 공간을 생성할 수 있습니다.

 

리눅스 서버를 관리 할 때도 메모리 부족으로 스왑을 추가할 때 고민이나 머리 아픈 생각을 할 필요 없이 바로 스왑을 추가할 수 있어 좋고요.

 

간편하게 스왑 공간을 생성하는 방법! 이번 글에서는 스왑 파일을 생성하고 적용하는 방법을 살펴보겠습니다. 특히, 기존 방식인 dd 명령을 사용하면 어느 정도 시간이 걸리는데요. 비교적 새로운 명령인 fallocate를 사용하면 엔터 키를 누르는 순간 즉시 파일을 생성합니다. 아래에서 하나씩 알아볼까요?

 

 
스왑 파일(Swap File)을 만드는 방법
 
스왑 파일 생성 방법

 

아래의 방법 대로 진행하면 1GB의 스왑 파일을 생성할 수 있습니다. 1GB가 아닌 2GB 파일을 생성하고 싶으시다면 1G 부분을 2G로 바꿔주세요.

 

앞서도 언급했던 fallocate 명령으로 스왑 공간에 사용할 스왑 파일을 생성합니다.

sudo fallocate -l 1G /swapfile  [명령어 복사]

덧붙여서 faillocate가 설치되어 있지 않다면 fallocate failed: Operation not supported라는 오류가 표시됩니다. 이럴 때는 아래와 같이 기존의 dd 명령으로 스왑 파일을 생성합니다.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576  [명령어 복사]

스왑 파일은 root 계정만 읽기 쓰기가 가능해야 합니다. 아래 명령으로 적합한 권한을 설정해 줍니다.

sudo chmod 600 /swapfile  [명령어 복사]

mkswap 명령으로 스왑 파일(Swap File)을 리눅스의 스왑 영역으로 설정합니다.

sudo mkswap /swapfile  [명령어 복사]

마지막으로 다음 명령으로 스왑 사용을 시작합니다.

sudo swapon /swapfile  [명령어 복사]

일시적이 아닌 영구적으로 스왑 파일을 시스템에 적용하려면 /etc/fstab 파일을 열고 맨 마지막 줄에 아래 내용을 추가합니다.

/swapfile swap swap defaults 0 0  [명령어 복사]

참고로 리눅스 터미널에서 텍스트 편집기 사용이 익숙하지 않은 분은 nano(나노) 에디터 사용을 추천드립니다! sudo nano /etc/fstab 명령으로 파일을 열고 파일 끝에 위 내용을 추가한 다음 Ctrl + O, 엔터 키로 내용을 저장하고, Ctrl + X 키로 편집기 환경을 빠져나올 수 있습니다.

 

이제 swapon이나 free 명령으로 스왑이 시스템에 잘 적용되었는지 확인해 보세요.

sudo swapon --show  [명령어 복사]

출력 결과:
NAME      TYPE  SIZE   USED PRIO
/swapfile file 1024M 507.4M   -1

sudo free -h  [명령어 복사]

출력 결과:
              total        used        free      shared  buff/cache   available
Mem:           488M        158M         83M        2.3M        246M        217M
Swap:          1.0G        506M        517M

 

 
swappiness 값 변경 방법
 
스왑 사용 빈도 조정

 

Swappiness는 리눅스의 스왑 공간 사용 빈도를 결정하는 설정 값입니다. 0에서 100사이의 값을 지정 하는데요. 0에 가까울수록 가능한 한 스왑 공간 사용을 피하고, 100에 가까울수록 스왑 공간을 더욱 자주 활용합니다.

 

swappiness의 기본 값은 60으로 설정되어 있습니다. 아래 명령을 실행하면 현재 설정된 swappiness 값을 확인할 수 있고요.

cat /proc/sys/vm/swappiness  [명령어 복사]

출력 결과:
60

기본 값 60으로도 리눅스 사용에 문제가 없지만, 웹사이트나 서비스를 운영 중인 서버라면 그 이하의 값을 설정해주는 편이 좋습니다.

 

재시작 전까지 임시로 swappiness 값을 10으로 변경하여 적용하려면 아래 명령을 입력하고 실행합니다.

sudo sysctl vm.swappiness=10  [명령어 복사]

시스템 재시작 이후에도 새로 변경한 값이 적용되도록 하려면 /etc/sysctl.conf 파일 맨 마지막 줄에 아래 내용을 추가합니다.

vm.swappiness=10  [명령어 복사]

 

 
스왑 파일(Swap File) 제거 방법
 
스왑 파일 제거

 

어떤 이유에서든 스왑 파일 사용을 중지하고 제거하고 싶으시다면 아래 단계 대로 진행해 보세요!

 

우선, 아래 명령을 실행하여 사용을 중지합니다.

sudo swapoff -v /swapfile  [명령어 복사]

/etc/fstab 파일에서 직접 추가한 내용인 /swapfile swap swap defaults 0 0을 지우고 저장합니다.

 

마지막으로 rm 명령으로 실제 스왑 파일을 삭제합니다.

sudo rm /swapfile  [명령어 복사]

 

 
스왑 파일 생성 방법
 
손쉽게 스왑 추가

 

렇게 해서 리눅스에서 손쉽게 스왑 파일을 생성하고 시스템에 적용하는 방법을 알아봤습니다. 문제가 발생하거나 의견이 있으신 분은 아래 댓글로 알려주세요. 혹시 리눅스에서 컴퓨터 화면 녹화에 어떤 프로그램을 사용하면 좋지 고민하고 계신가요? 리눅스 화면 녹화, 이 프로그램을 사용해보시겠어요? - 스크린 스튜디오(ScreenStudio) 글도 확인해 보세요!

최종 수정일: 2020년 7월 8일, 03:27

서지스윈

누군가가 무언가를 시작하고 해낼 수 있는 기반을 'IT'로 전달하고 싶어 이 ‘서지스윈 @IT 블로그 매거진’를 만들었고, 지금도 설레는 마음으로 밤낮 분투하고 있습니다. 무엇보다 이 블로그, 사이트가 IT와 기술을 이해하고, 유용한 소프트웨어를 발견하는 데 도움이 되었으면 좋겠네요.