웹마스터 팁

리눅스 스왑 파티션 만들기

리눅스에 관한 많은 문서들, 특히 오래 전에 쓰여진 글들일수록 한정된 메모리를 가진 컴퓨터의 스왑(swap) 파일이나 파티션의 중요성을 강조하고 있다. 이런 문서에서는 2,3년 전에 적당한 정도였던 8 내지 16 메가 바이트의 RAM을 가진 컴퓨터를 자주 인용하는데, 마치 그보다 많은 메모리를 가진다면 스왑 파일과 파티션이 필요 없다고 주장하는 것처럼 보인다. 예를 하나 들어보자. 필자는 최근에 96메가 바이트의 RAM을 가진 컴퓨터에 리눅스를 설치했는데, 스와핑에 대해서는 전혀 걱정하지 않고 있었다. 며칠 전 메모리 사용을 살펴보고서야 멀티 태스킹 운영 체제를 몇 년씩이나 사용해 왔음에도 불구하고 시스템을 잘못 구성했다는 것과 스왑 공간이 매우 필요하다는 것을 깨달았다. 그래서 뒤늦게 스왑 파티션을 작성하게 되었다.

리눅스는 하나의 파일을 스왑 공간으로 쓸 수 있도록 해주지만, 하드 디스크 드라이브들 중 하나에 파티션을 따로 마련하는 것보다는 좋지 않은 해결 방법이다. 스왑 파일을 구성하는 디스크 블록은 아마도 연속적이지 않을 것이다(Windows 운영 체제의 느린 스와핑은 주로 이 때문이다). 스왑 파티션의 디스크 블록은 항상 연속적이기 때문에 스왑 파티션을 따로 두는 것이 더 좋다.

스왑 파티션은 표준 파일 시스템을 사용하지 않기 때문에, 맨 처음 필자가 필요로 했던 것은 스왑 파티션으로 사용하기 위한 공백 파티션이었다. 다시 말하자면, 하드 드라이브에서 가장 사용되지 않는 공간을 찾아서, 그 곳에 있는 기존 파티션을 축소해서 스왑 공간을 확보하라는 것이다. 디스크 파티션을 작성하는 도구는 여러 가지가 있다. 레드햇과 맨드레이크 배포본의 DiskDruid, 도스 프로그램인 fips 등은 많은 FTP 사이트에서 무료로 얻을 수 있다. 운 좋게도 내겐 PowerQuest에서 만든 Partition Magic의 복사본이 있다. 이것은 리눅스 네이티브 ext2fs는 물론, DOS/Windows의 파일 시스템인 FAT(File Allocation Table) 파티션, Windows NT를 위한 파일 시스템인 NTFS, OS/2 사용자를 위한 HPFS(High Performance file system)까지 모든 종류의 파일 시스템을 인식한다.

Partition Magic을 가지고(fips나 DiskDruid도 좋다), 현재의 NTFS 파티션들 중 하나의 사이즈를 줄여서 스왑 파티션으로 사용할 목적으로 약 150 메가 바이트를 따로 떼어 놓을 수  있었다. 아마도 내 시스템을 위해서는 물리적 메모리와 거의 같은 정도인100 메가 바이트 정도면 충분했을 것이지만, 넉넉하게 쓰는 것을 좋아하는 나는 물리적 메모리의1.5 내지 2배 정도의 스왑 공간을 선호한다. 스왑 공간으로 쓰기 위해 디자인된 파일 시스템 타입(모든 파일 시스템은 그것에 할당된 16진수가 있다- ext2fs는 83, 리눅스 스왑 파일 시스템은 82)이 있기는 하지만, 나는 확보한 150 메가 바이트의 공간을 포맷하지 않은 채로 두고 fdisk 유틸리티의 리눅스 버전으로 세팅하기로 했다.

다음 단계는 부트 디스크를 이용해서 리눅스 시스템으로 부트하는 것이었다. 만일 부트 디스크를 가지고 있지 않다면, 지금 만들면 된다!!!! 부트 디스크는 쉽게 만들 수 있다. 명령 라인에서 "mke2fs -c /dev/fd0" 라고 친 후, "cp /vmlinuz"라고 쳐라. 물론 따옴표는 치지 말아야 한다. 명령어를 치기 전에 먼저 플로피 디스크를 드라이브에 넣는 것을 잊지 말아야 한다.

일단 리눅스가 시스템에서 실행되어지자, fdisk를 실행했다. fdisk를 사용하는 것은 쉬운 일이었다. 필자가 확보한 스왑 공간은 DOS/Windows에서는 drive 2(0부터 시작한다)로 기록되는 /dev/hdc에 있었다. 그래서 "fdisk /dev/hdc"라고 입력했다. Fdisk가 실행되고, 디스크의 파티션들이 보여졌다. 그 중 필자가 확보한 공백 파티션인 hdc6를 선택했다.

