Linux Mint 스왑 추가하기

Kdenlive 로 영상편집 하는 튜토리얼 해보다가 렌더링을 돌렸는데, 램이 자꾸 부족하다는 경고 메세지가 떴다. 그렇게 큰 영상도 아니라서 일단은 Kdenlive를 오래 굴리면 이놈이 메모리를 잡아먹는 문제가 있는걸로 보임. 재시작 하니까 훨씬 적게먹긴해서 문제는 되지 않았다. 하지만, 저 경고 메세지가 뜬다는 자체가 문제. ‘어? 스왑파일이 없나?’ 오래전에 리눅스 설치시에는 각종 파티션을 사용자가 직접 잡아 설치하곤 했는데, 이 때 스왑영역도 잡았던 기억이 있다. 리눅스 민트는 그냥 설치 따라가면 통채로 루트로 마운트 하게 되는데, 아니 적어도 이러면 스왑파일은 자동생성 해줘야 하는거 아닌가 싶은거지. 현실은 스왑자체가 활성화 안된 상태다. 아무래도 언젠가 문제가 생길거 같아서 스왑파일을 만들려고 했는데, 내가 리눅스로 할당한 공간이 150기가다. 근데, 벌써 90기가가 사용중이라 스왑파일 만들면 공간부족 문제가 또 생길거 같았음. 그래서 일단, 스왑용 파티션을 따로 생성했다.

나는 윈도우즈를 사용하던중이라 개인 데이터 NVME 드라이브 500기가중 150기가 파티션을 할당해 리눅스를 설치했다. 나머지 350기가중 아직 여유가 많이 남아서 40기가를 추가로 파티션을 나누었다. 스왑은 보통 메모리의 두배까지 만드는거 같은데, 내가 16기가니까 32기가, 그냥 여유있게 40기가로 잡았다. 윈도우즈에서 기존 파티션을 줄이는건 간단하다. 직접 작성하려다가 LG전자 사이트에 잘 정리되어 있어서 그걸로 대체.

https://www.lge.co.kr/support/solutions-20152434508501

위 사이트의 이미지를 참고하자면, “디스크 관리”를 실행한 후,

위 그림처럼 원하는 파티션을 선택해 오른쪽 클릭하여 “볼륨 축소”를 선택한다.

축소할 크기를 위 그림처럼 입력한 후, 축소를 하면 디스크를 정리해 기존 파티션을 축소하고 여유공간을 만들어준다.

이제 리눅스로 돌아오자. 리눅스에서 Gparted 를 실행한다. 없으면 설치. 기본적인 디스크 관리 툴이 있긴한데, Gparted가 기능도 많고 편하다. 특히나, swap관련 기능들도 포함되어 있어서 좋음.

해줘야 할 일은 새로 생성한 파티션을 swap파티션으로 포맷하고 swap기능을 활성화 시키는 것이다.

나는 이미 작업을 다 했기 때문에, linux-swap으로 표시가 되는데, 원하는 파티션을 선택해서 오늘쪽 클릭하거나, 위 메뉴에서 분할 영역>다음으로 포맷을 선택하면 linux-swap이 있고 이를 선택하면된다. Gparted는 변경사항을 바로 적용하지 않는다. 만약에 여러가지 변경사항을 만들었다면, 이걸 큐에 넣었다가 사용자가 승인했을 때, 한 번에 모든걸 실행한다.

변경사항이 있는경우 위 그림에 있는 녹색 체크표시가 활성화 되는데, 이걸 클릭하면 변경사항 작업을 시작한다.

작업이 완료되면, 해당 파티션에서 우클릭해 “스왑 활성화”를 누르면 바로 스왑디스크가 활성화 된다. 문제는 이게 재부팅되면 다시 꺼져서 사용자가 매번 켜줘야 한다는 점이다. 이를 항상 활성화 하기 위해 fstab 파일을 고쳐보자.

fstab파일은 /etc 에 위치한다. 이 파일은 리눅스가 부팅할 때, 어떤 파일 시스템을 어떻게 마운트할지 기술해주는 파일이다. 여기에 기록하기위해 먼저 생성한 스왑 파티션의 UUID를 확인해보자. UUID는 파티션의 고유한 ID번호로 레이블이나 다른 정보로도 이 파티션을 인식이 가능하겠지만, UUID는 다른 정보와 다르게 변경될 여지가 없는 고유한 값으로 가장 확실하게 명시가 가능하다. 이를 확인하는 것 역시 Gparted에서 가능하다.

