Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스 스왑 파티션 완벽 가이드: 개념부터 설정 방법까지

대부분의 리눅스 설치 가이드에서는 스왑(swap) 파티션을 함께 만들 것을 권장합니다. 운영체제 전체를 하나의 파티션에 설치하는 데 익숙한 윈도우 사용자에게는 다소 생소하게 느껴질 수 있습니다.

그렇다면 스왑 파티션은 정확히 어떤 역할을 하며, 꼭 필요한 것일까요? 그리고 크기는 어느 정도로 잡아야 할까요? 이 질문들에 대한 올바른 답을 알면 시스템 성능을 크게 향상시킬 수 있습니다.

리눅스 스왑 파티션의 역할

스왑 파티션은 RAM의 넘침(오버플로우) 공간 역할을 합니다. RAM이 가득 차면 추가로 실행되는 애플리케이션은 RAM 대신 스왑 파티션에서 동작하게 됩니다.

RAM을 실제로 늘리지 않고도 컴퓨터의 사용 가능한 메모리를 늘리는 쉬운 방법처럼 들리지만, 실제로는 그렇지 않습니다. RAM은 매우 빠르기 때문에 이상적인 메모리 하드웨어이며, 상대적으로 훨씬 느린 하드 드라이브와는 비교할 수 없습니다.

속도가 크게 향상된 SSD 덕분에 성능 저하 문제는 예전만큼 심각하지 않게 되었지만, SSD조차 RAM의 속도를 따라잡지는 못합니다. 최신 NVMe SSD도 마찬가지입니다. 무엇보다 SSD의 경우 불필요한 수명 소모를 유발하고 싶지 않을 것입니다.

스왑 파티션과 가장 유사한 개념은 윈도우의 페이지 파일(pagefile)이지만, 두 기술 사이에는 여러 가지 기술적 차이가 존재합니다.

리눅스 스왑 파티션은 단순한 임시 저장 공간 그 이상의 역할도 수행합니다.

메모리 우선순위 관리

스왑 파티션은 메모리의 일부 항목을 하드 드라이브로 옮겨 더 중요한 데이터를 위해 RAM 공간을 확보하는 데 도움을 줍니다. 즉, 자주 사용되지 않는 항목들이 스왑 파티션으로 이동됩니다.

여기서 '자주 사용되지 않음'의 기준이 되는 것이 바로 '스와피니스(swappiness)' 값입니다. 이름이 다소 재미있지만 실제로 사용되는 공식 용어이며, 사용자가 직접 설정할 수 있습니다. 스와피니스 값이 높으면 데이터가 스왑 파티션으로 이동할 가능성이 커지고, 낮으면 이동 가능성이 줄어듭니다.

최대 절전 모드(Hibernation)

시스템을 최대 절전 모드로 전환하면 메모리의 내용이 스왑 파티션에 저장됩니다. 따라서 스왑 파티션이 없다면 리눅스에서 최대 절전 모드를 사용할 수 없습니다.

다만 요즘은 최대 절전 모드를 활용하는 사용자가 많지 않으므로, 이 기능이 필요하지 않을 수도 있습니다.

스왑 파티션이 꼭 필요할까?

그렇다면 스왑 파티션은 필수일까요? 결코 그렇지 않습니다! 리눅스 시스템은 스왑 파티션 없이도 충분히 잘 작동합니다. 앞서 스왑 파티션의 장점을 살펴봤으니, 이제 반대로 스왑 파티션이 오히려 불필요한 경우를 알아보겠습니다.

스왑 파티션이 도움이 되지 않는 경우

스왑 파티션에도 단점이 있습니다. 사용하지 않을 때에도 디스크 공간을 고정적으로 차지하며, 스왑을 과도하게 사용하면 주 드라이브의 마모가 가속화됩니다. 어떤 경우에는 스왑 파티션이 성능 향상에 전혀 도움이 되지 않기도 하는데, 오히려 스왑 파티션이 있는 것이 없는 것보다 나쁜 상황도 있습니다.

예를 들어 RAM 2GB와 5400rpm 하드 드라이브를 탑재한 오래된 넷북에 리눅스를 설치했다고 가정해 보겠습니다. 2GB 메모리로는 브라우저 탭 몇 개만 열어도 금방 가득 찰 것입니다. 스왑 파티션이 있으면 메모리가 넘쳐도 모든 탭을 열어둘 수 있겠죠.

하지만 곧 5400rpm 하드 드라이브의 속도 병목이 발생합니다. 하드 드라이브가 너무 느린데 시스템은 계속해서 스왑 파티션에 접근하려 하기 때문에, 넷북은 극도로 느려집니다. 메모리를 확보하기 위해 모든 프로그램을 닫기 전까지는 사실상 사용이 불가능한 수준입니다.