fdisk프롬프트에서는 'm'을 누르면 도움말이 나타난다(m for help)고 말하지만, 실제로는  선택할 수 있는 메뉴를 표시해 준다. 필자는 알려진 파티션 유형을 보여주는 'l'을 선택해서  내 선택이 맞는지 정확하게 확인한 뒤, hdc6의 파티션 타입을 변경하기 위해 't'를 선택했다. 변경시키고자 하는 파티션의 번호를 입력하라고 해서 hdc6의 파티션 번호를 쳐 넣었다. 다음엔  변경하고자 하는 파일 시스템 타입을 나타내는 16진수 코드를 입력하라고 해서 스왑 파티션에 해당하는 82를 쳐 넣었다. 이렇게 변경한 내용을 디스크에 저장하도록 'w'를 입력하고는 fdisk를 빠져 나왔다.

이렇게 디스크 파티션을 작성한 후에, 스왑 파티션을 준비하기 위해 "mkswap -c -v1 /dev/hdc6"(여러분이 사용하는 시스템의 실제 디바이스 이름은 이것과 다르다는 것에 유념하라)을 실행했다. -c 옵션은 mkswap에게 스왑 공간을 작성할 때 불량 블록이 있는지 파일 시스템을 점검할 것을 명령한다. 불량 블록이 있다면, 결함이 있는 파티션을 이용하고 싶지 않았기 때문에 hdc6에 스왑 파티션을 작성하려는 계획을 재고해야만 했다. 하지만 다행히도, 불량 블록은 발견되지 않았다. -v1 스위치는 업데이트된 버전의 스왑 파일 시스템을 이용할 것을 mkswap에 명령한다. 여러 문서를 읽어 보고서 필자에게는 필요치 않은 그 스위치를 사용하지 않기로 결론을 내렸다. mkswap 명령으로 /dev/hdc6 파티션은 스왑 파티션으로 포맷되었다. 이렇게 해서 스왑 파티션이 준비된 다음엔, /sbin/swapon 명령을 이용해서 해당 파티션을 활성으로 만들어야 했다. 필자는 swapon 명령을 /etc/fstab 파일에 'swap'으로 나타나는 모든 디바이스를 사용 가능하게 하는  -a 스위치와 함께 사용했다. 하지만 필자가 /etc/fstab 파일을 편집하지 않았기 때문에 -a 스위치를 쓸 필요가 없었다. 그냥 "swapon /dev/hdc6"라고 치면 충분하였다.

하지만, 그 명령은 듣지 않았다. 필자가 만든 파티션 테이블의 변경을 완료하기 위해서는 재부트를 해야 했는데 재부트하는 것을 잊어버렸기 때문에 디바이스가 "busy" 상태였다. 그래서 나는 /etc/rc.d/rc.local 파일에 "swapon /dev/hdc6"라는 한 줄을 써 넣었다(맨드레이크와 레드햇 배포본을 사용하는 경우에는/etc/rc.d/rc.sysinit 파일에 "swapon -a /dev/hdc6"이라고 써야 한다). 필자가 편집한 파일의 이름은 슬랙웨어 배포본에 있는 것이다; 여러분이 원하는 파일을 찾기 위해서는 /etc/rc.d 디렉토리의 파일을 살펴 봐야 할 것이다.

남은 한 가지 일은 /etc/fstab 파일에 "dev/hdc6 swap swap default 1 0"라고 한 줄을 써 넣는 일이었다. 리눅스를 설치할 때, 동시에 스왑 파티션을 설치했다면 자동적으로 그 내용이 /etc/fstab에 들어갔을 것이다. 그러면 /etc/rc.d/rc.local 파일에는 단지 "swapon -a" 라고만 써 넣으면 된다.

이번엔 플로피가 아닌 하드 드라이브로 다시 부팅했다. 그러자, 새로운 스왑 파티션이 바르게 올라왔다. 리눅스가 물리적 메모리를 훨씬 덜 쓰기 때문에 정보를 저장할 수 있는 보다 많은 공간이 있었다. X windows에서 어플리케이션들을 전환할 때나 필자가 설치한 서로 다른 가상 데스크 탑 사이로 전환할 때 스왑 파티션의 진가가 가장 두드러지게 나타났다.

[코리아인터넷닷컴, 2001년 01월 03일]

========================================================
리눅스 사용자님들께 행여 도움이 될까 하고 올려 봅니다 ^^*
========================================================