강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

리눅스 시스템에 스왑영역 증설하는 실무작업

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스 시스템에 스왑영역 증설하는 실무작업

 

 

 

 

리눅스시스템에서 실제메모리가 부족할 경우에 디스크의 일부분을 메모리로 사용하기 위해 준비해둔 공간을 우리는 가상메모리라고 부릅니다.

 

 

 

 리눅스에서는 이 가상메모리를 스왑메모리 또는 스왑파티션, 또는 스왑파일시스템등과 같이 표현합니다.

 

 

 

 이런 스왑파티션은 리눅스 설치 시에 지정하는 것이 가장 일반적입니다.

 

 

 

 하지만 시스템을 운용하다 보면 스왑메모리가 부족하여 추가하거나 늘려야 하는 상황이 발생하기도 합니다.

 

 

 

 어떤 분들께서는 스왑영역을 추가하기 위하여 리눅스를 재설치하는 것을 종종 봤습니다.

 

 

 

현재 운용중인 시스템을 재설치하지 않고 스왑영역을 늘리는 방법에 대해서 실제작업을 예로 하여 설명하였습니다.

 

 

 

 

 

mkswap명령어는 "MaKe Swap"의 약어로서 리눅스의 스왑영역을 지정하는 명령어입니다.

 

 

 

  리눅스뿐아니라 모든 운영체제는 스왑(SWAP)메모리를 사용하고 있습니다.

 

 

 

 

 

말씀드린바와 같이 실제메모리가 부족할 경우에는 디스크를 일종의 메모리처럼 사용하기 위하여 스왑메모리가 사용되기 때문입니다.

 

 

 

 따라서 스왑메모리의 존재목적은 시스템의 성능보다는 안정성에 있습니다.

 

 

 

 이 말의 의미는 다음과 같습니다.

 

 

 

 스왑메모리는 RAM이라고 하는 실제메모리가 부족할 경우에 일시적으로 메모리용도로 사용되기 때문에 실제 운영 중에 스왑메모리가 사용되었다라고 하면 시스템 부하가 어느 정도 발생한 경우라고 볼 수 있습니다.

 

 

 

 그리고 스왑메모리의 속도는 실제메모리(RAM)의 속도보다 현저하게 느립니다.

 

 

 

 스왑메모리는 디스크의 일부 공간이기 때문에 당연한 얘기입니다.

 

 

 

 따라서 스왑메모리는 설정은 하지만 가능하면 사용되지 않는 것이 보다 좋을 것입니다.

 

 

 

 그럼에도 불구하고 왜 굳이 이러한 스왑메모리를 설정해 두는가?”라고 의문이 생길 수도 있을 것입니다.

 

 

 

 바로 이것이 스왑메모리의 핵심입니다.

 

 

 

 

 

스왑메모리는 시스템의 실제메모리가 부족한 상황에서 부족한 메모리 공간용도로 일시적으로 사용하기 위하여 존재합니다.

 

 

 

 , 시스템의 성능보다는 시스템의 운용측면의 안정성을 위해서 존재합니다.

 

 

 

 이것이 스왑메모리가 존재하는 가장 궁극적인 존재목적입니다.

 

 

 

 , 실제메모리가 부족할 경우에 메모리처럼 사용하기 위하여 스왑메모리를 사용하며 시스템의 안정성을 위하여 반드시 필요하다고 할 수 있습니다.

 

 

 

 하지만 실제메모리보다 현저하게 느린 속도 때문에 가능한 실제메모리를 여유 있게 장착하는 것이 시스템의 성능에 큰 도움이 됩니다.

 

 

 

  

 

그럼에도 불구하고 스왑메모리가 부족하여 이를 늘리거나 스왑영역을 지정해야 하는 경우가 있습니다.

 

 

 

  이때 사용하는 명령어가 mkswap명령어입니다.

 

 

 

 

 

우리는 이쯤에서 한가지를 정리하고 넘어가야 합니다.

 

 

 

 , 스왑메모리를 설정하고 활성화하고 비활성화하는 작업 즉, 스왑메모리에 관한 작업에는 어떤 것들이 있는가라는 것입니다.

 

 

 

 

 

-   스왑공간 생성     : mkswap

 

 

-   스왑공간 활성화   : swapon

 

 

-   스왑공간 비활성화 : swapoff

 

 

 

 

 

, 위의 3가지 도구를 가지고 스왑메모리관련 작업들을 합니다.

 

 

 

 , 이번에 설명하는 mkswap외에도  이 웹사이트(www.linux.co.kr) swapon명령어 그리고 swapoff명령어 강좌를 함께 보시기 바랍니다.

 

 

 

 

 

그리고 필수적인 사항 한가지 더 알아두셔야 합니다.

 

 

 

 시스템에 스왑공간을 추가하는 방법에는 크게 두가지가 있습니다.

 

 

 

 

 

-   첫번째 방법 : 스왑파티션을 스왑공간으로 추가하는 방법

 

 

 

-   두번째 방법 : 스왑파일을 생성하여 스왑공간으로 추가하는 방법

 

 

 