위 그림처럼 파티션을 우클릭해서 정보를 선택해보면, 다음과 같이 정보들이 표시된다.

위 그림과 같이 표시되는데, 여기에서 UUID를 복사해두고 사용하면 된다.

커맨드 라인으로 UUID 확인이 가능한 또 하나의 방법이 있는데, 바로 blkid 명령어이다. 이는 블럭 디바이스의 정보를 보는 명령어이다.

명령어를 사용하면, 위 그림처럼 표시가 되는데, 여기에서 아까 생성한 스왑 파티션의 UUID를 확인 할 수 있다.

이제 /etc/fstab 파일을 vim으로 열자. 시스템 파일이므로 sudo 명령이 필요하다.

$ sudo vim /etc/fstab 

이제 파일의 끝에 다음 라인을 추가하자.

UUID=735b3be3-779c-4d21-a944-b033225f3ab4 none   swap    sw      0       0

위 라인의 의미는 먼저 UUID로 디스크 파티션을 지정하고, 두번째 none으로 된 부분은 원래 마운트 위치를 가리키는데, swap 파티션이라 마운트가 필요없어 none으로 표시한 것이며, 세번째는 ntfs, ext4와 같은 파일 시스템 타입인데, swap타입을 나타내고, sw는 다른 파일시스템이라면 다른 옵션이 들어가지만 sw로 단순히 swap영역을 활성화 시키는 의미를 가진다. 뒤에 0은 dump사용여부를 가리키는데 안쓰이므로 0이고, 마지막 0은 부팅시 fsck로 파일 시스템을 검사할 순서를 지정해주는건데, 0은 “검사하지 않음” 을 뜻한다. 이는 swap 파티션이라 검사가 필요없어 그렇다.

이제 작업은 다 끝났고, 재부팅을 하면 된다. 스왑 활성화 여부는 여러가지 확인 방법이 있는데, 간단하게 커맨드 라인에서는 다음과 같이 “swapon –show”로 확인 가능하다.

batmask@batmask-desktop:~$ swapon --show
NAME           TYPE       SIZE USED PRIO
/dev/nvme0n1p4 partition 39.1G   0B   -2
batmask@batmask-desktop:~$ 

스왑영역은 무조건 사용되지는 않으며, swappiness 값에 따라 다르게 동작한다.

의미동작 경향
0거의 스왑 안 함 (RAM 끝까지 사용 후에만 스왑)데스크톱용에 적합
10~30RAM이 많이 찼을 때만 일부 스왑일반적인 설정
60 (기본값)메모리 사용률이 중간쯤 돼도 적극적으로 스왑 사용서버 기본값
100가능한 한 빨리 스왑 사용실험용 수준

이를 확인하는 방법은 다음과 같다.

batmask@batmask-desktop:~$ cat /proc/sys/vm/swappiness
60
batmask@batmask-desktop:~$ 

마지막으로 파티션이 아니라 스왑파일을 생성하는 경우를 알아보자. 기본적으로 과정은 똑같다. 파티션을 만들었듯, 스왑 파일을 생성하고 이를 스왑용으로 변경하고 fstab에 등록하면 된다. 파일시스템 루트에 만든다고 가정하면 다음과 같다.

batmask@batmask-desktop:~$ sudo fallocate -l 32GB /swapfile #32gb 크기의 파일생성
batmask@batmask-desktop:~$ sudo chmod 600 /swapfile #읽기 쓰기 권한 주기
batmask@batmask-desktop:~$ sudo mkswap /swapfile  #스왑 파일로 변경
batmask@batmask-desktop:~$ sudo swapon /swapfile # 스왑 파일을 스왑영역으로 활성화
batmask@batmask-desktop:~$ free -m  # 메모리 및 스왑 사용량 체크

fstab 변경은 앞에서 파티션에서 한 것과 동일하다. 다만, UUID식별자대신 직접 파일 경로를 입력한다.

/swapfile none   swap    sw      0       0

이렇게 스왑영역을 직접 만들어 줬다. 아무리 쓰기편하다지만, 이런걸 일일이 설정하는걸 보니 리눅스는 역시 리눅스구나 싶은 생각이 든다. 한편으론, 딱히 스왑영역이 없어도 일반기능은 불편없이 사용해 왔다는게 굳이 기본으로 만들지 않는게 합리적인거 같기도 하고. 어쨌든, 메모리 많이 먹는 작업에는 필요할 테니까 정리해둔다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다