본문 바로가기
리눅스

How to Add a Swap File On Debian

by 다움위키 2023. 12. 8.

요즘은 과거에 비해서 RAM의 가격이 낮아져서 적어도 8G 이상의 메모리를 시스템에 설치를 합니다. 이러다 보니 특별히 그래픽을 많이 사용하지 않는 경우에는 메모리가 많이 남게 됩니다. 저의 경우에도 16G 정도의 시스템에서는 메모리를 전부 사용하는 일을 본 적은 아직 없습니다. 이런 상황에서 과거에 알려진 스왑 파일 시스템은 물리 메모리의 2배라는 인식도 맞지 않습니다.

그래서 레드헷(RedHat, 2018년 1월)에서는 시스템의 메모리 정도에 따라서 스왑 파일 시스템의 크기를 다르게 구성하는 것을 권하고 있습니다.

RAM swap space swap space with hibernation
2GB 미만 RAM의 2배 크기 RAM의 3배 크기
2GB ~ 8GB RAM과 같은 크기 RAM의 2배 크기
8GB ~ 64GB 적어도 4GB 크기 RAM의 1.5배 크기
64GB 이상 적어도 4GB 크기 Hibernation 추천안함

한편, 과거의 물리적인 한계의 HDD의 성능을 벗어나기 위해 반도체로 만든 SSD의 성능은 놀랍게 빨라졌습니다. 그러나 상대적으로 기가 바이트당 가격은, HHD에 비해서 SSD가, 10배 정도 높습니다. 이런 상황에서 시스템은 SSD를 사용하지만, 많은 데이터는 HDD에 보관하는 것이 좀 더 일반적일 것입니다.

그러므로 SSD에 고정적으로 별도의 스왑 파티션을 만들어 두는 것보다는 필요에 따라 크기를 변경할 수 있도록 파일 형태로 스왑을 관리해 보고자 합니다.

스왑 파일

새로운 스왑 파일을 만들기 전에 현재 시스템에 적용된 스왑 시스템을 먼저 확인합니다:

  • swapon -s

시스템에 스왑 시스템이 없다면, 아무것도 출력하지 않습니다.

다음으로 현재 파일 시스템을 확인해서 어느 정도의 스왑 파일 시스템을 만들 수 있는지 확인을 합니다.

  • df
Filesystem      1K-blocks      Used  Available Use% Mounted on
udev              8147380         0    8147380   0% /dev
tmpfs             1642328      9540    1632788   1% /run
/dev/nvme0n1p5  119282932  13640788   99559840  13% /
tmpfs             8211636     25072    8186564   1% /dev/shm
tmpfs                5120         4       5116   1% /run/lock
tmpfs             8211636         0    8211636   0% /sys/fs/cgroup
/dev/nvme0n1p2      97280     28985      68295  30% /boot/efi
tmpfs             1642328        44    1642284   1% /run/user/1000

스왑 파일 만들기

아래의 명령으로 2G의 파일을 스왑으로 사용하기 위해 준비를 합니다.

  • sudo dd if=/dev/zero of=/swapfile bs=1024 count=2048k

여기서 of=/swapfile은 파일 이름을 지정하는 것입니다. 물리적인 장치가 마운트된 위치 아래에 적당한 이름으로 만들어 줍니다.

만들어진 파일을 스왑 파일로 만듭니다.

  • sudo mkswap /swapfile

스왑 파일 사용하기

만들어진 스왑 파일을 시스템에서 사용하도록 명령합니다.

  • sudo swapon /swapfile

정상적으로 시스템에서 인식을 했는지 확인을 합니다.

  • sudo swapon -s
Filename            Type            Size    Used    Priority
/swapfile           file            2097148 0       -2

정상적으로 스왑 파일이 동작을 한다면, 시스템이 시작할 때 자동으로 인식하도록 설정을 추가해 줍니다.

  • sudo nano /etc/fstab
/swapfile       none    swap    sw      0       0

잦은 스왑은 시스템에 부하를 가중시키므로, 파일의 Swappiness를 10으로 설정하는 것이 좋습니다.

  • echo 10 | sudo tee /proc/sys/vm/swappiness

이 부분도 시스템이 시작할 때 자동으로 적용되도록 설정을 추가(또는 수정)해 줍니다.

  • sudo nano /etc/sysctl.conf
vm.swappiness = 10

허가권 수정

스왑 파일 시스템을 다른 사용자가 읽어서는 안됩니다. 다음과 같이 사용자와 권한을 수정해 줍니다.

  • sudo chown root:root /swapfile
  • sudo chmod 0600 /swapfile

점검

주기적으로 다음 명령을 실행해서 스왑 파일을 사용하는지 확인을 합니다.

  • free
              total        used        free      shared  buff/cache   available
Mem:       16423272     3057984    11834936       78188     1530352    12935308
Swap:       2097148           0     2097148

스왑 파일 제거

Zram을 이용하면, 디스크 I/O의 부담이 줄기 때문에, 스왑 파일을 대체할 수 있습니다.

따라서, zram을 설정했다면, 스왑파일을 아래와 같이 제거할 수 있습니다.

먼저 스왑으로 사용하는 스왑파일을 중지합니다.

  • sudo swapoff -v /swapfile

그런 다음, /etc/fstab에서 위에서 추가한 줄을 제거하거나, 주석처리합니다.

마지막으로 해당 파일을 삭제합니다.

  • sudo rm /swapfile

External Resources