이와 같이 두가지의 방법이 있다는 것을 알아두십시오.

 

 

 

스왑공간을 추가하는 가장 안정되고 대표적인 방법이 첫번째 방법인 스왑파티션을 스왑공간으로 추가하는 방법입니다.

 

 

 

 따라서 첫번째의 방법으로 설명하도록 하겠습니다.

 

 

 

 이번을 계기로 스왑공간에 대한 부분을 마스터하시기 바랍니다.

 

 

 

 , 그럼 시작해 보겠습니다.

 

 

 

 

 

명령어위치 : /sbin/mkswap

 

사용형식   : mkswap [-c] 장치명 [블록크기]


         
장치명은 다음 예와 같이 지정합니다.

 

 

 

 
      . /dev/hda1
      . /dev/hdb2
      . /dev/sda1
      . /dev/sdb3

 

 

 

 

여러분들이 관리하고 있는 리눅스시스템에 스왑영역이 부족하여 이를 추가한다고 가정해 보십시오. 

 

 

 

어렵게 생각할 것 없이 디스크 하나를 추가 장착하여 이 디스크의 특정 파티션을 스왑파티션으로 생성한 후에 스왑영역에 추가하는 작업이라고 생각하시면 됩니다.

 

 

 

 

, 지금부터 설명한 내용은 현재 리눅스시스템에 스왑영역이 부족하기 때문에 디스크 하나를 추가로 장착하여 이 디스크의 특정 파티션을 스왑영역으로 추가하는 작업입니다.

 

 

 

  

 

현재 필자가 테스트로 사용하고 있는 시스템의 스왑영역을 확인해 보겠습니다.

 

 

 

  스왑영역을 확인하는 여러 가지 방법 중에 가장 간단한 방법이 free라는 명령어로 확인하는 것입니다.

 

 

 

 

 

작업1 : 현재 시스템메모리 상태확인

 

 

 

아래보시는 바와 같이 현재 시스템의 스왑메모리는 2096472바이트, 2GB입니다.

 

 

 

 실제로 이 시스템에서는 스왑메모리가 부족한 것은 아니지만 부족하다는 가정하에 스왑메모리를 증설하는 작업에 대한 설명을 하도록 하겠습니다.

 

 

 

 

 

[root@su250 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1033816      89652     944164          0       6884      46348

-/+ buffers/cache:      36420     997396

Swap:      2096472          0    2096472

[root@su250 ~]#

 

 

 

 

 

작업2 : 스왑파티션 생성(확보)

 

 

 

그리고 다음 파티션을 스왑파티션으로 설정하여 스왑공간으로 할당하는 작업을 할 것입니다.

 

 

 

 그리고 다음과 같이 추가된 하드디스크(/dev/sdb) fdisk로 확인한 것입니다.

 

 

 

 , /dev/sdb1파티션을 스왑파티션으로 설정하였습니다.

 

 

 

 (파티션작업에 대해서는 이 책의 fdisk편에 자세히 설명하였습니다.

 

 

 

 확인하시기 바랍니다. )

 

 

 

 

추가된 하드디스크의 특정파티션(/dev/sdb1)을 스왑파티션으로 생성하여 스왑영역으로 사용할 것입니다.

 

 

 

  아래의 예는 fdisk /dev/sdb를 확인한 다음 'p'로 현재의 파티션상태를 확인한 것입니다.

 

 

 

 

 

[root@su250 ~]# fdisk /dev/sdb

 

The number of cylinders for this disk is set to 1305.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

 

Command (m for help):

Command (m for help): p

 

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x7daaac36

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         512     4112608+  82  Linux swap / Solaris

 

Command (m for help):

 

 

 

 

위의 파티션 중 /dev/sdb1을 스왑파티션으로 만들기 위하여 't'를 지정합니다.

 

 

 

  fdisk명령어 중 't'는 파티션의 종류를 변경하기 위한 것입니다.

 

 

 

  그런 다음 /dev/sdb1의 대상파티션번호가 1번이므로 '1'을 입력하였습니다.

 

 

 

  그리고 리눅스파티션 코드 중 82번이 스왑파티션을 의미하므로 코드번호 '82'번을 입력 하였습니다.

 

 

 

 

 

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): 82

 

Command (m for help):

 

 

 

 

그런 다음 다시 'p' /dev/sdb1의 파티션코드가 82 Linux swap으로 변경된 것을 확인한 것입니다.

 

 

 

  확인한 다음 'w'로 현재의 설정을 저장하고 fdisk모드에서 빠져 나왔습니다.

 

 

 

 

 

Command (m for help): p

 

Disk /dev/sdb: 10.7 GB, 10737418240 bytes

255 heads, 63 sectors/track, 1305 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Disk identifier: 0x7daaac36

 

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1         512     4112608+  82  Linux swap / Solaris

 

Command (m for help):

Command (m for help): w

The partition table has been altered!

 

Calling ioctl() to re-read partition table.

Syncing disks.