더 큰 문제는 설정된 스와피니스 값이 RAM에 여유 공간이 생겼을 때 스왑 파티션의 모든 데이터를 되돌려준다는 것을 보장하지 않는다는 점입니다. 상당량의 데이터가 스왑 파티션에 그대로 남아 넷북은 계속 느려지고, 결국 깨끗한 상태로 시작하기 위해 재부팅해야 합니다. 시스템이 종료 전에 스왑 파티션의 모든 내용을 정리해야 하기 때문에 재부팅마저 오래 걸립니다.

스왑이 없을 때 발생하는 일

스왑 파티션 없이 시스템을 구성하기로 했다면 위험 요소도 알아두어야 합니다. 컴퓨터가 사용 가능한 RAM보다 더 많은 메모리를 필요로 하는 순간, 화면이 멈춰버릴 수 있습니다. 강제로 시스템을 종료해야 하고, 작업 중이던 모든 데이터를 잃을 위험도 있습니다.

이런 상황에서는 한 번이라도 스왑 파티션이 있었다면 좋았을 것이라고 생각하게 됩니다. 결국 자신이 저장 공간 부족을 자주 겪는지, 그리고 스왑으로 할당한 만큼(예: 4GB)의 저장 공간이 줄어드는 것을 체감할 수 있을지에 따라 판단하면 됩니다.

리눅스 스왑 파티션 권장 설정

스왑 파티션이 필요한 상황과 적절한 크기에 대한 권장 사항은 다음과 같습니다.

  • 최대 절전 모드를 사용하고 싶다면 스왑 파티션이 반드시 필요합니다. 파티션 크기는 설치된 메모리 용량에 이미 스왑으로 이동된 항목들을 위한 여유분 10~25%를 더한 크기로 설정하세요.
  • 약간의 성능 향상만 원한다면(7200rpm 이상의 하드 드라이브를 사용 중이라면) 스왑 파티션을 추가해도 좋습니다. 크기는 자유롭게 정할 수 있지만, 최대 절전 모드용으로 만들 때보다 크게 잡을 필요는 없습니다.
  • 추가 RAM이 필요한 무거운 애플리케이션을 가끔 사용한다면, 스왑 파티션은 안정감을 주는 보험 같은 역할을 합니다. 이 경우 스왑 파티션을 RAM 크기만큼 크게 만들 필요는 없습니다.
  • 5400rpm 하드 드라이브를 사용 중이라면 속도 병목으로 인해 오히려 성능이 나빠질 수 있으므로 스왑 파티션을 만들지 않는 것이 좋습니다. 그래도 스왑이 꼭 필요하다면 위의 크기 기준을 따르되, 스와피니스 값을 훨씬 낮게 변경해야 합니다.

스와피니스(Swappiness) 값 변경 방법

리눅스 데스크톱의 많은 설정이 그렇듯이, 스와피니스 값도 텍스트 파일에 저장되어 있습니다. /proc/sys/vm 경로에서 해당 파일을 찾을 수 있습니다.

파일을 열면 현재 스와피니스 값을 나타내는 숫자 하나가 표시됩니다. 루트(root) 권한만 있다면 어떤 텍스트 편집기로든 이 파일을 수정할 수 있습니다.

우분투와 페도라에 기본 포함된 GNOME 텍스트 편집기를 사용한다면 다음 명령어를 입력해 보세요:

sudo gedit /proc/sys/vm/swappiness

설치된 텍스트 편집기와 관계없이 사용할 수 있는 명령줄 방법도 있습니다. 간단히 아래 명령어를 입력하면 됩니다:

sudo sysctl vm.swappiness=20

값은 0부터 100까지의 숫자를 입력할 수 있습니다. 이 값은 리눅스가 언제 프로세스를 메모리에서 스왑 파티션으로 이동시키기 시작할지를 결정합니다. 예를 들어 값이 20이면 메모리 사용률이 80%에 도달했을 때 프로세스가 이동되고, 우분투의 기본값인 60은 메모리 사용률이 40%일 때 프로세스가 이동됨을 의미합니다.

변경이 제대로 적용되었는지 확인하려면 해당 텍스트 파일을 다시 열면 됩니다. 물론 터미널을 이용하면 더 빠르게 확인할 수 있습니다. 다음 명령어를 입력하세요:

cat /proc/sys/vm/swappiness

PC가 더 빨라졌나요?

스왑 파티션은 시스템 성능에 큰 영향을 미칩니다. 때로는 좋은 방향으로, 때로는 나쁜 방향으로 말이죠. 이제 스왑 파티션의 용도를 이해했으니, 자신의 상황에 맞는 현명한 결정을 내릴 수 있을 것입니다.

디스크를 다시 파티셔닝하기 전에, 메모리 관리는 RAM 용량과 리눅스 스왑 파티션 크기 외에 더 알아야 할 내용이 있다는 점을 기억하세요. 리눅스가 RAM을 어떻게 관리하는지 먼저 학습해 두는 것도 좋습니다.