[root@su250 ~]#

 

 

 

 

 

작업3 : 스왑파티션을 스왑영역으로 생성하는 포맷작업하기

 

 

 

 

이번에는 mkswap명령어를 이용하여 위의 fdisk에서 설정한 /dev/sdb1 스왑파티션을 스왑영역으로 생성해 보도록 하였습니다.

 

 

 

 여기서 사용한 -c옵션은 스왑영역을 생성하는 도중에 배드블록(Bad Block)을 점검하도록 하는 옵션이며 -v1은 업데이트된 버전의 스왑파일시스템을 이용한다는 것을 설정하는 옵션입니다.

 

 

 

 이 작업은 시스템 사양에 따라서 좀 오래 걸릴 수도 있습니다.

 

 

 

 

 

[root@su250 ~]# mkswap -c -v1 /dev/sdb1

Setting up swapspace version 1, size = 4112604 KiB

no label, UUID=00a296da-5ffb-4d59-86a2-36fadb305060

[root@su250 ~]#

 

 

 

 

 

작업4 : 스왑영역 활성화하기

 

 

 

이제 /dev/sdb1을 스왑영역으로 생성하는 작업이 끝났습니다.

 

 

 

 이제 남은 것은 새로 생성한 /dev/sdb1 스왑영역을 현재의 시스템에서 사용하도록 설정하는 것입니다.

 

 

 

 이것은 swapon이라는 명령어를 이용하면 간단히 해결 할 수 있습니다.

 

 

 

  아래의 예와 같이 swapon으로 /dev/sdb1을 현재의 시스템에서 스왑영역으로 사용하도록 하는 설정입니다.

 

 

 

 

 

[root@su250 ~]# swapon /dev/sdb1

[root@su250 ~]#

 

그리고 다시 'free'명령어로 추가된 스왑영역을 확인한 것입니다.

 

 

 

 

 

 [root@su250 ~]# free

             total       used       free     shared    buffers     cached

Mem:       1033816      82208     951608          0        292      46776

-/+ buffers/cache:      35140     998676

Swap:      6209072          0    6209072

[root@su250 ~]#

 

 

 

 

위의 결과를 보시면 추가하기 이전의 swap영역은 2096472bytes이였으나 /dev/sdb1을 추가하여 6209072bytes가 되었습니다.

 

 

 

 

 

 

작업5 : 파일시스템테이블 파일에 등록하는 작업

 

 

 

 

작업영역 증설작업이 끝났습니다.

 

 

 

시스템을 재부팅한 후에도 계속 추가된 스왑영역을 사용하도록 설정하려면 시스템이 부팅된 후에 매번 'swapon /dev/sdb1'이라는 명령어를 입력해 주어야 합니다.

 

 

 

  이를 좀 더 간편하게 하기 위하여 /etc/rc.d/rc.local파일에 'swapon /dev/sdb1'을 입력해 두거나 'swapon -a'라고 입력하시면 됩니다.

 

 

 

 그러면 매번 부팅한 후에 'swapon /dev/sdb1'을 입력하지 않아도 되므로 매우 간편할 것입니다.

 

 

 

 

 

그리고 /etc/fstab파일의 맨 마지막행에 다음행을 추가하셔야 합니다.

 

 

 

 

 

/dev/sdb1            swap                     swap     default          0 0

 

 

 

 

다음은 위의 설정을 /etc/fstab에 추가한 것을 확인한 것입니다.

 

 

 

 

 

[root@su250 ~]# cat /etc/fstab

/dev/sda6               /                       ext3    defaults        1 1

/dev/sda3               /backup                 ext3    defaults        1 2

/dev/sda2               /home                   ext3    defaults        1 2

/dev/sda1               /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/sda5               swap                    swap    defaults        0 0

/dev/sdb1               swap                    swap    defaults        0 0

[root@su250 ~]#

 

 

 

 

 

이제 스왑영역을 추가하는 모든 작업이 완료되었습니다.

 

 

 

 

 

시스템에 스왑영역을 추가하는 작업이 간단해 보이지만 실제로 작업하실 때에는 세심한 주의를 요합니다.

 

 

 

  또한 스왑영역을 추가하는 것보다는 실제메모리를 증설하는 것이 시스템 성능과 안정성에 더 효율적이라는 것을 알아두시기 바랍니다.

 

 

 

 

 

참고로 필자는 이번 장의 서두에서 스왑영역을 추가 증설하는 작업은 두가지 방법이 있다.

 

 

 

라고 말씀 드렸습니다.

 

 

 

 그것은 스왑파티션을 이용하여 증설하는 방법스왑파일을 이용하여 증설하는 방법두가지라고 설명을 드렸습니다.

 

 

 

 이번 장에서 설명 드린 방법은 전자의 방법이며, 후자의 방법을 이용하여 증설하는 방법과 스왑에 대한 보다 자세한 설명은 본 사이트(www.linux.co.kr)에서 검색해서 보시기 바랍니다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,074 명
  • 현재 강좌수 :  35,995 개
  • 현재 접속자 :  529 명